Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
c5196a8
fix(ci): correct first-interaction@v3 input names
BobbyWang0120 Apr 26, 2026
7d05967
feat(dashboard): add rejected and discarded pipeline tabs
BobbyWang0120 Apr 26, 2026
34fe3fb
fix(update-system): expand SYSTEM_PATHS to cover all language modes a…
FReptar0 Apr 26, 2026
4b71b2c
feat(latex): add tectonic engine auto-detect with pdflatex fallback
piscespieces Apr 26, 2026
b82bb5f
feat(cv): add cv.output_format to route between html and latex genera…
piscespieces Apr 26, 2026
b0ee6eb
fix(update-system): cross-check GitHub Releases API when VERSION file…
FReptar0 Apr 26, 2026
a579e01
docs(data-contract): list fr/ja/pt/ru localized modes alongside de
darshan3131 Apr 26, 2026
8d289c6
feat(dashboard): show tracker IDs in pipeline list
BobbyWang0120 Apr 26, 2026
931d692
chore(deps): bump @google/generative-ai from 0.21.0 to 0.24.1
dependabot[bot] Apr 26, 2026
7821113
fix(merge-tracker): filter seniority and location stopwords + require…
darshan3131 Apr 26, 2026
0531616
docs(modes): translate batch.md from Spanish to English
seffhunnn Apr 26, 2026
7f8217e
fix(liveness): detect closed postings with applications-closed banner…
osamaKhalid122 Apr 26, 2026
9bcea95
docs(modes): translate apply.md from Spanish to English
seffhunnn Apr 26, 2026
590ba6e
feat(portals): add Canada/Vancouver and automation companies to examp…
MrezaDorudian Apr 26, 2026
d725306
chore(main): release 1.6.0 (#375)
github-actions[bot] Apr 26, 2026
62b767d
feat: add Claude Code plugin manifests (path-stable)
santifer Apr 26, 2026
6a3dc22
fix(release): sync VERSION and package.json via release-please-config
chorrell Apr 30, 2026
1aa7109
docs(contributors): add Community Voices section + first entry @logum…
santifer Apr 30, 2026
9ae201d
feat: add writing-samples folder for AI-detection-evading voice calib…
AlphaToon Apr 30, 2026
410961c
snapshot: dev state across multiple work streams (2026-04-29)
ageem23 Apr 30, 2026
5be3b24
fix(gitignore): drop overly broad batch/* pattern
ageem23 Apr 30, 2026
295bfb4
fix(update-pipeline-scores): handle missing state files and local:jds…
ageem23 Apr 30, 2026
cd5f4f7
fix(scan): fail fast on bare --login
ageem23 Apr 30, 2026
b9659f5
fix(scan-semantic): balanced-brace JSON extraction + surface bad back…
ageem23 Apr 30, 2026
5c5eb42
fix(linkedin): slugify fallback for non-Latin titles + reject non-web…
ageem23 Apr 30, 2026
f021174
fix(test-linkedin-config): validate delay_* tuples + tracked_companie…
ageem23 Apr 30, 2026
f9128ab
fix(analyze-filter-patterns): validate numeric CLI flags up front
ageem23 Apr 30, 2026
f8d180c
fix(dashboard): walk to fs root and surface stat errors
ageem23 Apr 30, 2026
aa11473
fix(contacto): translate name-verification gate to Spanish + clarify …
ageem23 Apr 30, 2026
1037b04
docs(portals.example): clarify backend resolution order and archetype…
ageem23 Apr 30, 2026
faa6cd8
chore(triage-pending): mark hardcoded geo bias for config-driven foll…
ageem23 Apr 30, 2026
0d28b69
fix(linkedin): repair search URL, card selector, and detail-panel sel…
ageem23 Apr 30, 2026
1c34e4d
perf(scan-semantic): bump CHUNK_SIZE so typical scans run in a single…
ageem23 May 1, 2026
2dbb498
feat(scan): profile.yml-as-archetype-source + inline filter-refinemen…
ageem23 May 1, 2026
377ceca
Merge remote-tracking branch 'upstream/main' into personal/dev-snapshot
ageem23 May 2, 2026
a892dca
docs: add trademark policy
santifer May 3, 2026
13b4fef
docs: update TRADEMARK.md with OEPM filing references
santifer May 3, 2026
7605a5e
feat: multi-CLI support via open agent skill standard (#572)
piscespieces May 5, 2026
973129f
chore(main): release career-ops 1.7.0
github-actions[bot] May 6, 2026
8e554cc
fix(release): sync VERSION file to 1.7.0
santifer May 6, 2026
3ae0816
feat(dashboard): in-viewer status picker for current application
ageem23 May 7, 2026
a6a29f4
Merge pull request #3 from ageem23/feature/dashboard-viewer-status
ageem23 May 7, 2026
43ed476
feat(scraper): configurable capture groups + URL absolutization
ageem23 May 7, 2026
90b2baa
fix(scraper): correct URL resolution + only retry transient fetch errors
ageem23 May 7, 2026
976d548
Merge pull request #4 from ageem23/feature/scraper-multi-group-pattern
ageem23 May 7, 2026
1172823
feat(mid-filter): JD-snippet archetype filter between title and full …
ageem23 May 8, 2026
bce68df
feat(mid-filter): score against full CV+profile, cache JDs, browser f…
ageem23 May 11, 2026
2f8c010
Merge upstream/main: v1.7.0 + multi-CLI skill restructure
ageem23 May 11, 2026
6d374e6
fix(mid-filter): load .env so ANTHROPIC_API_KEY actually reaches scan…
ageem23 May 11, 2026
dfa247e
feat(linkedin): pass location, geo_id, distance, work_mode to LinkedI…
ageem23 May 12, 2026
3a71469
fix(update-system): include .agents/ in SYSTEM_PATHS (#600)
shiminshen May 12, 2026
f353872
chore(main): release career-ops 1.7.1
github-actions[bot] May 12, 2026
2ebfcab
fix(release): sync VERSION file to 1.7.1
santifer May 12, 2026
bd07b97
refactor: point GEMINI.md to canonical AGENTS.md (#580)
piscespieces May 12, 2026
207fd07
fix(update-system): allow writing-samples/README.md as system-owned f…
msabihahmed May 12, 2026
e5f0508
fix(modes): make /career-ops deep respect user language, not JD langu…
FReptar0 May 12, 2026
d692647
feat(scan): optional location_filter in portals.yml + persist locatio…
mstine May 12, 2026
ba75c5c
feat(apify): cache JDs locally when field_map.description is configured
ageem23 May 12, 2026
36cb364
feat(mid-filter): JD-snippet archetype filter between title and full …
ageem23 May 8, 2026
c6ac2b6
feat(mid-filter): score against full CV+profile, cache JDs, browser f…
ageem23 May 11, 2026
aa9b6db
fix(mid-filter): load .env so ANTHROPIC_API_KEY actually reaches scan…
ageem23 May 11, 2026
3f63b1e
feat(dashboard/viewer): word-wrap long lines so JD details aren't tru…
ageem23 May 12, 2026
ccb4921
fix(mid-filter): address CodeRabbit PR#5 feedback
ageem23 May 12, 2026
fbddc2b
Merge pull request #5 from ageem23/feature/recent-improvements
ageem23 May 12, 2026
35baa59
Merge remote-tracking branch 'upstream/main'
ageem23 May 12, 2026
d2d2e56
feat(scan): semantic title-filter phase + HTTP/browser provider helpers
ageem23 May 12, 2026
5f8e18c
fix(scan-infra): address CodeRabbit PR#6 feedback
ageem23 May 12, 2026
005bc18
Merge pull request #6 from ageem23/feature/scan-infrastructure
ageem23 May 12, 2026
e37a725
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 12, 2026
2b6dcfe
feat(linkedin): authenticated keyword-search provider + config validator
ageem23 May 12, 2026
f73252a
fix(linkedin): address CodeRabbit PR#7 feedback
ageem23 May 12, 2026
c8f4be4
fix(linkedin): address CodeRabbit PR#7 round-2 feedback
ageem23 May 13, 2026
0c76d9c
Merge pull request #7 from ageem23/feature/linkedin-provider
ageem23 May 13, 2026
dff8651
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 13, 2026
29dab6f
feat(apify): generic Apify actor provider + local JD caching
ageem23 May 13, 2026
6c01809
fix(apify): address CodeRabbit PR#8 feedback
ageem23 May 13, 2026
4b9c93a
fix(_apify): thread deadline through startRun + fetchDatasetItems
ageem23 May 13, 2026
37b5bf2
fix(_apify): SSRF guard on actorId + truly end-to-end timeout
ageem23 May 13, 2026
a89960c
fix(_apify): waitForRun() rethrows non-retriable 4xx errors
ageem23 May 13, 2026
4e1759e
Merge pull request #8 from ageem23/feature/apify-provider
ageem23 May 13, 2026
3de05af
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 13, 2026
352fc93
feat(scraper): HTML scraper provider with configurable capture groups
ageem23 May 13, 2026
44b398a
fix(scraper): SSRF/origin guards + strict capture-group validation
ageem23 May 13, 2026
a69d033
Merge pull request #9 from ageem23/feature/scraper-provider
ageem23 May 13, 2026
ffd58b9
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 13, 2026
f9eccbc
feat(dashboard): in-viewer status picker + word-wrap for JD lines
ageem23 May 13, 2026
52b5b95
Merge pull request #10 from ageem23/feature/dashboard-viewer-status-v2
ageem23 May 13, 2026
46b007a
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 13, 2026
a877307
feat(dashboard): follow-up tasks view with cadence sync
ageem23 May 13, 2026
22e6c5d
feat(providers): add ashby, greenhouse, lever providers (#11)
ageem23 May 13, 2026
4e300d0
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 13, 2026
af2049a
fix(dashboard): address CodeRabbit review on PR #12
ageem23 May 13, 2026
6cc11aa
fix(dashboard): address CodeRabbit follow-up review on PR #12
ageem23 May 13, 2026
bde8e21
fix(dashboard): address second-round CodeRabbit review on PR #12
ageem23 May 13, 2026
1610d2d
fix(dashboard): unblock TUI on task refresh + align sync-tasks date w…
ageem23 May 13, 2026
488f56a
Merge pull request #12 from ageem23/feature/tasks
ageem23 May 13, 2026
06f193d
feat(tasks): contacto suggestions land in the tasks dashboard
ageem23 May 13, 2026
4fa4846
docs(contacto): always emit copy-paste block so web UI works
ageem23 May 13, 2026
9c9fe0e
feat(tasks): link tasks to applications for one-keystroke review
ageem23 May 13, 2026
a55cda1
fix(contacto): make task-save block unmissable by restructuring the mode
ageem23 May 13, 2026
cbe5e40
fix(tasks): address CodeRabbit review on PR #13
ageem23 May 13, 2026
0c96bb6
Merge pull request #13 from ageem23/feature/tasks-contacto
ageem23 May 13, 2026
92c6d11
feat(tasks): phase 4 QoL — reopen, details overlay, tasks panel in vi…
ageem23 May 13, 2026
e94dabc
feat(viewer): t key jumps to tasks view with cursor on the app's firs…
ageem23 May 14, 2026
b4835e8
docs(tasks): clarify FocusOnApp empty-list fallback behavior
ageem23 May 14, 2026
6078406
chore(tasks): drop unused borderStyle in details overlay
ageem23 May 14, 2026
afbbdfc
Merge pull request #14 from ageem23/feature/tasks-phase4
ageem23 May 14, 2026
70d9162
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 14, 2026
5e0669c
feat(viewer): o key opens application URL in browser
ageem23 May 14, 2026
a6ee42f
feat(tasks): move new-task creation from tasks view to pipeline view
ageem23 May 14, 2026
f05ac83
feat(tasks): days-from-today due date with arrow-key adjustment
ageem23 May 14, 2026
5d80fa5
chore(tasks): address CodeRabbit nitpicks on PR #16
ageem23 May 14, 2026
ab2c6ab
feat(viewer): n key opens the same new-task prompt as the pipeline
ageem23 May 14, 2026
6355c7b
Merge pull request #16 from ageem23/feature/task-from-app
ageem23 May 14, 2026
994fb5c
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 14, 2026
5096490
feat(pipeline): multi-select + bulk status change
ageem23 May 14, 2026
18f6a03
fix(pipeline): readable multi-select bg + picker menu band
ageem23 May 14, 2026
4e5c303
fix(pipeline): status picker as a bordered box, drop full-width band
ageem23 May 14, 2026
2cc462b
fix(pipeline): status cursor uses Reverse video to fix glyph clipping
ageem23 May 14, 2026
5aba174
fix(pipeline): cursor option highlight = Mauve foreground, nothing else
ageem23 May 14, 2026
214f3f3
fix(pipeline): drop bordered box around status picker
ageem23 May 14, 2026
06fce02
fix(pipeline): preserve multi-select on refresh; skip cascade on stat…
ageem23 May 14, 2026
9f89804
Merge pull request #17 from ageem23/feature/bulk-status
ageem23 May 14, 2026
7ad4a92
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 14, 2026
016bba7
feat(viewer): o key opens application URL in browser
ageem23 May 14, 2026
5d61497
Merge pull request #15 from ageem23/feature/viewer-open-url
ageem23 May 14, 2026
db6bbde
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 14, 2026
4cea083
feat(contacto): add user-configurable prompt-vs-inline default mode
ageem23 May 14, 2026
ebd8468
feat(contacto): make prompt the default mode (matches deep)
ageem23 May 14, 2026
a77d3f6
fix(manifest): align plugin.json skills field with Claude Code plugin…
bludiesel May 15, 2026
ffc3208
docs(modes/pdf): fix duplicate step 15 numbering (#528)
gzhang33 May 15, 2026
1411cdc
fix(portals): update Weights & Biases entry to CoreWeave acquisition …
infinity811 May 15, 2026
082cd11
fix(templates): align CV certification rows on a 3-column grid (#638)
Agueria May 15, 2026
fdca4de
fix(gemini-eval): redact API key from error logs, harden summary pars…
orbisai0security May 15, 2026
73dc603
fix(gemini-eval): include profile.yml and _profile.md in evaluation (…
DSnoNintendo May 15, 2026
dd3e036
fix(gemini-eval): switch default model to non-deprecated endpoint, su…
DSnoNintendo May 15, 2026
988f7bb
fix(scan): validate Greenhouse URL hostname against allowlist to prev…
luisjo88 May 15, 2026
5ed3b3d
fix(merge-tracker): preserve short specialty acronyms, require non-ba…
mstine May 15, 2026
bf84886
fix(update-system): defensive VERSION parsing for release-please mark…
nhardgrove May 15, 2026
150e223
fix(batch): workers read modes/_profile.md and config/profile.yml (#537)
thomasrlord May 15, 2026
f9d66a8
docs(modes): translate pipeline.md from Spanish to English (#511)
seffhunnn May 15, 2026
fb0abff
docs(modes): translate project.md from Spanish to English (#512)
seffhunnn May 15, 2026
ac77dbd
docs(zh-cn): sync README.cn.md with English version (#639)
zichen0116 May 15, 2026
0fe59bf
chore(deps): bump Go to 1.26 in test workflow (#497)
renovate[bot] May 15, 2026
ce1330e
fix(deps): update dotenv to v17 (#499)
renovate[bot] May 15, 2026
4714504
fix(update-system): bootstrap .agents/ for v1.6→v1.7 migration (#654)
santifer May 15, 2026
0b5cb66
chore(main): release career-ops 1.8.0
github-actions[bot] May 15, 2026
541917f
fix(release): sync VERSION file to 1.8.0
santifer May 15, 2026
dc3a247
fix(dashboard): width-aware Markdown rendering with table wrapping in…
loustack17 May 15, 2026
433f34f
feat(dashboard): /-key live search across pipeline rows (#526)
FReptar0 May 15, 2026
d8a1de3
docs(modes): translate auto-pipeline.md from Spanish to English (#468)
seffhunnn May 15, 2026
d173ac5
docs(modes): translate contacto.md from Spanish to English (#469)
seffhunnn May 15, 2026
6e1c5d6
docs(modes): translate ofertas.md from Spanish to English (#472)
seffhunnn May 15, 2026
b45a8d4
docs(modes): translate oferta.md from Spanish to English (#473)
seffhunnn May 15, 2026
f94a3be
fix(update-system): rollback() removes paths absent from backup branc…
FReptar0 May 15, 2026
980153c
fix(update-system): apply() safety violation reverts cleanly and rele…
FReptar0 May 15, 2026
d86b86c
feat(interview-prep): split prep by interviewer audience (#489)
FReptar0 May 15, 2026
e87eb57
feat(i18n): add Turkish (TR) language modes (#341)
ardacey May 15, 2026
44def35
feat(batch): add --model flag to batch-runner.sh (#504)
joyson-fernandes May 15, 2026
8666da7
fix(contacto): make mode-selection procedurally unmissable
ageem23 May 15, 2026
9676cda
feat(contacto): add user-configurable prompt-vs-inline default mode
ageem23 May 14, 2026
452efcc
feat(contacto): make prompt the default mode (matches deep)
ageem23 May 14, 2026
20f46e3
fix(contacto): make mode-selection procedurally unmissable
ageem23 May 15, 2026
d339977
Merge pull request #19 from ageem23/feature/skill-prompt-default-mode…
ageem23 May 15, 2026
b90a086
Merge pull request #18 from ageem23/feature/skill-prompt-default-mode
ageem23 May 15, 2026
4e7e414
fix(linkedin): wait for company name in detail panel + skip empty-com…
ageem23 May 15, 2026
3920366
feat(scan): auto-run mid-filter when a scan adds many new offers
ageem23 May 15, 2026
04e2b5d
feat(batch): gate worker PDF generation on score >= 4.0
ageem23 May 15, 2026
158a0b5
feat(pipeline): align Path A PDF gate to 4.0 (matches Path B in batch…
ageem23 May 15, 2026
0cf7ec1
feat: make PDF gate configurable via auto_pdf_score_threshold; defaul…
ageem23 May 15, 2026
5d1f3a3
chore: add FUNDING.yml for GitHub Sponsors
santifer May 16, 2026
c652fab
fix(batch): recover orphan state rows + bump lock timeout
ageem23 May 16, 2026
bc16035
Merge pull request #23 from ageem23/feature/batch-orphan-sweep
ageem23 May 17, 2026
6ff14c8
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
23073ad
docs(config): clarify auto_pdf_score_threshold edge cases
ageem23 May 17, 2026
db615e1
fix(batch): replace hardcoded 4.0 in report-header template
ageem23 May 17, 2026
aeefdeb
Merge pull request #22 from ageem23/feature/batch-pdf-score-gate
ageem23 May 17, 2026
022617b
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
91a90ea
fix(scan): warn on invalid auto_mid_filter_threshold instead of silen…
ageem23 May 17, 2026
d4b6795
Merge pull request #21 from ageem23/feature/scan-auto-mid-filter
ageem23 May 17, 2026
0445929
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
c2953be
Merge pull request #20 from ageem23/feature/linkedin-improvements
ageem23 May 17, 2026
2e6166e
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
95eb8f9
fix(scan): pre-evaluation fuzzy dedup against pipeline.md
ageem23 May 17, 2026
e9ee8d4
fix(dedup): address CodeRabbit findings on PR #24
ageem23 May 17, 2026
6115124
Merge pull request #24 from ageem23/feature/scan-fuzzy-dedup
ageem23 May 17, 2026
b0bca19
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
c3f6e8a
fix(dedup): exact-normalized match before fuzzy path
ageem23 May 17, 2026
9862c11
fix(dedup): canonicalize punctuation in normalizeRole
ageem23 May 17, 2026
521a981
Merge pull request #25 from ageem23/feature/dedup-exact-fallback
ageem23 May 17, 2026
b417f06
Merge remote-tracking branch 'origin/main' into personal/dev-snapshot
ageem23 May 17, 2026
a289a39
Merge remote-tracking branch 'upstream/main'
ageem23 May 18, 2026
4d8b155
Merge branch 'main' into personal/dev-snapshot
ageem23 May 18, 2026
78ae956
fix(pipeline): help bar says `q quit`, not `Esc quit`
ageem23 May 18, 2026
b111735
fix(batch): reconcile pipeline.md inbox after batch runs
ageem23 May 20, 2026
a981371
fix(batch): address CodeRabbit review feedback
ageem23 May 20, 2026
c07cd23
fix(batch): resolve symlinks in the repo-path guard
ageem23 May 20, 2026
2198f81
fix(batch): reject directory args in the repo-path guard
ageem23 May 20, 2026
463c85a
fix(contacto): generate the add-task block inside the prompt (mode A)
ageem23 May 21, 2026
96f0bfb
feat(batch): nightly scan+pipeline automation + early-exit rule
ageem23 May 22, 2026
6667be7
chore: force LF line endings for shell scripts
ageem23 May 22, 2026
1396da8
feat(batch): add --no-scan flag for second nightly catch-up run
ageem23 May 24, 2026
ce645be
feat(batch): scan-error banner, late-run append, pre-scan VPN wait
ageem23 May 28, 2026
ecf8ac7
feat(dashboard): auto-complete pending tasks on Rejected/Discarded
ageem23 May 30, 2026
36aa4aa
feat(batch): pre-scan network probe + per-layer error diagnostics
ageem23 May 31, 2026
9d557aa
perf(dashboard): collapse task auto-complete to one read-modify-write
ageem23 Jun 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 98 additions & 0 deletions .agents/skills/career-ops/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
name: career-ops
description: AI job search command center -- evaluate offers, generate CVs, scan portals, track applications
arguments: mode # Claude Code specific
user-invocable: true
argument-hint: "[scan | deep | pdf | oferta | ofertas | apply | batch | tracker | pipeline | contacto | training | project | interview-prep | update]"
license: MIT
---

# career-ops -- Router

## Mode Routing

Determine the mode from `$mode`:

| Input | Mode |
|-------|------|
| (empty / no args) | `discovery` -- Show command menu |
| JD text or URL (no sub-command) | **`auto-pipeline`** |
| `oferta` | `oferta` |
| `ofertas` | `ofertas` |
| `contacto` | `contacto` |
| `deep` | `deep` |
| `interview-prep` | `interview-prep` |
| `pdf` | `pdf` |
| `training` | `training` |
| `project` | `project` |
| `tracker` | `tracker` |
| `pipeline` | `pipeline` |
| `apply` | `apply` |
| `scan` | `scan` |
| `batch` | `batch` |
| `patterns` | `patterns` |
| `followup` | `followup` |

**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.

---

## Discovery Mode (no arguments)

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 pdf → PDF only, ATS-optimized CV
/career-ops training → Evaluate course/cert against North Star
/career-ops project → Evaluate portfolio project idea
/career-ops tracker → Application status overview
/career-ops apply → Live application assistant (reads form + generates answers)
/career-ops scan → Scan portals and discover new offers
/career-ops batch → Batch processing with parallel workers
/career-ops patterns → Analyze rejection patterns and improve targeting
/career-ops followup → Follow-up cadence tracker: flag overdue, generate drafts

Inbox: add URLs to data/pipeline.md → /career-ops pipeline
Or paste a JD directly to run the full pipeline.
```

---

## Context Loading by Mode

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

### Modes that require `_shared.md` + their mode file:
Read `modes/_shared.md` + `modes/{mode}.md`

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

### Standalone modes (only their mode file):
Read `modes/{mode}.md`

Applies to: `tracker`, `deep`, `interview-prep`, `training`, `project`, `patterns`, `followup`

### Modes delegated to subagent:
For `scan`, `apply` (with Playwright), and `pipeline` (3+ URLs): launch as Agent with the content of `_shared.md` + `modes/{mode}.md` injected into the subagent prompt.

```
Agent(
subagent_type="general-purpose",
prompt="[content of modes/_shared.md]\n\n[content of modes/{mode}.md]\n\n[invocation-specific data]",
description="career-ops {mode}"
)
```

Execute the instructions from the loaded mode file.
18 changes: 18 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "career-ops",
"metadata": {
"description": "AI job search command center — evaluate offers, generate CVs, scan portals, track applications"
},
"owner": {
"name": "santifer",
"url": "https://santifer.io"
},
"plugins": [
{
"name": "career-ops",
"source": "./",
"description": "AI job search pipeline — evaluate offers, generate CVs, scan portals, track applications",
"category": "productivity"
}
]
}
18 changes: 18 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "career-ops",
"version": "1.6.0",
"description": "AI job search command center — evaluate offers, generate CVs, scan portals, track applications",
"author": {
"name": "santifer",
"url": "https://santifer.io"
},
"skills": true,
"permissions": {
"allow": [
"Bash(node:*)",
"WebFetch(domain:boards-api.greenhouse.io)",
"WebFetch(domain:jobs.ashbyhq.com)",
"WebSearch"
]
}
}
95 changes: 0 additions & 95 deletions .claude/skills/career-ops/SKILL.md

This file was deleted.

1 change: 1 addition & 0 deletions .claude/skills/career-ops/SKILL.md
8 changes: 4 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
# ── Gemini Integration (Issue #344) ─────────────────────────────────────────
# Required for: node gemini-eval.mjs "JD text here"
# Free API key: https://aistudio.google.com/apikey
# Free tier: 15 RPM / 1M tokens/day with gemini-2.0-flash (no billing needed)
# Free tier: 15 RPM / 1M tokens/day with gemini-2.5-flash (no billing needed)
GEMINI_API_KEY=your_gemini_api_key_here

# ── Optional: Override default Gemini model ───────────────────────────────────
# Default: gemini-2.0-flash (free-tier, fast)
# Alternatives: gemini-1.5-flash, gemini-1.5-pro, gemini-2.0-flash-thinking-exp
# GEMINI_MODEL=gemini-2.0-flash
# Default: gemini-2.5-flash (free-tier, fast)
# Alternatives: gemini-1.5-flash, gemini-1.5-pro, gemini-2.5-flash-thinking-exp
# GEMINI_MODEL=gemini-2.5-flash

# ── Other integrations (add your own below) ──────────────────────────────────
# ANTHROPIC_API_KEY=your_anthropic_key_here # For Claude-based workflows
Expand Down
20 changes: 0 additions & 20 deletions .gemini/commands/career-ops-apply.toml

This file was deleted.

16 changes: 0 additions & 16 deletions .gemini/commands/career-ops-batch.toml

This file was deleted.

17 changes: 0 additions & 17 deletions .gemini/commands/career-ops-compare.toml

This file was deleted.

17 changes: 0 additions & 17 deletions .gemini/commands/career-ops-contact.toml

This file was deleted.

15 changes: 0 additions & 15 deletions .gemini/commands/career-ops-deep.toml

This file was deleted.

18 changes: 0 additions & 18 deletions .gemini/commands/career-ops-evaluate.toml

This file was deleted.

17 changes: 0 additions & 17 deletions .gemini/commands/career-ops-followup.toml

This file was deleted.

17 changes: 0 additions & 17 deletions .gemini/commands/career-ops-patterns.toml

This file was deleted.

Loading