skill-forge-hub 0.1.0 → 0.3.0
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 +28 -7
- package/annual-report/SKILL.md +46 -0
- package/annual-report/resources/content-rules.md +40 -0
- package/annual-report/resources/data-collection.md +25 -0
- package/annual-report/resources/date-parsing.md +18 -0
- package/annual-report/resources/disk-and-html.md +30 -0
- package/annual-report/resources/industry-dictionary.md +19 -0
- package/annual-report/resources/reference.html +360 -0
- package/annual-report/resources/usage-guide.md +26 -0
- package/annual-report/user-config.md +40 -0
- package/cli.js +195 -32
- package/daily-report/SKILL.md +16 -24
- package/daily-report/resources/content-rules.md +9 -9
- package/daily-report/resources/disk-and-html.md +4 -2
- package/daily-report/resources/reference.html +613 -0
- package/daily-report/resources/usage-guide.md +10 -10
- package/daily-report/user-config.md +39 -0
- package/magic-deck/SKILL.md +52 -0
- package/magic-deck/resources/deck-spec.md +248 -0
- package/magic-deck/resources/reference.html +710 -0
- package/magic-deck/user-config.md +37 -0
- package/meta-forge/SKILL.md +46 -0
- package/meta-forge/resources/forge-rules.md +74 -0
- package/meta-forge/resources/usage-guide.md +41 -0
- package/meta-forge/user-config.md +19 -0
- package/package.json +4 -1
- package/spec-doc2spec/SKILL.md +50 -30
- package/spec-doc2spec/resources/checklist.md +25 -0
- package/spec-doc2spec/resources/images.md +27 -0
- package/spec-doc2spec/resources/structure.md +27 -0
- package/spec-doc2spec/resources/usage-guide.md +32 -0
- package/spec-doc2spec/user-config.md +22 -0
- package/spec-spec2doc/SKILL.md +48 -29
- package/spec-spec2doc/resources/checklist.md +24 -0
- package/spec-spec2doc/resources/images-and-template.md +14 -0
- package/spec-spec2doc/resources/pdf-path.md +21 -0
- package/spec-spec2doc/resources/usage-guide.md +32 -0
- package/spec-spec2doc/user-config.md +22 -0
- package/weekly-report/SKILL.md +16 -25
- package/weekly-report/resources/content-rules.md +10 -10
- package/weekly-report/resources/disk-and-html.md +4 -2
- package/weekly-report/resources/industry-dictionary.md +1 -1
- package/weekly-report/resources/reference.html +866 -0
- package/weekly-report/resources/usage-guide.md +10 -10
- package/weekly-report/user-config.md +40 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>2026 研发年度总结</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root{--cyan:#0ea5e9;--bg:#0a1929;--card:#0b1e37;--border:rgba(14,165,233,.15);--text:#bae6fd;--muted:#5b7fa5;--green:#14b8a6;--orange:#f97316;--purple:#6366f1;--rose:#f43f5e}
|
|
9
|
+
*{margin:0;padding:0;box-sizing:border-box}
|
|
10
|
+
html,body{background:var(--bg)}
|
|
11
|
+
body{
|
|
12
|
+
font-family:ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,'PingFang SC','Microsoft YaHei',monospace;
|
|
13
|
+
color:var(--text);-webkit-font-smoothing:antialiased;overflow-x:hidden;
|
|
14
|
+
}
|
|
15
|
+
/* 三层科技底纹 */
|
|
16
|
+
.grid-pattern{position:fixed;inset:0;z-index:0;pointer-events:none;
|
|
17
|
+
background:linear-gradient(rgba(0,240,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,240,255,.03) 1px,transparent 1px);
|
|
18
|
+
background-size:60px 60px}
|
|
19
|
+
.stars{position:fixed;inset:0;z-index:0;pointer-events:none;
|
|
20
|
+
background:radial-gradient(1px 1px at 12% 22%,rgba(255,255,255,.4),transparent),radial-gradient(1px 1px at 28% 68%,rgba(0,240,255,.5),transparent),radial-gradient(1.5px 1.5px at 45% 15%,rgba(168,85,247,.4),transparent),radial-gradient(1px 1px at 62% 78%,rgba(0,255,136,.4),transparent),radial-gradient(1px 1px at 78% 32%,rgba(255,255,255,.35),transparent),radial-gradient(1.5px 1.5px at 88% 58%,rgba(0,240,255,.45),transparent),radial-gradient(1px 1px at 8% 85%,rgba(255,255,255,.3),transparent),radial-gradient(1px 1px at 55% 45%,rgba(0,240,255,.35),transparent)}
|
|
21
|
+
.scanlines{position:fixed;inset:0;z-index:999;pointer-events:none;
|
|
22
|
+
background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,240,255,.015) 2px,rgba(0,240,255,.015) 4px)}
|
|
23
|
+
.scanband{position:fixed;left:0;right:0;height:150px;z-index:998;pointer-events:none;
|
|
24
|
+
background:linear-gradient(180deg,transparent,rgba(0,240,255,.03) 50%,transparent);
|
|
25
|
+
animation:scanMove 11s linear infinite}
|
|
26
|
+
@keyframes scanMove{from{top:-22%}to{top:112%}}
|
|
27
|
+
.wrap{position:relative;z-index:1;max-width:760px;margin:0 auto;padding:40px 20px}
|
|
28
|
+
/* 头部卡片 */
|
|
29
|
+
.header-card{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--border);border-radius:6px;
|
|
30
|
+
padding:34px 28px 26px;text-align:center;margin-bottom:18px;
|
|
31
|
+
box-shadow:0 8px 28px rgba(0,0,0,.35),inset 0 1px 0 rgba(14,165,233,.12);
|
|
32
|
+
background-image:repeating-linear-gradient(0deg,rgba(14,165,233,.02),rgba(14,165,233,.02) 8px,transparent 8px,transparent 16px)}
|
|
33
|
+
.header-card h1{font-size:26px;letter-spacing:2px;margin-bottom:8px;
|
|
34
|
+
background:linear-gradient(90deg,#7dd3fc,#0ea5e9,#5eead4);-webkit-background-clip:text;background-clip:text;color:transparent;
|
|
35
|
+
animation:titleGlow 3s ease-in-out infinite}
|
|
36
|
+
@keyframes titleGlow{0%,100%{text-shadow:0 0 8px rgba(14,165,233,.5),0 0 22px rgba(14,165,233,.25)}50%{text-shadow:0 0 14px rgba(14,165,233,.85),0 0 34px rgba(14,165,233,.45)}}
|
|
37
|
+
.header-sub{font-size:12px;color:var(--muted);letter-spacing:1px;margin-bottom:12px}
|
|
38
|
+
.header-badge{display:inline-block;font-size:11px;color:#7dd3fc;border:1px solid rgba(14,165,233,.3);border-radius:999px;padding:4px 14px}
|
|
39
|
+
.card-glow{position:absolute;inset:-40% -20% auto;height:70%;pointer-events:none;
|
|
40
|
+
background:radial-gradient(ellipse at 50% 10%,rgba(14,165,233,.25),transparent 70%);
|
|
41
|
+
animation:cardGlow 3s ease-in-out infinite;transform-origin:top center;opacity:.5}
|
|
42
|
+
@keyframes cardGlow{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.6)}}
|
|
43
|
+
/* 四边浮光线 */
|
|
44
|
+
.scanline-el{position:absolute;pointer-events:none}
|
|
45
|
+
.scan-x{top:0;left:0;height:1px;width:100%;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanX 3s linear infinite}
|
|
46
|
+
.scan-y{top:0;right:0;width:1px;height:100%;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanY 3s linear infinite}
|
|
47
|
+
.scan-x-rev{bottom:0;left:0;height:1px;width:100%;background:linear-gradient(90deg,transparent,var(--cyan),transparent);animation:scanXRev 3s linear infinite}
|
|
48
|
+
.scan-y-rev{top:0;left:0;width:1px;height:100%;background:linear-gradient(180deg,transparent,var(--cyan),transparent);animation:scanYRev 3s linear infinite}
|
|
49
|
+
@keyframes scanX{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
|
|
50
|
+
@keyframes scanY{from{transform:translateY(-100%)}to{transform:translateY(100%)}}
|
|
51
|
+
@keyframes scanXRev{from{transform:translateX(100%)}to{transform:translateX(-100%)}}
|
|
52
|
+
@keyframes scanYRev{from{transform:translateY(100%)}to{transform:translateY(-100%)}}
|
|
53
|
+
/* 分节卡片 */
|
|
54
|
+
.section{position:relative;overflow:hidden;background:var(--card);border:1px solid var(--border);border-radius:6px;
|
|
55
|
+
padding:22px 24px 22px 32px;margin-bottom:18px;
|
|
56
|
+
box-shadow:0 8px 28px rgba(0,0,0,.35),inset 0 1px 0 rgba(14,165,233,.12);
|
|
57
|
+
background-image:repeating-linear-gradient(0deg,rgba(14,165,233,.02),rgba(14,165,233,.02) 8px,transparent 8px,transparent 16px);
|
|
58
|
+
transition:transform .18s ease,box-shadow .18s ease}
|
|
59
|
+
.section:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,0,0,.45),inset 0 0 22px rgba(14,165,233,.08)}
|
|
60
|
+
.sec-bar{position:absolute;left:0;top:0;bottom:0;width:8px}
|
|
61
|
+
.sec-ov .sec-bar{background:linear-gradient(180deg,#38bdf8,#0ea5e9);box-shadow:0 0 12px rgba(14,165,233,.3)}
|
|
62
|
+
.sec-ms .sec-bar{background:linear-gradient(180deg,#5eead4,#14b8a6);box-shadow:0 0 12px rgba(20,184,166,.3)}
|
|
63
|
+
.sec-gw .sec-bar{background:linear-gradient(180deg,#a5b4fc,#6366f1);box-shadow:0 0 12px rgba(99,102,241,.3)}
|
|
64
|
+
.sec-rf .sec-bar{background:linear-gradient(180deg,#fda4af,#e11d48);box-shadow:0 0 12px rgba(244,63,94,.3)}
|
|
65
|
+
.sec-pl .sec-bar{background:linear-gradient(180deg,#fdba74,#f97316);box-shadow:0 0 12px rgba(249,115,22,.3)}
|
|
66
|
+
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}
|
|
67
|
+
.sec-head svg{flex:0 0 auto}
|
|
68
|
+
.sec-head h2{font-size:18px;letter-spacing:1px;animation:secGlow 3s ease-in-out infinite}
|
|
69
|
+
.sec-ov .sec-head h2{color:#7dd3fc}.sec-ms .sec-head h2{color:#5eead4}.sec-gw .sec-head h2{color:#c7d2fe}
|
|
70
|
+
.sec-rf .sec-head h2{color:#fda4af}.sec-pl .sec-head h2{color:#fdba74}
|
|
71
|
+
@keyframes secGlow{0%,100%{text-shadow:0 0 6px rgba(14,165,233,.4)}50%{text-shadow:0 0 14px rgba(14,165,233,.8)}}
|
|
72
|
+
/* 概览:TL;DR + 数据卡 */
|
|
73
|
+
.tldr-line{font-size:15px;line-height:1.75;margin-bottom:18px}
|
|
74
|
+
.tldr-line b{color:#7dd3fc;font-weight:700}
|
|
75
|
+
.stat-row{display:flex;gap:12px;flex-wrap:wrap}
|
|
76
|
+
.stat-card{flex:1 1 160px;position:relative;background:rgba(14,165,233,.05);border:1px solid var(--border);
|
|
77
|
+
border-radius:6px;padding:16px 14px;min-width:140px;overflow:hidden;
|
|
78
|
+
transition:transform .18s ease,box-shadow .18s ease}
|
|
79
|
+
.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.35)}
|
|
80
|
+
.stat-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#38bdf8,#0ea5e9)}
|
|
81
|
+
.stat-num{font-size:28px;font-weight:900;letter-spacing:1px;
|
|
82
|
+
background:linear-gradient(90deg,#7dd3fc,#0ea5e9,#5eead4);-webkit-background-clip:text;background-clip:text;color:transparent}
|
|
83
|
+
.stat-label{font-size:12px;color:var(--muted);margin-top:6px}
|
|
84
|
+
/* 里程碑时间线 */
|
|
85
|
+
.timeline{position:relative;padding-left:26px}
|
|
86
|
+
.timeline::before{content:'';position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:linear-gradient(180deg,rgba(14,165,233,.5),rgba(20,184,166,.5))}
|
|
87
|
+
.tl-group{position:relative;margin-bottom:18px}
|
|
88
|
+
.tl-node{position:absolute;left:-26px;top:0;width:16px;height:16px;border-radius:50%;
|
|
89
|
+
display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:900;color:#fff}
|
|
90
|
+
.tl-node.q1,.tl-node.q2{background:radial-gradient(circle at 30% 28%,#64748b,#475569 60%,#334155);box-shadow:0 0 8px rgba(100,116,139,.3)}
|
|
91
|
+
.tl-node.q3{background:radial-gradient(circle at 30% 28%,#7dd9cf,#14b8a6 55%,#0d9488);box-shadow:0 0 10px rgba(20,184,166,.5)}
|
|
92
|
+
.tl-node.q4{background:radial-gradient(circle at 30% 28%,#7dd3fc,#0ea5e9 55%,#0369a1);box-shadow:0 0 10px rgba(14,165,233,.5);animation:nodePulse 2.4s ease-in-out infinite}
|
|
93
|
+
@keyframes nodePulse{0%,100%{box-shadow:0 0 8px rgba(14,165,233,.4)}50%{box-shadow:0 0 18px rgba(14,165,233,.8)}}
|
|
94
|
+
.tl-q{font-size:12px;font-weight:700;color:#7dd3fc;letter-spacing:1px;margin-bottom:8px}
|
|
95
|
+
.tl-item{position:relative;padding:10px 0 10px 16px;border-top:1px dashed rgba(14,165,233,.18)}
|
|
96
|
+
.tl-item::before{content:'';position:absolute;left:0;top:19px;width:5px;height:5px;border-radius:50%;background:rgba(94,234,212,.8);box-shadow:0 0 6px rgba(94,234,212,.5)}
|
|
97
|
+
.tl-desc{font-size:15px;line-height:1.65}
|
|
98
|
+
.tl-meta{font-size:12px;color:var(--muted);margin-top:4px}
|
|
99
|
+
.tl-badge{display:inline-block;font-size:11px;color:var(--muted);border:1px solid rgba(14,165,233,.2);border-radius:999px;padding:1px 10px;margin-left:6px}
|
|
100
|
+
.tl-empty{font-size:13px;color:var(--muted);padding:6px 0 10px 16px}
|
|
101
|
+
/* 柱图 */
|
|
102
|
+
.cb-wrap{margin-top:18px;padding-top:14px;border-top:1px dashed rgba(14,165,233,.18)}
|
|
103
|
+
.cb-title{font-size:12px;color:var(--muted);margin-bottom:12px;letter-spacing:1px}
|
|
104
|
+
.cb-chart{display:flex;align-items:flex-end;gap:8px;height:110px}
|
|
105
|
+
.cb-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;position:relative}
|
|
106
|
+
.cb-bar{width:24px;background:linear-gradient(180deg,#5eead4,#14b8a6);border-radius:3px 3px 0 0;
|
|
107
|
+
box-shadow:0 0 10px rgba(45,212,191,.35);transition:height .3s ease}
|
|
108
|
+
.cb-col:hover .cb-bar{box-shadow:0 0 16px rgba(45,212,191,.6)}
|
|
109
|
+
.cb-label{font-size:9px;color:var(--muted);margin-top:4px}
|
|
110
|
+
.cb-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(4px);
|
|
111
|
+
background:#0b1e37;border:1px solid rgba(14,165,233,.3);color:#bae6fd;font-size:10px;white-space:nowrap;
|
|
112
|
+
padding:3px 8px;border-radius:4px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:5}
|
|
113
|
+
.cb-col:hover .cb-tip{opacity:1;transform:translateX(-50%) translateY(0)}
|
|
114
|
+
/* 序号徽章 3D 球 */
|
|
115
|
+
.idx{flex:0 0 auto;width:28px;height:28px;border-radius:50%;position:relative;
|
|
116
|
+
display:flex;align-items:center;justify-content:center;color:#fff;
|
|
117
|
+
font-size:12px;font-weight:900;margin-top:2px;transition:transform .2s ease,font-size .2s ease}
|
|
118
|
+
.idx.gw{background:radial-gradient(circle at 30% 28%,#c7d2fe,#6366f1 55%,#4338ca);
|
|
119
|
+
box-shadow:0 2px 4px rgba(0,0,0,.25),0 0 8px rgba(99,102,241,.4),inset -3px -4px 6px rgba(0,0,0,.3),inset 1px 2px 3px rgba(255,255,255,.25)}
|
|
120
|
+
.idx.rf{background:radial-gradient(circle at 30% 28%,#fdaab4,#f43f5e 55%,#be123c);
|
|
121
|
+
box-shadow:0 2px 4px rgba(0,0,0,.25),0 0 8px rgba(244,63,94,.4),inset -3px -4px 6px rgba(0,0,0,.3),inset 1px 2px 3px rgba(255,255,255,.25)}
|
|
122
|
+
.idx::before{content:'';position:absolute;top:5px;left:7px;width:8px;height:6px;border-radius:50%;
|
|
123
|
+
background:radial-gradient(circle,rgba(255,255,255,.7),rgba(255,255,255,0));transform:rotate(-28deg);pointer-events:none}
|
|
124
|
+
.idx b{display:inline-block;transition:transform .2s ease}
|
|
125
|
+
/* 条目 */
|
|
126
|
+
.entry{flex:1;min-width:0}
|
|
127
|
+
.entry-head{display:flex;align-items:flex-start;gap:12px}
|
|
128
|
+
.desc{font-size:15px;line-height:1.65}
|
|
129
|
+
.meta{display:block;font-size:12px;color:var(--muted);margin-top:4px}
|
|
130
|
+
.meta b{color:rgba(125,211,252,.9);font-weight:700}
|
|
131
|
+
ol{list-style:none}
|
|
132
|
+
li{display:flex;align-items:flex-start;gap:12px;padding:10px;border-radius:4px;transition:background .18s}
|
|
133
|
+
li:hover{background:rgba(14,165,233,.06)}
|
|
134
|
+
li:hover .idx{transform:scale(1.18) rotate(-4deg);font-size:14px}
|
|
135
|
+
li:hover .idx b{transform:rotate(-6deg)}
|
|
136
|
+
/* 展望目标卡 */
|
|
137
|
+
.goal{background:rgba(249,115,22,.04);border:1px solid rgba(249,115,22,.18);border-radius:6px;
|
|
138
|
+
padding:14px 16px;margin-bottom:12px;transition:transform .18s ease,box-shadow .18s ease}
|
|
139
|
+
.goal:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.3)}
|
|
140
|
+
.goal-desc{font-size:15px;line-height:1.65;margin-bottom:8px}
|
|
141
|
+
.goal-desc b{color:#fdba74;font-weight:700}
|
|
142
|
+
.goal-q{display:flex;flex-wrap:wrap;gap:6px}
|
|
143
|
+
.q-chip{font-size:11px;color:var(--muted);border:1px solid rgba(14,165,233,.18);background:rgba(14,165,233,.05);
|
|
144
|
+
border-radius:999px;padding:2px 10px}
|
|
145
|
+
/* 复制按钮 */
|
|
146
|
+
.copy-wrap{display:flex;justify-content:center;margin:8px 0 18px}
|
|
147
|
+
.copy-btn{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#fff;letter-spacing:2px;
|
|
148
|
+
background:linear-gradient(135deg,var(--cyan),#0284c7);border:none;border-radius:999px;padding:12px 38px;cursor:pointer;
|
|
149
|
+
box-shadow:0 0 30px rgba(14,165,233,.35);transition:transform .18s ease,box-shadow .18s ease;
|
|
150
|
+
font-family:inherit}
|
|
151
|
+
.copy-btn:hover{transform:translateY(-2px);box-shadow:0 0 45px rgba(14,165,233,.5)}
|
|
152
|
+
.copy-btn:active{transform:translateY(1px) scale(.98)}
|
|
153
|
+
/* 页脚 */
|
|
154
|
+
footer{text-align:center;font-size:10px;color:var(--muted);letter-spacing:1px;padding:8px 0 4px}
|
|
155
|
+
/* 入场动画 */
|
|
156
|
+
.header-card{animation:fadeDown .6s ease-out backwards}
|
|
157
|
+
.sec-ov{animation:riseIn .5s ease-out .13s backwards}
|
|
158
|
+
.sec-ms{animation:riseIn .5s ease-out .26s backwards}
|
|
159
|
+
.sec-gw{animation:riseIn .5s ease-out .4s backwards}
|
|
160
|
+
.sec-rf{animation:riseIn .5s ease-out .54s backwards}
|
|
161
|
+
.sec-pl{animation:riseIn .5s ease-out .68s backwards}
|
|
162
|
+
.copy-wrap{animation:popIn .4s ease-out .8s backwards}
|
|
163
|
+
@keyframes fadeDown{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
|
|
164
|
+
@keyframes riseIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
|
|
165
|
+
@keyframes popIn{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
|
|
166
|
+
/* 卡片 3D 微倾斜(仅 hover 卡片) */
|
|
167
|
+
.section:hover{transform:perspective(900px) translateY(-2px) rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))}
|
|
168
|
+
</style>
|
|
169
|
+
</head>
|
|
170
|
+
<body>
|
|
171
|
+
<div class="grid-pattern"></div>
|
|
172
|
+
<div class="stars"></div>
|
|
173
|
+
<div class="scanband"></div>
|
|
174
|
+
<div class="scanlines"></div>
|
|
175
|
+
<div class="wrap">
|
|
176
|
+
<header class="header-card" id="headerCard">
|
|
177
|
+
<span class="scanline-el scan-x"></span>
|
|
178
|
+
<span class="scanline-el scan-y"></span>
|
|
179
|
+
<span class="scanline-el scan-x-rev"></span>
|
|
180
|
+
<span class="scanline-el scan-y-rev"></span>
|
|
181
|
+
<div class="card-glow"></div>
|
|
182
|
+
<h1>2026 研发年度总结</h1>
|
|
183
|
+
<div class="header-sub">全栈开发工程师 · 2026-01 ~ 2026-11(截至 11-09)</div>
|
|
184
|
+
<span class="header-badge">生成时间 2026-11-09 17:03:01</span>
|
|
185
|
+
</header>
|
|
186
|
+
|
|
187
|
+
<section class="section sec-ov">
|
|
188
|
+
<div class="sec-bar"></div>
|
|
189
|
+
<div class="card-glow"></div>
|
|
190
|
+
<div class="sec-head">
|
|
191
|
+
<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="#38bdf8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 15l4-5M8 15l4-5"/><circle cx="12" cy="14" r="8"/><path d="M12 14l4-5"/></svg>
|
|
192
|
+
<h2>年度概览</h2>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="tldr-line"><b>TL;DR:</b>立项即狂奔的一年:SpecCore 规范驱动开发平台 7 月从零立项,4 个月 1889 次提交、576 个版本发布、代码库净增 19 万行,完成从单机 CLI 到流水线平台的蜕变。</div>
|
|
195
|
+
<div class="stat-row">
|
|
196
|
+
<div class="stat-card"><div class="stat-num">1889</div><div class="stat-label">总提交数(07-05 ~ 11-05)</div></div>
|
|
197
|
+
<div class="stat-card"><div class="stat-num">576</div><div class="stat-label">版本发布(v5.13.0 → v8.3.399)</div></div>
|
|
198
|
+
<div class="stat-card"><div class="stat-num">+19.0万</div><div class="stat-label">净增代码行(+32.9万 / -13.9万)</div></div>
|
|
199
|
+
<div class="stat-card"><div class="stat-num">1154</div><div class="stat-label">月度峰值提交(8 月)</div></div>
|
|
200
|
+
</div>
|
|
201
|
+
</section>
|
|
202
|
+
|
|
203
|
+
<section class="section sec-ms">
|
|
204
|
+
<div class="sec-bar"></div>
|
|
205
|
+
<div class="card-glow"></div>
|
|
206
|
+
<div class="sec-head">
|
|
207
|
+
<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="#5eead4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 4h12v3a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V4z"/><path d="M12 11v4M9 17h6v3H9z"/></svg>
|
|
208
|
+
<h2>核心成果与里程碑</h2>
|
|
209
|
+
</div>
|
|
210
|
+
<div class="timeline">
|
|
211
|
+
<div class="tl-group">
|
|
212
|
+
<span class="tl-node q1">Q1</span>
|
|
213
|
+
<div class="tl-q">第一季度</div>
|
|
214
|
+
<div class="tl-empty">暂无提交记录(项目于 2026-07 立项)</div>
|
|
215
|
+
</div>
|
|
216
|
+
<div class="tl-group">
|
|
217
|
+
<span class="tl-node q2">Q2</span>
|
|
218
|
+
<div class="tl-q">第二季度</div>
|
|
219
|
+
<div class="tl-empty">暂无提交记录(项目于 2026-07 立项)</div>
|
|
220
|
+
</div>
|
|
221
|
+
<div class="tl-group">
|
|
222
|
+
<span class="tl-node q3">Q3</span>
|
|
223
|
+
<div class="tl-q">第三季度(7-9 月)</div>
|
|
224
|
+
<div class="tl-item"><div class="tl-desc">1、7 月立项首发:SpecCore CLI 完整功能落地,v5.13.0 首版发布</div><div class="tl-meta">335 次提交 · +5.4 万行<span class="tl-badge">Q3</span></div></div>
|
|
225
|
+
<div class="tl-item"><div class="tl-desc">2、8 月密集攻坚:知识资产四层覆盖架构(TOC 目录/自动注入/RAG 检索/阅读清单)成形</div><div class="tl-meta">月内 1154 次提交 · +16.4 万行 · 发布 200+ 版本<span class="tl-badge">Q3</span></div></div>
|
|
226
|
+
<div class="tl-item"><div class="tl-desc">3、9 月流水线成形:run 端到端流水线与迭代体系建立</div><div class="tl-meta">+7.6 万行 · 328 次提交<span class="tl-badge">Q3</span></div></div>
|
|
227
|
+
</div>
|
|
228
|
+
<div class="tl-group">
|
|
229
|
+
<span class="tl-node q4">Q4</span>
|
|
230
|
+
<div class="tl-q">第四季度(10-11 月,截至当前)</div>
|
|
231
|
+
<div class="tl-item"><div class="tl-desc">4、10 月发布节奏收敛:v8.3 系列起跑,月度发布收紧至约 30 个版本</div><div class="tl-meta">+1.8 万行<span class="tl-badge">Q4</span></div></div>
|
|
232
|
+
<div class="tl-item"><div class="tl-desc">5、11-03 v8.3.370 累积发布:GLOBAL 治乱、反推域隔离、文档生成器升格、澄清链修复</div><div class="tl-meta">聚合发布 · 350→370<span class="tl-badge">Q4</span></div></div>
|
|
233
|
+
<div class="tl-item"><div class="tl-desc">6、11-04 v8.3.388:E2E 全链路深度检查 11 项修复 + execute 意图语义硬化</div><div class="tl-meta">379~388 聚合发布<span class="tl-badge">Q4</span></div></div>
|
|
234
|
+
<div class="tl-item"><div class="tl-desc">7、11-04 v8.3.394:反推链接力协议补全、全局分析默认纯技术、QA 环接力协议(exit 10)</div><div class="tl-meta">392~394 聚合发布<span class="tl-badge">Q4</span></div></div>
|
|
235
|
+
<div class="tl-item"><div class="tl-desc">8、11-05 v8.3.399(截至当前):用例核对闸开卷设闸——execute 收尾逐用例勾稽,未实现即入修复环</div><div class="tl-meta">398~399 聚合发布<span class="tl-badge">Q4</span></div></div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
<div class="cb-wrap">
|
|
239
|
+
<div class="cb-title">年度提交月度分布(次)</div>
|
|
240
|
+
<div class="cb-chart">
|
|
241
|
+
<div class="cb-col"><div class="cb-tip">1月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">1月</div></div>
|
|
242
|
+
<div class="cb-col"><div class="cb-tip">2月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">2月</div></div>
|
|
243
|
+
<div class="cb-col"><div class="cb-tip">3月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">3月</div></div>
|
|
244
|
+
<div class="cb-col"><div class="cb-tip">4月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">4月</div></div>
|
|
245
|
+
<div class="cb-col"><div class="cb-tip">5月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">5月</div></div>
|
|
246
|
+
<div class="cb-col"><div class="cb-tip">6月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">6月</div></div>
|
|
247
|
+
<div class="cb-col"><div class="cb-tip">7月 · 335 次提交</div><div class="cb-bar" style="height:32px"></div><div class="cb-label">7月</div></div>
|
|
248
|
+
<div class="cb-col"><div class="cb-tip">8月 · 1154 次提交</div><div class="cb-bar" style="height:92px"></div><div class="cb-label">8月</div></div>
|
|
249
|
+
<div class="cb-col"><div class="cb-tip">9月 · 328 次提交</div><div class="cb-bar" style="height:31px"></div><div class="cb-label">9月</div></div>
|
|
250
|
+
<div class="cb-col"><div class="cb-tip">10月 · 54 次提交</div><div class="cb-bar" style="height:8px"></div><div class="cb-label">10月</div></div>
|
|
251
|
+
<div class="cb-col"><div class="cb-tip">11月 · 18 次提交</div><div class="cb-bar" style="height:4px"></div><div class="cb-label">11月</div></div>
|
|
252
|
+
<div class="cb-col"><div class="cb-tip">12月 · 0 次提交</div><div class="cb-bar" style="height:2px"></div><div class="cb-label">12月</div></div>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</section>
|
|
256
|
+
|
|
257
|
+
<section class="section sec-gw">
|
|
258
|
+
<div class="sec-bar"></div>
|
|
259
|
+
<div class="card-glow"></div>
|
|
260
|
+
<div class="sec-head">
|
|
261
|
+
<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="#a5b4fc" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 17l6-6 4 4 8-8"/><path d="M14 7h7v7"/></svg>
|
|
262
|
+
<h2>经验与成长</h2>
|
|
263
|
+
</div>
|
|
264
|
+
<ol>
|
|
265
|
+
<li><span class="idx gw"><b>1</b></span><div class="entry"><div class="desc">沉淀了「四层知识资产架构」(TOC 目录/自动注入/RAG 检索/阅读清单),解决了 AI 对规范库看不见、记不住、找不回的三类可见性断层。</div></div></li>
|
|
266
|
+
<li><span class="idx gw"><b>2</b></span><div class="entry"><div class="desc">掌握了 ask 引擎意图识别与 AI 接力协议([SPECCORE_EXEC]/[SPECCORE_PROMPT]/[SPECCORE_CONTINUE] 标记链),人机协作可从任意断点续跑。</div></div></li>
|
|
267
|
+
<li><span class="idx gw"><b>3</b></span><div class="entry"><div class="desc">建立了「聚合发布」节奏:小步高频提交 + 里程碑聚合 tag,兼顾问题定位粒度与交付速度。</div></div></li>
|
|
268
|
+
<li><span class="idx gw"><b>4</b></span><div class="entry"><div class="desc">积累了质量门禁体系经验:骨架完成度自检、用例核对闸、QA 三阶段验证环,质量兜底不再依赖人肉复查。</div></div></li>
|
|
269
|
+
</ol>
|
|
270
|
+
</section>
|
|
271
|
+
|
|
272
|
+
<section class="section sec-rf">
|
|
273
|
+
<div class="sec-bar"></div>
|
|
274
|
+
<div class="card-glow"></div>
|
|
275
|
+
<div class="sec-head">
|
|
276
|
+
<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="#fda4af" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9v4M12 17h.01"/><path d="M10.3 3.9L1.8 18a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.9a2 2 0 0 0-3.4 0z"/></svg>
|
|
277
|
+
<h2>不足与反思</h2>
|
|
278
|
+
</div>
|
|
279
|
+
<ol>
|
|
280
|
+
<li><span class="idx rf"><b>1</b></span><div class="entry"><div class="desc">8 月节奏过载:单月 1154 次提交、8-08 单日 95 个版本。</div><div class="meta">影响:文档与代码同步滞后,质量债累积。</div><div class="meta" style="color:rgba(125,211,252,.85)"><b style="color:#7dd3fc">改进:</b>明年收敛为双周聚合发布、月度版本 ≤20 个。</div></div></li>
|
|
281
|
+
<li><span class="idx rf"><b>2</b></span><div class="entry"><div class="desc">生成物污染统计口径:code-graph 等生成物单文件数十万行噪音曾混入行数统计。</div><div class="meta">影响:工作量指标失真,误导投入判断。</div><div class="meta" style="color:rgba(125,211,252,.85)"><b style="color:#7dd3fc">改进:</b>统计前强制剔除生成物路径白名单。</div></div></li>
|
|
282
|
+
<li><span class="idx rf"><b>3</b></span><div class="entry"><div class="desc">发布颗粒度两端失衡:Q3 一日最多 95 个 tag,Q4 单次聚合最多 10 个版本。</div><div class="meta">影响:问题定位粒度在过细与过粗之间摇摆。</div><div class="meta" style="color:rgba(125,211,252,.85)"><b style="color:#7dd3fc">改进:</b>固定批次大小,每批 ≤10 版本聚合。</div></div></li>
|
|
283
|
+
</ol>
|
|
284
|
+
</section>
|
|
285
|
+
|
|
286
|
+
<section class="section sec-pl">
|
|
287
|
+
<div class="sec-bar"></div>
|
|
288
|
+
<div class="card-glow"></div>
|
|
289
|
+
<div class="sec-head">
|
|
290
|
+
<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="#fdba74" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="17" rx="2"/><path d="M8 2v4M16 2v4M3 10h18"/></svg>
|
|
291
|
+
<h2>新年展望与规划</h2>
|
|
292
|
+
</div>
|
|
293
|
+
<div class="goal"><div class="goal-desc">1、<b>发布节奏工程化</b>:双周聚合发布落地,2027 年版本发布总量 ≤120 个</div><div class="goal-q"><span class="q-chip">Q1 建立节奏</span><span class="q-chip">Q2 稳定运行</span></div></div>
|
|
294
|
+
<div class="goal"><div class="goal-desc">2、<b>测试覆盖率跃升</b>:核心链路自动化覆盖 ≥80%,用例核对闸覆盖全部命令</div><div class="goal-q"><span class="q-chip">Q1 铺 E2E</span><span class="q-chip">Q3 达标</span></div></div>
|
|
295
|
+
<div class="goal"><div class="goal-desc">3、<b>生成物与体量治理</b>:启动耗时降 30%、生成物目录隔离入白名单</div><div class="goal-q"><span class="q-chip">Q2 完成隔离</span><span class="q-chip">Q4 验收性能</span></div></div>
|
|
296
|
+
<div class="goal"><div class="goal-desc">4、<b>生态落地</b>:spec-once/流水线在 ≥3 个真实项目落地并沉淀案例</div><div class="goal-q"><span class="q-chip">Q2 试点</span><span class="q-chip">Q4 案例库发布</span></div></div>
|
|
297
|
+
</section>
|
|
298
|
+
|
|
299
|
+
<div class="copy-wrap">
|
|
300
|
+
<button class="copy-btn" id="copyBtn" type="button">
|
|
301
|
+
<svg id="copyIcon" viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor" stroke-width="1.4">
|
|
302
|
+
<rect x="5.5" y="5.5" width="8.5" height="8.5" rx="1.5"/>
|
|
303
|
+
<path d="M10.5 5.5V4a1.5 1.5 0 0 0-1.5-1.5H4A1.5 1.5 0 0 0 2.5 4v5A1.5 1.5 0 0 0 4 10.5h1.5"/>
|
|
304
|
+
</svg>
|
|
305
|
+
<span id="copyText">一键复制</span>
|
|
306
|
+
</button>
|
|
307
|
+
</div>
|
|
308
|
+
<footer>GENERATED BY SPECCORE TEAM · 2026</footer>
|
|
309
|
+
</div>
|
|
310
|
+
<script>
|
|
311
|
+
// 复制源 = txt 纯文本全文
|
|
312
|
+
var TXT = "2026 研发年度总结\n\n生成时间:2026-11-09 17:03:01\n\n年度概览\nTL;DR:立项即狂奔的一年:SpecCore 规范驱动开发平台 7 月从零立项,4 个月 1889 次提交、576 个版本发布、代码库净增 19 万行,完成从单机 CLI 到流水线平台的蜕变。\n1、总提交数:1889 次(07-05 ~ 11-05)\n2、版本发布:576 个(v5.13.0 → v8.3.399)\n3、净增代码:+19.0 万行(+32.9 万 / -13.9 万)\n4、月度峰值:1154 次提交(8 月)\n\n核心成果与里程碑\n1、7 月立项首发:SpecCore CLI 完整功能落地,v5.13.0 首版发布(335 次提交、+5.4 万行)- Q3\n2、8 月密集攻坚:知识资产四层覆盖架构(TOC 目录/自动注入/RAG 检索/阅读清单)成形,月内 1154 次提交、+16.4 万行、发布 200+ 版本 - Q3\n3、9 月流水线成形:run 端到端流水线与迭代体系建立,+7.6 万行、328 次提交 - Q3\n4、10 月发布节奏收敛:v8.3 系列起跑,月度发布收紧至约 30 个版本,+1.8 万行 - Q4\n5、11-03 v8.3.370 累积发布:GLOBAL 治乱、反推域隔离、文档生成器升格、澄清链修复 - Q4\n6、11-04 v8.3.388:E2E 全链路深度检查 11 项修复 + execute 意图语义硬化 - Q4\n7、11-04 v8.3.394:反推链接力协议补全、全局分析默认纯技术、QA 环接力协议(exit 10)- Q4\n8、11-05 v8.3.399(截至当前):用例核对闸开卷设闸——execute 收尾逐用例勾稽,未实现即入修复环 - Q4\n\n经验与成长\n1、沉淀了「四层知识资产架构」(TOC 目录/自动注入/RAG 检索/阅读清单),解决了 AI 对规范库看不见、记不住、找不回的三类可见性断层。\n2、掌握了 ask 引擎意图识别与 AI 接力协议([SPECCORE_EXEC]/[SPECCORE_PROMPT]/[SPECCORE_CONTINUE] 标记链),人机协作可从任意断点续跑。\n3、建立了「聚合发布」节奏:小步高频提交 + 里程碑聚合 tag,兼顾问题定位粒度与交付速度。\n4、积累了质量门禁体系经验:骨架完成度自检、用例核对闸、QA 三阶段验证环,质量兜底不再依赖人肉复查。\n\n不足与反思\n1、8 月节奏过载:单月 1154 次提交、8-08 单日 95 个版本。\n影响:文档与代码同步滞后,质量债累积。\n改进:明年收敛为双周聚合发布、月度版本 ≤20 个。\n2、生成物污染统计口径:code-graph 等生成物单文件数十万行噪音曾混入行数统计。\n影响:工作量指标失真,误导投入判断。\n改进:统计前强制剔除生成物路径白名单。\n3、发布颗粒度两端失衡:Q3 一日最多 95 个 tag,Q4 单次聚合最多 10 个版本。\n影响:问题定位粒度在过细与过粗之间摇摆。\n改进:固定批次大小,每批 ≤10 版本聚合。\n\n新年展望与规划\n1、发布节奏工程化:双周聚合发布落地,2027 年版本发布总量 ≤120 个(Q1 建立节奏、Q2 稳定运行)。\n2、测试覆盖率跃升:核心链路自动化覆盖 ≥80%,用例核对闸覆盖全部命令(Q1 铺 E2E、Q3 达标)。\n3、生成物与体量治理:启动耗时降 30%、生成物目录隔离入白名单(Q2 完成隔离、Q4 验收性能)。\n4、生态落地:spec-once/流水线在 ≥3 个真实项目落地并沉淀案例(Q2 试点、Q4 案例库发布)。";
|
|
313
|
+
|
|
314
|
+
// 一键复制
|
|
315
|
+
var btn = document.getElementById('copyBtn');
|
|
316
|
+
var icon = document.getElementById('copyIcon');
|
|
317
|
+
var txt = document.getElementById('copyText');
|
|
318
|
+
btn.addEventListener('click', function(){
|
|
319
|
+
function done(){ icon.innerHTML = '<path d="M2.5 8.5l3.5 3.5 7-7.5"/>'; txt.textContent = '已复制'; setTimeout(function(){ icon.innerHTML = '<rect x="5.5" y="5.5" width="8.5" height="8.5" rx="1.5"/><path d="M10.5 5.5V4a1.5 1.5 0 0 0-1.5-1.5H4A1.5 1.5 0 0 0 2.5 4v5A1.5 1.5 0 0 0 4 10.5h1.5"/>'; txt.textContent = '一键复制'; }, 1600); }
|
|
320
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
321
|
+
navigator.clipboard.writeText(TXT).then(done, function(){ fallback(); });
|
|
322
|
+
} else { fallback(); }
|
|
323
|
+
function fallback(){
|
|
324
|
+
var ta = document.createElement('textarea');
|
|
325
|
+
ta.value = TXT; ta.style.position = 'fixed'; ta.style.opacity = '0';
|
|
326
|
+
document.body.appendChild(ta); ta.select();
|
|
327
|
+
try { document.execCommand('copy'); done(); } catch(e){}
|
|
328
|
+
document.body.removeChild(ta);
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
// 卡片级 3D 微倾斜(仅 hover 卡片)
|
|
333
|
+
document.querySelectorAll('.section').forEach(function(card){
|
|
334
|
+
card.addEventListener('mousemove', function(e){
|
|
335
|
+
var r = card.getBoundingClientRect();
|
|
336
|
+
var mx = (e.clientX - r.left) / r.width * 2 - 1;
|
|
337
|
+
var my = (e.clientY - r.top) / r.height * 2 - 1;
|
|
338
|
+
card.style.setProperty('--mx', mx.toFixed(3));
|
|
339
|
+
card.style.setProperty('--my', my.toFixed(3));
|
|
340
|
+
});
|
|
341
|
+
card.addEventListener('mouseleave', function(){
|
|
342
|
+
card.style.setProperty('--mx', 0);
|
|
343
|
+
card.style.setProperty('--my', 0);
|
|
344
|
+
});
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
// ?shot=content:内容区截图模式
|
|
348
|
+
if (location.search.indexOf('shot=content') > -1) {
|
|
349
|
+
document.getElementById('headerCard').style.display = 'none';
|
|
350
|
+
document.querySelector('.copy-wrap').style.display = 'none';
|
|
351
|
+
document.querySelector('footer').style.display = 'none';
|
|
352
|
+
document.querySelector('.wrap').style.padding = '40px';
|
|
353
|
+
// 截图模式停入场动画,避免 backwards 0 相位整体半透明
|
|
354
|
+
document.querySelectorAll('.header-card,.section,.copy-wrap').forEach(function(el){
|
|
355
|
+
el.style.animation = 'none'; el.style.opacity = '1';
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
</script>
|
|
359
|
+
</body>
|
|
360
|
+
</html>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 年度总结使用指南
|
|
2
|
+
|
|
3
|
+
## 能干什么
|
|
4
|
+
|
|
5
|
+
把一年的工作沉淀成五段式年度总结:年度概览(一句话 + 核心数据卡)/ 核心成果与里程碑(季度时间线)/ 经验与成长 / 不足与反思 / 新年展望与规划。适配各行业:内置 12 行业职业词典,报职业自动换术语与指标;不报职业按你的默认角色画像生成。
|
|
6
|
+
|
|
7
|
+
## 三种使用方式
|
|
8
|
+
|
|
9
|
+
1. **git 全年聚合**(有代码仓库):自动统计全年提交数、增删行数、月度分布、版本里程碑,结合你口述的大事生成
|
|
10
|
+
2. **纯文字整理**:把年度大事、成果、感悟直接说给我或发文字
|
|
11
|
+
3. **图片/文件整理**:发总结草稿、聊天记录、日报周报文件,我提取要点
|
|
12
|
+
|
|
13
|
+
三者可混用,有 git 就用 git 数据,没有也能写。
|
|
14
|
+
|
|
15
|
+
## 常用说法
|
|
16
|
+
|
|
17
|
+
- 「写个年度总结」/「2026 年年度总结」→ 当前年或指定年
|
|
18
|
+
- 「去年的年度总结」/「近一年的总结」→ 去年或滚动 12 个月
|
|
19
|
+
- 「以销售经理的身份写年度总结」→ 临时换职业词条
|
|
20
|
+
- 「以后默认用 XX 角色」→ 永久换默认角色
|
|
21
|
+
- 「只要 md」「别开浏览器」「写到桌面」→ 临时改落盘行为
|
|
22
|
+
- 「以后都用这个模板」→ 永久自定义模板
|
|
23
|
+
|
|
24
|
+
## 输出
|
|
25
|
+
|
|
26
|
+
对话直接出正文;默认落盘 annual-YYYY/ 目录下的 md/txt/html 三件 + 内容区截图,并自动打开 html(深蓝面板年度版式:发光头部、数据卡、季度时间线)。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 用户配置(升级技能时本文件不会被覆盖)
|
|
2
|
+
|
|
3
|
+
> 你的个人配置全放在这里。skill-forge 升级技能时官方只更新 SKILL.md 与 resources/,
|
|
4
|
+
> 本文件始终保留你的版本——落盘目录、格式、角色画像、自定义模板放心改。
|
|
5
|
+
> 官方升级若带来新配置点,会另存 `user-config.md.upstream` 对照文件到同目录,
|
|
6
|
+
> 你按需查看并手动合并新配置点到本文件。
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## ⚙️ 默认配置(用户可手动修改;临时口头要求永远优先)
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
DISK: true # 是否落盘写文件;false = 默认只在对话输出,不写文件不开浏览器
|
|
13
|
+
CONFIG_VERSION: 1 # 配置结构版本:skill 升级时若配置结构变化会递增;AI 每次执行前对比 SKILL.md「配置版本机制」节声明的当前版本,不一致时按 SKILL.md 的迁移规则处理(先备份本文件为带时间戳 .bak,再迁移,最后对话告知用户)
|
|
14
|
+
FORMATS: [md, txt, html, content-png] # 落盘哪些格式(数组,可删减/增,如 [md, html] / [md, txt, html](不截图);content-png = 内容区截图(五张分节卡片整体,不含头部标题/复制按钮/页脚),删除该项即不截图;不影响对话中的 md 正文输出)
|
|
15
|
+
DIR: auto # 落盘根目录:auto = 按当前系统自动选 DIR_MAC / DIR_WIN(也可直接写死某个绝对路径)
|
|
16
|
+
DIR_MAC: /Users/luzhaosheng/MyWork/智慧食堂/reports # macOS 落盘根目录(自动按目标年度建子目录 annual-YYYY;目录不存在时回退用户主目录下 reports)
|
|
17
|
+
DIR_WIN: d:\Workspace_QCoder\reports # Windows 落盘根目录(自动按目标年度建子目录 annual-YYYY;目录/盘符不存在时回退用户主目录下 reports)
|
|
18
|
+
OPEN_HTML: true # 落盘后是否自动用浏览器打开 html(FORMATS 不含 html 时忽略)
|
|
19
|
+
TEMPLATE: default # 报告模板:default = 内置五段式(年度概览/核心成果与里程碑/经验与成长/不足与反思/新年展望与规划);custom = 使用下方「📝 自定义模板」节;口头临时指定模板仅当次生效
|
|
20
|
+
ROLE: 全栈开发工程师(企业内技术开发) # 用户默认职业角色与主要工作内容(两者并存:职业名 + 括号内工作内容,生成内容/术语/量化指标/里程碑/风险话术全部按此画像走);用户随口描述职业时(如「我搞装修的,天天跑工地」)→ AI 提炼为规范表述(装修项目经理(负责工地现场管理、施工进度与质量巡检))更新此处;说「以 XX 的身份写」→ 当次临时换角色不改配置;说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 永久更新此处
|
|
21
|
+
CONFIRM: never # 落盘前确认:never = 直接生成落盘不确认(默认);text = 纯文字整理模式先出效果确认后再落盘;always = 任何方式生成都先确认;临时说「先看看效果」当次先确认、说「不用确认」当次跳过
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
> 临时口头要求(仅对当次生效,不修改上方配置):说「不落盘/别写文件」→ 当次 DISK=false;说「写到桌面/存到 ~/report(macOS)或 D:\report(Windows)」→ 当次改用该 DIR;说「只要 md / 只出 html / 只要内容区截图」→ 当次只落指定格式;说「这次不截图」→ 当次不生成内容区截图;说「只要截图/重新截个图」→ 当次只对现有 html 执行内容区截图(不重新收集 git、不重写 md/txt/html 内容文件);说「别开浏览器」→ 当次 OPEN_HTML=false;说「这次按 xxx 模板来」→ 当次临时换模板(不改配置);说「以后都用这个模板」→ 自动写入下方「📝 自定义模板」节并把 TEMPLATE 改为 custom(永久生效);说「先看看效果/先出效果再落盘」→ 当次先出效果确认后再落盘;说「不用确认/直接落盘」→ 当次跳过确认直接落盘。
|
|
25
|
+
|
|
26
|
+
## 📝 自定义模板(TEMPLATE: custom 时启用,用户可手改,适配各类岗位)
|
|
27
|
+
|
|
28
|
+
把顶部 TEMPLATE 改为 custom 后,按下面结构生成报告(段名、段数、条目格式均可改):
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
段一:年度工作概述(每条:概述 - 量化结果)
|
|
32
|
+
段二:重点工作与成果(每条:成果描述 - 完成时间 - 影响)
|
|
33
|
+
段三:经验与不足(每条:经验或不足 - 具体表现)
|
|
34
|
+
段四:明年工作计划(每条:计划描述 - 预期目标)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> 只写段结构与条目格式即可;未写明的细节(中文顿号序号、生成时间行、落盘行为、HTML 样式)沿用默认规范。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
> 更多用法见 SKILL.md 的「生成流程」与 resources/ 分册。
|