knowme-careerforge-skill 0.0.1 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/README.md +6 -9
  2. package/README.zh-CN.md +6 -9
  3. package/SKILL.md +105 -116
  4. package/agents/claude/knowme-careerforge.md +11 -9
  5. package/agents/codex/knowme-careerforge.yaml +15 -6
  6. package/agents/cursor/knowme-careerforge.mdc +12 -7
  7. package/agents/opencode/skill.yaml +1 -1
  8. package/agents/windsurf/knowme-careerforge.rules +11 -8
  9. package/dist/cli/src/commands/init.d.ts +1 -1
  10. package/dist/cli/src/commands/init.js +46 -10
  11. package/dist/cli/src/index.js +82 -22
  12. package/dist/scripts/render-pdf.d.ts +0 -9
  13. package/dist/scripts/render-pdf.js +5 -68
  14. package/dist/scripts/rendering/render-pdf.d.ts +11 -0
  15. package/dist/scripts/rendering/render-pdf.js +109 -0
  16. package/dist/scripts/validate-ats.d.ts +0 -21
  17. package/dist/scripts/validate-ats.js +5 -132
  18. package/dist/scripts/validate-layout.d.ts +0 -22
  19. package/dist/scripts/validate-layout.js +5 -124
  20. package/dist/scripts/validation/validate-ats.d.ts +23 -0
  21. package/dist/scripts/validation/validate-ats.js +173 -0
  22. package/dist/scripts/validation/validate-layout.d.ts +24 -0
  23. package/dist/scripts/validation/validate-layout.js +164 -0
  24. package/package.json +16 -12
  25. package/scripts/Agent.md +138 -0
  26. package/scripts/{build-gallery.py → build/build-gallery.py} +128 -99
  27. package/scripts/{build-knowledge.py → build/build-knowledge.py} +9 -1
  28. package/scripts/{release.py → build/release.py} +20 -16
  29. package/scripts/{run-all-tests.py → build/run-all-tests.py} +9 -1
  30. package/scripts/build/sync-version.py +116 -0
  31. package/scripts/{analyze-jd.py → evidence/analyze-jd.py} +34 -45
  32. package/scripts/evidence/extract-evidence.py +348 -0
  33. package/scripts/pipeline/forge.py +142 -0
  34. package/scripts/rendering/render-pdf.py +162 -0
  35. package/scripts/{render-pdf.ts → rendering/render-pdf.ts} +3 -3
  36. package/scripts/template/instantiate-resume.py +184 -0
  37. package/scripts/template/search-template.py +350 -0
  38. package/scripts/{validate-ats.ts → validation/validate-ats.ts} +39 -35
  39. package/scripts/{validate-layout.ts → validation/validate-layout.ts} +43 -42
  40. package/scripts/{validate-resume.py → validation/validate-resume.py} +31 -22
  41. package/skill.json +1 -1
  42. package/src/knowledge/index.json +2 -10
  43. package/src/knowledge/resume-schema.json +112 -0
  44. package/src/knowledge/templates.json +1 -9
  45. package/src/references/01-evidence-mining.md +41 -0
  46. package/src/references/02-career-goal.md +38 -0
  47. package/src/references/03-jd-analysis.md +44 -0
  48. package/src/references/04-template-selection.md +43 -0
  49. package/src/references/05-html-canvas-tokens.md +51 -0
  50. package/src/references/06-qa-and-rendering.md +54 -0
  51. package/src/templates/classic/style.css +22 -51
  52. package/src/templates/common/base.css +150 -0
  53. package/src/templates/executive/style.css +30 -73
  54. package/src/templates/minimal/style.css +30 -72
  55. package/src/templates/modern/style.css +32 -72
  56. package/scripts/instantiate-resume.py +0 -83
  57. package/scripts/search-template.py +0 -147
  58. package/scripts/sync-version.py +0 -57
  59. package/src/references/ats.md +0 -17
  60. package/src/references/evidence-first.md +0 -22
  61. package/src/references/pdf.md +0 -40
  62. package/src/references/resume-writing.md +0 -25
  63. package/src/references/template-design.md +0 -57
  64. package/src/workflows/analyze-job.md +0 -16
  65. package/src/workflows/define-goal.md +0 -16
  66. package/src/workflows/forge-resume.md +0 -25
  67. package/src/workflows/know-me.md +0 -21
  68. package/src/workflows/position.md +0 -19
  69. package/src/workflows/review.md +0 -31
package/README.md CHANGED
@@ -178,32 +178,29 @@ All visual parameters are concentrated in `:root` variables inside `workspace/re
178
178
  knowme search "AI Agent Engineer" --style "two-column-split"
179
179
 
180
180
  # 2. Analyze a target Job Description
181
- python3 scripts/analyze-jd.py --jd examples/ai-engineer/jd.md
181
+ python3 scripts/evidence/analyze-jd.py --jd examples/ai-engineer/jd.md
182
182
 
183
183
  # 3. Instantiate Intermediate Working Canvas
184
- python3 scripts/instantiate-resume.py --template modern --keywords "Python,LLM,RAG" --output workspace/resume.html
184
+ python3 scripts/template/instantiate-resume.py --template modern --keywords "Python,LLM,RAG" --output workspace/resume.html
185
185
 
186
186
  # 4. Validate working canvas layout & ATS compliance
187
187
  knowme validate
188
188
 
189
- # 5. Render deterministic pixel-perfect PDF via Playwright
190
- npx ts-node scripts/render-pdf.ts --input workspace/resume.html --output workspace/resume.pdf
189
+ # 5. Render deterministic pixel-perfect PDF
190
+ python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf
191
191
 
192
192
  # 6. Build & view static HTML Template Gallery
193
193
  knowme gallery
194
- ```
195
194
 
196
195
  ---
197
196
 
198
- ## 9. Automated Testing & Verification
197
+ ## Automated Test Suite
199
198
 
200
199
  ```bash
201
- # Run full automated test suite (21/21 passing in 0.3s)
202
200
  npm test
203
201
  # Or:
204
- python3 scripts/run-all-tests.py
202
+ python3 scripts/build/run-all-tests.py
205
203
  ```
206
-
207
204
  ---
208
205
 
209
206
  ## 10. NPM Build, Release & Publishing
package/README.zh-CN.md CHANGED
@@ -182,32 +182,29 @@ knowme list
182
182
  knowme search "AI Agent Engineer" --style "two-column-split"
183
183
 
184
184
  # 2. 深度解析目标 JD 文本与技能词频
185
- python3 scripts/analyze-jd.py --jd examples/ai-engineer/jd.md
185
+ python3 scripts/evidence/analyze-jd.py --jd examples/ai-engineer/jd.md
186
186
 
187
187
  # 3. 实例化 HTML 中间工作区并注入关键词高亮
188
- python3 scripts/instantiate-resume.py --template modern --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
188
+ python3 scripts/template/instantiate-resume.py --template modern --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
189
189
 
190
190
  # 4. 运行布局结构、Design Tokens 与文字密度验证
191
191
  knowme validate
192
192
 
193
- # 5. 通过 Playwright 确定性导出无损矢量 A4 PDF
194
- npx ts-node scripts/render-pdf.ts --input workspace/resume.html --output workspace/resume.pdf
193
+ # 5. 确定性导出无损矢量 A4 PDF
194
+ python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf
195
195
 
196
196
  # 6. 编译生成可视化模板画廊
197
197
  knowme gallery
198
- ```
199
198
 
200
199
  ---
201
200
 
202
- ## 9. 自动化测试与质量保障
201
+ ## 自动化测试与持续集成
203
202
 
204
203
  ```bash
205
- # 运行全链路自动化测试套件 (21/21 项测试 0.3 秒通过)
206
204
  npm test
207
205
  # 或:
208
- python3 scripts/run-all-tests.py
206
+ python3 scripts/build/run-all-tests.py
209
207
  ```
210
-
211
208
  ---
212
209
 
213
210
  ## 10. NPM 构建、发布与版本更新
package/SKILL.md CHANGED
@@ -2,7 +2,7 @@
2
2
  name: knowme-careerforge
3
3
  displayName: KnowMe CareerForge
4
4
  description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering. Analyzes candidate evidence, maps strengths to target JDs, crafts tailored resumes inside an HTML Intermediate Canvas, self-heals layout/ATS, and exports pixel-perfect PDFs.
5
- version: 0.0.1
5
+ version: 0.0.4
6
6
  ---
7
7
 
8
8
  # KnowMe CareerForge — Agent Reasoning Contract & Execution Specification
@@ -16,7 +16,7 @@ version: 0.0.1
16
16
  ## 1. Operating Rules & Core Constraints
17
17
 
18
18
  When this skill is activated, you are NOT a generic text generator. You act as a coordinated council of 6 specialized personas:
19
- 1. **Career Researcher**: Discovers user facts, projects, and verifiable achievements.
19
+ 1. **Career Researcher**: Discovers user facts, codebase architectures, and verifiable achievements.
20
20
  2. **Career Strategist**: Analyzes target JDs and formulates career positioning strategy.
21
21
  3. **Evidence Analyst**: Strictly enforces L1~L3 evidence classification and eliminates hallucinations.
22
22
  4. **Resume Writer**: Crafts high-impact FAB (Feature-Advantage-Benefit) bullet points.
@@ -24,13 +24,61 @@ When this skill is activated, you are NOT a generic text generator. You act as a
24
24
  6. **Resume Reviewer**: Executes automated layout, overflow, and ATS Dual-QA tests.
25
25
 
26
26
  ### Non-Negotiable Invariants:
27
- - **Evidence-First**: Every single claim on the resume MUST be grounded in candidate facts. Never invent unverified revenue numbers, false company tenures, or fake degrees.
27
+ - **Evidence-First (Anti-Hallucination)**: Every single claim on the resume MUST be grounded in candidate facts. Never invent unverified revenue numbers, false company tenures, or fake degrees.
28
28
  - **HTML Intermediate Canvas as Source of Truth**: All modifications, tailoring, token tuning, and QA verification happen in `workspace/resume.html`. Never output raw unformatted text or bypass the HTML canvas.
29
- - **Deterministic Rendering**: The final PDF (`workspace/resume.pdf`) is exported only after passing Dual QA (Layout fit + ATS check) with 100% compliance.
29
+ - **Deterministic Rendering**: The final PDF (`workspace/resume.pdf`) is exported via multi-strategy auto-discovery renderers only after passing Dual QA with 100% compliance.
30
+ - **Quiet Execution Protocol (Strict Chat Invariant)**:
31
+ - **DO NOT** print hundreds of lines of raw HTML, full CSS stylesheets, or intermediate scratchpad python scripts to the user chat.
32
+ - Execute tool scripts silently in the background.
33
+ - Final response contract: One-line Value Proposition + Top 3 Grounded Evidence Highlights + Direct Output File Paths (`workspace/resume.pdf` and `workspace/resume.html`).
34
+
35
+ ### Reference Manuals (L3 Domain Rules):
36
+ - **Stage 1 (Know Me)**: `references/01-evidence-mining.md`
37
+ - **Stage 2 (Define Goal)**: `references/02-career-goal.md`
38
+ - **Stage 3 (Understand JD)**: `references/03-jd-analysis.md`
39
+ - **Stage 4 (Position & Select)**: `references/04-template-selection.md`
40
+ - **Stage 5 (Forge Canvas)**: `references/05-html-canvas-tokens.md`
41
+ - **Stage 6 (Review & QA)**: `references/06-qa-and-rendering.md`
42
+
43
+ *See `AGENT.md` for strict editorial standards and `ARCHITECTURE.md` for system architecture.*
30
44
 
31
45
  ---
32
46
 
33
- ## 2. The 6-Stage Deterministic Workflow
47
+ ## 2. Input & Content Intelligence Layer (Repo-to-Resume Modes)
48
+
49
+ Identify the user's input scenario and select the corresponding mode:
50
+
51
+ ```text
52
+ ┌─────────────────────────────────────────────────────────────────────────────────┐
53
+ │ Input Modes & Evidence Mining Pipeline │
54
+ ├─────────────────────────────────────────────────────────────────────────────────┤
55
+ │ Mode A: Codebase / Repo-to-Resume Mode │
56
+ │ User provides a project directory or Git repo (or runs in current workspace) │
57
+ │ ➔ Run `python3 scripts/evidence/extract-evidence.py --repo .` │
58
+ │ ➔ Extract tech stacks, frameworks, Docker/CI-CD, Git commits, and author info │
59
+ ├─────────────────────────────────────────────────────────────────────────────────┤
60
+ │ Mode B: JD-Specific Mode │
61
+ │ User provides a target Job Description (text or file) │
62
+ │ ➔ Run `python3 scripts/evidence/analyze-jd.py --jd "path/to/jd.txt"` │
63
+ │ ➔ Extract Must-Have skills, Nice-to-Haves, hiring signals, and priority words │
64
+ ├─────────────────────────────────────────────────────────────────────────────────┤
65
+ │ Mode C: Target-Role Mode │
66
+ │ User specifies a direction (e.g. "AI Agent Engineer", "Senior Architect") │
67
+ │ ➔ Match against `src/knowledge/roles/*.json` knowledge profiles │
68
+ └─────────────────────────────────────────────────────────────────────────────────┘
69
+ ```
70
+
71
+ ### Collecting Candidate Information:
72
+ 1. **Basic Info**: Name, Contact (Email, Phone, Location, GitHub). If missing from user prompt, auto-detect from Git / `package.json` / `evidence-master.json` or prompt briefly.
73
+ 2. **L1~L3 Evidence Classification**:
74
+ - **Level 1 (Direct Code/Config Evidence)**: Verified by code files, configuration files (`package.json`, `Dockerfile`, `go.mod`, `Cargo.toml`), API contracts, or Git commits.
75
+ - **Level 2 (Structural/Dependency Evidence)**: Deduced from directory structure, tech stack dependencies, and architectural patterns.
76
+ - **Level 3 (Contextual Inference)**: Reasonable contextual deduction (MUST use conservative phrasing, e.g., *"Participated in the design and implementation of..."*).
77
+ - **Unsupported**: Facts not present in candidate records. **NEVER WRITE INTO RESUME**.
78
+
79
+ ---
80
+
81
+ ## 3. The 6-Stage Deterministic Workflow
34
82
 
35
83
  You MUST execute the following 6 stages in exact sequence:
36
84
 
@@ -47,133 +95,74 @@ You MUST execute the following 6 stages in exact sequence:
47
95
  └──────────────┘ └──────────────┘ └──────────────────┘
48
96
  ```
49
97
 
50
- ---
51
-
52
- ### Stage 1: Know Me (Self-Discovery & Evidence Extraction)
53
-
54
- 1. **Collect & Structure Facts**:
55
- - Extract education, company tenures, project scopes, code repositories, system architectures, and technical competencies.
56
- 2. **Classify Evidence into 3 Strict Levels**:
57
- - **Level 1 (Direct Evidence)**: Verified by code files, configuration files (`package.json`, `Dockerfile`), API contracts, Git commits, or published metrics.
58
- - **Level 2 (Structural Evidence)**: Deduced from directory structure, tech stack dependencies, and architectural patterns.
59
- - **Level 3 (Contextual Inference)**: Reasonable contextual deduction (MUST use conservative phrasing, e.g., *"Participated in the design and implementation of..."*).
60
- - **Unsupported**: Facts not present in candidate records. **NEVER WRITE INTO RESUME**. If a core JD skill is missing, prompt the candidate to clarify rather than fabricating.
61
-
62
- ---
63
-
64
- ### Stage 2: Define (Goal & Career Positioning)
65
-
66
- 1. **Clarify Career Target**:
67
- - **Target Role Title**: e.g., *Senior AI Agent Engineer*, *Staff Frontend Architect*, *Tech Lead*.
68
- - **Target Seniority**: Junior / Mid / Senior / Lead / Principal / Executive.
69
- - **Industry Domain**: e.g., AI/LLM, Enterprise SaaS, FinTech, E-Commerce.
70
- 2. **Formulate Core Value Proposition (CVP)**:
71
- - One concise statement (15~25 words) capturing the candidate's unique intersection of skills and business impact.
72
-
73
- ---
98
+ ### Option 1: Fast One-Shot Unified Execution (Recommended)
99
+ You can run the full end-to-end pipeline in a single command:
100
+ ```bash
101
+ python3 scripts/pipeline/forge.py --repo . --role "<Target Role>" --jd "<path/to/jd.txt>" --template "<minimal|modern|executive|classic>" --quiet
102
+ ```
103
+ Or via CLI:
104
+ ```bash
105
+ knowme forge --repo . --role "<Target Role>" --template modern --quiet
106
+ ```
74
107
 
75
- ### Stage 3: Understand (Job Description & Signal Extraction)
108
+ ### Option 2: Step-by-Step Granular Execution
76
109
 
77
- 1. Run the JD Analysis script (or execute equivalent extraction logic):
78
- ```bash
79
- python3 scripts/analyze-jd.py --jd "path/to/jd.txt"
80
- ```
81
- 2. **Extract Key Signals**:
82
- - **Must-Have Skills**: Absolute prerequisites (e.g., Python, LangChain/LangGraph, RAG, FastAPI).
83
- - **Nice-to-Have Skills**: Advantageous boosters (e.g., Kubernetes, VectorDB benchmarking).
84
- - **Core Pain Points & Responsibilities**: What business problems is this hire expected to solve?
85
- - **Hiring Signals & Cultural Cues**: High-frequency verbs and domain terminology.
110
+ #### Step 1: Extract Evidence (Know Me)
111
+ ```bash
112
+ python3 scripts/evidence/extract-evidence.py --repo . --output workspace/evidence-master.json --quiet
113
+ ```
86
114
 
87
- ---
115
+ #### Step 2 & 3: JD & Target Analysis (Understand)
116
+ ```bash
117
+ python3 scripts/evidence/analyze-jd.py --jd "path/to/jd.txt"
118
+ ```
88
119
 
89
- ### Stage 4: Position Myself (Strength Mapping & Resume Strategy)
120
+ #### Step 4: Search & Select Template (Position)
121
+ ```bash
122
+ python3 scripts/template/search-template.py "<Target Role>" --style "<minimal|modern|executive|classic>" --target-pages 1
123
+ ```
90
124
 
91
- 1. **Conduct Gap Analysis**:
92
- - Compare Candidate Evidence (Stage 1) against JD Requirements (Stage 3).
93
- - Identify **Strong Matches** (L1 evidence), **Potential Matches** (L2/L3), and **Gaps**.
94
- 2. **Define Resume Strategy**:
95
- - **Section Priority**: e.g., for AI Engineer: `Skills` ➔ `Projects` ➔ `Experience` ➔ `Education`. For Executive: `Summary` ➔ `Experience` ➔ `Leadership Projects` ➔ `Skills`.
96
- - **Keyword Highlight Targets**: 8~12 high-priority terms to emphasize visually.
97
- - **Narrative Angle**: Tailor project bullets using the **FAB Formula** (*Feature: What was built; Advantage: How it was built better; Benefit: Measurable business impact*).
125
+ #### Step 5: Instantiate Intermediate HTML Working Canvas (CareerForge)
126
+ ```bash
127
+ python3 scripts/template/instantiate-resume.py --template <template_id> --profile workspace/evidence-master.json --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
128
+ ```
98
129
 
99
- ---
130
+ #### Step 6: Review, Dual QA & PDF Export
131
+ ```bash
132
+ # 1. Run Layout QA (DOM height & overflow validation)
133
+ python3 scripts/validation/validate-resume.py --html workspace/resume.html --expected-pages 1
134
+ ```
135
+ # 2. If overflow occurs, tune CSS tokens in workspace/resume.html:
136
+ # - Reduce --resume-space-section (e.g., 11pt -> 9.5pt)
137
+ # - Reduce --resume-font-size-body (e.g., 9.2pt -> 9.0pt)
100
138
 
101
- ### Stage 5: CareerForge (Template Selection, Canvas Instantiation & Editing)
102
-
103
- 1. **Search & Select Best Template**:
104
- ```bash
105
- python3 scripts/search-template.py "<Target Role>" --style "<minimal|modern|executive|classic>" --target-pages 1
106
- ```
107
- - `minimal`: Single-column, tech-dense, optimal for Backend/AI/Systems (1 page).
108
- - `modern`: Two-column split (32:68), deep navy sidebar, fullstack/AI/global (1~2 pages).
109
- - `executive`: Executive dark banner + 33:67 split, leadership & architecture (1~2 pages).
110
- - `classic`: Modern structured table grid, formal/gov/corporate (1 page).
111
-
112
- 2. **Instantiate Intermediate Working Canvas**:
113
- ```bash
114
- python3 scripts/instantiate-resume.py --template <template_id> --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
115
- ```
116
-
117
- 3. **Edit in Intermediate Canvas (`workspace/resume.html`)**:
118
- - Inject candidate details into the semantic HTML structure.
119
- - Wrap core matching keywords in `<strong>` or `<span class="tech-tag">`.
120
- - Calibrate CSS Variables in `<style>`:
121
- - Spacing: `--resume-space-section`, `--resume-space-item`, `--resume-space-bullet`.
122
- - Typography: `--resume-font-size-body`, `--resume-line-height-body`.
123
- - Accents: `--resume-color-accent`, `--resume-color-primary`.
139
+ ```bash
140
+ # 3. Deterministic PDF Export via Multi-Strategy Auto-Discovery:
141
+ python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf --quiet
142
+ ```
124
143
 
125
144
  ---
126
145
 
127
- ### Stage 6: Review & Dual QA (Verification, Self-Healing & PDF Export)
128
-
129
- 1. **Execute Automated Dual QA**:
130
- ```bash
131
- # QA Test 1: Layout & DOM Height Overflow Check
132
- python3 scripts/validate-resume.py --html workspace/resume.html --expected-pages 1
133
-
134
- # QA Test 2: ATS Text Flow & Heading Hierarchy Check
135
- npx ts-node scripts/validate-ats.ts --html workspace/resume.html
136
- ```
146
+ ## 4. Final Response Delivery Contract (Strict Template)
137
147
 
138
- 2. **Self-Healing Closed Loop (If QA Fails)**:
139
- - **Case A: Page Overflow (e.g. DOM Height 1145px > 1122.5px)**:
140
- 1. In `workspace/resume.html`, reduce `--resume-space-section` by `1~2pt`.
141
- 2. Reduce `--resume-font-size-body` by `0.2pt` (minimum `8.8pt`).
142
- 3. Condense verbose bullet points while preserving evidence verbs and metrics.
143
- 4. Re-run `validate-resume.py` until 100% single page fit.
144
- - **Case B: ATS Structure Warning**:
145
- 1. Ensure all section titles use standard H2 tags (`工作经历`, `专业技能`, `项目经历`, `教育背景`).
146
- 2. Ensure contact items are plain text in standard DOM nodes.
148
+ Once `workspace/resume.pdf` is generated, deliver your final response strictly in this clear, professional structure:
147
149
 
148
- 3. **Export Deterministic PDF**:
149
- ```bash
150
- npx ts-node scripts/render-pdf.ts --input workspace/resume.html --output workspace/resume.pdf
151
- ```
152
-
153
- 4. **Deliver to User**:
154
- - Provide `workspace/resume.html` and `workspace/resume.pdf`.
155
- - Deliver an **Evidence & Strategy Traceability Summary** explaining how real strengths were mapped to the target JD.
150
+ ```markdown
151
+ ### 🎯 Career Positioning & Value Proposition
152
+ > **[Candidate Name] · [Target Role Title]**
153
+ > *[15~25 words Core Value Proposition highlighting key strengths]*
156
154
 
157
155
  ---
158
156
 
159
- ## 3. Anti-Hallucination & Evidence Rules Summary
160
-
161
- | Evidence Level | Permitted Phrasing | Prohibited Phrasing |
162
- | :--- | :--- | :--- |
163
- | **L1 (Code/Config Proven)** | "Architected and implemented...", "Reduced latency by 40% (benchmarked in test suite)" | Phrasing that claims scope beyond repository evidence |
164
- | **L2 (Dependency/Module Proven)** | "Built microservices utilizing FastAPI and PostgreSQL..." | Claiming senior ownership when code only shows minor integration |
165
- | **L3 (Contextual Inference)** | "Collaborated on the deployment workflow...", "Participated in data pipeline optimization..." | Claiming "Solely designed and led entire enterprise migration" |
166
- | **Unsupported (No Evidence)** | **DO NOT INCLUDE** | Inventing metrics, tools, or roles |
157
+ ### 🛡️ Top Grounded Evidence Highlights (L1/L2)
158
+ 1. **[Key Domain / Architecture]**: [Action Verb + Grounded Achievement + Metrics] *(Evidence: [Source])*
159
+ 2. **[Core Tech Stack]**: [Engineered feature with exact frameworks] *(Evidence: [Source])*
160
+ 3. **[Delivery & Impact]**: [System stability / CI-CD / Performance metric] *(Evidence: [Source])*
167
161
 
168
162
  ---
169
163
 
170
- ## 4. Troubleshooting & Self-Healing Decision Matrix
171
-
172
- ```text
173
- QA Failure: Height Overflow (> 1122.5px)
174
- │
175
- ├── Step 1: Reduce --resume-space-section (e.g., 11pt -> 9.5pt)
176
- ├── Step 2: Reduce --resume-space-item (e.g., 7.5pt -> 6pt)
177
- ├── Step 3: Reduce --resume-font-size-body (e.g., 9.2pt -> 9.0pt)
178
- └── Step 4: Merge multi-line bullets into concise single-line bullets
164
+ ### 📄 Final Verified Deliverables
165
+ - **PDF Resume (Deterministic A4)**: `workspace/resume.pdf` (Passed 100% Dual QA)
166
+ - **HTML Working Canvas**: `workspace/resume.html` (Design Tokens Calibrated)
167
+ - **Master Profile JSON**: `workspace/evidence-master.json` (Traceable Evidence底座)
179
168
  ```
@@ -1,16 +1,18 @@
1
1
  ---
2
2
  description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering.
3
- globs: ["workspace/*", "src/**/*"]
3
+ globs: ["workspace/*", "src/**/*", "scripts/**/*", "references/*"]
4
4
  ---
5
5
 
6
6
  # KnowMe CareerForge — Claude Code Skill
7
7
 
8
- Know Yourself. Define Your Direction. Forge Your Opportunity.
8
+ > *"Know Yourself. Define Your Direction. Forge Your Opportunity."*
9
9
 
10
- When activated, follow the 6-stage workflow:
11
- 1. **Know Me**: Extract candidate facts, classify into L1~L3 evidence.
12
- 2. **Define**: Establish target role, seniority, and Core Value Proposition.
13
- 3. **Understand**: Analyze target JD via `python3 scripts/analyze-jd.py`.
14
- 4. **Position**: Perform gap analysis, map evidence, design Resume Strategy.
15
- 5. **CareerForge**: Search template (`python3 scripts/search-template.py`), instantiate `workspace/resume.html`, calibrate CSS tokens.
16
- 6. **Review & Dual QA**: Run `python3 scripts/validate-resume.py`, self-heal overflow, render `workspace/resume.pdf` via `npx ts-node scripts/render-pdf.ts`.
10
+ When activated, follow the 6-Stage Deterministic Workflow and Quiet Execution Protocol (see `AGENT.md` and `ARCHITECTURE.md`):
11
+
12
+ 1. **Evidence Mining (repo-to-resume)**: Extract codebase facts via `python3 scripts/evidence/extract-evidence.py --repo .` or run one-shot `python3 scripts/pipeline/forge.py` (see `references/01-evidence-mining.md`).
13
+ 2. **Define Goal & Archetype**: Establish target seniority tier and capability matrix (see `references/02-career-goal.md`).
14
+ 3. **Understand Target**: Analyze target JD via `python3 scripts/evidence/analyze-jd.py` (see `references/03-jd-analysis.md`).
15
+ 4. **Template Search**: Match template via `python3 scripts/template/search-template.py` (see `references/04-template-selection.md`).
16
+ 5. **Intermediate Canvas**: Instantiate `workspace/resume.html` via `python3 scripts/template/instantiate-resume.py` and calibrate CSS design tokens (see `references/05-html-canvas-tokens.md`).
17
+ 6. **Review & Dual QA**: Run `python3 scripts/validation/validate-resume.py` and export `workspace/resume.pdf` via `python3 scripts/rendering/render-pdf.py` (see `references/06-qa-and-rendering.md`).
18
+ 7. **Quiet Delivery**: Execute silently in background; deliver concise executive summary and final file path (`workspace/resume.pdf`).
@@ -1,15 +1,24 @@
1
1
  name: knowme-careerforge
2
2
  description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering.
3
- version: 1.0.0
3
+ version: 0.0.4
4
4
  entrypoint: SKILL.md
5
5
  tools:
6
+ - name: forge
7
+ command: python3 scripts/pipeline/forge.py
8
+ - name: extract-evidence
9
+ command: python3 scripts/evidence/extract-evidence.py
6
10
  - name: search-template
7
- command: python3 scripts/search-template.py
11
+ command: python3 scripts/template/search-template.py
8
12
  - name: analyze-jd
9
- command: python3 scripts/analyze-jd.py
13
+ command: python3 scripts/evidence/analyze-jd.py
10
14
  - name: instantiate-resume
11
- command: python3 scripts/instantiate-resume.py
15
+ command: python3 scripts/template/instantiate-resume.py
12
16
  - name: validate-resume
13
- command: python3 scripts/validate-resume.py
17
+ command: python3 scripts/validation/validate-resume.py
14
18
  - name: render-pdf
15
- command: npx ts-node scripts/render-pdf.ts
19
+ command: python3 scripts/rendering/render-pdf.py
20
+ rules:
21
+ - "Execute tools silently in background with --quiet (DO NOT print raw HTML, full CSS, or scripts in chat)."
22
+ - "Use workspace/resume.html as the sole Intermediate Working Canvas."
23
+ - "Deliver final concise summary and path to workspace/resume.pdf."
24
+ - "Reference AGENT.md, ARCHITECTURE.md, and references/01~06 for complete specifications."
@@ -1,12 +1,17 @@
1
1
  ---
2
2
  description: KnowMe CareerForge — Agent-native career positioning and resume engineering
3
- globs: ["workspace/*", "src/**/*"]
3
+ globs: ["workspace/*", "src/**/*", "scripts/**/*", "references/*"]
4
4
  ---
5
5
 
6
- # KnowMe CareerForge MDC Rules
6
+ # KnowMe CareerForge MDC Rules (Cursor)
7
7
 
8
- 1. Enforce Evidence-First discipline: Never hallucinate ungrounded claims (L1~L3 only).
9
- 2. Edit exclusively in `workspace/resume.html` intermediate working canvas.
10
- 3. Use `python3 scripts/search-template.py` to pick the optimal template.
11
- 4. Use `python3 scripts/instantiate-resume.py` to generate the self-contained canvas.
12
- 5. Validate using `python3 scripts/validate-resume.py` before rendering PDF.
8
+ When activated for career positioning, resume tailoring, or repo-to-resume analysis:
9
+
10
+ 1. **Evidence-First Invariant**: Enforce strict L1~L3 evidence classification (see `references/01-evidence-mining.md`). Never hallucinate ungrounded revenue metrics, fake degrees, or false tenures.
11
+ 2. **Repo-to-Resume Extraction**: Extract codebase facts using `python3 scripts/evidence/extract-evidence.py --repo .` or execute the one-shot pipeline `python3 scripts/pipeline/forge.py`.
12
+ 3. **Target Alignment & JD Parsing**: Analyze target Job Descriptions using `python3 scripts/evidence/analyze-jd.py` (see `references/03-jd-analysis.md`).
13
+ 4. **Template Search**: Match template via `python3 scripts/template/search-template.py "<Target Role>"` (see `references/04-template-selection.md`).
14
+ 5. **HTML Canvas Editing**: Edit exclusively in `workspace/resume.html` Intermediate Working Canvas (`scripts/template/instantiate-resume.py`). Calibrate CSS variables (`--resume-*`) in `:root` (see `references/05-html-canvas-tokens.md`).
15
+ 6. **Dual QA & Deterministic PDF**: Validate layout height ($297\text{mm} \le 1122.5\text{px}$) and ATS via `python3 scripts/validation/validate-resume.py`. Export final vector PDF via `python3 scripts/rendering/render-pdf.py`.
16
+ 7. **Quiet Execution Protocol**: Execute all tools silently with `--quiet`. Never output raw HTML/CSS into the chat. Deliver concise value proposition and direct output file paths.
17
+ 8. **Authoritative Guide**: Refer to root `AGENT.md` for Vercel-inspired editorial standards and `ARCHITECTURE.md` for system design.
@@ -1,7 +1,7 @@
1
1
  name: knowme-careerforge
2
2
  displayName: KnowMe CareerForge
3
3
  description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering.
4
- version: 1.0.0
4
+ version: 0.0.4
5
5
  schema: 1.0
6
6
  entrypoint: SKILL.md
7
7
  tags:
@@ -1,10 +1,13 @@
1
1
  # KnowMe CareerForge — Windsurf Rules
2
- # Trigger: Career discovery, resume tailoring, JD analysis
2
+ # Trigger: Career discovery, resume tailoring, JD analysis, repo-to-resume
3
3
 
4
- When user requests resume tailoring or career analysis:
5
- 1. Extract candidate facts and tag with Evidence Level (L1~L3).
6
- 2. Analyze target JD requirements using scripts/analyze-jd.py.
7
- 3. Recommend best template using scripts/search-template.py.
8
- 4. Instantiate workspace/resume.html and calibrate CSS variables.
9
- 5. Run scripts/validate-resume.py to check DOM fit and ATS compatibility.
10
- 6. Export final PDF using scripts/render-pdf.ts.
4
+ When user requests resume tailoring, project analysis, or career positioning:
5
+ 1. **Evidence Mining**: Extract candidate facts using `python3 scripts/evidence/extract-evidence.py --repo .` or execute one-shot `python3 scripts/pipeline/forge.py`.
6
+ 2. **Anti-Hallucination Gate**: Tag all experience items with Evidence Level (L1~L3 only, see `references/01-evidence-mining.md`).
7
+ 3. **JD & Signal Analysis**: Analyze target JD requirements using `python3 scripts/evidence/analyze-jd.py` (see `references/03-jd-analysis.md`).
8
+ 4. **Template Search**: Recommend best template using `python3 scripts/template/search-template.py` (see `references/04-template-selection.md`).
9
+ 5. **Canvas Instantiation**: Instantiate `workspace/resume.html` using `python3 scripts/template/instantiate-resume.py` and calibrate CSS design tokens (see `references/05-html-canvas-tokens.md`).
10
+ 6. **Dual QA Verification**: Validate DOM fit ($297\text{mm} \le 1122.5\text{px}$) and ATS compatibility using `python3 scripts/validation/validate-resume.py`.
11
+ 7. **Deterministic PDF Export**: Export final vector PDF using `python3 scripts/rendering/render-pdf.py` (see `references/06-qa-and-rendering.md`).
12
+ 8. **Quiet Delivery**: Execute silently in background (`--quiet`); deliver concise value proposition and direct output file paths (`workspace/resume.pdf`).
13
+ 9. **Authoritative Guide**: Refer to root `AGENT.md` for editorial standards and `ARCHITECTURE.md` for system architecture.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * KnowMe CareerForge CLI — Init Command
3
- * 一键将 Skill 注入并配置至指定 AI Agent 平台环境。
3
+ * 一键将 Skill 完整工具包注入并配置至指定 AI Agent 平台环境。
4
4
  */
5
5
  export interface InitOptions {
6
6
  platform?: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
3
  * KnowMe CareerForge CLI — Init Command
4
- * 一键将 Skill 注入并配置至指定 AI Agent 平台环境。
4
+ * 一键将 Skill 完整工具包注入并配置至指定 AI Agent 平台环境。
5
5
  */
6
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
7
  if (k2 === undefined) k2 = k;
@@ -52,6 +52,24 @@ function findPackageRoot(startDir) {
52
52
  }
53
53
  return path.resolve(startDir, '../../..');
54
54
  }
55
+ function copyDirRecursive(src, dest) {
56
+ if (!fs.existsSync(src))
57
+ return;
58
+ fs.mkdirSync(dest, { recursive: true });
59
+ const entries = fs.readdirSync(src, { withFileTypes: true });
60
+ for (const entry of entries) {
61
+ const srcPath = path.join(src, entry.name);
62
+ const destPath = path.join(dest, entry.name);
63
+ if (entry.isDirectory()) {
64
+ if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === 'dist')
65
+ continue;
66
+ copyDirRecursive(srcPath, destPath);
67
+ }
68
+ else {
69
+ fs.copyFileSync(srcPath, destPath);
70
+ }
71
+ }
72
+ }
55
73
  function runInit(options) {
56
74
  const rootDir = findPackageRoot(__dirname);
57
75
  const projectDir = options.projectDir ? path.resolve(options.projectDir) : process.cwd();
@@ -73,17 +91,30 @@ function runInit(options) {
73
91
  case 'claude': {
74
92
  const claudeDir = path.join(homeDir, '.claude', 'skills', 'knowme-careerforge');
75
93
  fs.mkdirSync(claudeDir, { recursive: true });
76
- const skillMd = fs.readFileSync(path.join(rootDir, 'SKILL.md'), 'utf-8');
77
- fs.writeFileSync(path.join(claudeDir, 'SKILL.md'), skillMd, 'utf-8');
78
- console.log(`[✓] Claude Code Skill configured -> ${claudeDir}`);
94
+ copyDirRecursive(path.join(rootDir, 'scripts'), path.join(claudeDir, 'scripts'));
95
+ copyDirRecursive(path.join(rootDir, 'src'), path.join(claudeDir, 'src'));
96
+ copyDirRecursive(path.join(rootDir, 'references'), path.join(claudeDir, 'references'));
97
+ fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(claudeDir, 'SKILL.md'));
98
+ fs.copyFileSync(path.join(rootDir, 'AGENT.md'), path.join(claudeDir, 'AGENT.md'));
99
+ fs.copyFileSync(path.join(rootDir, 'ARCHITECTURE.md'), path.join(claudeDir, 'ARCHITECTURE.md'));
100
+ fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(claudeDir, 'skill.json'));
101
+ console.log(`[✓] Claude Code Skill fully bundled -> ${claudeDir}`);
79
102
  break;
80
103
  }
81
104
  case 'codex': {
82
105
  const codexDir = path.join(homeDir, '.codex', 'skills', 'knowme-careerforge');
83
106
  fs.mkdirSync(codexDir, { recursive: true });
84
- const skillMd = fs.readFileSync(path.join(rootDir, 'SKILL.md'), 'utf-8');
85
- fs.writeFileSync(path.join(codexDir, 'SKILL.md'), skillMd, 'utf-8');
86
- console.log(`[✓] Codex Native Skill configured -> ${codexDir}`);
107
+ copyDirRecursive(path.join(rootDir, 'scripts'), path.join(codexDir, 'scripts'));
108
+ copyDirRecursive(path.join(rootDir, 'src'), path.join(codexDir, 'src'));
109
+ copyDirRecursive(path.join(rootDir, 'references'), path.join(codexDir, 'references'));
110
+ fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(codexDir, 'SKILL.md'));
111
+ fs.copyFileSync(path.join(rootDir, 'AGENT.md'), path.join(codexDir, 'AGENT.md'));
112
+ fs.copyFileSync(path.join(rootDir, 'ARCHITECTURE.md'), path.join(codexDir, 'ARCHITECTURE.md'));
113
+ fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(codexDir, 'skill.json'));
114
+ if (fs.existsSync(path.join(rootDir, 'agents', 'codex', 'knowme-careerforge.yaml'))) {
115
+ fs.copyFileSync(path.join(rootDir, 'agents', 'codex', 'knowme-careerforge.yaml'), path.join(codexDir, 'skill.yaml'));
116
+ }
117
+ console.log(`[✓] Codex Native Skill fully bundled -> ${codexDir}`);
87
118
  break;
88
119
  }
89
120
  case 'cursor': {
@@ -112,9 +143,14 @@ function runInit(options) {
112
143
  case 'opencode': {
113
144
  const opencodeDir = path.join(projectDir, '.opencode', 'skills', 'knowme-careerforge');
114
145
  fs.mkdirSync(opencodeDir, { recursive: true });
115
- const skillYaml = fs.readFileSync(path.join(rootDir, 'agents', 'opencode', 'skill.yaml'), 'utf-8');
116
- fs.writeFileSync(path.join(opencodeDir, 'skill.yaml'), skillYaml, 'utf-8');
117
- console.log(`[✓] OpenCode Skill configured -> ${opencodeDir}`);
146
+ copyDirRecursive(path.join(rootDir, 'scripts'), path.join(opencodeDir, 'scripts'));
147
+ copyDirRecursive(path.join(rootDir, 'src'), path.join(opencodeDir, 'src'));
148
+ copyDirRecursive(path.join(rootDir, 'references'), path.join(opencodeDir, 'references'));
149
+ fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(opencodeDir, 'SKILL.md'));
150
+ fs.copyFileSync(path.join(rootDir, 'AGENT.md'), path.join(opencodeDir, 'AGENT.md'));
151
+ fs.copyFileSync(path.join(rootDir, 'ARCHITECTURE.md'), path.join(opencodeDir, 'ARCHITECTURE.md'));
152
+ fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(opencodeDir, 'skill.json'));
153
+ console.log(`[✓] OpenCode Skill fully bundled -> ${opencodeDir}`);
118
154
  break;
119
155
  }
120
156
  default: