Skip to content
Productivity
Command

/expand

Enrich your candidate profile with competencies discovered from your documents, GitHub, and the web — additive only, nothing is overwritten.

From plugin
ai-job-search
236 skills2 agents6 commands
$ npx -y skills add suraj-davariya/ai-job-search --agent claude-code

Command definition

expand.md
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

/expand — Competency Expansion

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

---

Hard Invariants (apply to every step, every write)

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

---

Step 0 — Read the existing profile

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.

---

Step 1 — Source Scanning (REQ-0050)

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.

---

Step 2 — Web Enrichment (REQ-0051)

For each discovered experience item, search the web for the competencies it implies, using **both** approaches together (not as alternatives):

  • **Direct lookup** — search for course syllabi, certification skill lists, and tool

documentation. Prioritise **named** courses and certifications (e.g. a specific Coursera specialisation, an AWS certification) — these have well-defined skill sets.

  • **Inference** — reason about the problem domain, the methods it requires, and the

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.

---

Step 3 — Competency Map (REQ-0052)

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.

---

Step 4 — User Confirmation (REQ-0053)

Ask the user how to proceed. Offer:

  • **`all`** — add every mapped competency.
  • **`review`** — walk through each categ
Read more
@suraj-davariya
Ships withai-job-search

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.

233 skills2 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
23
Star history of suraj-davariya/ai-job-search on GitHub, a chart by star-history.com

Other commands on ai-job-search.

reset

reset

Command

Clear your candidate data — profile, documents, or both — while preserving the framework. Destructive; requires typing RESET to…

search

search

Command

Search configured job portals for new postings, deduplicate, quick-rank by fit, and hand off to /apply. Alias: /scrape.

upskill

upskill

Command

Analyze skill gaps across your tracked jobs (aggregate) or one posting (targeted), then build a prioritized, web-sourced learning…

More commands from other plugins.

analyze-cohorts

analyze-cohorts

Command

Perform cohort analysis on user data — retention curves, feature adoption, and engagement trends

@phuryn@phurynInstall Command
again

again

Command

PUA Again — 用于再试试、换个方法、别放弃、为什么还不行、同一路径失败多次;要求停止微调同一思路,改用本质不同方案。

pua2mo20k
@tanweai@tanweaiInstall Command