Initial release — claude-resume-kit v1.0
Complete AI-assisted resume/CV generation framework: - 6 Claude Code skills (setup-extract, setup-build-kb, make-resume, make-cl, edit-resume, critique) - LaTeX templates (resume, CV, cover letter) with .cls class files - 6 reference docs (shared_ops, resume_reference, cl_reference, critical_rules, session_file_template, critique_framework) - Fictional Dr. Jordan Chen examples (extraction, experience, bundle, config, session, JD) - Knowledge base scaffolding and config template - README with setup guide and workflow documentation
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
---
|
||||
description: Re-critique existing resume/CV output files against a JD
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /critique
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`:
|
||||
- Session file path (e.g., `output/Acme/session_acme_engineer.md`) → read session file, derive .tex paths from Output Files
|
||||
- .tex file path(s) + JD source (existing format) → backward compatible
|
||||
- Session name (e.g., `acme_engineer`) → find session file via derivation
|
||||
|
||||
If no CL .tex provided or found in session file, critique resume/CV alone (Part 7 adjustments noted below).
|
||||
|
||||
---
|
||||
|
||||
## Safety Rules
|
||||
|
||||
**Accuracy > Relevance > Impact > ATS > Brevity**
|
||||
|
||||
Read `config.md` Provenance Flags. Verify every claim against that table.
|
||||
Check `config.md` KB Corrections Log — do not flag corrected items as errors.
|
||||
Use the email from `config.md` Personal Info — flag if a different email appears in output.
|
||||
FIXED sections (from `config.md` FIXED Sections) are template-locked — do not flag for editing. Flag only VARIABLE sections.
|
||||
|
||||
---
|
||||
|
||||
## User Input During Execution
|
||||
|
||||
If the user provides feedback, corrections, or suggestions at any point:
|
||||
1. Acknowledge the input immediately
|
||||
2. If it changes scoring criteria or focus: adjust the critique accordingly
|
||||
3. Never restart — resume from current position
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
Read `resume_builder/reference/shared_ops.md` — Fresh Session Startup + Session File Derivation.
|
||||
Read `CLAUDE.md` — check Active Sessions and KB Corrections.
|
||||
Read `config.md` — load Provenance Flags, FIXED Sections, email.
|
||||
Find and read the session file for the .tex being critiqued (use derivation protocol from shared_ops.md).
|
||||
|
||||
**Recovery check:**
|
||||
- If CL not DONE in session file → "CL not yet generated. Run `/make-cl` first."
|
||||
- If Critique: CURRENT → "Already critiqued (score X/100). Re-run? Waiting for confirmation."
|
||||
- If Critique: STALE → "Edits made since last critique. Re-critiquing."
|
||||
- If Critique: PENDING → proceed
|
||||
|
||||
---
|
||||
|
||||
## Protocol
|
||||
|
||||
1. **Read session file** — specifically note:
|
||||
- **Company Context** → reviewer persona, "why this company"
|
||||
- **Framing Strategy** → intentional reframing decisions (flag only execution inconsistencies, not the strategy itself)
|
||||
- **Cover Letter Plan** → CL structure rationale
|
||||
- **Critique Context** → reviewer persona, competitive landscape, domain vocabulary
|
||||
- If session file lacks Company Context or Critique Context: do 1-2 web searches to fill gaps
|
||||
2. Read `resume_builder/reference/critique_framework.md`
|
||||
3. Read the .tex file(s) — derive paths from session file Output Files, or from `$ARGUMENTS`
|
||||
4. Read the JD (path from `$ARGUMENTS` or session file)
|
||||
5. Read the relevant bundle (`resume_builder/bundles/bundle_[role_type].md` — from session file)
|
||||
6. Run char count:
|
||||
```bash
|
||||
python3 resume_builder/helpers/char_count.py -f [resume|cv] [file.tex]
|
||||
```
|
||||
7. Compile and visually verify:
|
||||
```bash
|
||||
pdflatex -interaction=nonstopmode -output-directory=output/<FolderName> [file.tex]
|
||||
```
|
||||
Use the Read tool to view the compiled PDF — check orphans, page fill, header wrapping.
|
||||
If compile fails: note "COMPILE FAILED — visual checks could not be verified" in Part 8.
|
||||
8. If a prior critique exists (`output/<FolderName>/critique_<name>.md`): read it and note previous score.
|
||||
|
||||
9. **Run the full critique per critique_framework.md. The output MUST contain ALL 8 sections** (even if the framework file has partially compacted, produce every section):
|
||||
|
||||
1. **Domain-Specialist Lens** — 7 elements:
|
||||
(a) Reviewer persona (b) Company context (c) JD vocabulary extraction (d) Domain vocabulary map
|
||||
(e) Gap ranking (fatal/serious/cosmetic) (f) Methodology transfer test (g) Competitive landscape
|
||||
2. **Five-Perspective Read-Through** — ATS, Recruiter (10s), HR (30s), HM (2min), Technical (10min) — each with verdict
|
||||
3. **Eight-Dimension Scoring** — weighted table summing to 100
|
||||
(ATS 15%, Summary 10%, Skills 10%, Bullets 25%, Publications 10%, Narrative 15%, Visual 5%, Credibility 10%)
|
||||
4. **Interview Likelihood** — per-reader probability + ceiling analysis
|
||||
5. **Tiered Improvements** — Tier 1 (>=1pt each), Tier 2 (0.3-0.9), Tier 3 (<0.3)
|
||||
6. **Interview Bridge Points** — 5-7 resume-to-interview talking points
|
||||
7. **Cover Letter Critique** — 6 sub-checks (6A anti-patterns, 6B tailoring, 6C context-specific, 6D ATS, 6E structural, 6F package cohesion)
|
||||
- **If no CL provided:** Skip 6A-6E. Run 6F as resume standalone assessment — evaluate whether the resume earns an interview without a CL. Note: "Cover letter not provided — package cohesion not assessed."
|
||||
8. **Post-Generation Verification** — mechanical + content + structural checklists
|
||||
|
||||
10. Save to `output/<FolderName>/critique_<name>.md`
|
||||
11. **Update session file** — Critique Summary (score, findings, tier 1 fixes), Status → Critique: CURRENT
|
||||
12. **Update memory pointer** with new score
|
||||
|
||||
Progress: "Reading session file for framing context..." / "Running ATS keyword scan — 16/20 match..." / "Scoring 8 dimensions..." / "Score: 87.0/100"
|
||||
|
||||
### >>>>>> MANDATORY STOP <<<<<<
|
||||
Present: score table + tier 1 actionable fixes + interview likelihood.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
If edits needed, tell user to run `/edit-resume`.
|
||||
|
||||
### When user approves / says "looks good" / finalizes:
|
||||
Verify all expected files exist in `output/<FolderName>/`:
|
||||
- session file, resume/CV .tex + .pdf, CL .tex + .pdf, critique .md
|
||||
- Compile artifacts (.aux, .log, .out)
|
||||
Confirm to user: "Package complete in output/<FolderName>/ — [list files]"
|
||||
@@ -0,0 +1,207 @@
|
||||
---
|
||||
description: Edit existing resume/CV or cover letter from critique feedback and user suggestions
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /edit-resume
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`: First argument is the .tex file path (required). A `.md` path is the critique file. Text in quotes is inline instructions.
|
||||
- `/edit-resume output/Acme/e2e_acme_resume.tex`
|
||||
- `/edit-resume output/Acme/e2e_acme_resume.tex output/Acme/critique_acme.md`
|
||||
- `/edit-resume output/Acme/e2e_acme_resume.tex "shorten Position 1 header, fill last page"`
|
||||
|
||||
If only .tex path and no instructions: ask the user what to fix.
|
||||
|
||||
---
|
||||
|
||||
## Safety Rules (ALWAYS ENFORCED)
|
||||
|
||||
**Accuracy > Relevance > Impact > ATS > Brevity**
|
||||
|
||||
Read `config.md` Provenance Flags before editing any content. Verify every claim against that table.
|
||||
|
||||
- Use the email from `config.md` Personal Info in all outputs
|
||||
- Source ALL bullet content from `resume_builder/experience/` files. Never fabricate.
|
||||
- Resume bullets: ALL variable bullets must be 2L (CV: 2L/3L mix OK, check `config.md` Document Preferences)
|
||||
- Run `python3 resume_builder/helpers/char_count.py` after edits — the tool is authoritative
|
||||
|
||||
### FIXED Sections — Refuse if Asked to Edit
|
||||
Check `config.md` FIXED Sections for the list of template-locked sections. Say no and explain: these are template-locked across all outputs.
|
||||
|
||||
VARIABLE sections only: Summary, Technical Skills, Research Experience bullets/headers.
|
||||
|
||||
---
|
||||
|
||||
## User Input During Execution
|
||||
|
||||
If the user provides feedback, corrections, or suggestions at any point:
|
||||
1. Acknowledge the input immediately
|
||||
2. If it affects an already-applied edit: go back, fix it, re-run char count gate
|
||||
3. If it changes the edit plan: update session file, adjust remaining edits
|
||||
4. If it's a question: answer it, then continue from current step
|
||||
5. Never restart a phase — resume from current position
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
Read `resume_builder/reference/shared_ops.md` — Fresh Session Startup + Session File Derivation.
|
||||
Read `CLAUDE.md` — check Active Sessions and KB Corrections.
|
||||
Read `config.md` — load Provenance Flags, email, FIXED Sections, document preferences.
|
||||
Find and read the session file (use derivation protocol from shared_ops.md).
|
||||
|
||||
**Recovery check:**
|
||||
- Read session file, check for existing Edit N Status
|
||||
- If Edit N Status shows IN_PROGRESS: read .tex, identify which edits are done, resume
|
||||
- If no edit in progress: proceed to Phase 1
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Load Context
|
||||
|
||||
Read in this order:
|
||||
1. **Session file** (`output/<FolderName>/session_<name>.md`) — note: Framing Strategy, Company Context, Bullet Plan, Edit History
|
||||
2. `resume_builder/reference/resume_reference.md` — char limits, budgets, fixed sections
|
||||
3. The .tex file being edited
|
||||
4. Critique file (if provided in `$ARGUMENTS`)
|
||||
5. JD file (path from session file's JD Info section)
|
||||
6. Compile current .tex and record baseline page count
|
||||
7. Run: `python3 resume_builder/helpers/char_count.py -f [resume|cv] [file.tex]`
|
||||
|
||||
**Record baseline in session file** under `## Edit [N] Baseline` (scan existing Edit History sections; next N = max existing + 1, or 1 if none):
|
||||
|
||||
```
|
||||
## Edit [N] Baseline
|
||||
- Pages: [N]
|
||||
- Char violations: [list or "none"]
|
||||
- Orphan violations: [list or "none"]
|
||||
- White space last page: [N lines]
|
||||
- Variable bullets: [N]
|
||||
- Rendered lines: [N]
|
||||
```
|
||||
|
||||
Progress: "Reading session file — [company], [role type] bundle..." / "Baseline: 2 pages, 0 char violations, 1 orphan..."
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Diagnose & Plan Edits
|
||||
|
||||
Gather change requests from THREE sources:
|
||||
1. **User instructions** from `$ARGUMENTS` (highest priority)
|
||||
2. **Critique file** (Tier 1 fixes first, then Tier 2)
|
||||
3. **Auto-detected issues** from Phase 1 (char violations, orphans, page fill)
|
||||
|
||||
Cross-check against **session file framing strategy** — edits must stay consistent with decisions from `/make-resume`.
|
||||
|
||||
**For each change, classify:**
|
||||
- **MODIFY:** Change text of existing bullet/summary/skills. Budget unchanged.
|
||||
- **SWAP:** Replace one bullet with another. Budget unchanged if same variant.
|
||||
- **ADD:** Insert new bullet. Budget increases by rendered lines.
|
||||
- **REMOVE:** Drop a bullet. Budget decreases.
|
||||
- **VARIANT CHANGE:** e.g., 2L → 3L. Budget changes by rendered line delta.
|
||||
- **FIXED:** Blocked — show in plan with `[FIXED — cannot edit]` and explain why.
|
||||
|
||||
**Budget revalidation (if any change is ADD, REMOVE, SWAP-with-different-variant, or VARIANT CHANGE):**
|
||||
Recalculate total variable bullets and rendered lines. Compare against budget from resume_reference.md.
|
||||
If OVER budget: present overflow and ask user which bullet to drop or shorten.
|
||||
Show: `Budget: [N] bullets ([M] rendered lines) vs target [T]. PASS/FAIL`
|
||||
|
||||
If edit targets **cover letter** (not resume/CV): note this — Phase 4 will use CL-specific gates. Load CL .tex path from session file Output Files section.
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present numbered edit plan. Each item shows: what, why, source, classification (MODIFY/ADD/SWAP/FIXED).
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
Proceeding without confirmation may make unwanted edits that break package consistency.
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Load Reference Files (only confirmed edits)
|
||||
|
||||
Load ONLY what the confirmed edits need:
|
||||
|
||||
- **Bullet expand/rewrite/add:** `resume_builder/experience/` files + matching bundle + `resume_builder/support/achievement_reframing_guide.md`
|
||||
- **Summary rewrite:** Bundle (S2 summary guide) + `resume_builder/support/skills_taxonomy.md`
|
||||
- **Cover letter edits:** `resume_builder/support/significance_*.md` + `resume_builder/reference/cl_reference.md`
|
||||
- **Simple fixes** (orphans, headers, spacing): No extra files needed
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: Execute Edits
|
||||
|
||||
Apply edits one section at a time. After each edited section:
|
||||
|
||||
1. Run char count gate:
|
||||
```bash
|
||||
python3 resume_builder/helpers/char_count.py -f [resume|cv] output/<FolderName>/[file].tex
|
||||
```
|
||||
2. Fix any OVER violations or orphans before next section
|
||||
3. If a bullet expansion doesn't render as expected (1L when targeting 2L, or 3L), adjust immediately
|
||||
|
||||
Update session file Edit N Status after each individual edit:
|
||||
- Edit 1 (orphan fix): DONE
|
||||
- Edit 2 (Summary rewrite): IN_PROGRESS
|
||||
|
||||
### Resume/CV Verification Gates
|
||||
| Gate | Check | If FAIL |
|
||||
|------|-------|---------|
|
||||
| Char count | No OVER violations | Fix bullet before proceeding |
|
||||
| Page fill | Resume: <= 3 lines white space. CV: check rendered line target | Expand/trim variable bullets |
|
||||
| Page count | Match `config.md` Document Preferences | Trim/expand variable content |
|
||||
| Orphan | 2L bullet last line >= 70% | Pad or trim |
|
||||
| Title width | Position title + date fits 1 line | Shorten title |
|
||||
| Compile | Clean pdflatex | Fix LaTeX errors |
|
||||
|
||||
### Cover Letter Verification Gates (if CL was edited)
|
||||
| Gate | Check | If FAIL |
|
||||
|------|-------|---------|
|
||||
| Word count | Industry 250-300, Lab/Academic 350-450 | Trim/expand |
|
||||
| Page fill | 1pg: well-filled. 2pg: page 2 >= half filled before signature | Adjust |
|
||||
| Paragraph count | Industry 3, Lab/Academic 4 | Restructure |
|
||||
| Anti-patterns | No generic opener, no defensive framing, no credential dump | Rewrite |
|
||||
| Package cohesion | CL claims traceable to resume bullets, no contradictions | Fix |
|
||||
|
||||
After all edits, compile:
|
||||
```bash
|
||||
pdflatex -interaction=nonstopmode -output-directory=output/<FolderName> output/<FolderName>/[file].tex
|
||||
```
|
||||
Use the Read tool to view the compiled PDF — check page count, white space, orphans, header wrapping.
|
||||
|
||||
Progress: "Editing Position 1 bullet 6 — was 184 chars, now 197..." / "Compiling... 2 pages, page fill OK"
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Update Session File & Present
|
||||
|
||||
1. **Append Edit History** (use the N from Phase 1 baseline):
|
||||
```
|
||||
### Edit [N] ([date]): [short description]
|
||||
- Changes: [what changed]
|
||||
- Source: critique item # / user request / auto-detected
|
||||
- Verification: gates passed
|
||||
```
|
||||
|
||||
2. **Compare against baseline:**
|
||||
|
||||
| Metric | Before | After | Delta |
|
||||
|--------|--------|-------|-------|
|
||||
| Page count | [N] | [N] | [+/-] |
|
||||
| Char violations | [N] | [N] | [+/-] |
|
||||
| Orphans | [N] | [N] | [+/-] |
|
||||
| White space | [N] | [N] | [+/-] |
|
||||
|
||||
Flag any metric that worsened.
|
||||
|
||||
3. **Update Status** — mark critique as STALE if edits made after last critique. Update Next.
|
||||
|
||||
4. **Update memory pointer** if status changed.
|
||||
|
||||
5. **Present:** Changes summary + delta table + compiled PDF.
|
||||
|
||||
### >>>>>> MANDATORY STOP <<<<<<
|
||||
Show results. Wait for user approval or further edits.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
### When user approves / says "looks good" / finalizes:
|
||||
Run file organization from `resume_builder/reference/shared_ops.md` — Finalization check.
|
||||
@@ -0,0 +1,127 @@
|
||||
---
|
||||
description: Generate a tailored cover letter from an existing session file and finished resume/CV
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /make-cl
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`:
|
||||
- Session file path (e.g., `output/Acme/session_acme_engineer.md`) → read that session file
|
||||
- Session name (e.g., `acme_engineer`) → find session file via shared_ops.md derivation
|
||||
- Empty → check `CLAUDE.md` Active Sessions for latest
|
||||
|
||||
---
|
||||
|
||||
## Safety Rules (ALWAYS ENFORCED)
|
||||
|
||||
**Accuracy > Relevance > Impact > ATS > Brevity**
|
||||
|
||||
Read `config.md` Provenance Flags before generating any content. Verify every claim against that table.
|
||||
|
||||
- Use the email from `config.md` Personal Info in all outputs
|
||||
- CL deepens what resume presents — never introduces new claims not traceable to resume bullets
|
||||
- Source field context from `resume_builder/support/significance_*.md` files
|
||||
|
||||
---
|
||||
|
||||
## User Input During Execution
|
||||
|
||||
If the user provides feedback, corrections, or suggestions at any point:
|
||||
1. Acknowledge the input immediately
|
||||
2. If it affects already-written content: fix it, re-verify word count and anti-patterns
|
||||
3. If it changes the framing: note the change in session file Framing Strategy
|
||||
4. Never restart — resume from current position
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
Read `resume_builder/reference/shared_ops.md` for session startup and file derivation.
|
||||
|
||||
Then:
|
||||
1. Read `CLAUDE.md` — check Active Sessions and KB Corrections
|
||||
2. Read `config.md` — load Provenance Flags, email, role types
|
||||
3. Find and read the session file
|
||||
4. **Recovery check:**
|
||||
- If CL Status is DONE → "CL already generated. Run `/critique` next." Show next command. Stop.
|
||||
- If CL Status is IN_PROGRESS → check if CL .tex exists, offer to resume or regenerate
|
||||
- If Resume Status is not DONE → "Resume not yet generated. Run `/make-resume` first." Stop.
|
||||
- If CL Status is PENDING → proceed to Phase 1
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Load Context
|
||||
|
||||
Read in this order:
|
||||
1. **Session file** — specifically: Company Context, Cover Letter Plan, Framing Strategy, ATS Keywords
|
||||
2. **Finished resume/CV .tex** — path from session file Output Files. Read to understand what CL must complement.
|
||||
3. `resume_builder/reference/cl_reference.md` — CL format rules, paragraph templates, anti-patterns
|
||||
4. The matching bundle from session file role type → `resume_builder/bundles/bundle_[role_type].md` — Section 5 (Cover Letter)
|
||||
5. All significance files from `resume_builder/support/significance_*.md`
|
||||
|
||||
Update session file Status: `Cover Letter: IN_PROGRESS`
|
||||
|
||||
Progress: "Loading CL context — [company], [role type] bundle, [institution type]..."
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Generate Cover Letter
|
||||
|
||||
Read `resume_builder/templates/coverletter_template.tex`.
|
||||
|
||||
**Detect institution type** from session file Cover Letter Plan:
|
||||
- Industry → 3 paragraphs, 250-300 words
|
||||
- National Lab → 4 paragraphs, 350-450 words
|
||||
- Academic → 4 paragraphs, 350-450 words (postdoc) or 450-650 words (faculty)
|
||||
|
||||
**Generate CL following cl_reference.md paragraph structure:**
|
||||
- Use significance files for field-context depth (NOT resume bullet text)
|
||||
- Use session file CL hooks and "why them" angle
|
||||
- Ensure every major claim is traceable to a resume/CV bullet
|
||||
- Open with a specific reference to their work — no generic openers
|
||||
- Weave credentials into body paragraphs, not closing
|
||||
|
||||
Save to `output/<FolderName>/e2e_<name>_cover_letter.tex`
|
||||
|
||||
Progress: "Writing [institution type] cover letter — [N] paragraphs, targeting [N] words..."
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Compile & Verify
|
||||
|
||||
```bash
|
||||
pdflatex -interaction=nonstopmode -output-directory=output/<FolderName> output/<FolderName>/e2e_<name>_cover_letter.tex
|
||||
```
|
||||
|
||||
Use Read tool to view compiled PDF. Verify:
|
||||
|
||||
| Gate | Check | If FAIL |
|
||||
|------|-------|---------|
|
||||
| Word count | Industry 250-300, Lab/Academic 350-450 | Trim/expand |
|
||||
| Page count | Resume package: 1 page. CV package: 1-2 pages | Adjust content |
|
||||
| Page fill | 1pg: well-filled. 2pg: page 2 >= half filled before signature | Adjust |
|
||||
| Anti-patterns | No generic opener, no defensive framing, no credential dump | Rewrite |
|
||||
| Package cohesion | CL claims traceable to resume bullets, no contradictions | Fix |
|
||||
| Compile | Clean pdflatex | Fix LaTeX errors |
|
||||
|
||||
Update session file:
|
||||
- Add CL to Output Files
|
||||
- Status: `Cover Letter: DONE`
|
||||
- Add Next Critique command
|
||||
|
||||
Progress: "Compiled — 1 page, 278 words. Package cohesion verified."
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present: CL summary (word count, page count, key hooks used).
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
If user requests changes: apply them, re-compile, re-verify. Update session file.
|
||||
If user approves: update Status, present next command.
|
||||
|
||||
**Do NOT trigger file organization** — that happens after `/critique` approval.
|
||||
|
||||
"Cover letter done. Next steps:
|
||||
1. /clear
|
||||
2. [exact /critique command with session file path]"
|
||||
@@ -0,0 +1,235 @@
|
||||
---
|
||||
description: Generate a tailored resume/CV from a JD
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /make-resume
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`:
|
||||
- File path (e.g., `JDs/*.txt`) → read that file for the JD
|
||||
- Text after the path starting with "Focus:"/"Emphasize:"/"Downplay:" → focus directive
|
||||
- "Quick:" prefix → Quick Mode (see below)
|
||||
- Empty → ask the user for the JD
|
||||
- Inline JD text (no file path) → save to `JDs/temp_<company>.txt`, proceed normally
|
||||
|
||||
---
|
||||
|
||||
## Safety Rules (ALWAYS ENFORCED)
|
||||
|
||||
**Accuracy > Relevance > Impact > ATS > Brevity**
|
||||
|
||||
Read `config.md` Provenance Flags before generating any content. Verify every claim against that table.
|
||||
|
||||
- Use the email from `config.md` Personal Info in all outputs
|
||||
- Resume bullets: ALL variable bullets are 2L (CV: 2L/3L mix OK, check `config.md` Document Preferences)
|
||||
- Source ALL bullet content from `resume_builder/experience/` files. Never fabricate.
|
||||
- Run `python3 resume_builder/helpers/char_count.py` after each section — the tool is authoritative
|
||||
|
||||
---
|
||||
|
||||
## User Input During Execution
|
||||
|
||||
If the user provides feedback, corrections, or suggestions at any point:
|
||||
1. Acknowledge the input immediately
|
||||
2. If it affects an already-written section: go back, fix it, re-run char count gate
|
||||
3. If it changes the bullet plan: update session file Bullet Plan
|
||||
4. If it's a question: answer it, then continue from current step
|
||||
5. Never restart a phase — resume from current position
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
Read `resume_builder/reference/shared_ops.md` for session startup, file derivation, and organization protocols.
|
||||
|
||||
Then:
|
||||
1. Read `CLAUDE.md` — check Active Sessions and KB Corrections
|
||||
2. Read `config.md` — load Provenance Flags, email, document preferences, role types
|
||||
3. If session file exists for this JD:
|
||||
- Read session file, check Status
|
||||
- Phase 0: DONE, Phase 1: PENDING → resume at Phase 1
|
||||
- Phase 1: DONE → resume at Budget Gate
|
||||
- Phase 2: IN_PROGRESS → read .tex, check what sections exist, resume from checkpoint
|
||||
- Phase 2: DONE → "Resume already done. Run /make-cl next." Show next command. Stop.
|
||||
4. If no session file: proceed to Phase 0
|
||||
|
||||
---
|
||||
|
||||
## Quick Mode
|
||||
|
||||
Trigger: `$ARGUMENTS` starts with "Quick:"
|
||||
|
||||
Defaults:
|
||||
- Select all HIGH priority achievements from bundle's Priority Matrix as 2L
|
||||
- Fill remaining budget with MEDIUM priority in Priority Matrix order
|
||||
- Default format: 2-page resume (unless JD clearly requires CV)
|
||||
- Skip Phase 0 STOP and Phase 1 STOP
|
||||
- Keep Budget Gate (auto-pass if within target) and end-of-resume STOP
|
||||
- Run all phases with progress commentary instead of interactive stops
|
||||
|
||||
---
|
||||
|
||||
## Phase 0: Research & Session Setup
|
||||
|
||||
**Read these files:**
|
||||
1. The JD (from `$ARGUMENTS`)
|
||||
2. `resume_builder/reference/resume_reference.md` — Budget Card, Section Specs, Char Limits, Page Budgets
|
||||
3. `config.md` — Role-Type Decision Tree to identify the matching bundle
|
||||
|
||||
**Web Search (MANDATORY — 2-3 searches).** Load WebSearch via ToolSearch first.
|
||||
1. `[Company] research & development [key JD domain]` — products, recent projects
|
||||
2. `[Company] [specific technology from JD]` — concrete hooks for cover letter
|
||||
3. `[Company] careers [role type] culture` OR recent news — hiring context
|
||||
|
||||
If web search returns no results: use JD text + training knowledge. Flag: "Web search returned limited results — CL hooks may be generic."
|
||||
|
||||
**Produce all of these (reference `resume_builder/reference/session_file_template.md` for format):**
|
||||
- **JD Analysis** — classify every requirement as Direct / Bridge (with confidence) / Gap. Extract ATS keywords by category.
|
||||
- **Company Context** — mission, role purpose, culture signals, "why them" angle (from web research)
|
||||
- **Framing Strategy** — lead narrative, reframing map, emphasize/downplay, CL hooks, user focus directives
|
||||
- **Critique Context** — reviewer persona, competitive landscape, domain vocabulary
|
||||
- **Cover Letter Plan** — institution type, paragraph structure, hooks, jargon level
|
||||
|
||||
**Create output folder:**
|
||||
Derive folder name from JD filename: `JDs/JD_Acme.txt` → `output/Acme/`
|
||||
```bash
|
||||
mkdir -p output/<FolderName>/
|
||||
```
|
||||
Write session file to `output/<FolderName>/session_<name>.md` (NOT flat `output/`).
|
||||
All subsequent output files go in this folder.
|
||||
|
||||
**Verify completeness:** Re-read the session file. Confirm these 8 sections are non-empty: JD Info, Requirements table, ATS Keywords, Gap Assessment, Company Context, Framing Strategy, Critique Context, Cover Letter Plan. Fill any missing section before presenting.
|
||||
|
||||
**Write memory pointer** to `CLAUDE.md` Active Sessions.
|
||||
|
||||
**Update session file Status:** `Phase 0: DONE`
|
||||
|
||||
Progress: "Searching for [company] + [domain]..." / "JD analysis: X/Y requirements direct match, Z bridges, W gaps"
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present: research summary, role type + bundle, format, framing strategy.
|
||||
Ask user to confirm: (1) role type + bundle, (2) format, (3) framing strategy.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
Proceeding without confirmation misaligns the entire resume and requires full regeneration.
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Plan Bullets
|
||||
|
||||
**Re-read `output/<FolderName>/session_<name>.md`** — specifically Framing Strategy and ATS Keywords.
|
||||
|
||||
**Read:**
|
||||
1. The matching bundle from `config.md` Role Types → `resume_builder/bundles/bundle_[role_type].md` — Section 1 (Priority Matrix)
|
||||
- For hybrid JDs: read both bundles. Use primary for Priority Matrix, secondary for Reframing Map on 1-2 bridging bullets.
|
||||
2. All experience files from `resume_builder/experience/`
|
||||
3. `resume_builder/support/achievement_reframing_guide.md`
|
||||
4. `resume_builder/support/skills_taxonomy.md`
|
||||
5. `resume_builder/support/pub_metadata.md`
|
||||
|
||||
**Present one table per position:**
|
||||
|
||||
**[Position Name] (Budget: N-M bullets, ~X-Y rendered lines)**
|
||||
|
||||
| | ID | Achievement | Variant | Lines | JD Match |
|
||||
|---|---|-------------|---------|-------|----------|
|
||||
| * | P1-1 | [short description] | 2L | 2 | Direct |
|
||||
| * | P1-5 | [short description] | 2L | 2 | Direct |
|
||||
| o | P1-3 | [short description] | 2L | 2 | Bridge |
|
||||
| x | P1-7 | [short description] | -- | -- | Weak |
|
||||
|
||||
**Legend:** `*` = recommended (HIGH on Priority Matrix + Direct JD match) | `o` = available (MEDIUM priority or Bridge match) | `x` = not recommended (LOW priority or Gap)
|
||||
|
||||
**After all positions, show:**
|
||||
- Recommended set total vs budget (from Quick Budget Card in resume_reference.md)
|
||||
- Remaining budget slots and what could fill them
|
||||
- Forced exclusions per provenance flags
|
||||
- Focus directive impact (what changed vs Priority Matrix defaults)
|
||||
|
||||
**Update session file** — write Bullet Plan tables. Status: `Phase 1: DONE (N bullets confirmed)`
|
||||
|
||||
Progress: "Reading experience files for bullet candidates..." / "Recommending N bullets per position"
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present bullet plan. Wait for user to confirm/modify selections.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
If you proceed without confirmation, you will generate bullets the user didn't approve.
|
||||
**Update session file with confirmed plan before continuing.**
|
||||
|
||||
---
|
||||
|
||||
## Budget Gate (AFTER user confirms bullet plan, BEFORE Phase 2)
|
||||
|
||||
**Re-read session file Bullet Plan section** to verify confirmed counts.
|
||||
|
||||
- Check budget targets from `resume_builder/reference/resume_reference.md` Budget Card.
|
||||
- Show: `Budget: [N] bullets vs target [T]. PASS/FAIL`
|
||||
- **FAIL = do not proceed. Reconcile with user first.**
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Generate
|
||||
|
||||
**Re-read to restore context after compaction:**
|
||||
1. `output/<FolderName>/session_<name>.md` (framing + confirmed bullet plan)
|
||||
2. `resume_builder/reference/critical_rules.md` — Character Limits, Bold Width Penalty, Orphan rules
|
||||
|
||||
**Read template:** `resume_builder/templates/resume_template.tex` or `cv_template.tex` + `.cls`
|
||||
FIXED sections (from `config.md` FIXED Sections) are template-locked — only generate VARIABLE sections (Summary, Skills, Experience bullets/headers).
|
||||
|
||||
**Read section specs:** `resume_builder/reference/resume_reference.md` — Section-by-Section Specs for your format
|
||||
|
||||
**Generate section by section** (follow Section-by-Section Specs):
|
||||
1. Summary → check against session framing strategy
|
||||
- Update Status → `Phase 2: Summary DONE`
|
||||
2. Technical Skills
|
||||
- Update Status → `Phase 2: Skills DONE`
|
||||
3. Each position's bullets → **CHAR COUNT GATE after each position**
|
||||
- Position titles: bold theme + date must fit ONE line (see resume_reference.md). If wrapping, shorten title.
|
||||
- After each position: Update Status → `Phase 2: [Position] DONE`
|
||||
4. **PAGE FILL GATE after all experience**
|
||||
|
||||
Save .tex to `output/<FolderName>/e2e_<name>_resume.tex` or `_cv.tex`
|
||||
|
||||
**Update session file** — add Output Files.
|
||||
|
||||
Progress: "Writing Position 1 bullets (6 of 7)..." / "Bullet 4 is SHORT at 184 chars — padding" / "Compiling resume... 2 pages OK"
|
||||
|
||||
### CHAR COUNT GATE (per position)
|
||||
```bash
|
||||
python3 resume_builder/helpers/char_count.py -f [resume|cv] output/<FolderName>/[file].tex
|
||||
```
|
||||
No OVER violations. Last line of 2L bullets >= 70% fill. **Fix before next position.**
|
||||
|
||||
### PAGE FILL GATE
|
||||
Resume: <= 3 lines white space on last page. CV: check rendered line target from resume_reference.md. **If FAIL: add/trim variable bullets.**
|
||||
|
||||
### COMPILE GATE
|
||||
```bash
|
||||
pdflatex -interaction=nonstopmode -output-directory=output/<FolderName> output/<FolderName>/e2e_<name>_resume.tex
|
||||
```
|
||||
Verify page counts match `config.md` Document Preferences. Use the Read tool to view compiled PDF — check orphans, header wrapping, page fill. **If FAIL: fix variable content, recompile.**
|
||||
|
||||
Run the Post-Generation Verification checklist from `resume_builder/reference/resume_reference.md` before proceeding.
|
||||
|
||||
Update Status → `Phase 2: Compile DONE`
|
||||
|
||||
---
|
||||
|
||||
## End of /make-resume
|
||||
|
||||
Update session file Status:
|
||||
- `Resume: DONE`
|
||||
- `Cover Letter: PENDING`
|
||||
- `Critique: PENDING`
|
||||
- `Next: /make-cl output/<FolderName>/session_<name>.md`
|
||||
- `Next Critique: /critique output/<FolderName>/session_<name>.md`
|
||||
|
||||
### >>>>>> MANDATORY STOP <<<<<<
|
||||
Present: resume compilation summary (pages, char count results, any violations fixed).
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
"Resume compiled and verified. Next steps:
|
||||
1. /clear
|
||||
2. [exact /make-cl command with session file path]"
|
||||
@@ -0,0 +1,329 @@
|
||||
---
|
||||
description: Synthesize completed extractions into the knowledge base files needed for resume generation
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /setup-build-kb
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`:
|
||||
- Empty → full build (all phases)
|
||||
- Phase number (e.g., `3`) → resume from that phase
|
||||
- "experience" / "bundles" / "skills" / "pubs" / "reframing" / "significance" → run only that component
|
||||
- "status" → show what's built and what's missing
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
1. Read `CLAUDE.md` — check KB Corrections Log
|
||||
2. Read `config.md` — load:
|
||||
- Personal Info (positions, institutions, dates)
|
||||
- Role Types table (defines which bundles to create)
|
||||
- Provenance Flags (propagate to all KB files)
|
||||
- Document Preferences (bullet variant defaults)
|
||||
3. Read `knowledge_base/extractions/_INVENTORY.md` — verify extractions exist
|
||||
4. Scan `resume_builder/` to see what's already built
|
||||
|
||||
**Pre-flight check:**
|
||||
- If `_INVENTORY.md` is empty or has no entries: "No extractions found. Run `/setup-extract` first." Stop.
|
||||
- If fewer than 2 extractions: warn "Only [N] extraction(s) found. KB quality improves with more papers. Continue anyway?"
|
||||
|
||||
Progress: "Found [N] extractions across [M] positions. Config has [K] role types defined."
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Build Experience Files
|
||||
|
||||
**Goal:** Create one experience file per position, containing all achievements organized for resume generation.
|
||||
|
||||
**Read:** All extraction files listed in `_INVENTORY.md`
|
||||
|
||||
**For each position** (from `config.md` or inferred from extraction metadata):
|
||||
|
||||
1. Group extractions by the position they belong to (based on dates, institution, or user clarification)
|
||||
2. Ask the user to confirm grouping if ambiguous: "I've grouped these papers under [Position]. Correct?"
|
||||
|
||||
**Experience file format** (`resume_builder/experience/experience_<position_key>.md`):
|
||||
|
||||
```markdown
|
||||
# Experience: [Position Title] — [Institution]
|
||||
## [Date Range]
|
||||
|
||||
### Cross-Position Section
|
||||
[Brief narrative connecting this position's work to the user's broader trajectory]
|
||||
[CL framing content — how this position fits the career arc]
|
||||
|
||||
---
|
||||
|
||||
### Achievement [ID]: [Short Title]
|
||||
**Source:** [extraction filename]
|
||||
**Paper:** [citation or "internal"/"unpublished"]
|
||||
**User's role:** [first author / contributing / sole developer]
|
||||
**Status:** [published / under review / draft / internal]
|
||||
|
||||
**Context:** [1-2 sentences — what problem, why it matters]
|
||||
|
||||
**Bullet variants:**
|
||||
- **2L:** [Full 2-line bullet text — STAR format, ~180-210 rendered characters]
|
||||
- **3L:** [Full 3-line bullet text — for CV use, ~270-310 rendered characters]
|
||||
- **1L:** [Condensed 1-line version — ~90-110 rendered characters, for tight budgets]
|
||||
|
||||
**Key skills:** [comma-separated list of skills this achievement demonstrates]
|
||||
**ATS keywords:** [domain-specific terms an ATS might scan for]
|
||||
**Reframing notes:** [how to emphasize different aspects for different role types]
|
||||
|
||||
---
|
||||
[Repeat for each achievement]
|
||||
```
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present the experience file(s) — show achievement count per position, total bullet variants.
|
||||
Ask user to review: "Are the groupings correct? Any achievements missing or misattributed?"
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Build Skills Taxonomy
|
||||
|
||||
**Goal:** Create a categorized inventory of all technical skills from extractions.
|
||||
|
||||
**Read:** All extraction files (Methods & Tools sections) + experience files from Phase 1
|
||||
|
||||
**Build** `resume_builder/support/skills_taxonomy.md`:
|
||||
|
||||
```markdown
|
||||
# Skills Taxonomy
|
||||
|
||||
## Summary Stats
|
||||
- Total unique skills: [N]
|
||||
- Publications: [N] ([breakdown by status])
|
||||
- Top methods: [ranked list]
|
||||
|
||||
## Categories
|
||||
|
||||
### [Category 1: e.g., Computational Methods]
|
||||
| Skill | Proficiency | Evidence | Resume Weight |
|
||||
|-------|-----------|----------|---------------|
|
||||
| [skill] | [expert/proficient/familiar] | [paper IDs] | [HIGH/MED/LOW] |
|
||||
|
||||
### [Category 2: e.g., Programming & Software]
|
||||
[same table format]
|
||||
|
||||
### [Category 3: e.g., Machine Learning]
|
||||
[same table format]
|
||||
|
||||
[Continue for all categories — typically 4-7 categories]
|
||||
```
|
||||
|
||||
**Proficiency levels:**
|
||||
- **Expert:** Multiple first-author papers, developed custom tools
|
||||
- **Proficient:** Used extensively in published work, comfortable teaching
|
||||
- **Familiar:** Used in one project, or contributed to someone else's implementation
|
||||
|
||||
Progress: "Built taxonomy — [N] skills across [M] categories"
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Build Publication Metadata
|
||||
|
||||
**Goal:** Structured pub data for resume/CV generation.
|
||||
|
||||
**Build** `resume_builder/support/pub_metadata.md`:
|
||||
|
||||
```markdown
|
||||
# Publication Metadata
|
||||
|
||||
## Summary
|
||||
- Total publications: [N]
|
||||
- First-author: [N] | Co-first: [N] | Contributing: [N]
|
||||
- Published: [N] | Under review: [N] | In preparation: [N]
|
||||
|
||||
## Publication List
|
||||
|
||||
### First-Author / Co-First
|
||||
| # | Citation (et al. format) | Journal | Year | Status | Key Topic |
|
||||
|---|-------------------------|---------|------|--------|-----------|
|
||||
| 1 | [Author et al., Journal, Year] | [journal] | [year] | [status] | [topic] |
|
||||
|
||||
### Contributing Author
|
||||
[same table format]
|
||||
|
||||
### Under Review / In Preparation
|
||||
[same table format, with provenance notes]
|
||||
```
|
||||
|
||||
Progress: "Pub metadata — [N] first-author, [M] contributing, [K] under review"
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: Build Achievement Reframing Guide
|
||||
|
||||
**Goal:** Per-achievement significance lines + framing directives for each role type.
|
||||
|
||||
**Read:** Experience files + `config.md` Role Types
|
||||
|
||||
**Build** `resume_builder/support/achievement_reframing_guide.md`:
|
||||
|
||||
```markdown
|
||||
# Achievement Reframing Guide
|
||||
|
||||
## How to Use
|
||||
For each achievement, `Significance:` provides a one-line framing cue.
|
||||
The role-type table shows how to emphasize/de-emphasize for each target audience.
|
||||
|
||||
---
|
||||
|
||||
### [Achievement ID]: [Title]
|
||||
**Significance:** [One sentence — why this matters broadly]
|
||||
|
||||
| Role Type | Emphasis | Lead Verb | Framing Angle |
|
||||
|-----------|----------|-----------|---------------|
|
||||
| [role 1] | HIGH | Developed | [emphasize X aspect] |
|
||||
| [role 2] | MEDIUM | Applied | [bridge to Y domain] |
|
||||
| [role 3] | LOW | -- | [omit or condense] |
|
||||
|
||||
**Overclaiming warning:** [if applicable — e.g., "Do not claim sole credit for experimental results"]
|
||||
**First-pass checklist:** [ ] Verb matches author role [ ] Numbers from paper [ ] Status matches provenance
|
||||
|
||||
---
|
||||
[Repeat for each achievement]
|
||||
```
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present the reframing guide summary — show which achievements are HIGH for which role types.
|
||||
Ask user: "Does this priority mapping look right for your target roles?"
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Build Bundles
|
||||
|
||||
**Goal:** One bundle per role type from `config.md`, with 5 sections each.
|
||||
|
||||
**Read:** Experience files + Skills Taxonomy + Reframing Guide + `config.md` Role Types
|
||||
|
||||
**For each role type**, create `resume_builder/bundles/bundle_<role_type>.md`:
|
||||
|
||||
```markdown
|
||||
# Bundle: [Role Type Name]
|
||||
|
||||
> Target employers: [from config.md]
|
||||
> Tier: [from config.md]
|
||||
|
||||
---
|
||||
|
||||
## S1: Role Profile & Priority Matrix
|
||||
|
||||
**Positioning:** [1-2 sentences — how to position the user for this role type]
|
||||
|
||||
### Priority Matrix
|
||||
| Priority | Achievement IDs | Rationale |
|
||||
|----------|----------------|-----------|
|
||||
| HIGH | [IDs] | [why these lead for this role type] |
|
||||
| MEDIUM | [IDs] | [supporting evidence, bridge topics] |
|
||||
| LOW | [IDs] | [omit unless budget allows or JD specifically asks] |
|
||||
|
||||
---
|
||||
|
||||
## S2: Summary Guide
|
||||
|
||||
**Headline pattern:** [Role-appropriate headline template]
|
||||
**Building blocks:** [3-5 phrases that should appear in summaries for this role type]
|
||||
**Avoid:** [terms/framings that don't fit this audience]
|
||||
|
||||
---
|
||||
|
||||
## S3: Achievement Reframing Map
|
||||
|
||||
[For each HIGH/MEDIUM achievement: which angle to use, which metrics to lead with]
|
||||
|
||||
| ID | Default Framing | This Role's Framing | Key Metric |
|
||||
|----|----------------|--------------------|-----------|
|
||||
| [ID] | [generic] | [role-specific angle] | [number to highlight] |
|
||||
|
||||
---
|
||||
|
||||
## S4: Skills Guide
|
||||
|
||||
**Bold tools (resume):** [3-5 tools to bold in Technical Skills for this role type]
|
||||
**Must-include skills:** [skills that MUST appear for ATS match]
|
||||
**Nice-to-have:** [skills to include if budget allows]
|
||||
**Omit:** [skills irrelevant to this audience]
|
||||
|
||||
---
|
||||
|
||||
## S5: Cover Letter Guide
|
||||
|
||||
**Institution type:** [Industry / National Lab / Academic]
|
||||
**Opening hook pattern:** [template for first paragraph opener]
|
||||
**Key narrative thread:** [what story to tell across paragraphs]
|
||||
**"Why them" angle:** [what to research about target employer]
|
||||
**Avoid:** [CL anti-patterns for this role type]
|
||||
```
|
||||
|
||||
Progress: "Building bundle for [role type] — [N] HIGH priority achievements, [M] bold tools"
|
||||
|
||||
---
|
||||
|
||||
## Phase 6: Build Significance Research Files
|
||||
|
||||
**Goal:** Field context for cover letters — NOT for resume bullets.
|
||||
|
||||
**For each position**, create `resume_builder/support/significance_<position_key>.md`:
|
||||
|
||||
```markdown
|
||||
# Significance Research: [Position]
|
||||
|
||||
> Use in cover letters and summaries — NOT in resume bullet text.
|
||||
> These provide field context that demonstrates the user understands the landscape.
|
||||
|
||||
---
|
||||
|
||||
### [Achievement ID]: Field Context
|
||||
**The problem:** [What challenge does this address? Industry/scientific context]
|
||||
**Competing approaches:** [What else exists? What are the limitations?]
|
||||
**Why this matters:** [Market size, DOE/funding priorities, industry need]
|
||||
**Differentiation:** [What makes the user's approach unique or better?]
|
||||
|
||||
---
|
||||
[Repeat for each major achievement worth cover-letter depth]
|
||||
|
||||
### Field Overview: [Broad Topic]
|
||||
[2-3 paragraphs of field context that multiple achievements contribute to]
|
||||
[Useful for cover letter opening hooks and "why this matters" framing]
|
||||
```
|
||||
|
||||
Progress: "Significance research — [N] achievements with field context, [M] field overviews"
|
||||
|
||||
---
|
||||
|
||||
## Final: Status Report
|
||||
|
||||
After all phases complete (or after the requested subset), present:
|
||||
|
||||
### KB Build Status
|
||||
| Component | File | Status | Items |
|
||||
|-----------|------|--------|-------|
|
||||
| Experience files | `experience/*.md` | [DONE/MISSING] | [N achievements] |
|
||||
| Skills taxonomy | `support/skills_taxonomy.md` | [DONE/MISSING] | [N skills] |
|
||||
| Pub metadata | `support/pub_metadata.md` | [DONE/MISSING] | [N pubs] |
|
||||
| Reframing guide | `support/achievement_reframing_guide.md` | [DONE/MISSING] | [N entries] |
|
||||
| Bundles | `bundles/bundle_*.md` | [DONE/MISSING] | [N bundles] |
|
||||
| Significance | `support/significance_*.md` | [DONE/MISSING] | [N files] |
|
||||
|
||||
### Ready for Generation?
|
||||
- [ ] At least 1 experience file with 5+ achievements
|
||||
- [ ] Skills taxonomy with 20+ skills
|
||||
- [ ] At least 1 bundle matching a target role type
|
||||
- [ ] Pub metadata complete
|
||||
- [ ] Reframing guide covers all achievements
|
||||
- [ ] Significance files for cover letter depth
|
||||
|
||||
If all checked: "Knowledge base is ready. Save a JD to `JDs/` and run `/make-resume JDs/<filename>.txt`"
|
||||
If gaps: "[List what's missing and which phase to re-run]"
|
||||
|
||||
### >>>>>> MANDATORY STOP <<<<<<
|
||||
Present status report. Wait for user confirmation.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
@@ -0,0 +1,170 @@
|
||||
---
|
||||
description: Extract structured information from research papers, PDFs, or code into knowledge base extractions
|
||||
user-invocable: true
|
||||
---
|
||||
|
||||
# /setup-extract
|
||||
|
||||
**User input:** `$ARGUMENTS`
|
||||
|
||||
Parse `$ARGUMENTS`:
|
||||
- File path to a paper (e.g., `papers/Smith2024_catalyst.pdf`, `papers/project_report.tex`) → read that file
|
||||
- Multiple paths separated by spaces → batch mode (process each sequentially)
|
||||
- Empty → ask the user for the paper path or paste content
|
||||
|
||||
---
|
||||
|
||||
## Startup
|
||||
|
||||
1. Read `CLAUDE.md` — check KB Corrections Log for known issues
|
||||
2. Read `config.md` — load Personal Info (to identify user's author position), Provenance Flags
|
||||
3. Read `knowledge_base/extractions/_INVENTORY.md` — see what's already extracted, avoid duplicates
|
||||
|
||||
If the paper is already in the inventory:
|
||||
- Show the existing extraction path
|
||||
- Ask: "This paper is already extracted. Re-extract (overwrite) or skip?"
|
||||
- Wait for user response before proceeding
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Read & Understand the Paper
|
||||
|
||||
Read the paper using the appropriate method:
|
||||
- **PDF files:** Use the Read tool (supports PDF reading)
|
||||
- **.tex source:** Read directly — often has more detail than the compiled PDF
|
||||
- **If both exist:** Prefer .tex for content extraction, use PDF for figures/tables
|
||||
|
||||
**While reading, collect:**
|
||||
1. Full title, all authors, year, journal/venue, DOI (if available)
|
||||
2. The user's position in the author list (first, co-first, second, middle, last, corresponding)
|
||||
3. Publication status (check `config.md` Provenance Flags first, then infer: published / under review / draft / internal)
|
||||
4. All computational methods, experimental techniques, software, and frameworks mentioned
|
||||
5. Quantitative results — speedups, accuracies, efficiencies, improvements over baselines
|
||||
6. Novelty claims — "first-ever", "new framework", "novel approach", etc.
|
||||
7. Collaboration indicators — other groups, institutions, shared resources
|
||||
8. Funding acknowledgments
|
||||
|
||||
Progress: "Reading paper... [title] by [first author] et al., [year]"
|
||||
|
||||
---
|
||||
|
||||
## Phase 2: Clarify User's Role
|
||||
|
||||
If the user's contribution is not obvious from the paper (common for multi-author work), ask:
|
||||
|
||||
**Questions to ask (skip any that are already clear from the paper):**
|
||||
1. "What was your specific contribution? (e.g., all computational work, specific analysis, code development)"
|
||||
2. "Did you develop any tools, methods, or code used in this paper?"
|
||||
3. "Were there other groups or institutions involved? What was your group's role?"
|
||||
4. "Any quantitative results you can personally claim? (e.g., 'I ran all the simulations')"
|
||||
5. "Is there anything in this paper that should NOT appear on your resume? (e.g., collaborator's experimental data)"
|
||||
|
||||
### >>>>>> MANDATORY STOP — DO NOT PROCEED <<<<<<
|
||||
Present your understanding of the paper and ask the clarifying questions above.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
---
|
||||
|
||||
## Phase 3: Write Extraction
|
||||
|
||||
Create the extraction file at `knowledge_base/extractions/<AuthorYear_short_descriptor>.md`
|
||||
|
||||
**Naming convention:** `<FirstAuthorLastName><Year><2-3_word_descriptor>.md`
|
||||
- Examples: `Smith2024_protein_stability.md`, `Chen2023_binding_affinity.md`
|
||||
- If the user is first author: use their last name
|
||||
- Normalize to lowercase with underscores
|
||||
|
||||
**Extraction format:**
|
||||
|
||||
```markdown
|
||||
# [Full Paper Title]
|
||||
|
||||
## Metadata
|
||||
- **Authors:** [author list — highlight user's name with bold]
|
||||
- **Year:** [year]
|
||||
- **Journal:** [journal/venue or "unpublished"/"internal"/"under review at X"]
|
||||
- **DOI:** [DOI or "N/A"]
|
||||
- **User's role:** [first author / co-first / contributing / corresponding]
|
||||
- **Status:** [published | under review | draft | internal]
|
||||
|
||||
## Methods & Tools
|
||||
- **Computational methods:** [e.g., MD, ML, FEA, CFD, etc. — be specific about methods, force fields, etc.]
|
||||
- **Software/frameworks:** [e.g., GROMACS, PyTorch, ABAQUS, custom code, etc.]
|
||||
- **Hardware/HPC:** [if mentioned — clusters, GPU resources, etc.]
|
||||
- **Key techniques:** [specific methodological details that map to resume skills]
|
||||
|
||||
## Key Results
|
||||
[Number each result. Include quantitative metrics wherever possible.]
|
||||
1. [Result with numbers — e.g., "Achieved 5,000x speedup over brute-force screening"]
|
||||
2. [Result — e.g., "Screened 8,500 variants, identified 7 top candidates"]
|
||||
3. [...]
|
||||
|
||||
## Novelty Claims
|
||||
[What's genuinely new — be precise, avoid overclaiming]
|
||||
- [e.g., "First application of framework X to system Y"]
|
||||
- [e.g., "New method combining A and B — no prior work exists"]
|
||||
|
||||
## Collaboration & Scope
|
||||
- **Other groups:** [institutions, PIs involved]
|
||||
- **User's specific contribution:** [from Phase 2 clarification]
|
||||
- **Shared vs. sole work:** [what the user did alone vs. with others]
|
||||
|
||||
## Provenance Notes
|
||||
- **Publication status:** [matches config.md if listed there]
|
||||
- **Safe to claim:** [what the user can put on a resume without hedging]
|
||||
- **Needs hedging:** [claims that require "contributed to" or "supported" framing]
|
||||
- **Do NOT claim:** [results from collaborators, claims that would be overclaiming]
|
||||
|
||||
## Resume Bullet Seeds
|
||||
[3-5 draft bullets in STAR format. These are seeds, not final text.]
|
||||
[Use full-ownership verbs only for sole-contributor work. Hedge for shared work.]
|
||||
1. [Action verb] + [what was done] + [quantitative result/impact]
|
||||
2. [Action verb] + [method/tool developed] + [what it enabled]
|
||||
3. [Action verb] + [scope — e.g., "across N systems"] + [outcome]
|
||||
4. [Optional: collaboration-framed bullet]
|
||||
5. [Optional: tool/infrastructure bullet]
|
||||
```
|
||||
|
||||
Save the file. Show the user the complete extraction.
|
||||
|
||||
Progress: "Writing extraction for [short title]... [N] results identified, [M] bullet seeds drafted"
|
||||
|
||||
---
|
||||
|
||||
## Phase 4: Update Inventory
|
||||
|
||||
Read and update `knowledge_base/extractions/_INVENTORY.md`.
|
||||
|
||||
Add a row to the inventory table:
|
||||
|
||||
```
|
||||
| [filename] | [short title] | [user's role] | [status] | [primary methods] | [date extracted] |
|
||||
```
|
||||
|
||||
Present the updated inventory entry to the user.
|
||||
|
||||
---
|
||||
|
||||
## Phase 5: Next Steps
|
||||
|
||||
After extraction is complete, present:
|
||||
|
||||
1. **Extraction summary:** [N] methods, [M] quantitative results, [K] bullet seeds
|
||||
2. **Provenance flags:** Any items that need special handling
|
||||
3. **Suggested next action:**
|
||||
- If more papers to extract: "Run `/setup-extract [next paper path]`"
|
||||
- If all papers done: "Run `/setup-build-kb` to synthesize extractions into experience files and bundles"
|
||||
|
||||
### >>>>>> MANDATORY STOP <<<<<<
|
||||
Present extraction summary. Wait for user feedback or next paper.
|
||||
**You MUST wait for the user's explicit text response before continuing.**
|
||||
|
||||
---
|
||||
|
||||
## Batch Mode
|
||||
|
||||
If `$ARGUMENTS` contains multiple file paths:
|
||||
1. Process each paper through Phases 1-4 sequentially
|
||||
2. Ask Phase 2 clarifying questions for ALL papers at once (grouped) before writing any extractions
|
||||
3. After all extractions: present combined inventory update and summary
|
||||
4. Single STOP at the end (not per paper)
|
||||
Reference in New Issue
Block a user