# Career Manager

AI-assisted career management pipeline built as Claude Code skills.

## Environment

- Use `uv run` to execute all Python scripts
- If `.venv/` doesn't exist: `uv venv && uv pip install -r requirements.txt`

## Script Paths

All pipeline scripts live under `job-search/scripts/`. Run from the project root with full paths:

```bash
uv run job-search/scripts/ops/run_pipeline.py phase1   # correct
uv run scripts/ops/run_pipeline.py phase1              # WRONG — will fail
```

SKILL.md files use paths relative to their skill directory. Always prefix with the skill folder.

## How This Works

- Each skill has a `SKILL.md` — read it before executing that skill
- `search-config.json` and `config.yaml` are generated by the onboarding skill — never edit pipeline scripts to change search queries or scoring
- Data ownership: `job-search/data/target-companies.csv` and `job-tracker/data/applications.csv` are sources of truth
- Never edit CSVs directly — use the tracker scripts

## First-Time Setup

If `config.yaml` or `search-config.json` don't exist, run the onboarding skill first. See README for full setup steps.

## Status Briefing

Before running workflows, the router calls `scripts/generate_briefing.py` for a status snapshot. This is automatic. Do not ask the user to run it.

## Testing

```bash
uv run python3 scripts/smoke_test.py       # verify setup
uv run python3 -m pytest evals/tests/ -v   # run test suite
```

## Repo Sync

The public repo at `career-manager-public/` is synced from this private repo via `scripts/export_public.py`. Both repos must stay in sync for skill files.

**Before exporting:**
```bash
uv run python3 scripts/check_sync.py
```

If divergence is found, resolve before exporting. The export script has a timestamp guard that skips files where the public version is newer, but always verify with `check_sync.py` first.

**After editing skill files in either repo:** run `check_sync.py --fix` to copy the newer version to the other repo, then commit in both.
