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.
- package/AGENT.md +7 -6
- package/ARCHITECTURE.md +18 -15
- package/README.md +23 -15
- package/README.zh-CN.md +23 -15
- package/SKILL.md +26 -33
- package/agents/codex/knowme-careerforge.yaml +1 -1
- package/agents/opencode/skill.yaml +1 -1
- package/dist/cli/src/index.js +22 -14
- package/package.json +1 -1
- package/references/01-evidence-mining.md +80 -3
- package/references/02-career-goal.md +35 -15
- package/references/03-jd-analysis.md +10 -0
- package/references/04-template-selection.md +7 -2
- package/references/05-html-canvas-tokens.md +4 -2
- package/references/06-qa-and-rendering.md +39 -5
- package/references/07-artifact-contract.md +21 -7
- package/scripts/Agent.md +3 -3
- package/scripts/build/build-gallery.py +2 -1
- package/scripts/build/release.py +3 -2
- package/scripts/evidence/analyze-jd.py +49 -8
- package/scripts/evidence/extract-evidence.py +17 -391
- package/scripts/pipeline/forge.py +159 -85
- package/scripts/rendering/browser-engine.js +5 -1
- package/scripts/template/instantiate-resume.py +5 -3
- package/skill.json +1 -1
- package/src/knowledge/career/seniority-signals.json +1 -0
- package/src/knowledge/index.json +176 -2
- package/src/knowledge/resume/action-verbs.json +3 -2
- package/src/knowledge/resume/fab-model.json +5 -4
- package/src/knowledge/resume-schema.json +1 -1
- package/src/knowledge/templates.json +174 -0
- package/src/references/01-evidence-mining.md +80 -3
- package/src/references/02-career-goal.md +35 -15
- package/src/references/03-jd-analysis.md +10 -0
- package/src/references/04-template-selection.md +7 -2
- package/src/references/05-html-canvas-tokens.md +4 -2
- package/src/references/06-qa-and-rendering.md +39 -5
- package/src/references/07-artifact-contract.md +21 -7
- package/src/templates/academic-research/canvas.html +2 -1
- package/src/templates/classic/canvas.html +2 -1
- package/src/templates/classic/style.css +90 -28
- package/src/templates/common/base.css +19 -3
- package/src/templates/common/canvas-bindings.css +247 -12
- package/src/templates/compact-dense/style.css +5 -1
- package/src/templates/creative-tech/style.css +30 -1
- package/src/templates/data-analyst/style.css +31 -1
- package/src/templates/editorial/README.md +7 -0
- package/src/templates/editorial/canvas.html +22 -0
- package/src/templates/editorial/metadata.json +36 -0
- package/src/templates/editorial/sample-profile.json +86 -0
- package/src/templates/editorial/style.css +24 -0
- package/src/templates/executive/style.css +52 -18
- package/src/templates/graduate/README.md +7 -0
- package/src/templates/graduate/canvas.html +22 -0
- package/src/templates/graduate/metadata.json +38 -0
- package/src/templates/graduate/sample-profile.json +60 -0
- package/src/templates/graduate/style.css +24 -0
- package/src/templates/international-flow/canvas.html +2 -1
- package/src/templates/minimal/canvas.html +3 -2
- package/src/templates/minimal/style.css +6 -0
- package/src/templates/modern/style.css +43 -55
- package/src/templates/project-focus/README.md +7 -0
- package/src/templates/project-focus/canvas.html +22 -0
- package/src/templates/project-focus/metadata.json +36 -0
- package/src/templates/project-focus/sample-profile.json +93 -0
- package/src/templates/project-focus/style.css +24 -0
- package/src/templates/startup-generalist/canvas.html +2 -1
- package/src/templates/startup-generalist/style.css +15 -8
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "editorial",
|
|
3
|
+
"name": "Editorial · 经历叙事",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"style": "single-column-editorial",
|
|
6
|
+
"roleCategory": "professional",
|
|
7
|
+
"description": "经历优先,左侧章节索引与右侧正文对齐;适合已有连续工作经历的候选人。",
|
|
8
|
+
"layout": {
|
|
9
|
+
"type": "single-column",
|
|
10
|
+
"targetPages": 1,
|
|
11
|
+
"maxPages": 1,
|
|
12
|
+
"density": "balanced"
|
|
13
|
+
},
|
|
14
|
+
"visualStyle": {
|
|
15
|
+
"tone": "editorial-readable",
|
|
16
|
+
"accentColor": "#254665",
|
|
17
|
+
"fontFamily": "System Sans-Serif"
|
|
18
|
+
},
|
|
19
|
+
"atsScoreTier": "tier-1-optimal",
|
|
20
|
+
"supportedRoles": [
|
|
21
|
+
"professional",
|
|
22
|
+
"consultant"
|
|
23
|
+
],
|
|
24
|
+
"languages": [
|
|
25
|
+
"zh-CN",
|
|
26
|
+
"en-US"
|
|
27
|
+
],
|
|
28
|
+
"customizableTokens": [
|
|
29
|
+
"--resume-font-size-body",
|
|
30
|
+
"--resume-line-height-body",
|
|
31
|
+
"--resume-space-section",
|
|
32
|
+
"--resume-space-item",
|
|
33
|
+
"--resume-space-bullet",
|
|
34
|
+
"--resume-color-accent"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "zh-CN",
|
|
3
|
+
"basics": {
|
|
4
|
+
"name": "示例候选人",
|
|
5
|
+
"title": "后端开发工程师",
|
|
6
|
+
"email": "candidate@example.com",
|
|
7
|
+
"phone": "138-0000-0000",
|
|
8
|
+
"location": "示例城市",
|
|
9
|
+
"summary": "虚构排版样例,机构和经历均为演示内容。实践涵盖业务接口开发、数据校验与团队交付。"
|
|
10
|
+
},
|
|
11
|
+
"skills": [
|
|
12
|
+
{
|
|
13
|
+
"category": "工程实践",
|
|
14
|
+
"items": [
|
|
15
|
+
"Python",
|
|
16
|
+
"TypeScript",
|
|
17
|
+
"SQL"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"category": "协作与交付",
|
|
22
|
+
"items": [
|
|
23
|
+
"需求分析",
|
|
24
|
+
"质量验证",
|
|
25
|
+
"技术文档"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"experience": [
|
|
30
|
+
{
|
|
31
|
+
"company": "示例科技公司(虚构)",
|
|
32
|
+
"role": "后端开发工程师",
|
|
33
|
+
"startDate": "2022.07",
|
|
34
|
+
"endDate": "2025.06",
|
|
35
|
+
"bullets": [
|
|
36
|
+
{
|
|
37
|
+
"text": "负责示例业务模块的需求分析、实现与交付,整理接口约定和验收标准。"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"text": "与产品和测试协作完成版本迭代,补充异常场景验证及使用文档。"
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"company": "示例工作室(虚构)",
|
|
46
|
+
"role": "后端开发工程师",
|
|
47
|
+
"startDate": "2020.07",
|
|
48
|
+
"endDate": "2022.06",
|
|
49
|
+
"bullets": [
|
|
50
|
+
{
|
|
51
|
+
"text": "参与内部工具开发,梳理业务流程并维护数据校验规则。"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"projects": [
|
|
57
|
+
{
|
|
58
|
+
"name": "业务协作平台(虚构项目)",
|
|
59
|
+
"role": "核心开发",
|
|
60
|
+
"techStack": [
|
|
61
|
+
"TypeScript",
|
|
62
|
+
"Python",
|
|
63
|
+
"PostgreSQL"
|
|
64
|
+
],
|
|
65
|
+
"startDate": "2024.01",
|
|
66
|
+
"endDate": "2024.10",
|
|
67
|
+
"bullets": [
|
|
68
|
+
{
|
|
69
|
+
"text": "实现任务分配、进度记录与报表导出,建立可复用的数据访问接口。"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"text": "补充自动化校验和部署说明,支持团队复现开发环境。"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"education": [
|
|
78
|
+
{
|
|
79
|
+
"institution": "示例大学(虚构)",
|
|
80
|
+
"degree": "学士",
|
|
81
|
+
"field": "计算机科学",
|
|
82
|
+
"startDate": "2016.09",
|
|
83
|
+
"endDate": "2020.06"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* Component tokens; shared reading components live in common/canvas-bindings.css. */
|
|
2
|
+
:root {
|
|
3
|
+
--resume-page-padding: 14mm 16mm;
|
|
4
|
+
--resume-font-body: var(--primitive-font-sans);
|
|
5
|
+
--resume-font-size-name: 22pt;
|
|
6
|
+
--resume-font-size-target: 10.5pt;
|
|
7
|
+
--resume-font-size-h2: 11pt;
|
|
8
|
+
--resume-font-size-body: 9.2pt;
|
|
9
|
+
--resume-font-size-meta: 8.5pt;
|
|
10
|
+
--resume-line-height-body: 1.45;
|
|
11
|
+
--resume-space-header-bottom: 10pt;
|
|
12
|
+
--resume-space-section: 11pt;
|
|
13
|
+
--resume-space-item: 7pt;
|
|
14
|
+
--resume-space-bullet: 2pt;
|
|
15
|
+
--resume-color-primary: var(--primitive-color-slate-900);
|
|
16
|
+
--resume-color-secondary: var(--primitive-color-slate-700);
|
|
17
|
+
--resume-color-muted: var(--primitive-color-slate-600);
|
|
18
|
+
--resume-color-border: var(--primitive-color-slate-200);
|
|
19
|
+
--resume-color-tag-bg: var(--primitive-color-slate-50);
|
|
20
|
+
--resume-color-accent: #254665;
|
|
21
|
+
}
|
|
22
|
+
.canvas-editorial .resume-section { display: grid; grid-template-columns: 25mm minmax(0, 1fr); column-gap: 6mm; }
|
|
23
|
+
.canvas-editorial .resume-section > :not(.section-title) { grid-column: 2; }
|
|
24
|
+
.canvas-editorial .resume-section > .section-title { grid-column: 1; grid-row: 1 / span 20; }
|
|
@@ -41,36 +41,65 @@
|
|
|
41
41
|
.executive-banner {
|
|
42
42
|
background-color: var(--resume-color-banner-bg);
|
|
43
43
|
color: var(--resume-color-banner-text);
|
|
44
|
-
padding:
|
|
45
|
-
display: flex;
|
|
46
|
-
justify-content: space-between;
|
|
47
|
-
align-items: center;
|
|
44
|
+
padding: 10mm 16mm 8mm 16mm;
|
|
48
45
|
border-bottom: 3.5px solid var(--resume-color-accent);
|
|
49
46
|
}
|
|
50
47
|
|
|
51
|
-
.banner-
|
|
52
|
-
|
|
48
|
+
.executive-banner .resume-header {
|
|
49
|
+
width: 100%;
|
|
50
|
+
display: grid;
|
|
51
|
+
grid-template-columns: 1fr auto;
|
|
52
|
+
grid-template-areas:
|
|
53
|
+
"name contacts"
|
|
54
|
+
"target contacts";
|
|
55
|
+
row-gap: 2pt;
|
|
56
|
+
column-gap: 16pt;
|
|
57
|
+
align-items: center;
|
|
53
58
|
}
|
|
54
59
|
|
|
55
|
-
.candidate-name {
|
|
60
|
+
.executive-banner .candidate-name, .candidate-name {
|
|
61
|
+
grid-area: name;
|
|
56
62
|
font-size: var(--resume-font-size-name);
|
|
57
63
|
font-weight: 800;
|
|
58
|
-
letter-spacing:
|
|
64
|
+
letter-spacing: 0.5px;
|
|
65
|
+
color: #ffffff;
|
|
66
|
+
margin: 0;
|
|
59
67
|
}
|
|
60
68
|
|
|
61
|
-
.candidate-title {
|
|
62
|
-
|
|
69
|
+
.executive-banner .job-target, .candidate-title {
|
|
70
|
+
grid-area: target;
|
|
71
|
+
font-size: var(--resume-font-size-target);
|
|
63
72
|
color: var(--primitive-color-sky-400);
|
|
64
73
|
font-weight: 600;
|
|
65
|
-
margin
|
|
74
|
+
margin: 0;
|
|
66
75
|
}
|
|
67
76
|
|
|
68
|
-
.
|
|
77
|
+
.executive-banner .contact-grid {
|
|
78
|
+
grid-area: contacts;
|
|
79
|
+
display: flex;
|
|
80
|
+
flex-direction: column;
|
|
81
|
+
align-items: flex-end;
|
|
82
|
+
gap: 3pt;
|
|
69
83
|
font-size: 8.5pt;
|
|
70
|
-
color: var(--resume-color-banner-muted);
|
|
71
|
-
margin
|
|
72
|
-
|
|
73
|
-
|
|
84
|
+
color: var(--resume-color-banner-muted, #cbd5e1);
|
|
85
|
+
margin: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.executive-banner .contact-item {
|
|
89
|
+
display: inline-flex;
|
|
90
|
+
align-items: center;
|
|
91
|
+
color: inherit;
|
|
92
|
+
white-space: nowrap;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.banner-left {
|
|
96
|
+
flex: 1;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.value-prop {
|
|
100
|
+
font-size: 8.8pt;
|
|
101
|
+
color: var(--resume-color-secondary);
|
|
102
|
+
line-height: 1.45;
|
|
74
103
|
}
|
|
75
104
|
|
|
76
105
|
.banner-right {
|
|
@@ -81,7 +110,6 @@
|
|
|
81
110
|
font-size: 8pt;
|
|
82
111
|
color: var(--resume-color-banner-muted);
|
|
83
112
|
}
|
|
84
|
-
|
|
85
113
|
.badge-item {
|
|
86
114
|
display: flex;
|
|
87
115
|
align-items: center;
|
|
@@ -121,7 +149,7 @@
|
|
|
121
149
|
gap: var(--resume-space-section);
|
|
122
150
|
}
|
|
123
151
|
|
|
124
|
-
.sub-title, .main-title {
|
|
152
|
+
.section-title, .sub-title, .main-title {
|
|
125
153
|
font-size: 11pt;
|
|
126
154
|
font-weight: 700;
|
|
127
155
|
color: var(--resume-color-accent);
|
|
@@ -242,3 +270,9 @@
|
|
|
242
270
|
.education-item {
|
|
243
271
|
margin-bottom: var(--resume-space-item);
|
|
244
272
|
}
|
|
273
|
+
.edu-detail {
|
|
274
|
+
font-size: var(--resume-font-size-body);
|
|
275
|
+
color: var(--resume-color-secondary);
|
|
276
|
+
line-height: var(--resume-line-height-body);
|
|
277
|
+
margin-top: 2pt;
|
|
278
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="{{ resume:language }}">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title><!-- resume:document-title --></title>
|
|
7
|
+
<!-- resume:styles -->
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="resume-page bound-canvas canvas-reading canvas-graduate">
|
|
11
|
+
<main>
|
|
12
|
+
<!-- resume:basics -->
|
|
13
|
+
<!-- resume:summary -->
|
|
14
|
+
<!-- resume:education -->
|
|
15
|
+
<!-- resume:projects -->
|
|
16
|
+
<!-- resume:experience -->
|
|
17
|
+
<!-- resume:skills -->
|
|
18
|
+
<!-- resume:certifications -->
|
|
19
|
+
</main>
|
|
20
|
+
</div>
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "graduate",
|
|
3
|
+
"name": "Graduate · 校园起点",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"style": "single-column-education-first",
|
|
6
|
+
"roleCategory": "early-career",
|
|
7
|
+
"description": "教育与项目优先,宽松单栏;适合应届生、实习申请和较少工作经历。",
|
|
8
|
+
"layout": {
|
|
9
|
+
"type": "single-column",
|
|
10
|
+
"targetPages": 1,
|
|
11
|
+
"maxPages": 1,
|
|
12
|
+
"density": "balanced"
|
|
13
|
+
},
|
|
14
|
+
"visualStyle": {
|
|
15
|
+
"tone": "editorial-readable",
|
|
16
|
+
"accentColor": "#0f766e",
|
|
17
|
+
"fontFamily": "System Sans-Serif"
|
|
18
|
+
},
|
|
19
|
+
"atsScoreTier": "tier-1-optimal",
|
|
20
|
+
"supportedRoles": [
|
|
21
|
+
"graduate",
|
|
22
|
+
"intern",
|
|
23
|
+
"应届",
|
|
24
|
+
"实习"
|
|
25
|
+
],
|
|
26
|
+
"languages": [
|
|
27
|
+
"zh-CN",
|
|
28
|
+
"en-US"
|
|
29
|
+
],
|
|
30
|
+
"customizableTokens": [
|
|
31
|
+
"--resume-font-size-body",
|
|
32
|
+
"--resume-line-height-body",
|
|
33
|
+
"--resume-space-section",
|
|
34
|
+
"--resume-space-item",
|
|
35
|
+
"--resume-space-bullet",
|
|
36
|
+
"--resume-color-accent"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "zh-CN",
|
|
3
|
+
"basics": {
|
|
4
|
+
"name": "示例候选人",
|
|
5
|
+
"title": "软件开发实习生",
|
|
6
|
+
"email": "candidate@example.com",
|
|
7
|
+
"phone": "138-0000-0000",
|
|
8
|
+
"location": "示例城市",
|
|
9
|
+
"summary": "虚构排版样例,机构和经历均为演示内容。通过课程项目实践接口开发、数据处理和测试。"
|
|
10
|
+
},
|
|
11
|
+
"skills": [
|
|
12
|
+
{
|
|
13
|
+
"category": "工程实践",
|
|
14
|
+
"items": [
|
|
15
|
+
"Python",
|
|
16
|
+
"TypeScript",
|
|
17
|
+
"SQL"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"category": "协作与交付",
|
|
22
|
+
"items": [
|
|
23
|
+
"需求分析",
|
|
24
|
+
"质量验证",
|
|
25
|
+
"技术文档"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"experience": [],
|
|
30
|
+
"projects": [
|
|
31
|
+
{
|
|
32
|
+
"name": "课程协作平台(虚构课程项目)",
|
|
33
|
+
"role": "课程项目成员",
|
|
34
|
+
"techStack": [
|
|
35
|
+
"TypeScript",
|
|
36
|
+
"Python",
|
|
37
|
+
"PostgreSQL"
|
|
38
|
+
],
|
|
39
|
+
"startDate": "2024.01",
|
|
40
|
+
"endDate": "2024.10",
|
|
41
|
+
"bullets": [
|
|
42
|
+
{
|
|
43
|
+
"text": "实现任务分配、进度记录与报表导出,建立可复用的数据访问接口。"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"text": "补充自动化校验和部署说明,支持团队复现开发环境。"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"education": [
|
|
52
|
+
{
|
|
53
|
+
"institution": "示例大学(虚构)",
|
|
54
|
+
"degree": "学士",
|
|
55
|
+
"field": "计算机科学",
|
|
56
|
+
"startDate": "2022.09",
|
|
57
|
+
"endDate": "2026.06"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* Component tokens; shared reading components live in common/canvas-bindings.css. */
|
|
2
|
+
:root {
|
|
3
|
+
--resume-page-padding: 14mm 16mm;
|
|
4
|
+
--resume-font-body: var(--primitive-font-sans);
|
|
5
|
+
--resume-font-size-name: 22pt;
|
|
6
|
+
--resume-font-size-target: 10.5pt;
|
|
7
|
+
--resume-font-size-h2: 11pt;
|
|
8
|
+
--resume-font-size-body: 9.2pt;
|
|
9
|
+
--resume-font-size-meta: 8.5pt;
|
|
10
|
+
--resume-line-height-body: 1.45;
|
|
11
|
+
--resume-space-header-bottom: 10pt;
|
|
12
|
+
--resume-space-section: 11pt;
|
|
13
|
+
--resume-space-item: 7pt;
|
|
14
|
+
--resume-space-bullet: 2pt;
|
|
15
|
+
--resume-color-primary: var(--primitive-color-slate-900);
|
|
16
|
+
--resume-color-secondary: var(--primitive-color-slate-700);
|
|
17
|
+
--resume-color-muted: var(--primitive-color-slate-600);
|
|
18
|
+
--resume-color-border: var(--primitive-color-slate-200);
|
|
19
|
+
--resume-color-tag-bg: var(--primitive-color-slate-50);
|
|
20
|
+
--resume-color-accent: #0f766e;
|
|
21
|
+
}
|
|
22
|
+
.canvas-graduate .resume-header { border-top: 3pt solid var(--resume-color-accent); padding-top: 10pt; }
|
|
23
|
+
.canvas-graduate .section-title { border-bottom: 1px solid var(--resume-color-border); padding-bottom: 5pt; }
|
|
24
|
+
.canvas-graduate .edu-detail { font-size: 8.8pt; color: var(--resume-color-secondary); font-weight: 500; margin-top: 2pt; }
|
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
<main>
|
|
12
12
|
<!-- resume:basics -->
|
|
13
13
|
<!-- resume:summary -->
|
|
14
|
-
<!-- resume:skills -->
|
|
15
14
|
<!-- resume:experience -->
|
|
16
15
|
<!-- resume:projects -->
|
|
17
|
-
<!-- resume:
|
|
16
|
+
<!-- resume:skills -->
|
|
17
|
+
<!-- resume:education -->
|
|
18
|
+
<!-- resume:certifications -->
|
|
18
19
|
</main>
|
|
19
20
|
</div>
|
|
20
21
|
</body>
|
|
@@ -199,3 +199,9 @@
|
|
|
199
199
|
color: var(--resume-color-secondary);
|
|
200
200
|
line-height: var(--resume-line-height-body);
|
|
201
201
|
}
|
|
202
|
+
.value-prop {
|
|
203
|
+
font-size: var(--resume-font-size-body);
|
|
204
|
+
color: var(--resume-color-secondary);
|
|
205
|
+
line-height: var(--resume-line-height-body);
|
|
206
|
+
margin-bottom: 4pt;
|
|
207
|
+
}
|
|
@@ -51,25 +51,6 @@
|
|
|
51
51
|
gap: 14pt;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
.sidebar-avatar-wrapper {
|
|
55
|
-
display: flex;
|
|
56
|
-
justify-content: center;
|
|
57
|
-
margin-bottom: 4pt;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.avatar-placeholder {
|
|
61
|
-
width: 76pt;
|
|
62
|
-
height: 98pt;
|
|
63
|
-
border-radius: 4pt;
|
|
64
|
-
background: rgba(255, 255, 255, 0.15);
|
|
65
|
-
border: 1px dashed rgba(255, 255, 255, 0.4);
|
|
66
|
-
display: flex;
|
|
67
|
-
align-items: center;
|
|
68
|
-
justify-content: center;
|
|
69
|
-
font-size: 8.5pt;
|
|
70
|
-
color: var(--resume-color-sidebar-muted);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
54
|
.sidebar-title {
|
|
74
55
|
font-size: 11pt;
|
|
75
56
|
font-weight: 700;
|
|
@@ -94,37 +75,6 @@
|
|
|
94
75
|
color: var(--resume-color-sidebar-muted);
|
|
95
76
|
}
|
|
96
77
|
|
|
97
|
-
.skill-meter-group {
|
|
98
|
-
display: flex;
|
|
99
|
-
flex-direction: column;
|
|
100
|
-
gap: 6pt;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.skill-meter-item {
|
|
104
|
-
font-size: 8pt;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.skill-meter-label {
|
|
108
|
-
display: flex;
|
|
109
|
-
justify-content: space-between;
|
|
110
|
-
margin-bottom: 2pt;
|
|
111
|
-
color: var(--resume-color-sidebar-text);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.meter-bar {
|
|
115
|
-
width: 100%;
|
|
116
|
-
height: 4pt;
|
|
117
|
-
background: rgba(255, 255, 255, 0.2);
|
|
118
|
-
border-radius: 2pt;
|
|
119
|
-
overflow: hidden;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
.meter-fill {
|
|
123
|
-
height: 100%;
|
|
124
|
-
background: var(--resume-color-sidebar-accent);
|
|
125
|
-
border-radius: 2pt;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
78
|
.sidebar-tags-list {
|
|
129
79
|
list-style: none;
|
|
130
80
|
font-size: 8.5pt;
|
|
@@ -141,10 +91,10 @@
|
|
|
141
91
|
color: var(--resume-color-primary);
|
|
142
92
|
}
|
|
143
93
|
|
|
144
|
-
.main-header {
|
|
145
|
-
margin-bottom:
|
|
94
|
+
.main-header, .resume-header {
|
|
95
|
+
margin-bottom: 10pt;
|
|
146
96
|
border-bottom: 2px solid var(--resume-color-border);
|
|
147
|
-
padding-bottom:
|
|
97
|
+
padding-bottom: 7pt;
|
|
148
98
|
}
|
|
149
99
|
|
|
150
100
|
.candidate-name {
|
|
@@ -161,6 +111,22 @@
|
|
|
161
111
|
margin-top: 2pt;
|
|
162
112
|
}
|
|
163
113
|
|
|
114
|
+
.contact-grid {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-wrap: wrap;
|
|
117
|
+
gap: 3pt 12pt;
|
|
118
|
+
margin-top: 4pt;
|
|
119
|
+
font-size: var(--resume-font-size-meta);
|
|
120
|
+
color: var(--resume-color-muted);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.contact-item {
|
|
124
|
+
display: inline-flex;
|
|
125
|
+
align-items: center;
|
|
126
|
+
gap: 2pt;
|
|
127
|
+
white-space: nowrap;
|
|
128
|
+
}
|
|
129
|
+
|
|
164
130
|
.resume-section {
|
|
165
131
|
margin-bottom: var(--resume-space-section);
|
|
166
132
|
}
|
|
@@ -175,14 +141,28 @@
|
|
|
175
141
|
margin-bottom: 6pt;
|
|
176
142
|
}
|
|
177
143
|
|
|
178
|
-
.
|
|
144
|
+
.resume-main .section-title::before {
|
|
145
|
+
content: "";
|
|
179
146
|
display: inline-block;
|
|
180
147
|
width: 3.5pt;
|
|
181
148
|
height: 11pt;
|
|
182
149
|
background-color: var(--resume-color-accent);
|
|
183
150
|
border-radius: 1pt;
|
|
151
|
+
margin-right: 2pt;
|
|
152
|
+
flex-shrink: 0;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.resume-sidebar .section-title::before {
|
|
156
|
+
display: none;
|
|
184
157
|
}
|
|
185
158
|
|
|
159
|
+
.title-bar {
|
|
160
|
+
display: inline-block;
|
|
161
|
+
width: 3.5pt;
|
|
162
|
+
height: 11pt;
|
|
163
|
+
background-color: var(--resume-color-accent);
|
|
164
|
+
border-radius: 1pt;
|
|
165
|
+
}
|
|
186
166
|
.timeline-item {
|
|
187
167
|
margin-bottom: var(--resume-space-item);
|
|
188
168
|
}
|
|
@@ -232,10 +212,18 @@
|
|
|
232
212
|
margin-bottom: var(--resume-space-bullet);
|
|
233
213
|
}
|
|
234
214
|
|
|
235
|
-
.edu-desc {
|
|
215
|
+
.edu-desc, .edu-detail {
|
|
236
216
|
font-size: var(--resume-font-size-body);
|
|
237
217
|
color: var(--resume-color-secondary);
|
|
238
218
|
line-height: var(--resume-line-height-body);
|
|
219
|
+
margin-top: 2pt;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.value-prop {
|
|
223
|
+
font-size: var(--resume-font-size-body);
|
|
224
|
+
color: var(--resume-color-secondary);
|
|
225
|
+
line-height: var(--resume-line-height-body);
|
|
226
|
+
margin-bottom: 6pt;
|
|
239
227
|
}
|
|
240
228
|
|
|
241
229
|
/* === GENERATED HTML COMPONENT CLASSES ===
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="{{ resume:language }}">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title><!-- resume:document-title --></title>
|
|
7
|
+
<!-- resume:styles -->
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div class="resume-page bound-canvas canvas-reading canvas-project-focus">
|
|
11
|
+
<main>
|
|
12
|
+
<!-- resume:basics -->
|
|
13
|
+
<!-- resume:summary -->
|
|
14
|
+
<!-- resume:projects -->
|
|
15
|
+
<!-- resume:experience -->
|
|
16
|
+
<!-- resume:skills -->
|
|
17
|
+
<!-- resume:education -->
|
|
18
|
+
<!-- resume:certifications -->
|
|
19
|
+
</main>
|
|
20
|
+
</div>
|
|
21
|
+
</body>
|
|
22
|
+
</html>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "project-focus",
|
|
3
|
+
"name": "Project Focus · 项目实践",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"style": "single-column-project-first",
|
|
6
|
+
"roleCategory": "portfolio",
|
|
7
|
+
"description": "项目优先,项目条目以细边线分隔;适合项目证据比工作履历更突出的候选人。",
|
|
8
|
+
"layout": {
|
|
9
|
+
"type": "single-column",
|
|
10
|
+
"targetPages": 1,
|
|
11
|
+
"maxPages": 1,
|
|
12
|
+
"density": "balanced"
|
|
13
|
+
},
|
|
14
|
+
"visualStyle": {
|
|
15
|
+
"tone": "editorial-readable",
|
|
16
|
+
"accentColor": "#334155",
|
|
17
|
+
"fontFamily": "System Sans-Serif"
|
|
18
|
+
},
|
|
19
|
+
"atsScoreTier": "tier-1-optimal",
|
|
20
|
+
"supportedRoles": [
|
|
21
|
+
"project-engineer",
|
|
22
|
+
"portfolio"
|
|
23
|
+
],
|
|
24
|
+
"languages": [
|
|
25
|
+
"zh-CN",
|
|
26
|
+
"en-US"
|
|
27
|
+
],
|
|
28
|
+
"customizableTokens": [
|
|
29
|
+
"--resume-font-size-body",
|
|
30
|
+
"--resume-line-height-body",
|
|
31
|
+
"--resume-space-section",
|
|
32
|
+
"--resume-space-item",
|
|
33
|
+
"--resume-space-bullet",
|
|
34
|
+
"--resume-color-accent"
|
|
35
|
+
]
|
|
36
|
+
}
|