knowme-careerforge-skill 0.0.4 → 0.0.7

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 (117) hide show
  1. package/AGENT.md +276 -0
  2. package/ARCHITECTURE.md +220 -0
  3. package/README.md +46 -63
  4. package/README.zh-CN.md +47 -66
  5. package/SKILL.md +38 -135
  6. package/agents/claude/knowme-careerforge.md +2 -17
  7. package/agents/codex/knowme-careerforge.yaml +2 -20
  8. package/agents/cursor/knowme-careerforge.mdc +4 -13
  9. package/agents/gemini/knowme-careerforge.json +1 -1
  10. package/agents/opencode/skill.yaml +1 -1
  11. package/agents/windsurf/knowme-careerforge.rules +2 -12
  12. package/dist/cli/src/commands/init.js +51 -32
  13. package/dist/cli/src/index.js +25 -21
  14. package/dist/scripts/rendering/engine-loader.d.ts +2 -0
  15. package/dist/scripts/rendering/engine-loader.js +46 -0
  16. package/dist/scripts/rendering/render-pdf.d.ts +3 -8
  17. package/dist/scripts/rendering/render-pdf.js +7 -103
  18. package/dist/scripts/rendering/runtime.d.ts +9 -0
  19. package/dist/scripts/rendering/runtime.js +63 -0
  20. package/dist/scripts/validation/validate-ats.d.ts +2 -22
  21. package/dist/scripts/validation/validate-ats.js +6 -168
  22. package/dist/scripts/validation/validate-layout.d.ts +2 -23
  23. package/dist/scripts/validation/validate-layout.js +5 -159
  24. package/package.json +15 -4
  25. package/references/01-evidence-mining.md +35 -0
  26. package/references/02-career-goal.md +40 -0
  27. package/references/03-jd-analysis.md +32 -0
  28. package/references/04-template-selection.md +30 -0
  29. package/references/05-html-canvas-tokens.md +12 -0
  30. package/references/06-qa-and-rendering.md +27 -0
  31. package/references/07-artifact-contract.md +83 -0
  32. package/scripts/Agent.md +9 -136
  33. package/scripts/build/build-gallery.py +66 -56
  34. package/scripts/build/run-all-tests.py +1 -0
  35. package/scripts/build/sync-version.py +27 -9
  36. package/scripts/contracts/profile.py +101 -0
  37. package/scripts/evidence/extract-evidence.py +109 -62
  38. package/scripts/pipeline/forge.py +276 -136
  39. package/scripts/rendering/README.md +65 -0
  40. package/scripts/rendering/browser-engine.d.ts +15 -0
  41. package/scripts/rendering/browser-engine.js +408 -0
  42. package/scripts/rendering/browser_engine.py +39 -0
  43. package/scripts/rendering/engine-loader.ts +11 -0
  44. package/scripts/rendering/render-pdf.py +26 -151
  45. package/scripts/rendering/render-pdf.ts +7 -83
  46. package/scripts/template/instantiate-resume.py +266 -173
  47. package/scripts/template/search-template.py +89 -3
  48. package/scripts/validation/measure-dom.js +5 -0
  49. package/scripts/validation/validate-ats.ts +6 -174
  50. package/scripts/validation/validate-layout.ts +5 -159
  51. package/scripts/validation/validate-resume.py +23 -134
  52. package/skill.json +7 -6
  53. package/src/knowledge/index.json +391 -3
  54. package/src/knowledge/resume-schema.json +377 -71
  55. package/src/knowledge/templates.json +389 -1
  56. package/src/references/01-evidence-mining.md +24 -30
  57. package/src/references/02-career-goal.md +4 -2
  58. package/src/references/03-jd-analysis.md +5 -17
  59. package/src/references/04-template-selection.md +20 -33
  60. package/src/references/05-html-canvas-tokens.md +6 -45
  61. package/src/references/06-qa-and-rendering.md +16 -43
  62. package/src/references/07-artifact-contract.md +83 -0
  63. package/src/templates/Agent.md +11 -0
  64. package/src/templates/academic-research/README.md +25 -0
  65. package/src/templates/academic-research/canvas.html +21 -0
  66. package/src/templates/academic-research/metadata.json +38 -0
  67. package/src/templates/academic-research/sample-profile.json +86 -0
  68. package/src/templates/academic-research/style.css +213 -0
  69. package/src/templates/classic/README.md +9 -0
  70. package/src/templates/classic/canvas.html +21 -0
  71. package/src/templates/classic/metadata.json +3 -0
  72. package/src/templates/classic/sample-profile.json +86 -0
  73. package/src/templates/classic/style.css +14 -4
  74. package/src/templates/common/base.css +32 -0
  75. package/src/templates/common/canvas-bindings.css +41 -0
  76. package/src/templates/common/resume-contract.md +8 -0
  77. package/src/templates/compact-dense/README.md +25 -0
  78. package/src/templates/compact-dense/canvas.html +14 -0
  79. package/src/templates/compact-dense/metadata.json +38 -0
  80. package/src/templates/compact-dense/sample-profile.json +86 -0
  81. package/src/templates/compact-dense/style.css +218 -0
  82. package/src/templates/creative-tech/README.md +26 -0
  83. package/src/templates/creative-tech/canvas.html +15 -0
  84. package/src/templates/creative-tech/metadata.json +39 -0
  85. package/src/templates/creative-tech/sample-profile.json +86 -0
  86. package/src/templates/creative-tech/style.css +257 -0
  87. package/src/templates/data-analyst/README.md +26 -0
  88. package/src/templates/data-analyst/canvas.html +15 -0
  89. package/src/templates/data-analyst/metadata.json +39 -0
  90. package/src/templates/data-analyst/sample-profile.json +86 -0
  91. package/src/templates/data-analyst/style.css +285 -0
  92. package/src/templates/executive/README.md +9 -0
  93. package/src/templates/executive/canvas.html +15 -0
  94. package/src/templates/executive/sample-profile.json +86 -0
  95. package/src/templates/executive/style.css +58 -6
  96. package/src/templates/international-flow/README.md +26 -0
  97. package/src/templates/international-flow/canvas.html +21 -0
  98. package/src/templates/international-flow/metadata.json +37 -0
  99. package/src/templates/international-flow/sample-profile.json +86 -0
  100. package/src/templates/international-flow/style.css +208 -0
  101. package/src/templates/minimal/README.md +12 -1
  102. package/src/templates/minimal/canvas.html +21 -0
  103. package/src/templates/minimal/sample-profile.json +86 -0
  104. package/src/templates/minimal/style.css +24 -0
  105. package/src/templates/modern/README.md +9 -0
  106. package/src/templates/modern/canvas.html +15 -0
  107. package/src/templates/modern/sample-profile.json +86 -0
  108. package/src/templates/modern/style.css +48 -1
  109. package/src/templates/startup-generalist/README.md +25 -0
  110. package/src/templates/startup-generalist/canvas.html +21 -0
  111. package/src/templates/startup-generalist/metadata.json +37 -0
  112. package/src/templates/startup-generalist/sample-profile.json +86 -0
  113. package/src/templates/startup-generalist/style.css +237 -0
  114. package/src/templates/classic/template.html +0 -133
  115. package/src/templates/executive/template.html +0 -101
  116. package/src/templates/minimal/template.html +0 -114
  117. package/src/templates/modern/template.html +0 -139
package/README.md CHANGED
@@ -1,28 +1,27 @@
1
- # KnowMe CareerForge
1
+ <div align="center">
2
+
3
+ # 🎯 KnowMe CareerForge
2
4
 
3
5
  <p align="center">
4
- <a href="README.zh-CN.md">🇨🇳 简体中文</a> |
5
- <a href="README.md">🇺🇸 English</a>
6
+ <strong>认识自己,明确方向,锻造属于你的职业机会。</strong><br>
7
+ <em>Know Yourself. Define Your Direction. Forge Your Opportunity.</em>
6
8
  </p>
7
9
 
8
10
  <p align="center">
9
- <a href="https://github.com/Max-Samson/knowme-careerforge-skill/releases"><img src="https://img.shields.io/github/v/release/Max-Samson/knowme-careerforge-skill?style=for-the-badge&color=blue" alt="GitHub Release"></a>
10
- <img src="https://img.shields.io/badge/role_profiles-9_standard-green?style=for-the-badge" alt="9 Role Profiles">
11
- <img src="https://img.shields.io/badge/templates-4_baseline_A4-purple?style=for-the-badge" alt="4 Baseline A4 Templates">
12
- <img src="https://img.shields.io/badge/python-3.9+-yellow?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.9+">
13
- <a href="LICENSE"><img src="https://img.shields.io/github/license/Max-Samson/knowme-careerforge-skill?style=for-the-badge&color=green" alt="License: MIT"></a>
11
+ <a href="README.zh-CN.md"><img src="https://img.shields.io/badge/语言-🇨🇳_简体中文-0284C7?style=flat" alt="简体中文"></a>
12
+ <a href="README.md"><img src="https://img.shields.io/badge/Language-🇺🇸_English-4F46E5?style=flat" alt="English"></a>
14
13
  </p>
15
14
 
16
15
  <p align="center">
17
- <a href="https://www.npmjs.com/package/knowme-careerforge-skill"><img src="https://img.shields.io/npm/v/knowme-careerforge-skill?style=flat-square&logo=npm&label=npm" alt="npm package"></a>
18
- <a href="https://github.com/Max-Samson/knowme-careerforge-skill/stargazers"><img src="https://img.shields.io/github/stars/Max-Samson/knowme-careerforge-skill?style=flat-square&logo=github" alt="GitHub stars"></a>
19
- <img src="https://img.shields.io/badge/architecture-HTML%20Intermediate%20Canvas%20%2B%20Design%20Tokens-blue?style=flat-square" alt="HTML Intermediate Canvas">
16
+ <a href="https://www.npmjs.com/package/knowme-careerforge-skill"><img src="https://img.shields.io/npm/v/knowme-careerforge-skill?style=flat&logo=npm&logoColor=white&color=CB3837" alt="npm version"></a>
17
+ <img src="https://img.shields.io/badge/Node.js-%3E%3D22.13-339933?style=flat&logo=nodedotjs&logoColor=white" alt="Node.js">
18
+ <img src="https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat&logo=typescript&logoColor=white" alt="TypeScript">
19
+ <img src="https://img.shields.io/badge/Python-3.9+-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
20
+ <img src="https://img.shields.io/badge/Playwright-A4_PDF-2EAD33?style=flat&logo=playwright&logoColor=white" alt="Playwright">
21
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-6B7280?style=flat" alt="MIT License"></a>
20
22
  </p>
21
23
 
22
- > **Know Yourself. Define Your Direction. Forge Your Opportunity.**
23
- >
24
- > *An agent-native skill for self-discovery, career positioning, and tailored resume engineering.*
25
-
24
+ </div>
26
25
  ---
27
26
 
28
27
  ## 1. What is KnowMe CareerForge?
@@ -47,7 +46,7 @@ Self Discovery Tailored Career Story
47
46
  & Evidence & Engineering Delivery
48
47
  ```
49
48
 
50
- - **KnowMe (Self-Discovery & Evidence Engine)**: Helps candidates discover who they are, uncover their verifiable career evidence (L1~L3), and map their true competitive strengths.
49
+ - **KnowMe (Self-Discovery & Evidence Engine)**: Helps candidates discover who they are, organize their supplied career experience and supporting material, and map their true competitive strengths.
51
50
  - **CareerForge (Career Positioning & Resume Engineering)**: Translates genuine strengths into targeted positioning for specific job opportunities, tailoring high-impact content inside an **HTML Intermediate Working Canvas** with **Design Tokens**, and delivering deterministic, pixel-perfect PDFs via Playwright.
52
51
 
53
52
  ---
@@ -98,56 +97,40 @@ knowme list
98
97
 
99
98
  ---
100
99
 
101
- ### Option B: Direct Agent Integration
100
+ ### Platform entrypoints and runtime resources
101
+
102
+ | Platform | Entry location | Configuration command |
103
+ | --- | --- | --- |
104
+ | Claude Code | `~/.claude/skills/knowme-careerforge/SKILL.md` | `knowme init --ai claude` |
105
+ | Codex | `~/.codex/skills/knowme-careerforge/SKILL.md` | `knowme init --ai codex` |
106
+ | Cursor | `.cursor/rules/knowme-careerforge.mdc` | `knowme init --ai cursor` |
107
+ | Windsurf | Managed block in `.windsurfrules` | `knowme init --ai windsurf` |
108
+ | Gemini | `~/.gemini/skills/knowme-careerforge.json` | `knowme init --ai gemini` |
109
+ | OpenCode | `.opencode/skills/knowme-careerforge/SKILL.md` | `knowme init --ai opencode` |
102
110
 
103
- | Platform | Target Configuration Path | Setup Command |
104
- | :--- | :--- | :--- |
105
- | **Cursor** | `.cursor/rules/knowme-careerforge.mdc` | `cp SKILL.md .cursor/rules/knowme-careerforge.mdc` |
106
- | **Claude Code** | `~/.claude/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.claude/skills/` |
107
- | **Codex** | `~/.codex/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.codex/skills/` |
108
- | **Windsurf** | `.windsurfrules` | `cat agents/windsurf/knowme-careerforge.rules >> .windsurfrules` |
109
- | **OpenCode** | `.opencode/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.opencode/skills/` |
111
+ Cursor/Windsurf reference a project-local `.knowme/skills/knowme-careerforge/` runtime; Gemini configuration points to its sibling runtime directory. Each routes to the same SKILL.md workflow. File installation does not certify host discovery or behavior. Copying a prompt alone is insufficient. Rerun init after relocating an installation to refresh entry paths.
110
112
 
111
113
  ---
112
114
 
113
- ## 4. The 3 Operational Modes
115
+ ## 4. User input and artifact lifecycle
114
116
 
115
- ```text
116
- ┌─────────────────────────────────────────────────────────────────────────────┐
117
- │ Mode A: Target-Role Mode │
118
- │ User specifies a career direction (e.g., "Senior AI Agent Engineer"). │
119
- │ ▶ Agent loads role skill tree, extracts matching evidence, builds variant. │
120
- ├─────────────────────────────────────────────────────────────────────────────┤
121
- │ Mode B: JD-Specific Mode │
122
- │ User pastes a concrete Job Description (JD). │
123
- │ ▶ Agent runs analyze-jd.py, performs gap analysis, highlights hiring keys. │
124
- ├─────────────────────────────────────────────────────────────────────────────┤
125
- │ Mode C: Repo-to-Resume Mode │
126
- │ User supplies a GitHub repository / codebase / project notes. │
127
- │ ▶ Agent inspects code/config files, grades evidence into L1~L3, builds FAB. │
128
- └─────────────────────────────────────────────────────────────────────────────┘
129
- ```
117
+ The host Agent organizes user descriptions, existing resume material and explicitly supplied supporting evidence. Repository-to-resume extraction is not supported. A target role starts intake; a JD is optional. Without candidate material, ask and wait rather than generating an example.
130
118
 
131
- ---
119
+ Draft retains incomplete information, Master preserves supplied facts, and Variant records its source Master hash for a target role. Missing values stay omitted/null; sample people, default honors and invented metrics never fill gaps. See the [artifact and acceptance contract](references/07-artifact-contract.md).
132
120
 
133
- ## 5. End-to-End Execution Workflow
121
+ ## 5. Isolated runs and final acceptance
134
122
 
135
- ```text
136
- Know (Evidence L1~3) ──> Define (Goal) ──> Understand (JD Signals) ──> Position (Strategy) ──> Forge (HTML Canvas) ──> Review (Dual QA)
137
- ```
123
+ Each forge invocation writes snapshots, Master, Variant, canvas, QA and manifest to `workspace/runs/<runId>/`. Only an accepted fresh PDF is published. Failed manifests never identify an old output as delivery. Optional `--output` and `--html-output` create verified copies.
124
+
125
+ Checks run in print mode across every page, then parse the final PDF's page dimensions and extracted text. PASS means current checks passed; FAIL means a check failed; UNVERIFIED means inspection could not complete; DRAFT means draft preparation only. Automated checks do not certify factual truth or every ATS.
138
126
 
139
- 1. **[KnowMe] Evidence Mapping**: Candidate experience is analyzed and strictly categorized into L1 (Code/Config proven), L2 (Module/Dependency inferred), and L3 (Contextual inference).
140
- 2. **[Define & Understand] Signal Extraction**: The target JD is parsed to extract must-have competencies and hiring signals.
141
- 3. **[Position] Strategy Formulation**: Gap analysis maps real candidate evidence to target JD requirements.
142
- 4. **[CareerForge] Template Search & Assembly**: The best HTML template is chosen using multi-criteria BM25 ranking (`search-template.py`) and instantiated to `workspace/resume.html`.
143
- 5. **[Review & Dual QA] Self-Healing**: Layout box model height overflow and ATS textual readability tests run automatically. If an overflow is detected, CSS spacing tokens are auto-calibrated.
144
- 6. **[PDF Export] Deterministic Output**: Playwright renders pixel-perfect `workspace/resume.pdf` with `@media print` A4 rules.
127
+ Prepare dependencies in the installed runtime as instructed by init (`npm ci --omit=dev` with a lockfile, otherwise `npm install --omit=dev`), then run `node scripts/rendering/browser-engine.js --check-runtime`. Python 3.9+, Node.js 22.13+ and Chromium are required. READY is runtime readiness, not resume acceptance. Deliver one current PDF and editable HTML by default; `forge.py --summary` keeps stdout concise while retaining internal snapshots and diagnostics.
145
128
 
146
129
  ---
147
130
 
148
131
  ## 6. Token Self-Healing & Visual Tuning Cheat Sheet
149
132
 
150
- All visual parameters are concentrated in `:root` variables inside `workspace/resume.html`:
133
+ All visual parameters are concentrated in `:root` variables inside the current run’s `resume.html`:
151
134
 
152
135
  | CSS Token | Default | Compact (1-Page Squeeze) | Relaxed (2-Page Flow) | Purpose |
153
136
  | :--- | :--- | :--- | :--- | :--- |
@@ -174,24 +157,24 @@ All visual parameters are concentrated in `:root` variables inside `workspace/re
174
157
  ## 8. CLI & Script Reference
175
158
 
176
159
  ```bash
177
- # 1. Search best template for target role
178
- knowme search "AI Agent Engineer" --style "two-column-split"
160
+ # 1. One-shot resume engineering pipeline (user facts -> canvas -> QA -> PDF)
161
+ knowme forge --profile-json candidate.json --role "AI Agent Engineer" --template modern --quiet
179
162
 
180
- # 2. Analyze a target Job Description
181
- python3 scripts/evidence/analyze-jd.py --jd examples/ai-engineer/jd.md
163
+ # 2. Search best template for target role (hybrid engine)
164
+ knowme search --role "AI Agent Engineer" --engine hybrid
182
165
 
183
- # 3. Instantiate Intermediate Working Canvas
184
- python3 scripts/template/instantiate-resume.py --template modern --keywords "Python,LLM,RAG" --output workspace/resume.html
166
+ # 3. Prepare an incomplete draft without PDF delivery
167
+ knowme forge --profile-json draft.json --draft
185
168
 
186
169
  # 4. Validate working canvas layout & ATS compliance
187
- knowme validate
170
+ knowme validate /path/to/current-run/resume.html --json
188
171
 
189
172
  # 5. Render deterministic pixel-perfect PDF
190
- python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf
173
+ knowme render --input workspace/resume.html --output output/resume.pdf
191
174
 
192
175
  # 6. Build & view static HTML Template Gallery
193
176
  knowme gallery
194
-
177
+ ```
195
178
  ---
196
179
 
197
180
  ## Automated Test Suite
@@ -208,8 +191,8 @@ python3 scripts/build/run-all-tests.py
208
191
  This package is ready to be built, tested, and published to the NPM Registry:
209
192
 
210
193
  ```bash
211
- # 1. Automated release preparation & verification
212
- npm run release -- 0.0.1
194
+ # 1. Automated release preparation & verification (e.g. patch/minor/major)
195
+ npm run release -- <version>
213
196
 
214
197
  # 2. Publish to public NPM registry
215
198
  npm publish --access public
package/README.zh-CN.md CHANGED
@@ -1,30 +1,27 @@
1
- # KnowMe CareerForge
1
+ <div align="center">
2
+
3
+ # 🎯 KnowMe CareerForge
2
4
 
3
5
  <p align="center">
4
- <a href="README.zh-CN.md">🇨🇳 简体中文</a> |
5
- <a href="README.md">🇺🇸 English</a>
6
+ <strong>认识自己,明确方向,锻造属于你的职业机会。</strong><br>
7
+ <em>Know Yourself. Define Your Direction. Forge Your Opportunity.</em>
6
8
  </p>
7
9
 
8
10
  <p align="center">
9
- <a href="https://github.com/Max-Samson/knowme-careerforge-skill/releases"><img src="https://img.shields.io/github/v/release/Max-Samson/knowme-careerforge-skill?style=for-the-badge&color=blue" alt="GitHub Release"></a>
10
- <img src="https://img.shields.io/badge/岗位画像-9套标准画像-green?style=for-the-badge" alt="9 Role Profiles">
11
- <img src="https://img.shields.io/badge/A4模板-4套黄金基准-purple?style=for-the-badge" alt="4 Baseline A4 Templates">
12
- <img src="https://img.shields.io/badge/python-3.9+-yellow?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.9+">
13
- <a href="LICENSE"><img src="https://img.shields.io/github/license/Max-Samson/knowme-careerforge-skill?style=for-the-badge&color=green" alt="License: MIT"></a>
11
+ <a href="README.zh-CN.md"><img src="https://img.shields.io/badge/语言-🇨🇳_简体中文-0284C7?style=flat" alt="简体中文"></a>
12
+ <a href="README.md"><img src="https://img.shields.io/badge/Language-🇺🇸_English-4F46E5?style=flat" alt="English"></a>
14
13
  </p>
15
14
 
16
15
  <p align="center">
17
- <a href="https://www.npmjs.com/package/knowme-careerforge-skill"><img src="https://img.shields.io/npm/v/knowme-careerforge-skill?style=flat-square&logo=npm&label=npm" alt="npm package"></a>
18
- <a href="https://github.com/Max-Samson/knowme-careerforge-skill/stargazers"><img src="https://img.shields.io/github/stars/Max-Samson/knowme-careerforge-skill?style=flat-square&logo=github" alt="GitHub stars"></a>
19
- <img src="https://img.shields.io/badge/核心架构-HTML中间修改场%20%2B%20Design%20Tokens-blue?style=flat-square" alt="HTML Intermediate Canvas">
16
+ <a href="https://www.npmjs.com/package/knowme-careerforge-skill"><img src="https://img.shields.io/npm/v/knowme-careerforge-skill?style=flat&logo=npm&logoColor=white&color=CB3837" alt="npm package"></a>
17
+ <img src="https://img.shields.io/badge/Node.js-%3E%3D22.13-339933?style=flat&logo=nodedotjs&logoColor=white" alt="Node.js">
18
+ <img src="https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat&logo=typescript&logoColor=white" alt="TypeScript">
19
+ <img src="https://img.shields.io/badge/Python-3.9+-3776AB?style=flat&logo=python&logoColor=white" alt="Python">
20
+ <img src="https://img.shields.io/badge/Playwright-A4_PDF-2EAD33?style=flat&logo=playwright&logoColor=white" alt="Playwright">
21
+ <a href="LICENSE"><img src="https://img.shields.io/badge/开源协议-MIT-6B7280?style=flat" alt="License: MIT"></a>
20
22
  </p>
21
23
 
22
- > **认识自己,明确方向,锻造属于你的职业机会。**
23
- >
24
- > *Know Yourself. Define Your Direction. Forge Your Opportunity.*
25
- >
26
- > *面向主流 AI Agent 的自我认知、职业定位与岗位定制简历工程 Skill。*
27
-
24
+ </div>
28
25
  ---
29
26
 
30
27
  ## 1. 什么是 KnowMe CareerForge?
@@ -49,7 +46,7 @@ knowme-careerforge-skill
49
46
  真实经历与证据 工程化定制交付
50
47
  ```
51
48
 
52
- - **KnowMe(自我认知与证据挖掘引擎)**:帮助候选人深入认知自我,系统梳理真实经历与可验证的代码/项目证据(L1~L3 分级),提炼真正具备竞争壁垒的优势点。
49
+ - **KnowMe(自我认知与证据挖掘引擎)**:帮助候选人深入认知自我,系统梳理用户提供的真实经历与辅助材料,提炼真正具备竞争壁垒的优势点。
53
50
  - **CareerForge(职业定位与简历工程引擎)**:将候选人的真实优势精准对齐目标岗位(JD),以 **HTML 中间工作区(Intermediate Canvas)** 与 **Design Tokens(设计系统变量)** 为工作场进行微调排版,最终通过 Playwright 无头浏览器导出确定性、像素级的矢量 PDF。
54
51
 
55
52
  ---
@@ -102,56 +99,40 @@ knowme list
102
99
 
103
100
  ---
104
101
 
105
- ### 方式 B:Agent 平台原生手动配置
102
+ ### 平台入口与运行资源
106
103
 
107
- | 平台 | 目标注入路径 | 配置方法 |
108
- | :--- | :--- | :--- |
109
- | **Cursor** | `.cursor/rules/knowme-careerforge.mdc` | `cp SKILL.md .cursor/rules/knowme-careerforge.mdc` |
110
- | **Claude Code** | `~/.claude/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.claude/skills/` |
111
- | **Codex** | `~/.codex/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.codex/skills/` |
112
- | **Windsurf** | `.windsurfrules` | `cat agents/windsurf/knowme-careerforge.rules >> .windsurfrules` |
113
- | **OpenCode** | `.opencode/skills/knowme-careerforge/` | `cp -r knowme-careerforge-skill ~/.opencode/skills/` |
104
+ | 平台 | 入口位置 | 配置命令 |
105
+ | --- | --- | --- |
106
+ | Claude Code | `~/.claude/skills/knowme-careerforge/SKILL.md` | `knowme init --ai claude` |
107
+ | Codex | `~/.codex/skills/knowme-careerforge/SKILL.md` | `knowme init --ai codex` |
108
+ | Cursor | `.cursor/rules/knowme-careerforge.mdc` | `knowme init --ai cursor` |
109
+ | Windsurf | `.windsurfrules` 的托管块 | `knowme init --ai windsurf` |
110
+ | Gemini | `~/.gemini/skills/knowme-careerforge.json` | `knowme init --ai gemini` |
111
+ | OpenCode | `.opencode/skills/knowme-careerforge/SKILL.md` | `knowme init --ai opencode` |
112
+
113
+ Cursor/Windsurf 的运行资源位于项目 `.knowme/skills/knowme-careerforge/`,配置中写入准确入口;Gemini 配置指向同级运行目录。所有入口引用同一个 SKILL.md 工作流。安装完成表示文件已准备,宿主发现与实际行为需分别验证;不应只复制提示文件就认为工具可运行。移动安装目录后重新运行 init 更新路径。
114
114
 
115
115
  ---
116
116
 
117
- ## 4. 三大运行模式 (Operational Modes)
117
+ ## 4. 用户信息与资料生命周期
118
118
 
119
- ```text
120
- ┌─────────────────────────────────────────────────────────────────────────────┐
121
- │ 模式 A:目标岗位模式 (Target-Role Mode) │
122
- │ 用户指定职业发展方向(如“资深 AI Agent 研发工程师”)。 │
123
- │ ▶ Agent 加载岗位能力树,从经历库中提取强匹配证据,派生对应 Resume Variant。 │
124
- ├─────────────────────────────────────────────────────────────────────────────┤
125
- │ 模式 B:具体 JD 定制模式 (JD-Specific Mode) │
126
- │ 用户粘贴具体的招聘需求 (Job Description)。 │
127
- │ ▶ Agent 运行 analyze-jd.py 执行差距分析,提取加分项并高亮核心招聘信号。 │
128
- ├─────────────────────────────────────────────────────────────────────────────┤
129
- │ 模式 C:代码库到经历挖掘模式 (Repo-to-Resume Mode) │
130
- │ 用户提供 GitHub 仓库链接、代码目录或工程笔记。 │
131
- │ ▶ Agent 审查源码与配置文件,判定 L1~L3 证据等级,重塑为高质量 FAB 论据。 │
132
- └─────────────────────────────────────────────────────────────────────────────┘
133
- ```
119
+ 当前功能依靠用户描述、已有简历和明确提供的支持材料,由宿主 Agent 组织与定制内容;不支持代码仓库分析回填。目标岗位即可开始收集资料,JD 可选;没有候选人材料时先提问并等待,不生成演示履历。
134
120
 
135
- ---
121
+ Draft 保留不完整资料,Master 保存本次已知事实,Variant 记录来源 Master 的摘要并派生岗位表达。缺失值省略或 null,不补示例姓名、默认荣誉和任意指标。完整规则见 [资料与验收契约](references/07-artifact-contract.md)。
136
122
 
137
- ## 5. 端到端执行工作流 (The 6-Stage Workflow)
123
+ ## 5. 独立运行与最终验收
138
124
 
139
- ```text
140
- Know (证据分级) ──> Define (明确目标) ──> Understand (洞察JD) ──> Position (制定策略) ──> Forge (HTML修改场) ──> Review (双重QA)
141
- ```
125
+ 每次 forge 在 `workspace/runs/<runId>/` 保存输入快照、Master、Variant、画布、QA 和运行清单。通过验收后才写入本次 PDF;失败的清单不会返回旧文件作为交付。可以用 `--output` 和 `--html-output` 指定已验收副本位置。
142
126
 
143
- 1. **[KnowMe] 证据挖掘**:分析候选人代码库与真实经历,严格划分为 L1 (代码配置直证)、L2 (模块依赖推断) 与 L3 (合理解读)。
144
- 2. **[Define & Understand] 信号提取**:解析目标 JD,提取必备项、加分项与团队招聘风格。
145
- 3. **[Position] 优势对齐**:差距分析匹配真实证据,规划模块优先级。
146
- 4. **[CareerForge] 模板检索与组装**:通过多维打分引擎检索最佳模板,实例化生成 `workspace/resume.html`。
147
- 5. **[Review & Dual QA] 闭环自愈**:无头浏览器检测 DOM 高度溢出与 ATS 文本流,自愈调校 CSS 间距 Tokens。
148
- 6. **[PDF Export] 确定性渲染**:通过 Playwright 导出无损矢量 `workspace/resume.pdf`。
127
+ 打印模式会检查所有页面,再解析最终 PDF 的每页尺寸与文本。PASS 表示本次检查通过;FAIL 是检查失败;UNVERIFIED 是浏览器/依赖等导致无法验收;DRAFT 只表示草稿准备完成。自动检查不等同于事实核实或通用 ATS 认证。
128
+
129
+ 在安装目录按 init 提示准备依赖(有锁文件时 `npm ci --omit=dev`,否则 `npm install --omit=dev`),再运行 `node scripts/rendering/browser-engine.js --check-runtime`。需要 Python 3.9+、Node.js 22.13+ 与可用 Chromium。运行预检 READY 不表示简历已验收。默认只交付一个版本的 PDF 和可编辑 HTML;`forge.py --summary` 精简终端输出,内部快照与诊断仍保留。
149
130
 
150
131
  ---
151
132
 
152
133
  ## 6. CSS Design Tokens 调优与自愈速查表
153
134
 
154
- 所有排版参数均集中在 `workspace/resume.html` 的 `:root` 变量中,可进行全局即时微调:
135
+ 所有排版参数均集中在当前运行目录的 `resume.html` 的 `:root` 变量中,可进行全局即时微调:
155
136
 
156
137
  | CSS Token 变量名 | 默认推荐值 | 紧凑模式 (单页微调) | 宽松模式 (双页饱满) | 调优核心作用 |
157
138
  | :--- | :--- | :--- | :--- | :--- |
@@ -178,24 +159,24 @@ knowme list
178
159
  ## 8. CLI 命令参考
179
160
 
180
161
  ```bash
181
- # 1. 智能检索最匹配的 HTML 简历模板
182
- knowme search "AI Agent Engineer" --style "two-column-split"
162
+ # 1. 一键全流程装配管线(用户资料 -> HTML画布 -> 打印与PDF验收)
163
+ knowme forge --profile-json candidate.json --role "AI Agent Engineer" --template modern --quiet
183
164
 
184
- # 2. 深度解析目标 JD 文本与技能词频
185
- python3 scripts/evidence/analyze-jd.py --jd examples/ai-engineer/jd.md
165
+ # 2. 智能检索最匹配的 HTML 简历模板(混合评分引擎)
166
+ knowme search --role "AI Agent Engineer" --engine hybrid
186
167
 
187
- # 3. 实例化 HTML 中间工作区并注入关键词高亮
188
- python3 scripts/template/instantiate-resume.py --template modern --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
168
+ # 3. 从不完整资料生成草稿,不声明 PDF 已验收
169
+ knowme forge --profile-json draft.json --draft
189
170
 
190
- # 4. 运行布局结构、Design Tokens 与文字密度验证
191
- knowme validate
171
+ # 4. 运行布局结构、Design Tokens 与 ATS 双重质检
172
+ knowme validate /path/to/current-run/resume.html --json
192
173
 
193
174
  # 5. 确定性导出无损矢量 A4 PDF
194
- python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf
175
+ knowme render --input workspace/resume.html --output output/resume.pdf
195
176
 
196
177
  # 6. 编译生成可视化模板画廊
197
178
  knowme gallery
198
-
179
+ ```
199
180
  ---
200
181
 
201
182
  ## 自动化测试与持续集成
@@ -212,8 +193,8 @@ python3 scripts/build/run-all-tests.py
212
193
  本项目已配置为标准的 NPM Package,支持一键编译、测试与发布:
213
194
 
214
195
  ```bash
215
- # 1. 执行发布前自动化测试与打包预检
216
- npm run release -- 0.0.1
196
+ # 1. 执行发布前自动化版本对齐、测试与打包预检
197
+ npm run release -- <version>
217
198
 
218
199
  # 2. 发布至公共 NPM 注册表
219
200
  npm publish --access public
package/SKILL.md CHANGED
@@ -1,168 +1,71 @@
1
1
  ---
2
2
  name: knowme-careerforge
3
- displayName: KnowMe CareerForge
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.4
3
+ description: Create or refine a tailored resume from user descriptions, existing resume material and an optional target JD. Use when the user wants to draft a resume, tailor it to a role, edit an existing resume canvas, or export a verified resume PDF.
4
+ license: MIT
5
+ compatibility: Requires Python 3.9+, Node.js 22.13+, the npm dependencies declared by this project, and Chromium for print/PDF checks. Explicit local font presets require the named font.
6
+ metadata:
7
+ version: 0.0.7
6
8
  ---
7
9
 
8
- # KnowMe CareerForge — Agent Reasoning Contract & Execution Specification
10
+ # KnowMe CareerForge
9
11
 
10
- > **"Know Yourself. Define Your Direction. Forge Your Opportunity."**
11
- >
12
- > *Core Mission: The goal is not to make the candidate look better than they are. The goal is to make their real strengths visible to the right opportunity.*
12
+ Create a readable resume from the user's descriptions, existing resume and explicitly supplied material. The host Agent selects and rewrites facts; tools bind templates and check printing. Repository mining and automatic repo-to-resume backfill are not supported. Development tasks use AGENT.md; making a resume does not require reading development docs or tool source code.
13
13
 
14
- ---
14
+ ## 1. Start from the conversation
15
15
 
16
- ## 1. Operating Rules & Core Constraints
17
-
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, codebase architectures, and verifiable achievements.
20
- 2. **Career Strategist**: Analyzes target JDs and formulates career positioning strategy.
21
- 3. **Evidence Analyst**: Strictly enforces L1~L3 evidence classification and eliminates hallucinations.
22
- 4. **Resume Writer**: Crafts high-impact FAB (Feature-Advantage-Benefit) bullet points.
23
- 5. **Resume Designer**: Calibrates CSS Design Tokens within the HTML canvas.
24
- 6. **Resume Reviewer**: Executes automated layout, overflow, and ATS Dual-QA tests.
25
-
26
- ### Non-Negotiable Invariants:
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
- - **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 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.*
16
+ Reuse information already given. A target role is sufficient to start the conversation, not to invent a candidate. A JD is optional. Decide whether candidate material exists before reading references, inspecting templates or checking runtime. With no material, a sufficient first response is: “请发已有简历,或告诉我姓名、最近一段工作经历(公司、时间、做了什么、用过哪些技术);已有的信息不用重复。”
44
17
 
45
- ---
18
+ - **Only a role, no candidate material:** ask for an existing resume or a short description of recent work, dates and technologies. Then wait. Do not build sample resumes, inspect every reference, or create test profiles while awaiting an answer. If a host task list is used, mark intake as awaiting input using the host’s supported state; drafting and rendering depend on it and remain pending. A TODO reminder does not unlock them. Do not create a task list just to run this simple workflow.
19
+ - **Usable facts supplied:** organize them directly. Missing optional contact, school or date fields do not require a Draft detour. Ask only consequential follow-ups; proceed with known facts when the user wants a result. If experience is known but the name is missing, ask just for the name needed for PDF delivery, or prepare an unnamed Draft if requested.
20
+ - **Draft requested or delivery input insufficient:** use `--draft` for an explicitly requested partial canvas. Label it DRAFT; do not promise a verified PDF.
21
+ - **Existing canvas edited:** preserve those edits and validate/render that canvas to a new revision path; do not overwrite it from an older profile.
46
22
 
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
- ```
23
+ Preserve employers, dates, qualifications, metrics and ownership exactly in meaning. “Participated” cannot become “led”; a target Java role does not prove Java experience. Role knowledge and JD keywords are prompts for questions, never evidence of skills. Do not add common tools, proficiency, implementation mechanisms, projects or outcomes merely because they sound plausible. Gallery `sample-profile.json` is fictional and never candidate input. If a user explicitly requests a fictional example, label it separately and keep it out of their fact record.
70
24
 
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**.
25
+ ## 2. Compose once, choose a layout
78
26
 
79
- ---
27
+ Before composing, read [the source-to-claim rules](references/01-evidence-mining.md) once and check the rewritten claims against the original user material. Comparing a generated profile with its own PDF does not check factual fidelity. Keep a single editable profile of supplied facts. Read [the artifact contract](references/07-artifact-contract.md) for its short input example and lifecycle. The pipeline creates Master/Variant snapshots; the user need not write JSON or receive every snapshot. Master means this run's known facts, not that every optional field is complete.
80
28
 
81
- ## 3. The 6-Stage Deterministic Workflow
82
-
83
- You MUST execute the following 6 stages in exact sequence:
84
-
85
- ```text
86
- ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
87
- │ 1. KNOW ME │ ──> │ 2. DEFINE │ ──> │ 3. UNDERSTAND │
88
- │ Evidence L1~3│ │ Career Goal │ │ JD & Signals │
89
- └──────────────┘ └──────────────┘ └──────────────────┘
90
- │
91
- ▼
92
- ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐
93
- │ 6. REVIEW/QA │ <── │ 5. CAREER │ <── │ 4. POSITION │
94
- │ Dual QA & PDF│ │ FORGE HTML │ │ Strategy & Map │
95
- └──────────────┘ └──────────────┘ └──────────────────┘
96
- ```
29
+ Write short, concrete bullets. A useful default is a brief optional summary, compact skill groups, and evidence in work/project entries. Do not repeat the same achievement in summary, work and an invented project. A project section is optional: add one only when supplied project detail adds something distinct. Metrics and technical mechanisms appear only when supplied; duties without metrics remain valid. Follow the user's requested level of detail.
97
30
 
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
- ```
31
+ Read [template guidance](references/04-template-selection.md) when choosing a template. Honor an explicit choice; otherwise choose for actual content length and hierarchy, or omit `--template` for ranked selection. Do not hardcode minimal because the role is backend. State the actual `templateUsed` in delivery. Each template has one structural source, `canvas.html`; previews bind fictional data through the same renderer.
107
32
 
108
- ### Option 2: Step-by-Step Granular Execution
33
+ ## 3. Prepare runtime, generate
109
34
 
110
- #### Step 1: Extract Evidence (Know Me)
111
- ```bash
112
- python3 scripts/evidence/extract-evidence.py --repo . --output workspace/evidence-master.json --quiet
113
- ```
35
+ Use the absolute SKILL.md path already returned by the host to resolve `<skill-root>`. The model name does not determine the installation directory: a Gemini model may be running through a host that resolves `.claude/skills`. If unavailable, inspect the host's configured skill location; do not recursively search the home directory. Candidate files belong in the user's workspace, never the installation directory.
114
36
 
115
- #### Step 2 & 3: JD & Target Analysis (Understand)
116
- ```bash
117
- python3 scripts/evidence/analyze-jd.py --jd "path/to/jd.txt"
118
- ```
37
+ After there is sufficient candidate material, and before the first PDF build, run:
119
38
 
120
- #### Step 4: Search & Select Template (Position)
121
39
  ```bash
122
- python3 scripts/template/search-template.py "<Target Role>" --style "<minimal|modern|executive|classic>" --target-pages 1
40
+ node <skill-root>/scripts/rendering/browser-engine.js --check-runtime
123
41
  ```
124
42
 
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
- ```
43
+ READY only checks runtime availability, not resume quality. If unavailable, use its diagnostics and the installed package.json to prepare dependencies once under the host's permission rules. With a lockfile use `npm ci --omit=dev`; otherwise use `npm install --omit=dev`, in `<skill-root>`. Do not guess and install packages one error at a time. If package.json or required bundled scripts are absent, the installation is incomplete: repair it from the project package rather than synthesizing a manifest or installing guessed dependencies. Chromium is also required. If setup is blocked, report UNVERIFIED and offer a requested Draft; do not repeatedly run the full pipeline unchanged.
44
+
45
+ For a new resume, keep internal files under `workspace/` and publish only the readable deliverables under `resume/` (or the user's chosen locations):
129
46
 
130
- #### Step 6: Review, Dual QA & PDF Export
131
47
  ```bash
132
- # 1. Run Layout QA (DOM height & overflow validation)
133
- python3 scripts/validation/validate-resume.py --html workspace/resume.html --expected-pages 1
48
+ python3 <skill-root>/scripts/pipeline/forge.py --profile-json workspace/profile.json --workspace workspace/runs --role "<target role>" --output resume/resume.pdf --html-output resume/resume.html --summary
134
49
  ```
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)
50
+
51
+ Add `--template <chosen-id>` for an explicit layout. Drafts use `--draft` without PDF/copy flags; return the exact HTML path reported. Each invocation isolates its artifacts. A successful preflight need not be repeated on contact or wording updates unless the environment changes. Read the returned status and paths; never guess `workspace/resume.pdf` or treat a previous copy as this run's success. Full diagnostics remain in the returned manifest; open them only when needed. Fix a reported cause before retrying.
52
+
53
+ For existing edited HTML:
138
54
 
139
55
  ```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
56
+ python3 <skill-root>/scripts/rendering/render-pdf.py <edited-resume.html> <new-resume.pdf> --expected-pages 1 --quiet
142
57
  ```
143
58
 
144
- ---
59
+ ## 4. Inspect and deliver
145
60
 
146
- ## 4. Final Response Delivery Contract (Strict Template)
61
+ Check rewritten content against the user's input before rendering. After tool acceptance, inspect the final PDF visually on every page: hierarchy, small type, excessive whitespace, dense skills, duplication and education/date alignment. An HTML screenshot or PDF file size does not prove final PDF appearance. If visual tools are unavailable, disclose that limitation. After an accepted result and the completed visual/content review, stop. Do not perform another identical export, measure file size as extra QA, or create another named copy. Read [canvas tuning](references/05-html-canvas-tokens.md) only for layout edits and [QA diagnostics](references/06-qa-and-rendering.md) for failures.
147
62
 
148
- Once `workspace/resume.pdf` is generated, deliver your final response strictly in this clear, professional structure:
63
+ PASS requires this PDF's page, text and layout checks. It does not certify truth, persuasive design or universal ATS compatibility. Do not shrink sparse resumes, fabricate content to fill the page, silently remove facts, or relax checks to pass. Preserve failures for diagnosis; do not delete run history as cosmetic cleanup. Font extraction failures require inspecting diagnostics and an available font choice, not altering candidate text.
149
64
 
150
- ```markdown
151
- ### 🎯 Career Positioning & Value Proposition
152
- > **[Candidate Name] · [Target Role Title]**
153
- > *[15~25 words Core Value Proposition highlighting key strengths]*
65
+ Default delivery: link PDF and editable HTML, name the template, and briefly note useful remaining gaps. Do not repeat the entire resume, dump QA tables, or link input/Master/Variant/manifest unless requested or needed to explain failure. FAIL/UNVERIFIED must identify the concrete blocker; DRAFT must remain clearly labeled.
154
66
 
155
- ---
67
+ Use one concise delivery shape across hosts, adapting only language and filenames:
156
68
 
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])*
69
+ > 已生成简历: [PDF](<current PDF path>) · [可编辑 HTML](<current HTML path>)。模板:<templateUsed>。<One useful gap or actual inspection limitation, if any.>
161
70
 
162
- ---
163
-
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底座)
168
- ```
71
+ Return one current version by default, not several template alternatives or separate analysis reports. For an update, patch only the requested fields in the current working profile/canvas, retain the selected template and public filenames unless the user asks to change them, and publish the newly accepted revision; keep previous runs internal. When blocked, give the blocker and the single next action instead of a success-shaped delivery. Keep progress updates about observable work, not a running commentary of every file read or schema decision.
@@ -1,18 +1,3 @@
1
- ---
2
- description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering.
3
- globs: ["workspace/*", "src/**/*", "scripts/**/*", "references/*"]
4
- ---
1
+ # KnowMe CareerForge
5
2
 
6
- # KnowMe CareerForge — Claude Code Skill
7
-
8
- > *"Know Yourself. Define Your Direction. Forge Your Opportunity."*
9
-
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`).
3
+ Read SKILL.md at the installed skill root and follow it as the single runtime workflow. Resolve its scripts and references from that directory, not the candidate workspace. Load supporting references only when the current step needs them. Do not load AGENT.md or architecture documents to make a resume.