Career-Ops
AI コーディング CLI 向け求職パイプライン — santifer/career-ops
Career-Ops は、AI コーディング CLI(Claude Code、Gemini CLI、OpenCode など)を求職コマンドセンターに変えるオープンソースのパイプラインです。スプレッドシートでの手動管理の代わりに、求人評価・ATS 向け CV 生成・ポータルスキャン・バッチ処理・トラッカー整合性を一つのワークフローにまとめます。
キーワードマッチではなく、エージェントが CV と求人票を突き合わせて適合度を推論します。応募の自動送信は行わず、評価と推奨のあと最終判断は常に人間が下します。
エージェントは AGENTS.md と modes/*.md を読み、単体評価・ポータルスキャン・バッチのいずれかに分岐します。出力はレポート・PDF・トラッカー TSV 経由で data/applications.md に集約されます。
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#f5ebe4", "primaryTextColor": "#3d2c24", "primaryBorderColor": "#b85c38", "lineColor": "#b85c38", "secondaryColor": "#e8f0e8", "tertiaryColor": "#faf7f5", "fontFamily": "Source Sans 3, system-ui, sans-serif", "fontSize": "13px"}}}%%
flowchart TD
CLI[AI コーディング CLI] --> AGENTS[AGENTS.md + modes]
AGENTS --> E1[単体評価 auto-pipeline]
AGENTS --> E2[ポータル scan]
AGENTS --> E3[バッチ batch-runner]
E1 --> OUT[レポート / PDF / TSV]
E2 --> PIPE[pipeline.md 受信箱]
E3 --> OUT
OUT --> APP[data/applications.md]
主要ディレクトリ
career-ops/
├── AGENTS.md, CLAUDE.md # エージェント指示(システム層)
├── modes/ # 評価・応募・面接などのモード定義
├── data/applications.md # 応募トラッカー(正本)
├── data/pipeline.md # 未処理 URL の受信箱
├── reports/ # 評価レポート {###}-{company}-{date}.md
├── batch/ # 並列バッチ(batch-runner.sh)
├── dashboard/ # Go 製 TUI
├── providers/ # Greenhouse / Ashby / Lever API
├── templates/ # CV HTML・TeX・states.yml
└── *.mjs # PDF 生成・マージ・整合性チェック
求人 URL または JD テキストを入力すると、Playwright / WebFetch で JD を取得し、アーキタイプ分類のうえ 6 ブロック(A–F)で評価します。10 次元の重み付きスコア(1–5)の平均が最終スコアになります。
| ブロック | 内容 |
|---|---|
| A | 役割サマリー |
| B | CV マッチ(ギャップと緩和策) |
| C | レベル戦略 |
| D | 報酬調査(WebSearch) |
| E | CV パーソナライズ計画 |
| F | 面接準備(STAR+R ストーリー) |
レポートヘッダには Legitimacy(掲載の信頼性ティア)も含まれます。PDF は generate-pdf.mjs(Playwright)で HTML テンプレートから生成し、トラッカー行は merge-tracker.mjs で applications.md にマージされます。
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#f5ebe4", "primaryTextColor": "#3d2c24", "primaryBorderColor": "#5a8f6e", "lineColor": "#b85c38", "fontFamily": "Source Sans 3, system-ui, sans-serif", "fontSize": "13px"}}}%%
flowchart LR
IN[URL / JD] --> EXT[抽出]
EXT --> CLS[アーキタイプ]
CLS --> EVAL[A–F 評価]
EVAL --> SC[10 次元スコア]
SC --> RPT[reports/*.md]
RPT --> PDF[PDF]
PDF --> TSV[tracker TSV]
| 機能 | 説明 |
|---|---|
| 自動パイプライン | URL を貼ると評価・PDF・トラッカー記録まで一連で処理 |
| 面接ストーリーバンク | 評価ごとに STAR+Reflection を蓄積(interview-prep/story-bank.md) |
| ATS 向け PDF | 求人ごとにキーワードを注入した CV(Space Grotesk + DM Sans テンプレート) |
| ポータルスキャナー | scan.mjs が Greenhouse / Ashby / Lever API を直接叩き LLM コストゼロで一覧取得 |
| バッチ処理 | batch/batch-runner.sh が headless CLI ワーカーを並列起動 |
| ダッシュボード TUI | Go 製。スコア・日付・ステータスでフィルタ・ソート |
| パイプライン整合性 | merge-tracker / dedup-tracker / verify-pipeline など |
| 多言語モード | modes/ja、modes/de などロケール別の応募フロー |
対応 CLI(抜粋)
open agent skill standard に従う CLI なら原則動作します。README では Claude Code、OpenCode、Gemini CLI を明示し、Codex は準備中と記載されています。スキル定義は .agents/skills/career-ops/SKILL.md にあります。
DATA_CONTRACT.md と AGENTS.md は、ユーザーデータとシステムファイルを分離します。
| 層 | 例 | 更新 |
|---|---|---|
| ユーザー層 | cv.md、config/profile.yml、modes/_profile.md、portals.yml、data/*、reports/* |
自動更新しない。カスタマイズはここへ |
| システム層 | modes/_shared.md、AGENTS.md、*.mjs、templates/*、batch/* |
update-system.mjs で更新可能 |
modes/_profile.md または config/profile.yml に書く。modes/_shared.md をユーザー内容で上書きしない(システム更新で失われるため)。
初回セッションでは cv.md、profile.yml、_profile.md、portals.yml の有無を静かに確認し、未設定ならオンボーディングに誘導する、と AGENTS.md が定めています。
git clone https://github.com/santifer/career-ops.git
cd career-ops && npm install
npx playwright install chromium
npm run doctor
cp config/profile.example.yml config/profile.yml
cp templates/portals.example.yml portals.yml
# ルートに cv.md を用意
claude # または利用中の AI CLI
# URL を貼る /career-ops で評価開始
モード・アーキタイプ・スコア重みは、CLI 上で「バックエンド向けにアーキタイプを変えて」などと依頼すればエージェントが同じファイルを編集する設計です。詳細手順はリポジトリ内の docs/SETUP.md を参照してください。
npm スクリプト(抜粋)
npm run doctor— 前提条件の検証npm run verify— パイプライン健全性npm run scan— ポータルスキャン(API 直叩き)npm run pdf— PDF 生成npm run update:check— システム層の更新確認
- GitHub: santifer/career-ops
- README(日本語)
- ARCHITECTURE.md
- SETUP.md
- ケーススタディ(作者)
- cv-santiago(ポートフォリオ)
- Discord コミュニティ
ライセンス: MIT(package.json)。トレードマークは TRADEMARK.md を参照。