Career Ops

career-ops-hq/career-ops/.agents/skills/career-ops

作者 career-ops-hqd9c7868690470acb5caaa11bea4fb8d0ce73bb21MIT73K 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫今天更新

AI job search command center -- evaluate offers, generate CVs, scan portals, track applications. Use when the user pastes a job URL or JD, asks to scan portals, generate a CV/PDF, track applications, prepare for interviews, draft outreach/emails, or run any career-ops mode.

AI 產生的概覽

求職指揮中心,將請求路由到評估職缺、產生履歷、掃描招募網站與追蹤申請等模式。

功能
此技能是多模式求職指揮中心的路由器。它會把請求的模式或貼上的職缺描述、連結對應到眾多工作流程之一,例如職缺評估、履歷與求職信產生、ATS 檢查、招募網站掃描、申請追蹤、面試準備與外聯草擬。它也規定每種模式要載入哪些脈絡檔案,以及如何把部分模式委派給子代理。
適用情境
當使用者貼上職缺連結或職缺描述,或要求掃描招募網站、產生履歷或 PDF、追蹤申請、準備面試、草擬申請郵件時使用。它是任何 career-ops 模式的進入點。
執行需求
僅含指示,不附指令碼。需要一份包含 AGENTS.md 與 modes/ 目錄的 career-ops 檢出,以及選用的 config/profile.yml 和 data/pipeline.md 等資料檔案。部分模式會用到子代理、Playwright 與外部招募網站。

career-ops -- Router

career-ops is a multi-CLI job-search command center. The routing below is shared across supported agent CLIs even when the invocation surface differs.

Project Root Resolution

Before reading any repo-relative path, derive PROJECT_ROOT from this loaded SKILL.md: start at the skill file's directory and walk upward until the nearest directory containing both AGENTS.md and modes/. Resolve every path in this router (modes/, config/, data/, scripts, templates, and output paths) against PROJECT_ROOT, never against the process's current working directory. This is required even when the checkout itself is nested (for example Development\\career-ops) or the command starts from a subdirectory. If those two sentinels cannot be found, stop and locate the career-ops checkout before reading or writing files.

Invocation Notes

  • CLIs with slash-command registration can expose this router as /career-ops.
  • In Cursor, this skill lives at .cursor/skills/career-ops/ and is auto-discovered; ask for a mode by name, or paste a JD/URL to trigger auto-pipeline.
  • In Pi, this skill is auto-discovered from .agents/skills/career-ops/ and exposed as /skill:career-ops; AGENTS.md loads from the repo root as project context, so there is no wrapper file. Headless Pi workers use pi -p "prompt". Project skill discovery follows Pi's per-folder trust decision: /trust applies to future Pi processes, so restart pi before invoking /skill:career-ops (-a trusts a single run and needs no restart).
  • Interactive Codex sessions use codex in the repo root. Slash commands are not guaranteed in Codex, so ask Codex to run the same mode by name if /career-ops is unavailable.
  • Headless Codex workers use codex exec "prompt".
  • The routing semantics below stay the same regardless of whether the entrypoint is a slash command or a natural-language prompt.

Codex prompt examples that map to the same router semantics:

text
Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123Run the career-ops scan mode and summarize new matches.Run the career-ops pipeline mode for data/pipeline.md.Run the career-ops pdf mode for the latest evaluated role.Run the career-ops tracker mode and summarize the current statuses.

Mode Routing

Determine the mode from $mode:

InputMode
(empty / no args)discovery -- Show command menu
JD text or URL (no sub-command)auto-pipeline
ofertaoferta
ofertasofertas
contactocontacto
deepdeep
interview-prepinterview-prep
interviewinterview
master-profilemaster-profile
intakeintake
eu-sweregional/eu-swe
interview/planinterview/plan
interview/practiceinterview/practice
interview/debriefinterview/debrief
pdfpdf
atsats
texttext
latexlatex
latex-texlatex-tex
emailemail
addadd
expandexpand
trainingtraining
projectproject
trackertracker
agent-inboxagent-inbox
inboxagent-inbox
pipelinepipeline
applyapply
scanscan
discoverdiscover
triagetriage
batchbatch
patternspatterns
calibratecalibrate
offer-prepoffer-prep
titlestitles
upskillupskill
followupfollowup
reply-watchreply-watch
outcomeoutcome
interview-redflaginterview-redflag
updateupdate
covercover

Auto-pipeline detection: If $mode is not a known sub-command AND contains JD text (keywords: "responsibilities", "requirements", "qualifications", "about the role", "we're looking for", company name + role) or a URL to a JD, execute auto-pipeline.

If $mode is not a sub-command AND doesn't look like a JD, show discovery.


Output Language Directive

Before executing any mode, read config/profile.yml if it exists and resolve:

  • language.output → ISO language code for human-facing output. Default: en.
  • language.modes_dir → optional market-mode directory. This controls market vocabulary and local evaluation rules only. It may be a single string (one declared market, the historical default) or a list of declared candidate markets for a candidate genuinely running parallel campaigns in more than one market at once (#3793), e.g. modes_dir: [modes/de, modes/zh]. When a list is given, the FIRST entry is primary and supplies the evaluation-mode file (Block A-F rules can only run from one market's file at a time); EVERY declared market's _shared.md is loaded into context. modes itself is a valid declared candidate for markets without a localized directory; when first it supplies modes/oferta.md, and its baseline modes/_shared.md is loaded once. Per posting, judge which declared market actually applies from the JD's own MARKET signals (hiring-entity jurisdiction, currency, benefits/legal vocabulary) — never from the JD's language alone. If genuinely ambiguous, an interactive session asks and stops before persistence; an unattended worker uses the primary market and records that fallback in the report header or Block G.

Inject this directive after loading the mode instructions and before producing any user-visible content:

Write all human-facing output in {language.output} regardless of the language of these instructions or of the job description. This includes reports, tracker notes, PDFs, cover letters, outreach, interview prep, form answers, and summaries. If language.modes_dir supplies market-specific vocabulary (one market, or several declared at once), keep the market logic but explain terms in {language.output} when needed.

language.output is authoritative for prose. modes_dir is market context; it must not force the prose language.


Discovery Mode (no arguments)

If your CLI supports /career-ops, show this menu. In Codex, surface the same options in plain text and map the requested mode the same way.

Concrete equivalents for Codex prompt-driven sessions:

text
/career-ops {JD}           ↔ "Evaluate this JD with career-ops auto-pipeline: {JD or URL}"/career-ops scan           ↔ "Run the career-ops scan mode and summarize new matches."/career-ops pipeline       ↔ "Run the career-ops pipeline mode for data/pipeline.md."/career-ops pdf            ↔ "Run the career-ops pdf mode for the latest evaluated role."/career-ops email          ↔ "Run the career-ops email mode for the latest evaluated role."/career-ops tracker        ↔ "Run the career-ops tracker mode and summarize the current statuses."

Show this menu:

career-ops -- Command Center
Available commands:  /career-ops {JD}      → AUTO-PIPELINE: evaluate + report + PDF + tracker (paste text or URL)  /career-ops pipeline  → Process pending URLs from inbox (data/pipeline.md)  /career-ops oferta    → Evaluation only A-F (no auto PDF)  /career-ops ofertas   → Compare and rank multiple offers  /career-ops contacto  → LinkedIn power move: find contacts + draft message  /career-ops deep      → Deep research prompt about company  /career-ops interview-prep → Generate company-specific interview prep doc  /career-ops interview    → Interactive profile/CV onboarding interview  /career-ops master-profile → Import, review, and validate your Master Career Profile  /career-ops intake    → Build or enrich your profile from documents/ (master CV, LinkedIn export; nothing written without confirm)  /career-ops eu-swe    → Calibrate a European SWE application before CV/apply/interview  /career-ops interview/plan → Time-blocked prep plan for an upcoming interview  /career-ops interview/practice → Practice interview, one question at a time with feedback  /career-ops interview/debrief → Post-interview debrief: close gaps, predict next round  /career-ops pdf       → PDF only, ATS-optimized CV  /career-ops ats       → ATS-friendliness check of a generated CV (score + fixable issues)  /career-ops text      → Tailored markdown CV (mirrors cv.md, no PDF)  /career-ops latex     → Export CV as LaTeX/Overleaf .tex  /career-ops latex-tex → Tailor your own resume.tex in place (opt-in; cv.md stays default)  /career-ops cover     → Cover letter: standalone JD paste or /career-ops cover {slug}  /career-ops email     → Formal application email draft (draft-only; never sends, submits, or clicks)  /career-ops add       → Add a project/paper/role to your CV (fetch + preview + confirm)  /career-ops expand    → Auto-discover and add missing competencies from profile links  /career-ops training  → Evaluate course/cert against North Star  /career-ops project   → Evaluate portfolio project idea  /career-ops tracker   → Application status overview  /career-ops agent-inbox → Queue/drain requests for the next session (data/agent-inbox.md)  /career-ops apply     → Live application assistant (reads form + generates answers)  /career-ops scan      → Scan portals and discover new offers  /career-ops discover  → Resolve a company list to scannable ATS boards + append to portals.yml (zero-token)  /career-ops triage    → Fast first-pass go/no-go score from modes/_brief.md (writes no files)  /career-ops batch     → Batch processing with parallel workers  /career-ops patterns  → Analyze rejection patterns and improve targeting  /career-ops calibrate → Check whether evaluation scores predict your real outcomes (advisory only)  /career-ops offer-prep → Read a received offer/contract with the candidate: clause walk + lawyer questions (not legal advice)  /career-ops titles    → Suggest adjacent job titles from your CV to broaden the search  /career-ops upskill   → Aggregate skill-gap analysis from your evaluated reports  /career-ops followup  → Follow-up cadence tracker: flag overdue, generate drafts  /career-ops outcome   → Record application outcome & archive artifacts  /career-ops update    → Update career-ops system files with diff preview + compat check
Inbox: add URLs to data/pipeline.md → /career-ops pipelineOr paste a JD directly to run the full pipeline.

Context Loading by Mode

After determining the mode, load the necessary files before executing:

If modes/_custom.md exists, read it after modes/_profile.md and before the selected mode file. It contains user house rules and procedural preferences. It may override workflow/style defaults, but it never adds factual claims about the candidate.

Resolve language.modes_dir before applying the path shorthand below. With no setting, use modes. With a scalar directory, preserve the existing behavior: use that directory's _shared.md and localized mode file when it provides one. With a list, load every declared directory's _shared.md exactly once (including the baseline modes/_shared.md when modes appears), but use only the FIRST entry's evaluation-mode file for Blocks A-F; later entries contribute context, never a competing evaluation file. User-layer _profile.md and _custom.md remain under modes/.

Modes that require _shared.md + their mode file

Read the resolved shared context (default modes/_shared.md) + modes/_profile.md (if exists) + modes/_custom.md (if exists) + the resolved selected mode file (default modes/{mode}.md). For an A-F evaluation, that selected file is the primary directory's evaluation mode; do not also load an evaluation file from a secondary directory.

Applies to: auto-pipeline, oferta, ofertas, pdf, text, contacto, apply, pipeline, scan, batch

Standalone modes with profile and custom context

Read modes/_profile.md (if exists) + modes/_custom.md (if exists) + modes/{mode}.md

Applies to: tracker, agent-inbox, deep, interview-prep, interview, master-profile, regional/eu-swe, interview/plan, interview/practice, interview/debrief, latex, latex-tex, training, project, patterns, titles, upskill, followup, reply-watch, outcome, cover, email, add, offer-prep, discover, intake, ats, calibrate

Modes that load only their mode file

Read modes/{mode}.md only. Do not preload _shared.md, _profile.md or _custom.md: the mode file names the one context file it reads and the ones it must not. Values it takes from config/profile.yml (language.output, pipeline.triage_threshold) are resolved here and injected; the mode never reads that file itself.

Applies to: triage

Modes delegated to subagent

For scan, apply (with Playwright), and pipeline (3+ URLs): launch as a worker/subagent with the resolved shared context + _profile.md (if exists) + _custom.md (if exists) + the resolved selected mode file injected into the worker prompt. If your CLI exposes an Agent(...) primitive, the call looks like this:

python
Agent(  subagent_type="general-purpose",  prompt="[output language directive]\n\n[content of modes/_shared.md, or resolved shared context: every declared _shared.md once]\n\n[content of modes/_profile.md if exists]\n\n[content of modes/_custom.md if exists]\n\n[content of modes/{mode}.md, or resolved selected mode file; primary evaluation file for Blocks A-F]\n\n[invocation-specific data]",  description="career-ops {mode}")

Execute the instructions from the loaded mode file.

來源與署名

來源:career-ops-hq/career-ops位於.agents/skills/career-ops提交d9c7868

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架