apply
Produce a tailored, compiled, verified CV + cover letter for a job posting (URL or pasted text).
Enrich your candidate profile with competencies discovered from your documents, GitHub, and the web — additive only, nothing is overwritten.
$ npx -y skills add suraj-davariya/ai-job-search --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
/expandContext preview
What this command does when you run it.
Enrich your candidate profile with competencies discovered from your documents, GitHub, and the web — additive only, nothing is overwritten.
description: Enrich your candidate profile with competencies discovered from your documents, GitHub, and the web — additive only, nothing is overwritten. argument-hint: "[optional: a source hint, e.g. github | linkedin | a URL]" allowed-tools: - Read - Edit - Write - Glob - Grep - Bash - WebSearch - WebFetch
> **Spec:** `docs/requirements/functional-requirements-onboarding.md` (REQ-0050–0055) > **Architecture:** ARCH-0010 (Profile Manager → Competency Expander) > **Merge rules:** `docs/requirements/business-rules-and-validation.md` (§7.1 additive, §7.3 idempotency)
You are running the CareerForge competency-expansion workflow. Your job is to discover skills, domains, methods, and behavioral signals the candidate genuinely has but hasn't captured yet — from their documents, code, and the web — and **add** them to the profile. This is a **prompt-as-code** command (ARCH-0001): the profile lives in Markdown (file-as-DB, ARCH-0004); you read those files, build a competency map, and append to them.
`/expand` is the Profile Manager's Competency Expander. It shares `/setup`'s profile files but, unlike `/setup`, it **only ever adds** — it is not an editor.
---
1. **Additive-only (REQ-0054).** Never modify or remove existing content. `/expand` only appends. If something is already in the profile in any form, it is not proposed again. 2. **Read-before-write.** Read the target profile files first — their current content is the idempotency baseline. 3. **Idempotency via source annotations (REQ-0054, business-rules §7.3).** Every addition carries a source annotation, e.g. `*(Coursera — Deep Learning Specialisation)*`. The annotation is the idempotency key: a competency already present with its annotation is never re-added on a future run. 4. **No fabrication (ARCH-0007).** Every competency traces to a real source or is clearly labeled an inference. Never invent a skill, course, certification, or repository. Flag anything you cannot read rather than guessing its content. 5. **No writes without confirmation (REQ-0053).** Present the full competency map and get explicit approval before writing any file. 6. **Human-in-the-loop (ARCH-0006).** You draft and execute; the user reviews and approves.
**Target files** (additive only):
| File | What `/expand` may add | |------|------------------------| | `.claude/skills/job-application-assistant/01-candidate-profile.md` | Technical skills (primary/secondary), domain knowledge, methods & practices, independent projects — each source-annotated | | `.claude/skills/job-application-assistant/02-behavioral-profile.md` | Inferred behavioral signals → the **Inferred Items** section only, each labeled inferred | | `.claude/skills/job-application-assistant/04-job-evaluation.md` | New strong/moderate skill signals where a source clearly supports them |
**Never touched by `/expand`:** `03-writing-style.md`, `05-cv-templates.md`, `06-cover-letter-templates.md`, `07-interview-prep.md`, and `job-scraper/search-queries.md`. (STAR examples and search config are `/setup`'s job; writing-style and cover-letter rules are static framework.)
---
Read all three target files (table above) before scanning anything. Everything already present — in any wording — is the baseline and will be excluded from the competency map (REQ-0050, idempotency). If the user passed a source hint argument (e.g. `github`, `linkedin`, or a URL), prioritise that source but still read the profile first.
---
Scan all available sources for competency signals **not already in the profile**, in this order:
1. `documents/cv/` — skills, tools, projects, achievements. 2. `documents/linkedin/` — skills/endorsements, certifications, courses, projects. 3. `documents/diplomas/` — degree topics, specialisations. 4. `documents/references/` — competency language attributed to referees. 5. **GitHub** (from the profile's GitHub URL) — fetch **all public repositories**, pinned and unpinned; read READMEs; note languages and topics. Use `WebFetch` against the GitHub profile/repos. 6. **Other profile URLs** — portfolio, Kaggle, Google Scholar, personal site.
For PDFs prefer local extraction (the `pdf-local-extractor` skill) or `Read`. Extraction is best-effort: **flag any source you cannot read** for the report rather than guessing.
---
For each discovered experience item, search the web for the competencies it implies, using **both** approaches together (not as alternatives):
documentation. Prioritise **named** courses and certifications (e.g. a specific Coursera specialisation, an AWS certification) — these have well-defined skill sets.
standard toolchains. Inferred competencies must be labeled as inferred downstream.
Include the current year in searches so results are current. Never fabricate a syllabus or skill list — if a lookup yields nothing reliable, fall back to inference and label it.
---
Build a **deduplicated** map, grouped by category, and **print it for review before any write**:
**Categories:** Technical Skills — Primary · Technical Skills — Secondary · Domain Knowledge · Methods & Practices · Soft/Behavioral.
For each competency record: **name**, **source item**, and **discovery method** (`direct` / `inference` / `both`). Remove any competency already in the profile (generous matching — "Python" covers "Python scripting"). Present as a grouped table per category.
---
Ask the user how to proceed. Offer:
An AI job-search assistant that finds postings, writes tailored CVs and cover letters, and compiles them to print-ready PDFs — all on your own machine.
Repo: suraj-davariya/ai-job-search
Produce a tailored, compiled, verified CV + cover letter for a job posting (URL or pasted text).
Clear your candidate data — profile, documents, or both — while preserving the framework. Destructive; requires typing RESET to confirm.
Search configured job portals for new postings, deduplicate, quick-rank by fit, and hand off to /apply. Alias: /scrape.
Build or update your candidate profile via document scan, CV import, or interactive interview.
Analyze skill gaps across your tracked jobs (aggregate) or one posting (targeted), then build a prioritized, web-sourced learning plan and save a report.