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