- An AI coding CLI — Claude Code, Gemini CLI, Codex, Qwen Code, OpenCode, GitHub Copilot CLI, Antigravity CLI, or Grok Build CLI (see Supported CLIs)
- Node.js 18+ and
git(npxships with Node — the installer refuses to run without them) — note: the Gemini CLI integration requires Node.js 20+ - (Optional) Go 1.21+ (for the dashboard TUI)
Claude Code on the web can run career-ops without a local checkout. It is currently a research preview for eligible Claude plans. A web session clones a GitHub repository into an isolated cloud VM; it does not have your machine's files or local configuration.
-
Put career-ops in a private GitHub repository that your account can access. You can use GitHub Importer with
https://github.com/santifer/career-ops.gitas the source. A normal fork of this public repository is public, so do not use one for personal career data. -
Open claude.ai/code, connect GitHub, and select the private repository and branch. The Default cloud environment is enough for the first run; Anthropic's quick start explains plan-specific onboarding.
-
Submit this first task:
Set up career-ops in this checkout. Run npm install, then start the first-run onboarding. Keep cv.md, data/, and reports/ out of Git.
career-ops still uses ordinary workspace files in the cloud checkout, not browser storage:
| Path (from the repository root) | What it holds |
|---|---|
cv.md |
Your master CV |
data/ |
Tracker and other private workflow state |
reports/ |
Job evaluations and generated reports |
cv.md, runtime content under data/, and Markdown files directly under
reports/ are intentionally git-ignored because they contain personal data.
That also means a normal web-session branch push does not persist them to
GitHub: a new cloud session starts from the repository again, without the
ignored files from the previous VM. Keep a personal workflow in one session
and move any output you need to secure storage before its environment expires.
Never force-add these paths. For a durable workspace shared across many
sessions, use the local quick start below.
npx @santifer/career-ops initnpx ships with Node.js — it runs the installer once without installing anything globally. This clones the latest release into ./career-ops and installs dependencies. Then move into the workspace and open your AI CLI:
cd career-ops
claude # or codex / qwen / opencode / agy / grokOn first launch, career-ops walks you through setup by chatting — it asks for your CV, your details (name, target roles, salary), and sets up the job scanner with pre-configured companies. Nothing to edit by hand: just answer its questions. Then paste a job offer URL or description and it evaluates it, writes a report, generates a tailored PDF, and tracks it.
If you are using Codex, start the interactive session with codex. Slash commands are not guaranteed in Codex, so use the same mode names in a prompt if /career-ops is unavailable:
Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123
Run the career-ops scan mode.
Run the career-ops pipeline mode.
Run the career-ops pdf mode.
Run the career-ops email mode for the latest evaluated role. Draft only; never sends, submits, or clicks.
Run the career-ops tracker mode.
For one-shot workers or batch tasks in Codex, use codex exec. See docs/CODEX.md for the full guide.
codex exec "Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123"
codex exec "Run career-ops scan mode in this repo."
codex exec "Run career-ops pipeline mode for data/pipeline.md."
codex exec "Run career-ops pdf mode for the latest evaluated role."
codex exec "Run career-ops email mode for the latest evaluated role. Draft only; do not send, submit, or click anything."
codex exec "Run career-ops tracker mode and summarize the current statuses."Prefer to clone the repo yourself?
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm installThen open your AI CLI in the folder — the same first-run onboarding applies. Use this path if you want to track a specific branch, contribute, or audit the code before installing dependencies.
If you want to contribute to career-ops, start with a small, focused change. Bug fixes, documentation, translations, and new zero-auth scanner providers can go straight to a pull request; new features, modes, commands, or architecture changes should start with an issue first.
The basic workflow is:
- Fork the repository and create a branch from
main. - Make one focused change and keep personal data such as
cv.md,profile.yml, applications, and reports out of the commit. - Run the relevant checks; for a broad validation, use
node test-all.mjs --quick. - Commit and push your branch to your fork.
- Open a pull request against
santifer/career-opsand explain what changed and why.
See CONTRIBUTING.md for the full contribution guidelines and examples of good first contributions.
PDFs are rendered with a headless Chromium. Install it once per machine:
npx playwright install chromium| Action | How |
|---|---|
| Evaluate an offer | Paste a URL or JD text |
| Search for offers | /career-ops scan or ask the agent to run scan |
| Process pending URLs | /career-ops pipeline or ask the agent to run pipeline |
| Generate a PDF | /career-ops pdf or ask the agent to run pdf |
| Draft application email | /career-ops email or ask the agent to run email; draft-only, never sends, submits, or clicks |
| Batch evaluate | /career-ops batch or use codex exec "Run career-ops batch mode ..." |
| Check tracker status | /career-ops tracker or ask the agent to run tracker |
| Fill application form | /career-ops apply or ask the agent to run apply |
node cv-sync-check.mjs # Check configuration
node verify-pipeline.mjs # Check pipeline integritynpm run serve:dashboard # Opens TUI pipeline viewer
npm run build:dashboard # Optional: build the standalone binary