knowme-careerforge-skill 0.0.7 → 0.0.8

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 (68) hide show
  1. package/AGENT.md +7 -6
  2. package/ARCHITECTURE.md +18 -15
  3. package/README.md +23 -15
  4. package/README.zh-CN.md +23 -15
  5. package/SKILL.md +26 -33
  6. package/agents/codex/knowme-careerforge.yaml +1 -1
  7. package/agents/opencode/skill.yaml +1 -1
  8. package/dist/cli/src/index.js +22 -14
  9. package/package.json +1 -1
  10. package/references/01-evidence-mining.md +80 -3
  11. package/references/02-career-goal.md +35 -15
  12. package/references/03-jd-analysis.md +10 -0
  13. package/references/04-template-selection.md +7 -2
  14. package/references/05-html-canvas-tokens.md +4 -2
  15. package/references/06-qa-and-rendering.md +39 -5
  16. package/references/07-artifact-contract.md +21 -7
  17. package/scripts/Agent.md +3 -3
  18. package/scripts/build/build-gallery.py +2 -1
  19. package/scripts/build/release.py +3 -2
  20. package/scripts/evidence/analyze-jd.py +49 -8
  21. package/scripts/evidence/extract-evidence.py +17 -391
  22. package/scripts/pipeline/forge.py +159 -85
  23. package/scripts/rendering/browser-engine.js +5 -1
  24. package/scripts/template/instantiate-resume.py +5 -3
  25. package/skill.json +1 -1
  26. package/src/knowledge/career/seniority-signals.json +1 -0
  27. package/src/knowledge/index.json +176 -2
  28. package/src/knowledge/resume/action-verbs.json +3 -2
  29. package/src/knowledge/resume/fab-model.json +5 -4
  30. package/src/knowledge/resume-schema.json +1 -1
  31. package/src/knowledge/templates.json +174 -0
  32. package/src/references/01-evidence-mining.md +80 -3
  33. package/src/references/02-career-goal.md +35 -15
  34. package/src/references/03-jd-analysis.md +10 -0
  35. package/src/references/04-template-selection.md +7 -2
  36. package/src/references/05-html-canvas-tokens.md +4 -2
  37. package/src/references/06-qa-and-rendering.md +39 -5
  38. package/src/references/07-artifact-contract.md +21 -7
  39. package/src/templates/academic-research/canvas.html +2 -1
  40. package/src/templates/classic/canvas.html +2 -1
  41. package/src/templates/classic/style.css +90 -28
  42. package/src/templates/common/base.css +19 -3
  43. package/src/templates/common/canvas-bindings.css +247 -12
  44. package/src/templates/compact-dense/style.css +5 -1
  45. package/src/templates/creative-tech/style.css +30 -1
  46. package/src/templates/data-analyst/style.css +31 -1
  47. package/src/templates/editorial/README.md +7 -0
  48. package/src/templates/editorial/canvas.html +22 -0
  49. package/src/templates/editorial/metadata.json +36 -0
  50. package/src/templates/editorial/sample-profile.json +86 -0
  51. package/src/templates/editorial/style.css +24 -0
  52. package/src/templates/executive/style.css +52 -18
  53. package/src/templates/graduate/README.md +7 -0
  54. package/src/templates/graduate/canvas.html +22 -0
  55. package/src/templates/graduate/metadata.json +38 -0
  56. package/src/templates/graduate/sample-profile.json +60 -0
  57. package/src/templates/graduate/style.css +24 -0
  58. package/src/templates/international-flow/canvas.html +2 -1
  59. package/src/templates/minimal/canvas.html +3 -2
  60. package/src/templates/minimal/style.css +6 -0
  61. package/src/templates/modern/style.css +43 -55
  62. package/src/templates/project-focus/README.md +7 -0
  63. package/src/templates/project-focus/canvas.html +22 -0
  64. package/src/templates/project-focus/metadata.json +36 -0
  65. package/src/templates/project-focus/sample-profile.json +93 -0
  66. package/src/templates/project-focus/style.css +24 -0
  67. package/src/templates/startup-generalist/canvas.html +2 -1
  68. package/src/templates/startup-generalist/style.css +15 -8
package/AGENT.md CHANGED
@@ -24,14 +24,13 @@
24
24
 
25
25
  保留用户提供的 Vercel 材料中的设计纪律:明确优先级、保护既有工程、分阶段工作、公共设计 API、清楚的阅读层级和单一间距归属。将这些原则用于本项目的工程与模板质量,不引入其品牌资产、`vbg-*` CSS、在线字体或网站主题要求。
26
26
 
27
- 基础设计与演进背景见 [设计说明](docs/dev/RESUME_ENGINEERING_SKILL_DESIGN.md)。历史设想、当前实现和已验证能力应明确区分。
27
+ 基础设计与演进背景见 [设计说明](docs/dev/dev-resume-engineering-skill-design.md)。历史设想、当前实现和已验证能力应明确区分。
28
28
 
29
29
  ### 1.3 文档职责
30
30
 
31
31
  | 文档或目录 | 责任 |
32
32
  | --- | --- |
33
33
  | `README.md` / `README.zh-CN.md` | 项目定位、能力与使用入口 |
34
- | `AGENTS.md` | 标准开发入口,仅引用规范正文和目录级规则 |
35
34
  | `AGENT.md` | 唯一维护的项目级开发规范正文:AI 开发行为、架构约束、设计规范和变更验收 |
36
35
  | `ARCHITECTURE.md` | 系统分层、模块接口、数据流和架构决策导航 |
37
36
  | `CLAUDE.md` | 开发环境与命令速查,引用共同规范 |
@@ -72,9 +71,9 @@
72
71
 
73
72
  ### 1.6 Agent Skills 标准与本项目的关系
74
73
 
75
- `AGENTS.md` / 本文约束开发;`SKILL.md` 定义按需加载的产品能力,两者有不同生命周期。开发仓库可以包含架构、测试、发布工具;安装包必须独立满足入口、资源与运行依赖,不能依赖源码工作区恰好存在。
74
+ 本文约束开发;`SKILL.md` 定义按需加载的产品能力,两者有不同生命周期。开发仓库可以包含架构、测试、发布工具;安装包必须独立满足入口、资源与运行依赖,不能依赖源码工作区恰好存在。
76
75
 
77
- 详细的标准对照、当前分发缺口和验收方案见 [Agent Skills 设计评审](docs/dev/AGENT_SKILLS_DESIGN_REVIEW.md)。修改入口、元数据、安装器或平台适配时阅读该文档;普通模板样式修改不必加载整份评审。
76
+ 详细的标准对照、当前分发缺口和验收方案见 [Agent Skills 设计评审](docs/dev/dev-agent-skills-design-review.md)。修改入口、元数据、安装器或平台适配时阅读该文档;普通模板样式修改不必加载整份评审。
78
77
 
79
78
  ## 2. Priority Order (Strict Decision Hierarchy)
80
79
 
@@ -123,7 +122,7 @@
123
122
 
124
123
  - **资料契约**:姓名、日期、学历、职责、指标忠于显式输入;缺失/null 保持未知。未知字段和错误类型报错,教育、工作、项目分别完整绑定。保留可选来源标记,不把用户口述自动降级。
125
124
  - **生命周期**:Draft 不自动升级为已验收资料;Master 保存已知事实快照;Variant 记录来源 Master 的摘要。摘要用于版本追溯,不证明事实真实性。
126
- - **运行隔离**:每次 forge 创建独立 `workspace/runs/<runId>/`;保留输入和失败现场,不读取共享默认文件判断本次成功,不反写用户输入。
125
+ - **运行隔离**:每次 forge 在私有临时工作区隔离处理;默认仅发布当前 HTML/PDF,正常成功或失败后清理本次临时文件。仅显式 `--keep-workspace`/`--workspace` 保留输入和失败归档;不读取共享默认文件判断本次成功,不反写或清理用户输入。
127
126
  - **模板结构**:每套模板只维护 `canvas.html`。命名槽位必须完整、唯一且上下文合法;一次绑定并转义用户文本,失败不能交付未绑定样例。
128
127
  - **展示数据**:`sample-profile.json` 只保存明确虚构的画廊资料;预览通过正式实例化器与完整 CSS 链生成到 `output/`,不能成为用户数据默认值。
129
128
  - **样式组合**:依次内联 `common/base.css`、模板 `style.css`、`common/canvas-bindings.css`,再应用显式字体预设。模板差异用结构与 Token 表达,不新增平行主题系统。
@@ -205,6 +204,8 @@
205
204
 
206
205
  ## 6. Development Delivery & Documentation Protocol
207
206
 
207
+ `docs/dev/` 中开发设计、审查和计划文档统一使用 `dev-<主题>.md` 小写连字符命名,历史版本与日期可保留。当前规划入口为 [开发导航与下一阶段规划](docs/dev/dev-roadmap.md)。该规则不改变根目录 `AGENT.md`、`ARCHITECTURE.md`、运行 `SKILL.md` 或 `docs/decisions/` 的编号规则。重命名同时修正引用,保留仍有效的正文和历史验证范围。
208
+
208
209
  交付本项目的修改时,说明问题与修改后的行为、涉及模块、实际执行的验证及未解决限制,并提供文件链接。这里交付的是项目改动;使用 Skill 制作简历时的候选人定位和简历产物格式由 `SKILL.md` 管理。
209
210
 
210
211
  - 架构或公共接口变更更新 `ARCHITECTURE.md`;影响长期取舍时在 `docs/decisions/` 记录依据。
@@ -257,7 +258,7 @@
257
258
  - `references/` 是运行文档的维护来源;存在 `src/references/` 兼容副本时须检查同步。不要再生成第三份需要手工维护的规则。
258
259
  - 安装包应包含所引用的脚本、Schema、CSS、知识资产和可复现的依赖准备信息。复制了 `SKILL.md` 不等于依赖就绪;依赖安装与格式校验分别报告。
259
260
  - 平台适配保持薄层,只说明宿主所需入口及已安装资源的明确位置。只写 MDC/rules/JSON 的路径属于提示适配,除非另行准备了完整工具包,否则不能宣称完成原生 Skill 安装。
260
- - 不向用户项目根目录投放本仓库开发用 `AGENTS.md`;运行时不得要求用户加载本项目开发规范才能制作简历。开发文件随归档保留时也不成为产品运行前置条件。
261
+ - 不向用户项目根目录投放本仓库开发规范 `AGENT.md`;运行时不得要求用户加载本项目开发规范才能制作简历。开发文件随归档保留时也不成为产品运行前置条件。
261
262
  - 安装、升级、覆盖和联网下载须遵守任务授权与宿主权限。安装失败、部分成功和依赖缺失要可识别;禁止末尾统一输出“安装成功”。
262
263
 
263
264
  宿主发现、激活、上下文管理和权限执行属于客户端职责。本项目提供可消费的目录与工作流,不为格式兼容额外实现 Agent 注册中心或调度框架。支持范围应以实际平台验证记录为准。
package/ARCHITECTURE.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ---
8
8
 
9
- The host Agent collects and interprets user-supplied experience, existing resumes and explicitly supplied supporting material, then tailors wording to the target role. Tools validate structured data, bind HTML, measure print output and accept the final PDF. Repository analysis is not a supported resume input path. Optional legacy L1~L3 labels describe provenance, not independent verification.
9
+ The host Agent collects and interprets user-supplied experience, existing resumes and explicitly supplied supporting material, expands terse descriptions into supported professional claims, and selects evidence for the target role. Role knowledge and writing patterns guide ability synthesis and focused questions; they do not provide candidate facts. Content-only requests end with polished prose without invoking the rendering pipeline. Tools validate structured data, bind HTML, measure print output and accept the final PDF. Repository analysis is not a supported resume input path. Optional legacy L1~L3 labels describe provenance, not independent verification.
10
10
 
11
11
  This document preserves the system design and module boundaries. `AGENT.md` governs AI development and architecture changes in this repository; `SKILL.md` governs using the Skill to create resumes. Current lifecycle, field and error semantics are defined in [references/07-artifact-contract.md](references/07-artifact-contract.md); roadmap documents describe planned work and must not be treated as implemented capabilities.
12
12
 
@@ -18,7 +18,7 @@ KnowMe CareerForge adopts a progressive 4-tier documentation architecture to ens
18
18
  ┌────────────────────────────────────────────────────────────────────────────────────────┐
19
19
  │ KnowMe CareerForge 4-Tier Documentation Pyramid │
20
20
  ├────────────────────────────────────────────────────────────────────────────────────────┤
21
- │ L0: Platform Distribution │ SKILL.md (Agent 6-Stage Reasoning Contract) + skill.json │
21
+ │ L0: Platform Distribution │ SKILL.md (User Facts & Delivery Workflow) + skill.json │
22
22
  ├───────────────────────────┼────────────────────────────────────────────────────────────┤
23
23
  │ L1: Agent & Dev Contracts │ CLAUDE.md (Developer Command Cheat Sheet & Guidelines) │
24
24
  │ │ AGENT.md (AI Development & Architecture Guidelines)│
@@ -44,7 +44,7 @@ KnowMe CareerForge adopts a progressive 4-tier documentation architecture to ens
44
44
  │ CLI Dynamic Config Injection
45
45
  ┌──────────────────────────────────────▼──────────────────────────────────────┐
46
46
  │ 2. Skill Execution Core Layer (Agent Reasoning Contract) │
47
- │ SKILL.md (6-Stage Pipeline) │ AGENT.md (Development & Architecture Rules)│
47
+ │ SKILL.md (Intake → Facts → Forge → Review → Delivery)│
48
48
  └──────────────────────────────────────┬──────────────────────────────────────┘
49
49
  │ Python Toolchain / CLI Invocation
50
50
  ┌──────────────────────────────────────▼──────────────────────────────────────┐
@@ -85,31 +85,32 @@ sequenceDiagram
85
85
  participant Browser as Shared Browser Engine
86
86
 
87
87
  User->>Agent: Experience, existing resume, supporting material, target JD
88
- Agent->>Agent: Organize Draft, clarify needed facts, prepare Master
88
+ Agent->>Agent: Organize supplied facts, clarify consequential gaps
89
89
  Agent->>Engine: Analyze JD and select template
90
- Agent->>Engine: forge.py --profile-json master.json
90
+ Agent->>Engine: forge.py --profile-json - (facts on stdin)
91
91
  Engine->>Engine: Create unique run, snapshot input, validate profile
92
- Engine->>Engine: Save Master and source-linked Variant
92
+ Engine->>Engine: Prepare Master and source-linked Variant in private staging
93
93
  Engine->>Engine: Bind canvas.html with full CSS chain
94
94
  Engine->>Browser: Measure print DOM for all pages
95
95
  Browser->>Browser: Generate fresh PDF; inspect geometry and per-page text
96
96
  alt Required checks and final PDF acceptance pass
97
97
  Browser-->>Engine: Publish accepted bytes and hashes
98
- Engine-->>Agent: PASS manifest and current-run artifacts
98
+ Engine->>Engine: Publish current HTML/PDF pair; clean temporary staging
99
+ Engine-->>Agent: PASS, delivery paths and accepted hashes
99
100
  Agent->>Agent: Review facts, typography and reading order
100
101
  Agent-->>User: Deliver artifact links and review outcome
101
102
  else Validation fails or cannot complete
102
103
  Browser-->>Engine: FAIL or UNVERIFIED with diagnostics
103
- Engine-->>Agent: Retained run and error manifest; no delivery outputs
104
+ Engine-->>Agent: Error diagnostics; no delivery outputs (archive only if requested)
104
105
  Agent-->>User: Actual status and corrective next step
105
106
  end
106
107
  ```
107
108
 
108
109
  The host Agent owns semantic editing and evidence selection. The current forge script preserves supplied entries and applies explicit basic-field/title overrides; it does not autonomously infer a career narrative from repositories. Draft mode produces a draft canvas without final PDF acceptance. Manual canvas edits remain editable artifacts; do not overwrite them by replaying stale input.
109
110
 
110
- Each invocation creates `workspace/runs/<runId>/` containing the input snapshot, Master/Variant (or Draft), HTML, QA, manifest and an accepted PDF when successful. `--workspace` changes the parent, not run isolation. Master and Variant are independent documents linked by a normalized profile hash, which tracks versions rather than truth. Missing/null optional fields remain unknown; malformed types and unknown fields fail. Supplied education, work and project arrays are preserved independently.
111
+ Each invocation creates private staging containing the input snapshot, Master/Variant (or Draft), HTML, QA and an accepted PDF when successful. Staging is temporary by default: only the current HTML/PDF pair is published, and intermediates are removed on ordinary success or failure. Explicit `--keep-workspace` or `--workspace <dir>` retains a unique archive; the latter preserves the old explicit-workspace behavior. `--profile-json -` avoids a permanent input file; `--html-input -` lets edited HTML pass through the same acceptance and paired-publication path without reconstructing profiles. Master and Variant are independent documents linked by a normalized profile hash, which tracks versions rather than truth. Missing/null optional fields remain unknown; malformed types and unknown fields fail. Supplied education, work and project arrays are preserved independently.
111
112
 
112
- The current manifest is authoritative: `RUNNING` is intermediate, `DRAFT` is not PDF acceptance, `PASS` records accepted artifacts, `FAIL` denotes a rejected operation, and `UNVERIFIED` denotes unavailable or incomplete checking. Old output existence cannot imply success. See the artifact contract for exit codes and required report fields.
113
+ The current invocation result (and manifest when archived) is authoritative: `RUNNING` is intermediate, `DRAFT` is not PDF acceptance, `PASS` records accepted artifacts, `FAIL` denotes a rejected operation, and `UNVERIFIED` denotes unavailable or incomplete checking. Old output existence cannot imply success. See the artifact contract for exit codes and required report fields.
113
114
 
114
115
 
115
116
  ---
@@ -134,8 +135,8 @@ Following the **Codebase Design (Deep Modules)** philosophy, complex logic is en
134
135
  ### 4.3 Profile & Run Orchestration Seam
135
136
 
136
137
  - **Contract**: `scripts/contracts/profile.py` and `src/knowledge/resume-schema.json` define normalization shared across Draft, Master and Variant. Raw legacy profile JSON remains accepted as explicit Master input; wrapped documents carry lifecycle and provenance.
137
- - **Orchestration**: `scripts/pipeline/forge.py` snapshots input, creates the isolated run, binds the Variant, checks QA protocol/status consistency and accepted-file hashes, then records delivery in the manifest.
138
- - **Publication**: Requested output copies are staged only after acceptance. Ordinary copy failures roll back, and destination locks prevent tool processes from interleaving copies. Cross-file publication is not a crash-safe filesystem transaction; canonical run artifacts and the manifest remain authoritative.
138
+ - **Orchestration**: `scripts/pipeline/forge.py` snapshots input, creates the isolated run, binds the Variant, checks QA protocol/status consistency and accepted-file hashes, then returns delivery paths and hashes. Full manifests are retained only for explicit archives.
139
+ - **Publication**: Requested output copies are staged only after acceptance. Ordinary copy failures roll back, and destination locks prevent tool processes from interleaving copies. Cross-file publication is not a crash-safe filesystem transaction; the current result identifies accepted bytes; an explicit archive additionally retains canonical run artifacts and its manifest.
139
140
 
140
141
  ### 4.4 Rendering & Acceptance Seam
141
142
 
@@ -197,7 +198,7 @@ Key architectural choices are formally documented in `docs/decisions/`. ADRs rec
197
198
 
198
199
  Detailed iteration specifications and roadmap tasks are governed in:
199
200
 
200
- - [v0.0.6 Iteration Plan & Engineering Specification](docs/dev/ITERATION_PLAN_V0.0.6_EXPERIENCE_EXPANSION.md)
201
+ - [v0.0.6 Iteration Plan & Engineering Specification](docs/dev/dev-iteration-plan-v0.0.6-experience-expansion.md)
201
202
 
202
203
 
203
204
  ### Current implementation and verification
@@ -213,8 +214,10 @@ Tests use temporary directories and cover sparse/invalid facts, multiple educati
213
214
 
214
215
  Discovery metadata, activated instructions and conditional resources have separate loading costs. Keep development governance in `AGENT.md` and detailed runtime rules in `references/`. Package verification must cover dependencies and execution from outside the source checkout, separately from source-tree tests and Agent behavior evaluation.
215
216
 
216
- The initializer now copies runtime package metadata for full bundles, reports dependency preparation separately, and returns a nonzero exit on platform failures. Source installations retain package-lock.json when available; npm archives omit it and require npm install rather than npm ci. Cursor/Windsurf adapters now point to a project-local `.knowme/skills/knowme-careerforge` bundle; Gemini configuration points to its sibling runtime bundle by absolute entrypoint. Windsurf replaces its managed block on subsequent installs. Native-platform compatibility is not established by copying a prompt or passing local PDF tests. See [Agent Skills design review](docs/dev/AGENT_SKILLS_DESIGN_REVIEW.md) for evidence, target boundaries and acceptance criteria, and `AGENT.md` section 7 for maintenance rules.
217
+ The initializer now copies runtime package metadata for full bundles, reports dependency preparation separately, and returns a nonzero exit on platform failures. Source installations retain package-lock.json when available; npm archives omit it and require npm install rather than npm ci. Cursor/Windsurf adapters now point to a project-local `.knowme/skills/knowme-careerforge` bundle; Gemini configuration points to its sibling runtime bundle by absolute entrypoint. Windsurf replaces its managed block on subsequent installs. Native-platform compatibility is not established by copying a prompt or passing local PDF tests. See [Agent Skills design review](docs/dev/dev-agent-skills-design-review.md) for evidence, target boundaries and acceptance criteria, and `AGENT.md` section 7 for maintenance rules.
217
218
 
218
- Runtime readiness is exposed by `browser-engine.js --check-runtime` (READY/UNVERIFIED); it does not certify a resume. `forge.py --summary` provides compact stdout with the canonical manifest path while retaining full on-disk diagnostics and the existing default JSON interface.
219
+ Runtime readiness is exposed by `browser-engine.js --check-runtime` (READY/UNVERIFIED); it does not certify a resume. `forge.py` defaults to compact stdout and temporary staging; explicit archives preserve the full report and support `--summary`. A null manifest denotes clean mode, not a missing artifact. See [the clean-output decision](docs/decisions/0007-clean-delivery-and-optional-archives.md) for compatibility and recovery boundaries.
219
220
 
220
221
  For interactive layout selection, `search-template.py --summary` exposes only the top three IDs, names, scores and layouts. Full `--json` output and the programmatic ranking interface are unchanged. Source-to-claim review in `references/01-evidence-mining.md` remains an Agent responsibility and is distinct from deterministic profile/PDF text consistency.
222
+
223
+ Retired extraction entrypoints (`knowme extract`, `npm run extract`, and `scripts/evidence/extract-evidence.py`) share a fail-only compatibility entry: no repository scan or profile publication. Unknown CLI commands fail; interactive stdin without a payload is rejected before staging.
package/README.md CHANGED
@@ -47,7 +47,7 @@ Self Discovery Tailored Career Story
47
47
  ```
48
48
 
49
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.
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.
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 PDFs checked for print layout and text integrity via Playwright.
51
51
 
52
52
  ---
53
53
 
@@ -120,17 +120,19 @@ Draft retains incomplete information, Master preserves supplied facts, and Varia
120
120
 
121
121
  ## 5. Isolated runs and final acceptance
122
122
 
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.
123
+ Default generation uses private temporary staging and leaves only `resume/resume.html` and `resume/resume.pdf` in the candidate directory. `--profile-json -` accepts facts on stdin without a permanent input file; `--html-input -` accepts edited HTML through the same acceptance and paired-publication path. Failure preserves old delivery files; ordinary completion cleans temporary staging. Use `--output` and `--html-output` for explicit destinations.
124
+
125
+ Request `--keep-workspace` for diagnostic archives; existing explicit `--workspace <dir>` calls still retain full runs. `manifest: null` is expected in default clean output, and `--summary` is not a file-retention switch. Existing user inputs and old workspaces are never swept or deleted.
124
126
 
125
127
  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.
126
128
 
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.
129
+ 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` defaults to concise stdout; full snapshots and diagnostics remain only in explicit archive mode.
128
130
 
129
131
  ---
130
132
 
131
133
  ## 6. Token Self-Healing & Visual Tuning Cheat Sheet
132
134
 
133
- All visual parameters are concentrated in `:root` variables inside the current run’s `resume.html`:
135
+ All visual parameters are concentrated in `:root` variables inside the current delivery `resume/resume.html`:
134
136
 
135
137
  | CSS Token | Default | Compact (1-Page Squeeze) | Relaxed (2-Page Flow) | Purpose |
136
138
  | :--- | :--- | :--- | :--- | :--- |
@@ -145,6 +147,8 @@ All visual parameters are concentrated in `:root` variables inside the current r
145
147
 
146
148
  ## 7. Core Templates Matrix
147
149
 
150
+ The four core templates below are a subset of thirteen available layouts. ATS tiers are internal design categories, not external certification. PDF appearance depends on the browser and installed fonts; cross-machine pixel identity is not guaranteed.
151
+
148
152
  | Template ID | Style | Category | ATS Tier | Best For | Target Pages |
149
153
  | :--- | :--- | :--- | :--- | :--- | :--- |
150
154
  | **`minimal`** | Single-Column Minimal | Tech / AI | Tier 1 (Optimal) | Backend, Algorithms, AI Research, Systems | 1 Page |
@@ -152,29 +156,31 @@ All visual parameters are concentrated in `:root` variables inside the current r
152
156
  | **`executive`** | Executive Banner + 33:67 | Leadership / Product | Tier 1 (Optimal) | Tech Director, Chief Architect, Tech Lead | 1~2 Pages |
153
157
  | **`classic`** | Structured Table Grid | Corporate / Gov | Tier 1 (Optimal) | State Enterprises, Finance, Hardware, Civil | 1 Page |
154
158
 
159
+ Content-led additions: `editorial` (experience first, section rail), `graduate` (education and projects first), and `project-focus` (projects first). Each uses an explicit single A4 page with 9.5pt body text. Select for actual supplied content, not assumed qualifications.
160
+
161
+
155
162
  ---
156
163
 
157
164
  ## 8. CLI & Script Reference
158
165
 
159
166
  ```bash
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
167
+ # 1. Generate from an existing user-provided facts file
168
+ knowme forge --profile-json candidate.json --role "AI Agent Engineer"
162
169
 
163
- # 2. Search best template for target role (hybrid engine)
164
- knowme search --role "AI Agent Engineer" --engine hybrid
170
+ # 2. Update the current pair: supply complete edited HTML on stdin
171
+ knowme forge --html-input -
165
172
 
166
- # 3. Prepare an incomplete draft without PDF delivery
173
+ # 3. Explicitly requested draft; no PDF
167
174
  knowme forge --profile-json draft.json --draft
168
175
 
169
- # 4. Validate working canvas layout & ATS compliance
170
- knowme validate /path/to/current-run/resume.html --json
176
+ # 4. Optional template search
177
+ knowme search --role "AI Agent Engineer" --engine hybrid --summary
171
178
 
172
- # 5. Render deterministic pixel-perfect PDF
173
- knowme render --input workspace/resume.html --output output/resume.pdf
174
-
175
- # 6. Build & view static HTML Template Gallery
179
+ # 5. Development gallery, using fictional data
176
180
  knowme gallery
177
181
  ```
182
+ Use forge for normal generation and updates. Feed stdin through the host command tool; never interpolate candidate text into shell code. Files above are existing inputs, not required new artifacts. Independent `knowme validate` / `knowme render` commands are diagnostic tools; they do not publish a verified HTML/PDF pair. `knowme extract`, `npm run extract` and the legacy Python entry all reject repository extraction without reading repositories or writing profiles.
183
+
178
184
  ---
179
185
 
180
186
  ## Automated Test Suite
@@ -205,3 +211,5 @@ See the full [NPM Publishing & Update Guide](docs/PUBLISHING.md) for step-by-ste
205
211
  ## 11. License
206
212
 
207
213
  This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
214
+
215
+ Development: [guidelines](AGENT.md) · [document review and next-stage roadmap](docs/dev/dev-roadmap.md).
package/README.zh-CN.md CHANGED
@@ -47,7 +47,7 @@ knowme-careerforge-skill
47
47
  ```
48
48
 
49
49
  - **KnowMe(自我认知与证据挖掘引擎)**:帮助候选人深入认知自我,系统梳理用户提供的真实经历与辅助材料,提炼真正具备竞争壁垒的优势点。
50
- - **CareerForge(职业定位与简历工程引擎)**:将候选人的真实优势精准对齐目标岗位(JD),以 **HTML 中间工作区(Intermediate Canvas)** 与 **Design Tokens(设计系统变量)** 为工作场进行微调排版,最终通过 Playwright 无头浏览器导出确定性、像素级的矢量 PDF。
50
+ - **CareerForge(职业定位与简历工程引擎)**:将候选人的真实优势精准对齐目标岗位(JD),以 **HTML 中间工作区(Intermediate Canvas)** 与 **Design Tokens(设计系统变量)** 为工作场进行微调排版,最终通过 Playwright 无头浏览器导出经过打印布局与文本验收的矢量 PDF。
51
51
 
52
52
  ---
53
53
 
@@ -122,17 +122,19 @@ Draft 保留不完整资料,Master 保存本次已知事实,Variant 记录
122
122
 
123
123
  ## 5. 独立运行与最终验收
124
124
 
125
- 每次 forge 在 `workspace/runs/<runId>/` 保存输入快照、Master、Variant、画布、QA 和运行清单。通过验收后才写入本次 PDF;失败的清单不会返回旧文件作为交付。可以用 `--output` 和 `--html-output` 指定已验收副本位置。
125
+ 默认生成在系统临时目录完成装配与验收,只在用户目录保留 `resume/resume.html` 和 `resume/resume.pdf`。`--profile-json -` 从标准输入接收资料,不必新建 profile 文件;`--html-input -` 接收编辑后的 HTML,经同一验收流程一起更新当前 HTML/PDF。失败保留旧交付,正常结束清理本次临时文件。`--output` 和 `--html-output` 可指定交付位置。
126
+
127
+ 需要诊断归档时显式使用 `--keep-workspace`;旧的显式 `--workspace <dir>` 调用仍保留完整运行记录。默认报告中的 `manifest: null` 是预期行为,`--summary` 不再是控制文件数量的方式。工具不清理用户已有输入或旧版工作区。
126
128
 
127
129
  打印模式会检查所有页面,再解析最终 PDF 的每页尺寸与文本。PASS 表示本次检查通过;FAIL 是检查失败;UNVERIFIED 是浏览器/依赖等导致无法验收;DRAFT 只表示草稿准备完成。自动检查不等同于事实核实或通用 ATS 认证。
128
130
 
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` 精简终端输出,内部快照与诊断仍保留。
131
+ 在安装目录按 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` 默认精简终端输出;完整快照与诊断仅在显式归档模式保留。
130
132
 
131
133
  ---
132
134
 
133
135
  ## 6. CSS Design Tokens 调优与自愈速查表
134
136
 
135
- 所有排版参数均集中在当前运行目录的 `resume.html` 的 `:root` 变量中,可进行全局即时微调:
137
+ 所有排版参数均集中在当前交付文件 `resume/resume.html` 的 `:root` 变量中,可进行全局即时微调:
136
138
 
137
139
  | CSS Token 变量名 | 默认推荐值 | 紧凑模式 (单页微调) | 宽松模式 (双页饱满) | 调优核心作用 |
138
140
  | :--- | :--- | :--- | :--- | :--- |
@@ -147,6 +149,8 @@ Draft 保留不完整资料,Master 保存本次已知事实,Variant 记录
147
149
 
148
150
  ## 7. 首期 4 款黄金基准模板
149
151
 
152
+ 下表列出十三套现有布局中的四套核心模板。ATS 等级属于内部设计分类,不代表外部认证;PDF 视觉效果取决于浏览器和本机字体,不保证跨机器像素一致。
153
+
150
154
  | 模板 ID | 版式风格 | 岗位分类 | ATS 评级 | 适用人群与设计特质 | 目标页数 |
151
155
  | :--- | :--- | :--- | :--- | :--- | :--- |
152
156
  | **`minimal`** | 单栏极简线性流 | 研发 / AI | Tier 1 (极佳) | 后端、算法、系统、AI 工程师;强调技术胶囊与代码证据 | 1 页 |
@@ -154,29 +158,31 @@ Draft 保留不完整资料,Master 保存本次已知事实,Variant 记录
154
158
  | **`executive`** | 墨黑顶栏 + 33:67 双栏 | 管理 / 产品 | Tier 1 (极佳) | 技术总监、首席架构师、Team Lead;突出领导力与重大项目 | 1~2 页 |
155
159
  | **`classic`** | 现代结构化表格网格 | 综合 / 政企 | Tier 1 (极佳) | 国企、金融科技、政企合规岗位;6列矩阵,最高信息密度 | 1 页 |
156
160
 
161
+ 新增内容导向模板:`editorial`(经历优先与章节侧标)、`graduate`(教育与项目优先)、`project-focus`(项目优先)。三套均为显式单页 A4,正文默认 9.5pt;选择以实际内容和用户偏好为准,不能根据岗位名称补造经历。
162
+
163
+
157
164
  ---
158
165
 
159
166
  ## 8. CLI 命令参考
160
167
 
161
168
  ```bash
162
- # 1. 一键全流程装配管线(用户资料 -> HTML画布 -> 打印与PDF验收)
163
- knowme forge --profile-json candidate.json --role "AI Agent Engineer" --template modern --quiet
169
+ # 1. 使用已有的用户事实文件生成简历
170
+ knowme forge --profile-json candidate.json --role "AI Agent Engineer"
164
171
 
165
- # 2. 智能检索最匹配的 HTML 简历模板(混合评分引擎)
166
- knowme search --role "AI Agent Engineer" --engine hybrid
172
+ # 2. 更新当前文件对:通过 stdin 提交完整修改后 HTML
173
+ knowme forge --html-input -
167
174
 
168
- # 3. 从不完整资料生成草稿,不声明 PDF 已验收
175
+ # 3. 明确请求的草稿,不生成 PDF
169
176
  knowme forge --profile-json draft.json --draft
170
177
 
171
- # 4. 运行布局结构、Design Tokens 与 ATS 双重质检
172
- knowme validate /path/to/current-run/resume.html --json
178
+ # 4. 按需检索模板
179
+ knowme search --role "AI Agent Engineer" --engine hybrid --summary
173
180
 
174
- # 5. 确定性导出无损矢量 A4 PDF
175
- knowme render --input workspace/resume.html --output output/resume.pdf
176
-
177
- # 6. 编译生成可视化模板画廊
181
+ # 5. 开发画廊,使用虚构资料
178
182
  knowme gallery
179
183
  ```
184
+ 默认制作和更新统一使用 forge。stdin 通过宿主工具传入,不将候选人文本拼入 shell 代码;上面的文件是已有输入,不要求额外建档。独立的 `knowme validate` / `knowme render` 仅用于诊断,不发布已验收的 HTML/PDF 文件对。`knowme extract`、`npm run extract` 和旧 Python 入口均拒绝仓库提取,不读取仓库或写入资料。
185
+
180
186
  ---
181
187
 
182
188
  ## 自动化测试与持续集成
@@ -207,3 +213,5 @@ npm publish --access public
207
213
  ## 11. 开源协议
208
214
 
209
215
  本项目采用 **MIT 开源协议**,详情请参阅 [LICENSE](LICENSE) 文件。
216
+
217
+ 项目开发:[开发规范](AGENT.md) · [文档审查与下一阶段规划](docs/dev/dev-roadmap.md)。
package/SKILL.md CHANGED
@@ -1,71 +1,64 @@
1
1
  ---
2
2
  name: knowme-careerforge
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.
3
+ description: Draft, expand or refine high-quality resume content 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
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.
5
+ compatibility: Content drafting needs only the host Agent. PDF export 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
6
  metadata:
7
- version: 0.0.7
7
+ version: 0.0.8
8
8
  ---
9
9
 
10
10
  # KnowMe CareerForge
11
11
 
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.
12
+ Create a readable resume from the user's descriptions, existing resume and explicitly supplied material. The host Agent discovers relevant strengths, expands terse experience into concrete professional writing, and selects evidence for the target role. Role and writing templates guide its reasoning; tools only bind templates and check printing. Content-only drafting and editing are complete deliverables when requested; they do not require JSON, a runtime check or PDF generation. 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
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: “请发已有简历,或告诉我姓名、最近一段工作经历(公司、时间、做了什么、用过哪些技术);已有的信息不用重复。”
17
17
 
18
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.
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. A missing name does not block content writing. For PDF delivery, ask just for the required name, or prepare an unnamed Draft if requested.
20
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.
21
+ - **Existing canvas edited:** stage those edits in memory and validate/render them to the current delivery paths; create a separate revision only when requested. Do not rebuild from an older profile.
22
22
 
23
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.
24
24
 
25
- ## 2. Compose once, choose a layout
25
+ ## 2. Develop the content, then choose its presentation
26
26
 
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.
27
+ Before drafting or materially expanding content, read [source-grounded expansion](references/01-evidence-mining.md). Turn raw descriptions into useful resume evidence, not merely shorter paraphrases. Expand the supplied action, object, context and technical relationship; make supported abilities visible. A role template supplies writing angles and questions, not a candidate history. Keep unsupported suggestions out of the final resume.
28
28
 
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.
29
+ Route only to the guidance needed:
30
30
 
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.
31
+ - **Terse experience or a request to expand:** use the expansion patterns and examples in reference 01. Ask the highest-value missing question when it would change the core claim; otherwise produce a useful version immediately.
32
+ - **Positioning, career transition or ability-focused writing:** read [career positioning](references/02-career-goal.md) and, when useful, the one relevant `src/knowledge/roles/*.json`. Infer transferable abilities from actual actions without inventing proficiency or tools.
33
+ - **A supplied JD or role-tailoring request:** read [JD alignment](references/03-jd-analysis.md). Map requirements to direct evidence, transferable evidence and gaps; select and order content accordingly. The JD parser is optional and does not perform this reasoning.
34
+ - **Contact-only or other narrow edits:** change the requested fields; do not restart positioning or expand unrelated content.
32
35
 
33
- ## 3. Prepare runtime, generate
36
+ Keep a lightweight content plan in context: target role, strongest supported abilities, supporting experiences, and consequential gaps. This is reasoning support, not a required report, questionnaire or approval step. Follow the user's preference for immediate drafting versus deeper exploration.
34
37
 
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.
38
+ Choose content by relevance, specificity, personal contribution and distinctiveness. Expand strong but terse evidence; compress repetitive or low-relevance material. Preserve meaningful career context and chronology. Selecting facts for a tailored resume is permitted; changing their meaning or deleting important content just to pass layout checks is not. Explain a material omission briefly when needed. A summary should synthesize supported strengths, work entries should demonstrate them, and projects should add distinct evidence rather than duplicate work.
36
39
 
37
- After there is sufficient candidate material, and before the first PDF build, run:
40
+ Review content before formatting: can a reader identify the target, the candidate's contribution and the strongest supporting evidence? Use the editorial review in reference 01 to remove empty expansion, unsupported causal claims and repeated achievements; do not force sparse inputs into a full resume structure. Replace generic praise with concrete supplied actions; preserve outcomes without numbers when that is all the source supports. Compare claims with the original user material, not just the generated profile. If a request is content-only, return the polished text and any consequential open question here. Do not force a PDF workflow.
38
41
 
39
- ```bash
40
- node <skill-root>/scripts/rendering/browser-engine.js --check-runtime
41
- ```
42
+ For HTML/PDF delivery, prepare the selected, rewritten profile in memory and read [the artifact contract](references/07-artifact-contract.md). The pipeline's Master is the supplied run snapshot, not a complete lifetime fact bank; Variant does not automatically tailor the prose. Keep original user material as the factual reference in context. Do not create permanent profiles or analysis files unless requested.
42
43
 
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
+ Read [template guidance](references/04-template-selection.md) when choosing a layout. Content priorities come first: choose for actual length, section hierarchy and user preference. Honor an explicit template choice. The default template order is not a mandatory editorial order; adapt the canvas when a substantive request needs a different hierarchy, then validate it. For content that warrants two pages, explicitly compose two page containers and use `--expected-pages 2`; this flag alone does not paginate a template. State the actual `templateUsed` in PDF delivery.
44
45
 
45
- For a new resume, keep internal files under `workspace/` and publish only the readable deliverables under `resume/` (or the user's chosen locations):
46
+ ## 3. Generate only when a file deliverable is needed
46
47
 
47
- ```bash
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
49
- ```
48
+ For HTML/PDF requests, read [production commands and QA](references/06-qa-and-rendering.md) before the first build or canvas update. It contains runtime preparation, stdin commands, safe update handling and diagnostics. Use the host-resolved skill root and the user's output workspace. Default production leaves only the current HTML/PDF pair; archives are opt-in. Never overwrite the current canvas before validation or treat an old PDF as this run's result.
50
49
 
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:
54
-
55
- ```bash
56
- python3 <skill-root>/scripts/rendering/render-pdf.py <edited-resume.html> <new-resume.pdf> --expected-pages 1 --quiet
57
- ```
50
+ For content-only requests, deliver copy-ready prose in the requested language and scope. A single bullet edit needs only that bullet; a complete resume needs coherent sections. Keep suggestions or unresolved questions outside the resume body. Do not append a mandatory questionnaire, editing report, capability score or disclaimer to otherwise usable content.
58
51
 
59
52
  ## 4. Inspect and deliver
60
53
 
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.
54
+ 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. Keep any inspection images and helper scripts in a system temporary directory; remove only these self-created temporary files after inspection, including failed inspection attempts. Do not save them beside the resume unless requested. 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.
62
55
 
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.
56
+ 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. Use returned failure diagnostics; retain full run files only through explicit diagnostic mode. Do not delete user-owned files or old archives as cosmetic cleanup. Font extraction failures require inspecting diagnostics and an available font choice, not altering candidate text.
64
57
 
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.
58
+ Default HTML/PDF 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.
66
59
 
67
- Use one concise delivery shape across hosts, adapting only language and filenames:
60
+ For an HTML/PDF request, use one concise delivery shape across hosts, adapting only language and filenames:
68
61
 
69
62
  > 已生成简历: [PDF](<current PDF path>) · [可编辑 HTML](<current HTML path>)。模板:<templateUsed>。<One useful gap or actual inspection limitation, if any.>
70
63
 
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.
64
+ 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; leave existing archives untouched and let the pipeline clean its temporary staging. 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,6 +1,6 @@
1
1
  name: knowme-careerforge
2
2
  description: An agent-native skill for self-discovery, career positioning, and tailored resume engineering.
3
- version: 0.0.7
3
+ version: 0.0.8
4
4
  entrypoint: SKILL.md
5
5
  rules:
6
6
  - "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."
@@ -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: 0.0.7
4
+ version: 0.0.8
5
5
  schema: 1.0
6
6
  entrypoint: SKILL.md
7
7
  tags:
@@ -58,11 +58,11 @@ function getVersion(rootDir) {
58
58
  const pkgJson = path.join(rootDir, 'package.json');
59
59
  if (require('fs').existsSync(pkgJson)) {
60
60
  const data = JSON.parse(require('fs').readFileSync(pkgJson, 'utf-8'));
61
- return data.version || '0.0.7';
61
+ return data.version || '0.0.8';
62
62
  }
63
63
  }
64
64
  catch { }
65
- return '0.0.7';
65
+ return '0.0.8';
66
66
  }
67
67
  function showHelp() {
68
68
  console.log(`
@@ -75,30 +75,34 @@ Usage:
75
75
 
76
76
  Commands:
77
77
  forge Isolated user facts -> variant -> canvas -> verified PDF
78
- render Multi-strategy deterministic A4 PDF export
78
+ render Diagnostic PDF export; use forge for paired delivery
79
79
  init Install and configure Skill for AI Agent platforms (cursor, claude, codex, windsurf, gemini, opencode)
80
80
  list Display all available role profiles and HTML templates
81
81
  search <role> Search and rank templates for a specific role (e.g. knowme search "AI Agent Engineer")
82
- validate Validate working canvas HTML layout & ATS compliance
82
+ validate Diagnostic print/PDF checks; does not publish a delivery pair
83
83
  gallery Build & refresh static HTML template gallery
84
84
  test Run full automated test suite
85
85
  help Show this help message
86
86
 
87
87
  Options (for forge):
88
- --profile-json <file> User/Agent prepared facts or Master document
89
- --workspace <dir> Parent for isolated run directories (default: workspace/runs)
88
+ --profile-json <file> Facts file, or - for JSON on stdin
89
+ --html-input <file> Existing edited HTML, or - for HTML on stdin
90
+ --keep-workspace Retain diagnostic archive (default: temporary staging)
91
+ --workspace <dir> Explicit archive parent; enables retention
90
92
  --draft Create a draft canvas without PDF delivery
91
93
  --role <title> Target role title
92
94
  --jd <file|text> Target job description
93
- --template, -t <id> Template ID (minimal, modern, executive, classic, academic-research, international-flow, creative-tech, compact-dense, startup-generalist, data-analyst)
95
+ --template, -t <id> Template ID (minimal, modern, executive, classic, academic-research, international-flow, creative-tech, compact-dense, startup-generalist, data-analyst, editorial, graduate, project-focus)
94
96
  --name <name> Candidate name override
95
- --output, -o <path> Optional verified PDF copy (default: isolated run)
97
+ --output, -o <path> Verified PDF destination (default: resume/resume.pdf)
96
98
  --font-preset <name> system or arial-unicode (requires local Arial Unicode MS)
97
- --auto-heal Enable heuristic token auto-healing to eliminate A4 height overflow
98
- --quiet, -q Quiet execution (compact JSON output)
99
+ --auto-heal Attempt bounded spacing/type tuning; unresolved overflow fails
100
+ --html-output <path> HTML destination (default: beside the PDF)
101
+ --summary Compact report; default in clean mode
102
+ --quiet, -q Single-line JSON; does not change file retention
99
103
  Examples:
100
104
  knowme forge --profile-json candidate.json --role "AI Agent Engineer" --template modern
101
- knowme render workspace/resume.html workspace/resume.pdf
105
+ knowme forge --html-input - # Supply complete edited HTML on stdin
102
106
  knowme init --ai codex
103
107
  knowme init --all
104
108
  `);
@@ -119,8 +123,9 @@ function main() {
119
123
  break;
120
124
  }
121
125
  case 'extract': {
122
- console.error('Repository-to-resume extraction is not supported. Use user-provided facts with forge --profile-json.');
123
- process.exitCode = 1;
126
+ const scriptPath = path.join(rootDir, 'scripts', 'evidence', 'extract-evidence.py');
127
+ const proc = child_process.spawnSync('python3', [scriptPath, ...args.slice(1)], { stdio: 'inherit' });
128
+ process.exitCode = proc.status || 1;
124
129
  break;
125
130
  }
126
131
  case 'render': {
@@ -203,9 +208,12 @@ function main() {
203
208
  case 'help':
204
209
  case '--help':
205
210
  case '-h':
206
- default:
207
211
  showHelp();
208
212
  break;
213
+ default:
214
+ console.error(`Unknown command: ${command}. Run knowme help for supported commands.`);
215
+ process.exitCode = 1;
216
+ break;
209
217
  }
210
218
  }
211
219
  if (require.main === module) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "knowme-careerforge-skill",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "An agent-native skill for self-discovery, career positioning, and tailored resume engineering.",
5
5
  "main": "dist/cli/src/index.js",
6
6
  "bin": {