knowme-careerforge-skill 0.0.2 → 0.0.6

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 (127) hide show
  1. package/AGENT.md +276 -0
  2. package/ARCHITECTURE.md +216 -0
  3. package/README.md +34 -54
  4. package/README.zh-CN.md +35 -57
  5. package/SKILL.md +28 -137
  6. package/agents/claude/knowme-careerforge.md +2 -16
  7. package/agents/codex/knowme-careerforge.yaml +5 -7
  8. package/agents/cursor/knowme-careerforge.mdc +4 -9
  9. package/agents/opencode/skill.yaml +1 -1
  10. package/agents/windsurf/knowme-careerforge.rules +2 -12
  11. package/dist/cli/src/commands/init.js +9 -0
  12. package/dist/cli/src/index.js +40 -19
  13. package/dist/scripts/rendering/engine-loader.d.ts +2 -0
  14. package/dist/scripts/rendering/engine-loader.js +46 -0
  15. package/dist/scripts/rendering/render-pdf.d.ts +3 -8
  16. package/dist/scripts/rendering/render-pdf.js +7 -103
  17. package/dist/scripts/rendering/runtime.d.ts +9 -0
  18. package/dist/scripts/rendering/runtime.js +63 -0
  19. package/dist/scripts/validation/validate-ats.d.ts +2 -22
  20. package/dist/scripts/validation/validate-ats.js +6 -168
  21. package/dist/scripts/validation/validate-layout.d.ts +2 -23
  22. package/dist/scripts/validation/validate-layout.js +5 -159
  23. package/package.json +16 -4
  24. package/references/01-evidence-mining.md +5 -0
  25. package/references/02-career-goal.md +38 -0
  26. package/references/03-jd-analysis.md +44 -0
  27. package/references/04-template-selection.md +43 -0
  28. package/references/05-html-canvas-tokens.md +12 -0
  29. package/references/06-qa-and-rendering.md +14 -0
  30. package/references/07-artifact-contract.md +64 -0
  31. package/scripts/Agent.md +9 -136
  32. package/scripts/build/build-gallery.py +66 -56
  33. package/scripts/build/run-all-tests.py +1 -0
  34. package/scripts/build/sync-version.py +37 -10
  35. package/scripts/contracts/profile.py +101 -0
  36. package/scripts/evidence/extract-evidence.py +109 -62
  37. package/scripts/pipeline/forge.py +266 -136
  38. package/scripts/rendering/README.md +65 -0
  39. package/scripts/rendering/browser-engine.d.ts +15 -0
  40. package/scripts/rendering/browser-engine.js +366 -0
  41. package/scripts/rendering/browser_engine.py +39 -0
  42. package/scripts/rendering/engine-loader.ts +11 -0
  43. package/scripts/rendering/render-pdf.py +26 -151
  44. package/scripts/rendering/render-pdf.ts +7 -83
  45. package/scripts/template/instantiate-resume.py +266 -167
  46. package/scripts/template/search-template.py +367 -89
  47. package/scripts/validation/measure-dom.js +5 -0
  48. package/scripts/validation/validate-ats.ts +6 -174
  49. package/scripts/validation/validate-layout.ts +5 -159
  50. package/scripts/validation/validate-resume.py +23 -134
  51. package/skill.json +1 -1
  52. package/src/knowledge/index.json +390 -10
  53. package/src/knowledge/resume-schema.json +377 -71
  54. package/src/knowledge/templates.json +388 -8
  55. package/src/references/01-evidence-mining.md +5 -0
  56. package/src/references/02-career-goal.md +38 -0
  57. package/src/references/03-jd-analysis.md +44 -0
  58. package/src/references/04-template-selection.md +43 -0
  59. package/src/references/05-html-canvas-tokens.md +12 -0
  60. package/src/references/06-qa-and-rendering.md +14 -0
  61. package/src/references/07-artifact-contract.md +64 -0
  62. package/src/templates/Agent.md +11 -0
  63. package/src/templates/academic-research/README.md +25 -0
  64. package/src/templates/academic-research/canvas.html +21 -0
  65. package/src/templates/academic-research/metadata.json +38 -0
  66. package/src/templates/academic-research/sample-profile.json +86 -0
  67. package/src/templates/academic-research/style.css +213 -0
  68. package/src/templates/classic/README.md +9 -0
  69. package/src/templates/classic/canvas.html +21 -0
  70. package/src/templates/classic/metadata.json +3 -0
  71. package/src/templates/classic/sample-profile.json +86 -0
  72. package/src/templates/classic/style.css +35 -54
  73. package/src/templates/common/base.css +182 -0
  74. package/src/templates/common/canvas-bindings.css +41 -0
  75. package/src/templates/common/resume-contract.md +8 -0
  76. package/src/templates/compact-dense/README.md +25 -0
  77. package/src/templates/compact-dense/canvas.html +14 -0
  78. package/src/templates/compact-dense/metadata.json +38 -0
  79. package/src/templates/compact-dense/sample-profile.json +86 -0
  80. package/src/templates/compact-dense/style.css +218 -0
  81. package/src/templates/creative-tech/README.md +26 -0
  82. package/src/templates/creative-tech/canvas.html +15 -0
  83. package/src/templates/creative-tech/metadata.json +39 -0
  84. package/src/templates/creative-tech/sample-profile.json +86 -0
  85. package/src/templates/creative-tech/style.css +257 -0
  86. package/src/templates/data-analyst/README.md +26 -0
  87. package/src/templates/data-analyst/canvas.html +15 -0
  88. package/src/templates/data-analyst/metadata.json +39 -0
  89. package/src/templates/data-analyst/sample-profile.json +86 -0
  90. package/src/templates/data-analyst/style.css +285 -0
  91. package/src/templates/executive/README.md +9 -0
  92. package/src/templates/executive/canvas.html +15 -0
  93. package/src/templates/executive/sample-profile.json +86 -0
  94. package/src/templates/executive/style.css +83 -74
  95. package/src/templates/international-flow/README.md +26 -0
  96. package/src/templates/international-flow/canvas.html +21 -0
  97. package/src/templates/international-flow/metadata.json +37 -0
  98. package/src/templates/international-flow/sample-profile.json +86 -0
  99. package/src/templates/international-flow/style.css +208 -0
  100. package/src/templates/minimal/README.md +9 -0
  101. package/src/templates/minimal/canvas.html +21 -0
  102. package/src/templates/minimal/sample-profile.json +86 -0
  103. package/src/templates/minimal/style.css +54 -72
  104. package/src/templates/modern/README.md +9 -0
  105. package/src/templates/modern/canvas.html +15 -0
  106. package/src/templates/modern/sample-profile.json +86 -0
  107. package/src/templates/modern/style.css +78 -71
  108. package/src/templates/startup-generalist/README.md +25 -0
  109. package/src/templates/startup-generalist/canvas.html +21 -0
  110. package/src/templates/startup-generalist/metadata.json +37 -0
  111. package/src/templates/startup-generalist/sample-profile.json +86 -0
  112. package/src/templates/startup-generalist/style.css +237 -0
  113. package/src/references/ats.md +0 -17
  114. package/src/references/evidence-first.md +0 -22
  115. package/src/references/pdf.md +0 -40
  116. package/src/references/resume-writing.md +0 -25
  117. package/src/references/template-design.md +0 -57
  118. package/src/templates/classic/template.html +0 -133
  119. package/src/templates/executive/template.html +0 -101
  120. package/src/templates/minimal/template.html +0 -114
  121. package/src/templates/modern/template.html +0 -139
  122. package/src/workflows/analyze-job.md +0 -16
  123. package/src/workflows/define-goal.md +0 -16
  124. package/src/workflows/forge-resume.md +0 -25
  125. package/src/workflows/know-me.md +0 -21
  126. package/src/workflows/position.md +0 -19
  127. package/src/workflows/review.md +0 -31
@@ -1,112 +1,418 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "title": "CandidateResumeSchema",
4
- "description": "KnowMe CareerForge Candidate Master Profile & Tailored Resume Schema with L1~L3 Evidence Chains.",
4
+ "description": "User-provided resume facts shared by Draft, Master and Variant; omissions and null never imply candidate facts.",
5
5
  "type": "object",
6
- "required": ["basics", "skills", "experience", "education"],
7
6
  "properties": {
8
7
  "basics": {
9
- "type": "object",
10
- "required": ["name", "title", "email", "phone"],
8
+ "type": [
9
+ "object",
10
+ "null"
11
+ ],
11
12
  "properties": {
12
- "name": { "type": "string", "description": "Candidate's full name" },
13
- "title": { "type": "string", "description": "Professional job title or target role" },
14
- "email": { "type": "string", "format": "email" },
15
- "phone": { "type": "string" },
16
- "location": { "type": "string" },
17
- "website": { "type": "string" },
18
- "github": { "type": "string" },
19
- "summary": { "type": "string", "description": "Core Value Proposition (15-30 words)" }
20
- }
13
+ "name": {
14
+ "type": [
15
+ "string",
16
+ "null"
17
+ ],
18
+ "description": "Candidate's full name"
19
+ },
20
+ "title": {
21
+ "type": [
22
+ "string",
23
+ "null"
24
+ ],
25
+ "description": "Professional job title or target role"
26
+ },
27
+ "email": {
28
+ "type": [
29
+ "string",
30
+ "null"
31
+ ],
32
+ "format": "email"
33
+ },
34
+ "phone": {
35
+ "type": [
36
+ "string",
37
+ "null"
38
+ ]
39
+ },
40
+ "location": {
41
+ "type": [
42
+ "string",
43
+ "null"
44
+ ]
45
+ },
46
+ "website": {
47
+ "type": [
48
+ "string",
49
+ "null"
50
+ ]
51
+ },
52
+ "github": {
53
+ "type": [
54
+ "string",
55
+ "null"
56
+ ]
57
+ },
58
+ "summary": {
59
+ "type": [
60
+ "string",
61
+ "null"
62
+ ],
63
+ "description": "Core Value Proposition (15-30 words)"
64
+ }
65
+ },
66
+ "additionalProperties": false
21
67
  },
22
68
  "skills": {
23
- "type": "array",
69
+ "type": [
70
+ "array",
71
+ "null"
72
+ ],
24
73
  "items": {
25
- "type": "object",
26
- "required": ["category", "items"],
74
+ "type": [
75
+ "object",
76
+ "null"
77
+ ],
27
78
  "properties": {
28
- "category": { "type": "string" },
29
- "items": { "type": "array", "items": { "type": "string" } },
30
- "highlighted": { "type": "array", "items": { "type": "string" } }
31
- }
79
+ "category": {
80
+ "type": [
81
+ "string",
82
+ "null"
83
+ ]
84
+ },
85
+ "items": {
86
+ "type": [
87
+ "array",
88
+ "null"
89
+ ],
90
+ "items": {
91
+ "type": [
92
+ "string",
93
+ "null"
94
+ ]
95
+ }
96
+ },
97
+ "highlighted": {
98
+ "type": [
99
+ "array",
100
+ "null"
101
+ ],
102
+ "items": {
103
+ "type": [
104
+ "string",
105
+ "null"
106
+ ]
107
+ }
108
+ }
109
+ },
110
+ "additionalProperties": false
32
111
  }
33
112
  },
34
113
  "experience": {
35
- "type": "array",
114
+ "type": [
115
+ "array",
116
+ "null"
117
+ ],
36
118
  "items": {
37
- "type": "object",
38
- "required": ["company", "role", "startDate", "endDate", "bullets"],
119
+ "type": [
120
+ "object",
121
+ "null"
122
+ ],
39
123
  "properties": {
40
- "company": { "type": "string" },
41
- "role": { "type": "string" },
42
- "startDate": { "type": "string" },
43
- "endDate": { "type": "string" },
44
- "location": { "type": "string" },
45
- "summary": { "type": "string" },
124
+ "company": {
125
+ "type": [
126
+ "string",
127
+ "null"
128
+ ]
129
+ },
130
+ "role": {
131
+ "type": [
132
+ "string",
133
+ "null"
134
+ ]
135
+ },
136
+ "startDate": {
137
+ "type": [
138
+ "string",
139
+ "null"
140
+ ]
141
+ },
142
+ "endDate": {
143
+ "type": [
144
+ "string",
145
+ "null"
146
+ ]
147
+ },
148
+ "location": {
149
+ "type": [
150
+ "string",
151
+ "null"
152
+ ]
153
+ },
154
+ "summary": {
155
+ "type": [
156
+ "string",
157
+ "null"
158
+ ]
159
+ },
46
160
  "bullets": {
47
- "type": "array",
161
+ "type": [
162
+ "array",
163
+ "null"
164
+ ],
48
165
  "items": {
49
- "type": "object",
50
- "required": ["text", "evidenceLevel"],
166
+ "type": [
167
+ "object",
168
+ "null"
169
+ ],
51
170
  "properties": {
52
- "text": { "type": "string" },
53
- "evidenceLevel": { "type": "string", "enum": ["L1", "L2", "L3"] },
54
- "evidenceSource": { "type": "string" },
55
- "keywords": { "type": "array", "items": { "type": "string" } }
56
- }
171
+ "text": {
172
+ "type": [
173
+ "string",
174
+ "null"
175
+ ]
176
+ },
177
+ "evidenceLevel": {
178
+ "type": [
179
+ "string",
180
+ "null"
181
+ ],
182
+ "enum": [
183
+ "L1",
184
+ "L2",
185
+ "L3",
186
+ null
187
+ ]
188
+ },
189
+ "evidenceSource": {
190
+ "type": [
191
+ "string",
192
+ "null"
193
+ ]
194
+ },
195
+ "keywords": {
196
+ "type": [
197
+ "array",
198
+ "null"
199
+ ],
200
+ "items": {
201
+ "type": [
202
+ "string",
203
+ "null"
204
+ ]
205
+ }
206
+ }
207
+ },
208
+ "additionalProperties": false
57
209
  }
58
210
  }
59
- }
211
+ },
212
+ "additionalProperties": false
60
213
  }
61
214
  },
62
215
  "projects": {
63
- "type": "array",
216
+ "type": [
217
+ "array",
218
+ "null"
219
+ ],
64
220
  "items": {
65
- "type": "object",
66
- "required": ["name", "role", "techStack", "bullets"],
221
+ "type": [
222
+ "object",
223
+ "null"
224
+ ],
67
225
  "properties": {
68
- "name": { "type": "string" },
69
- "role": { "type": "string" },
70
- "techStack": { "type": "array", "items": { "type": "string" } },
71
- "repoUrl": { "type": "string" },
72
- "demoUrl": { "type": "string" },
73
- "startDate": { "type": "string" },
74
- "endDate": { "type": "string" },
226
+ "name": {
227
+ "type": [
228
+ "string",
229
+ "null"
230
+ ]
231
+ },
232
+ "role": {
233
+ "type": [
234
+ "string",
235
+ "null"
236
+ ]
237
+ },
238
+ "techStack": {
239
+ "type": [
240
+ "array",
241
+ "null"
242
+ ],
243
+ "items": {
244
+ "type": [
245
+ "string",
246
+ "null"
247
+ ]
248
+ }
249
+ },
250
+ "repoUrl": {
251
+ "type": [
252
+ "string",
253
+ "null"
254
+ ]
255
+ },
256
+ "demoUrl": {
257
+ "type": [
258
+ "string",
259
+ "null"
260
+ ]
261
+ },
262
+ "startDate": {
263
+ "type": [
264
+ "string",
265
+ "null"
266
+ ]
267
+ },
268
+ "endDate": {
269
+ "type": [
270
+ "string",
271
+ "null"
272
+ ]
273
+ },
75
274
  "bullets": {
76
- "type": "array",
275
+ "type": [
276
+ "array",
277
+ "null"
278
+ ],
77
279
  "items": {
78
- "type": "object",
79
- "required": ["text", "evidenceLevel"],
280
+ "type": [
281
+ "object",
282
+ "null"
283
+ ],
80
284
  "properties": {
81
- "text": { "type": "string" },
82
- "evidenceLevel": { "type": "string", "enum": ["L1", "L2", "L3"] },
83
- "evidenceSource": { "type": "string" },
84
- "keywords": { "type": "array", "items": { "type": "string" } }
85
- }
285
+ "text": {
286
+ "type": [
287
+ "string",
288
+ "null"
289
+ ]
290
+ },
291
+ "evidenceLevel": {
292
+ "type": [
293
+ "string",
294
+ "null"
295
+ ],
296
+ "enum": [
297
+ "L1",
298
+ "L2",
299
+ "L3",
300
+ null
301
+ ]
302
+ },
303
+ "evidenceSource": {
304
+ "type": [
305
+ "string",
306
+ "null"
307
+ ]
308
+ },
309
+ "keywords": {
310
+ "type": [
311
+ "array",
312
+ "null"
313
+ ],
314
+ "items": {
315
+ "type": [
316
+ "string",
317
+ "null"
318
+ ]
319
+ }
320
+ }
321
+ },
322
+ "additionalProperties": false
86
323
  }
87
324
  }
88
- }
325
+ },
326
+ "additionalProperties": false
89
327
  }
90
328
  },
91
329
  "education": {
92
- "type": "array",
330
+ "type": [
331
+ "array",
332
+ "null"
333
+ ],
93
334
  "items": {
94
- "type": "object",
95
- "required": ["institution", "degree", "startDate", "endDate"],
335
+ "type": [
336
+ "object",
337
+ "null"
338
+ ],
96
339
  "properties": {
97
- "institution": { "type": "string" },
98
- "degree": { "type": "string" },
99
- "field": { "type": "string" },
100
- "startDate": { "type": "string" },
101
- "endDate": { "type": "string" },
102
- "gpa": { "type": "string" },
103
- "honors": { "type": "array", "items": { "type": "string" } }
104
- }
340
+ "institution": {
341
+ "type": [
342
+ "string",
343
+ "null"
344
+ ]
345
+ },
346
+ "degree": {
347
+ "type": [
348
+ "string",
349
+ "null"
350
+ ]
351
+ },
352
+ "field": {
353
+ "type": [
354
+ "string",
355
+ "null"
356
+ ]
357
+ },
358
+ "startDate": {
359
+ "type": [
360
+ "string",
361
+ "null"
362
+ ]
363
+ },
364
+ "endDate": {
365
+ "type": [
366
+ "string",
367
+ "null"
368
+ ]
369
+ },
370
+ "gpa": {
371
+ "type": [
372
+ "string",
373
+ "null"
374
+ ]
375
+ },
376
+ "honors": {
377
+ "type": [
378
+ "array",
379
+ "null"
380
+ ],
381
+ "items": {
382
+ "type": [
383
+ "string",
384
+ "null"
385
+ ]
386
+ }
387
+ },
388
+ "summary": {
389
+ "type": [
390
+ "string",
391
+ "null"
392
+ ]
393
+ }
394
+ },
395
+ "additionalProperties": false
105
396
  }
106
397
  },
107
398
  "certifications": {
108
- "type": "array",
109
- "items": { "type": "string" }
399
+ "type": [
400
+ "array",
401
+ "null"
402
+ ],
403
+ "items": {
404
+ "type": [
405
+ "string",
406
+ "null"
407
+ ]
408
+ }
409
+ },
410
+ "language": {
411
+ "type": [
412
+ "string",
413
+ "null"
414
+ ]
110
415
  }
111
- }
416
+ },
417
+ "additionalProperties": false
112
418
  }