Skip to content
Productivity
Command

/setup

Build or update your candidate profile via document scan, CV import, or interactive interview.

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

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/setup

Context preview

What this command does when you run it.

Build or update your candidate profile via document scan, CV import, or interactive interview.

Command definition

setup.md
description: Build or update your candidate profile via document scan, CV import, or interactive interview.
argument-hint: "[--section <name>]"
allowed-tools:
  - Read
  - Edit
  - Write
  - Glob
  - Grep
  - Bash

/setup — Candidate Profile Onboarding

> **Spec:** `docs/requirements/functional-requirements-onboarding.md` (REQ-0001–0017) > **Data model:** `docs/requirements/data-requirements.md` (§1–§9, §13, §17) > **Merge rules:** `docs/requirements/business-rules-and-validation.md` (§7) > **Flow:** `docs/requirements/user-flows.md` (§1)

You are running the CareerForge onboarding workflow. Your job is to populate the user's profile files — replacing every `[UPPER_SNAKE_CASE]` placeholder token with their real data — through one of three convergent paths.

This is a **prompt-as-code** command (ARCH-0001): there is no compiled program and no `settings/profile.json`. The profile lives in Markdown files (file-as-DB, ARCH-0004). You read those files, gather the user's data, and write it back.

---

Hard Invariants (apply to every step, every write)

1. **Read-before-write (REQ-0002).** Always read a target file's current contents before proposing changes to it. Existing file state is the idempotency baseline — anything already present is not proposed again. 2. **Idempotency (business-rules §7.3).** Re-running `/setup` with the same inputs produces no new changes. Never re-propose content already present in a file in any form. 3. **No fabrication (ARCH-0007).** Never invent a token value. If you don't have data for a token, ask the user or leave the token in place — never guess a name, date, employer, skill, or achievement. 4. **No writes without confirmation (REQ-0009).** Present all proposed changes and obtain explicit user approval before writing any file. 5. **Human-in-the-loop (ARCH-0006).** The user reviews and approves; you draft and execute. When in doubt, ask.

**Target files** (the convergence set — REQ-0016):

| File | Tokens populated | |------|------------------| | `.claude/skills/job-application-assistant/01-candidate-profile.md` | Identity, education, experience, projects, skills, publications, awards, references, `[AI_TOOL_NAME]` | | `.claude/skills/job-application-assistant/02-behavioral-profile.md` | Overview, drives, behaviors, preferences, growth areas, posting keywords, management style, application usage | | `.claude/skills/job-application-assistant/04-job-evaluation.md` | Strong/moderate/weak skills, strong/moderate/entry experience, career goals, energizing/draining tasks | | `.claude/skills/job-application-assistant/05-cv-templates.md` | `[PROFILE_STATEMENT_*]` (one per applicable role type) | | `.claude/skills/job-application-assistant/07-interview-prep.md` | `[STAR_*]` examples and `[STUB_*]` Path-A stubs | | `CLAUDE.md` (user fork — from `CLAUDE.md.template`) | Union of the above + workflow sections | | `.claude/skills/job-scraper/search-queries.md` | Search query + location-tier tokens |

**Never touched by `/setup`:** `03-writing-style.md` and `06-cover-letter-templates.md` are static framework rules. (The `[AI_TOOL_NAME]` mention in `03` is prose describing the override — not a fill target. The actual override token lives in `01-candidate-profile.md`.)

---

Step 0 — Argument Parsing & Path Selection (REQ-0001)

0a. Section update mode (`--section <name>`)

If invoked with `--section <name>`, **skip path selection** and run an update-only flow for just that section.

Valid `--section` values (any other value → list these and stop):

identity  education  experience  skills  certifications  publications
awards  behavioral  search  salary  interview-prep  writing-style

For section mode: 1. Read the file(s) that own that section (see the target-files table; e.g. `search` → `search-queries.md`; `behavioral` → `02-behavioral-profile.md`; `interview-prep` → `07-interview-prep.md`; `skills` → `01` + `04`). 2. Ask only the questions needed to (re)fill that section's tokens. 3. Merge per Step 5 rules (additive/conflicting) and write only those files. 4. Present a short summary (Step 6, scoped to the section).

`--section search` is the canonical way to regenerate search queries without redoing the whole profile (REQ-0015).

0b. Full onboarding — detect document folder state

If no `--section` argument, inspect `documents/` subfolders (`cv/`, `linkedin/`, `diplomas/`, `references/`, `applications/`) with Glob.

  • **Files present in ≥1 subfolder** → present the three paths with **Path A

recommended**.

  • **All subfolders empty** → present the three paths, framing Path A as a

"populate the `documents/` folder first, then re-run" option.

Always let the user pick **any** path regardless of folder state. Present:

> **Path A — Scan my documents** (recommended if you have CVs/LinkedIn exports in `documents/`) > **Path B — Import a single CV** (paste text or point me at one file) > **Path C — Interactive interview** (I ask, you answer — no documents needed)

Then branch to Step 1, 2, or 3. All paths reconverge at Step 4.

---

Step 1 — Path A: Document Folder Scanning (REQ-0002–0012)

A1. Read existing profile first

Read all target profile files (table above) before scanning. Their current content is the idempotency baseline — anything already present is not proposed again (REQ-0002).

A2. Scan and extract per subfolder

Glob each subfolder and extract structured data. For PDFs, prefer local extraction (the `pdf-local-extractor` skill) or the `Read` tool; extraction is best-effort — **flag any file you cannot read** rather than guessing its content.

| Subfolder | Extract | Req | Formats | |-----------|---------|-----|---------| | `cv/` | Name, contact, education, experience, skills, publications, awards, profile/summary text. Handle multiple CVs (cross-reference for consistency). | REQ-0003 | PDF, `.tex` | | `linkedin/` | About/summary, experience, education, skills/endorsements, certifications, volu

Read more
Ships withsuraj-davariya-ai-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.

Get the whole plugin

Other commands on suraj-davariya-ai-job-search.