knowme-careerforge-skill 0.0.1 → 0.0.2
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 +95 -116
- package/agents/claude/knowme-careerforge.md +9 -8
- package/agents/codex/knowme-careerforge.yaml +15 -6
- package/agents/cursor/knowme-careerforge.mdc +7 -6
- 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 +37 -10
- package/dist/cli/src/index.js +65 -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 +15 -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 +107 -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 +178 -0
- package/scripts/{search-template.py → template/search-template.py} +44 -42
- 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 +1 -1
- package/src/knowledge/resume-schema.json +112 -0
- package/src/workflows/forge-resume.md +2 -2
- package/src/workflows/review.md +3 -3
- package/scripts/instantiate-resume.py +0 -83
- package/scripts/sync-version.py +0 -57
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.2
|
|
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,51 @@ 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`).
|
|
30
34
|
|
|
31
35
|
---
|
|
32
36
|
|
|
33
|
-
## 2.
|
|
37
|
+
## 2. Input & Content Intelligence Layer (Repo-to-Resume Modes)
|
|
38
|
+
|
|
39
|
+
Identify the user's input scenario and select the corresponding mode:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
43
|
+
│ Input Modes & Evidence Mining Pipeline │
|
|
44
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
45
|
+
│ Mode A: Codebase / Repo-to-Resume Mode │
|
|
46
|
+
│ User provides a project directory or Git repo (or runs in current workspace) │
|
|
47
|
+
│ ➔ Run `python3 scripts/evidence/extract-evidence.py --repo .` │
|
|
48
|
+
│ ➔ Extract tech stacks, frameworks, Docker/CI-CD, Git commits, and author info │
|
|
49
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
50
|
+
│ Mode B: JD-Specific Mode │
|
|
51
|
+
│ User provides a target Job Description (text or file) │
|
|
52
|
+
│ ➔ Run `python3 scripts/evidence/analyze-jd.py --jd "path/to/jd.txt"` │
|
|
53
|
+
│ ➔ Extract Must-Have skills, Nice-to-Haves, hiring signals, and priority words │
|
|
54
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
55
|
+
│ Mode C: Target-Role Mode │
|
|
56
|
+
│ User specifies a direction (e.g. "AI Agent Engineer", "Senior Architect") │
|
|
57
|
+
│ ➔ Match against `src/knowledge/roles/*.json` knowledge profiles │
|
|
58
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Collecting Candidate Information:
|
|
62
|
+
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.
|
|
63
|
+
2. **L1~L3 Evidence Classification**:
|
|
64
|
+
- **Level 1 (Direct Code/Config Evidence)**: Verified by code files, configuration files (`package.json`, `Dockerfile`, `go.mod`, `Cargo.toml`), API contracts, or Git commits.
|
|
65
|
+
- **Level 2 (Structural/Dependency Evidence)**: Deduced from directory structure, tech stack dependencies, and architectural patterns.
|
|
66
|
+
- **Level 3 (Contextual Inference)**: Reasonable contextual deduction (MUST use conservative phrasing, e.g., *"Participated in the design and implementation of..."*).
|
|
67
|
+
- **Unsupported**: Facts not present in candidate records. **NEVER WRITE INTO RESUME**.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 3. The 6-Stage Deterministic Workflow
|
|
34
72
|
|
|
35
73
|
You MUST execute the following 6 stages in exact sequence:
|
|
36
74
|
|
|
@@ -47,133 +85,74 @@ You MUST execute the following 6 stages in exact sequence:
|
|
|
47
85
|
└──────────────┘ └──────────────┘ └──────────────────┘
|
|
48
86
|
```
|
|
49
87
|
|
|
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
|
-
---
|
|
88
|
+
### Option 1: Fast One-Shot Unified Execution (Recommended)
|
|
89
|
+
You can run the full end-to-end pipeline in a single command:
|
|
90
|
+
```bash
|
|
91
|
+
python3 scripts/pipeline/forge.py --repo . --role "<Target Role>" --jd "<path/to/jd.txt>" --template "<minimal|modern|executive|classic>" --quiet
|
|
92
|
+
```
|
|
93
|
+
Or via CLI:
|
|
94
|
+
```bash
|
|
95
|
+
knowme forge --repo . --role "<Target Role>" --template modern --quiet
|
|
96
|
+
```
|
|
74
97
|
|
|
75
|
-
###
|
|
98
|
+
### Option 2: Step-by-Step Granular Execution
|
|
76
99
|
|
|
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.
|
|
100
|
+
#### Step 1: Extract Evidence (Know Me)
|
|
101
|
+
```bash
|
|
102
|
+
python3 scripts/evidence/extract-evidence.py --repo . --output workspace/evidence-master.json --quiet
|
|
103
|
+
```
|
|
86
104
|
|
|
87
|
-
|
|
105
|
+
#### Step 2 & 3: JD & Target Analysis (Understand)
|
|
106
|
+
```bash
|
|
107
|
+
python3 scripts/evidence/analyze-jd.py --jd "path/to/jd.txt"
|
|
108
|
+
```
|
|
88
109
|
|
|
89
|
-
|
|
110
|
+
#### Step 4: Search & Select Template (Position)
|
|
111
|
+
```bash
|
|
112
|
+
python3 scripts/template/search-template.py "<Target Role>" --style "<minimal|modern|executive|classic>" --target-pages 1
|
|
113
|
+
```
|
|
90
114
|
|
|
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*).
|
|
115
|
+
#### Step 5: Instantiate Intermediate HTML Working Canvas (CareerForge)
|
|
116
|
+
```bash
|
|
117
|
+
python3 scripts/template/instantiate-resume.py --template <template_id> --profile workspace/evidence-master.json --keywords "Python,LLM,RAG,FastAPI" --output workspace/resume.html
|
|
118
|
+
```
|
|
98
119
|
|
|
99
|
-
|
|
120
|
+
#### Step 6: Review, Dual QA & PDF Export
|
|
121
|
+
```bash
|
|
122
|
+
# 1. Run Layout QA (DOM height & overflow validation)
|
|
123
|
+
python3 scripts/validation/validate-resume.py --html workspace/resume.html --expected-pages 1
|
|
124
|
+
```
|
|
125
|
+
# 2. If overflow occurs, tune CSS tokens in workspace/resume.html:
|
|
126
|
+
# - Reduce --resume-space-section (e.g., 11pt -> 9.5pt)
|
|
127
|
+
# - Reduce --resume-font-size-body (e.g., 9.2pt -> 9.0pt)
|
|
100
128
|
|
|
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`.
|
|
129
|
+
```bash
|
|
130
|
+
# 3. Deterministic PDF Export via Multi-Strategy Auto-Discovery:
|
|
131
|
+
python3 scripts/rendering/render-pdf.py workspace/resume.html workspace/resume.pdf --quiet
|
|
132
|
+
```
|
|
124
133
|
|
|
125
134
|
---
|
|
126
135
|
|
|
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
|
-
```
|
|
136
|
+
## 4. Final Response Delivery Contract (Strict Template)
|
|
137
137
|
|
|
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.
|
|
138
|
+
Once `workspace/resume.pdf` is generated, deliver your final response strictly in this clear, professional structure:
|
|
147
139
|
|
|
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.
|
|
140
|
+
```markdown
|
|
141
|
+
### 🎯 Career Positioning & Value Proposition
|
|
142
|
+
> **[Candidate Name] · [Target Role Title]**
|
|
143
|
+
> *[15~25 words Core Value Proposition highlighting key strengths]*
|
|
156
144
|
|
|
157
145
|
---
|
|
158
146
|
|
|
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 |
|
|
147
|
+
### 🛡️ Top Grounded Evidence Highlights (L1/L2)
|
|
148
|
+
1. **[Key Domain / Architecture]**: [Action Verb + Grounded Achievement + Metrics] *(Evidence: [Source])*
|
|
149
|
+
2. **[Core Tech Stack]**: [Engineered feature with exact frameworks] *(Evidence: [Source])*
|
|
150
|
+
3. **[Delivery & Impact]**: [System stability / CI-CD / Performance metric] *(Evidence: [Source])*
|
|
167
151
|
|
|
168
152
|
---
|
|
169
153
|
|
|
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
|
|
154
|
+
### 📄 Final Verified Deliverables
|
|
155
|
+
- **PDF Resume (Deterministic A4)**: `workspace/resume.pdf` (Passed 100% Dual QA)
|
|
156
|
+
- **HTML Working Canvas**: `workspace/resume.html` (Design Tokens Calibrated)
|
|
157
|
+
- **Master Profile JSON**: `workspace/evidence-master.json` (Traceable Evidence底座)
|
|
179
158
|
```
|
|
@@ -1,16 +1,17 @@
|
|
|
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/**/*"]
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# KnowMe CareerForge — Claude Code Skill
|
|
7
7
|
|
|
8
8
|
Know Yourself. Define Your Direction. Forge Your Opportunity.
|
|
9
9
|
|
|
10
|
-
When activated, follow the
|
|
11
|
-
1. **
|
|
12
|
-
2. **
|
|
13
|
-
3. **
|
|
14
|
-
4. **
|
|
15
|
-
5. **
|
|
16
|
-
6. **
|
|
10
|
+
When activated, follow the Evidence-First & Quiet Execution Protocol (see `scripts/Agent.md`):
|
|
11
|
+
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`.
|
|
12
|
+
2. **Understand Target**: Analyze target JD via `python3 scripts/evidence/analyze-jd.py`.
|
|
13
|
+
3. **Template Search**: Match template (`python3 scripts/template/search-template.py`).
|
|
14
|
+
4. **Intermediate Canvas**: Instantiate `workspace/resume.html` via `python3 scripts/template/instantiate-resume.py` and calibrate CSS design tokens.
|
|
15
|
+
5. **Review & Dual QA**: Run `python3 scripts/validation/validate-resume.py`.
|
|
16
|
+
6. **PDF Delivery**: Export `workspace/resume.pdf` via `python3 scripts/rendering/render-pdf.py`.
|
|
17
|
+
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.2
|
|
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 (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 scripts/Agent.md for complete toolchain conventions."
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: KnowMe CareerForge — Agent-native career positioning and resume engineering
|
|
3
|
-
globs: ["workspace/*", "src/**/*"]
|
|
3
|
+
globs: ["workspace/*", "src/**/*", "scripts/**/*"]
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# KnowMe CareerForge MDC Rules
|
|
7
7
|
|
|
8
|
-
1.
|
|
9
|
-
2.
|
|
10
|
-
3.
|
|
11
|
-
4.
|
|
12
|
-
5. Validate
|
|
8
|
+
1. **Evidence-First**: Never hallucinate ungrounded claims (strictly L1~L3 evidence).
|
|
9
|
+
2. **Repo-to-Resume**: Extract codebase facts using `python3 scripts/evidence/extract-evidence.py --repo .` or run one-shot `python3 scripts/pipeline/forge.py`.
|
|
10
|
+
3. **HTML Canvas**: Edit exclusively in `workspace/resume.html` Intermediate Working Canvas (`scripts/template/instantiate-resume.py`).
|
|
11
|
+
4. **Quiet Protocol**: Execute scripts silently in background; do not output raw HTML, CSS, or scripts into the chat.
|
|
12
|
+
5. **Deterministic PDF**: Validate via `python3 scripts/validation/validate-resume.py` and export via `python3 scripts/rendering/render-pdf.py`.
|
|
13
|
+
6. **Architecture Guide**: Refer to `scripts/Agent.md` for toolchain domain specifications.
|
|
@@ -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. Extract candidate facts using `python3 scripts/evidence/extract-evidence.py --repo .` or execute one-shot `python3 scripts/pipeline/forge.py`.
|
|
6
|
+
2. Tag all experience items with Evidence Level (L1~L3 only, strictly anti-hallucination).
|
|
7
|
+
3. Analyze target JD requirements using `python3 scripts/evidence/analyze-jd.py`.
|
|
8
|
+
4. Recommend best template using `python3 scripts/template/search-template.py`.
|
|
9
|
+
5. Instantiate `workspace/resume.html` using `python3 scripts/template/instantiate-resume.py` and calibrate CSS design tokens.
|
|
10
|
+
6. Validate DOM fit and ATS compatibility using `python3 scripts/validation/validate-resume.py`.
|
|
11
|
+
7. Export final deterministic PDF using `python3 scripts/rendering/render-pdf.py`.
|
|
12
|
+
8. Execute silently in background; deliver concise executive summary and final file path (`workspace/resume.pdf`).
|
|
13
|
+
9. Reference `scripts/Agent.md` for toolchain domain specifications.
|
|
@@ -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,24 @@ 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
|
+
fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(claudeDir, 'SKILL.md'));
|
|
97
|
+
fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(claudeDir, 'skill.json'));
|
|
98
|
+
console.log(`[✓] Claude Code Skill fully bundled -> ${claudeDir}`);
|
|
79
99
|
break;
|
|
80
100
|
}
|
|
81
101
|
case 'codex': {
|
|
82
102
|
const codexDir = path.join(homeDir, '.codex', 'skills', 'knowme-careerforge');
|
|
83
103
|
fs.mkdirSync(codexDir, { recursive: true });
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
104
|
+
copyDirRecursive(path.join(rootDir, 'scripts'), path.join(codexDir, 'scripts'));
|
|
105
|
+
copyDirRecursive(path.join(rootDir, 'src'), path.join(codexDir, 'src'));
|
|
106
|
+
fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(codexDir, 'SKILL.md'));
|
|
107
|
+
fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(codexDir, 'skill.json'));
|
|
108
|
+
if (fs.existsSync(path.join(rootDir, 'agents', 'codex', 'knowme-careerforge.yaml'))) {
|
|
109
|
+
fs.copyFileSync(path.join(rootDir, 'agents', 'codex', 'knowme-careerforge.yaml'), path.join(codexDir, 'skill.yaml'));
|
|
110
|
+
}
|
|
111
|
+
console.log(`[✓] Codex Native Skill fully bundled -> ${codexDir}`);
|
|
87
112
|
break;
|
|
88
113
|
}
|
|
89
114
|
case 'cursor': {
|
|
@@ -112,9 +137,11 @@ function runInit(options) {
|
|
|
112
137
|
case 'opencode': {
|
|
113
138
|
const opencodeDir = path.join(projectDir, '.opencode', 'skills', 'knowme-careerforge');
|
|
114
139
|
fs.mkdirSync(opencodeDir, { recursive: true });
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
140
|
+
copyDirRecursive(path.join(rootDir, 'scripts'), path.join(opencodeDir, 'scripts'));
|
|
141
|
+
copyDirRecursive(path.join(rootDir, 'src'), path.join(opencodeDir, 'src'));
|
|
142
|
+
fs.copyFileSync(path.join(rootDir, 'SKILL.md'), path.join(opencodeDir, 'SKILL.md'));
|
|
143
|
+
fs.copyFileSync(path.join(rootDir, 'skill.json'), path.join(opencodeDir, 'skill.json'));
|
|
144
|
+
console.log(`[✓] OpenCode Skill fully bundled -> ${opencodeDir}`);
|
|
118
145
|
break;
|
|
119
146
|
}
|
|
120
147
|
default:
|