skill-forge-hub 0.5.4 → 1.0.1
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/CHANGELOG.md +46 -0
- package/README.md +5 -4
- package/annual-report/SKILL.md +4 -3
- package/annual-report/resources/disk-and-html.md +1 -1
- package/annual-report/resources/reference.html +33 -18
- package/annual-report/user-config.md +1 -1
- package/article-to-html/SKILL.md +1 -39
- package/article-to-html/resources/usage-guide.md +41 -0
- package/cli.js +40 -7
- package/daily-report/SKILL.md +4 -3
- package/daily-report/resources/disk-and-html.md +1 -1
- package/daily-report/resources/reference.html +42 -18
- package/daily-report/user-config.md +1 -1
- package/deck-stage/SKILL.md +24 -4
- package/deck-stage/resources/cover-template.html +3 -2
- package/deck-stage/resources/data-schema.md +1 -1
- package/deck-stage/resources/pptx-builder.js +1 -1
- package/deck-stage/resources/usage-guide.md +2 -2
- package/deck-stage/user-config.md +2 -2
- package/magic-deck/SKILL.md +8 -3
- package/magic-deck/resources/deck-spec.md +15 -8
- package/magic-deck/resources/reference.html +18 -10
- package/magic-deck/resources/usage-guide.md +2 -2
- package/magic-deck/user-config.md +2 -2
- package/package.json +1 -1
- package/prompt-pouch/SKILL.md +12 -11
- package/prompt-pouch/resources/data-format.md +2 -1
- package/prompt-pouch/resources/reference.html +345 -32
- package/prompt-pouch/resources/usage-guide.md +11 -4
- package/prompt-pouch/user-config.md +1 -1
- package/spec-doc2spec/SKILL.md +1 -0
- package/spec-spec2doc/SKILL.md +1 -0
- package/weekly-report/SKILL.md +4 -3
- package/weekly-report/resources/disk-and-html.md +1 -1
- package/weekly-report/resources/reference.html +43 -19
- package/weekly-report/user-config.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,52 @@
|
|
|
2
2
|
|
|
3
3
|
SkillForge(技能锻造坊)npm 包 `skill-forge-hub`(命令名 `skill-forge`)版本变更记录。
|
|
4
4
|
|
|
5
|
+
## 1.0.1(2026-11-11)
|
|
6
|
+
|
|
7
|
+
**发布后三连修:三报表 mono 氛围换装 + 锦囊四层科技氛围 + 日报/周报噪点退隐**
|
|
8
|
+
|
|
9
|
+
- 日报/周报/年报 mono 氛围换装:黑色主题下条纹留存、颜色去彩——星点改中性灰白、网格/扫描线/光带随 --scan-dim 改用 IDEA 文本色低透明度灰白,body 纯色 #1e1f22 不再被蓝色氛围污染(此前泛蓝 (38,45,60),换装后纯背景像素级恢复纯正 (30,31,34),条纹行灰白中性);tech/biz/light/warm 氛围照旧
|
|
10
|
+
- 日报/周报 mono 噪点层退隐:body::before 灰度颗粒在 mono 下 display:none(年报/锦囊本无噪点),纯背景与年报逐像素一致;有色主题噪点照旧保留
|
|
11
|
+
- 锦囊披四层科技氛围:网格/星点/扫描线/光带与三报表同源(透明度淡半档不扰读),卡片加 8px 细横纹,mono 换装灰白
|
|
12
|
+
|
|
13
|
+
## 1.0.0(2026-11-11)
|
|
14
|
+
|
|
15
|
+
**1.0.0 正式版**:历经 0.1.x—0.5.x 十余版锤炼,九技能 + 升级保护 CLI + 五主题体系均已稳定,正式转正。本版收口三项大改:全坊体检三修、CLI init/update 机制审查修复、锦囊续锻(两段确认/标签全交互/emoji 面板/弹框放大/背景正名)。
|
|
16
|
+
|
|
17
|
+
**全坊体检三修:意图分流 + 使用指导 + 锦囊三功能**
|
|
18
|
+
|
|
19
|
+
- 意图分流①:magic-deck(HTML 网页幻灯)与 deck-stage(.pptx 可编辑文件)加「意图边界」节——「做 PPT」未言明形态时 AskUserQuestion 二选一,不再两个 skill 撞车;顺带修正 magic-deck description 遗留「十六套主题」→「十七套」
|
|
20
|
+
- 意图分流②:日报/周报/年报加「0.5 周期歧义分流」——「写总结/工作总结」未言明周期时 AskUserQuestion 三选一,不擅自默认
|
|
21
|
+
- 意图分流③:spec-doc2spec / spec-spec2doc 的 description 补用法咨询触发词(问「怎么用/使用说明」时走 usage-guide 应答,不再漏触发)
|
|
22
|
+
- 使用指导:article-to-html 的使用说明从 SKILL.md 抽出为独立 resources/usage-guide.md(「文章装裱师使用指南」),与工坊其余 8 个技能对齐
|
|
23
|
+
- 锦囊三功能:①导入/导出——顶栏「⤓ 导出」下载全量 JSON 备份(带时间戳)、「⤒ 导入」选择文件整库覆盖(导入前自动备份可回滚,未授权目录禁用导入);②标签点击过滤——点卡片标签即按标签筛选(顶栏胶囊显示当前标签、点 ✕ 或再点同标签取消、切分组自动清除,与搜索叠加);③分组侧栏拖拽排序——分组条拖拽重排 groups 顺序(授权目录即写即存,未授权生成「分组顺序调整为…」指令给 AI 落盘)
|
|
24
|
+
|
|
25
|
+
**CLI init/update 机制审查修复**
|
|
26
|
+
|
|
27
|
+
- 复制排除杂质:copyDir 跳过 .DS_Store/.git 等元数据文件,不再随技能复制进用户目录
|
|
28
|
+
- 升级结构同步:新增 pruneDir——升级前清理官方已删除的文件与空目录(历史只增不删的废弃文件不再残留);user-config.md、.preserve 清单文件、.upstream 对照、.bak- 备份、node_modules 依赖一律不动
|
|
29
|
+
- 三选一 [3] 差异化:[3] 稍后处理不再生成 .upstream 对照文件(与 [2] 保留我的真正区分开);配置内容与官方一致时自动清理旧 .upstream 对照
|
|
30
|
+
- deck-stage 补「配置版本机制(升级保护)」节(当前要求版本 2),与工坊其余技能对齐;全目录「四主题」表述同步为五主题(含 light IDEA 白亮)
|
|
31
|
+
- prompt-pouch 机制节补显式「当前要求版本为 4」声明
|
|
32
|
+
- README 升级保护说明同步(三选一 [3] 语义 + 新增「结构同步」条目)
|
|
33
|
+
|
|
34
|
+
**锦囊续锻:批量整理两段确认 + 标签全交互 + emoji 快捷面板**
|
|
35
|
+
|
|
36
|
+
- 批量整理升级两段确认:第一段定条目(默认 AI 智能打标——每条自动配 1-3 个语义标签,用户可改可删 + 插值泛化建议)→ 第二段定分组(归组理由 + 新组推荐名);条目少(≤3 条)两段合一
|
|
37
|
+
- 标签全交互:卡片标签悬停出「✕」点删单个标签、标签不满 3 个悬停出「+」快速加标签(授权目录即写即存,未授权生成指令交 AI);与既有点击过滤、编辑表单改标签组成闭环
|
|
38
|
+
- 分组弹窗 emoji 快捷面板:图标输入框下方预置 95 个常用 emoji 网格(9 列可滚动,点击即填入、当前选中高亮),输入框保留手输/粘贴任意字符
|
|
39
|
+
- 分组弹框放大:弹框宽度 460→640px,emoji 面板字号 17→28px、格子间距加大、可视区加高(96→200px 多行展示),观感更舒展
|
|
40
|
+
- mono/light 主体背景正名:body 三层合成背景(顶部光晕 + 网格线 + 160° 渐变)改为主题纯色——mono 纯 #1e1f22、light 纯 #ffffff,消除「上灰下黑」渐变断层,与 IDE 编辑区观感一致(tech/mint 保留原氛围背景)
|
|
41
|
+
|
|
42
|
+
## 0.5.5(2026-11-11)
|
|
43
|
+
|
|
44
|
+
**全坊主题换装 IDEA 黑亮 + 新增 IDEA 白亮**
|
|
45
|
+
|
|
46
|
+
- mono「黑」主题升级为 IDEA 黑亮(JetBrains New UI Dark 官方色系):编辑区/主体 #1e1f22 + 面板/弹框 #2b2d30 + 描边 #3c3f41 + 文字 #dfe1e5 + IDEA 蓝 #3574f0,修正上一版老 Darcula 色板(#2b2b2b 系)与 IDE 观感不符的问题
|
|
47
|
+
- 新增 light「白」主题(IntelliJ Light 官方色系):白编辑区 #ffffff + 浅灰面板 #f2f2f2 + 描边 #d1d1d1 + IDEA 蓝 #2675bf
|
|
48
|
+
- 覆盖范围:锦囊(四主题→五主题)、日报/周报/年报(四主题→五主题)、magic-deck(十六主题→十七主题)、deck-stage(四主题→五主题),换肤坞/主题数组/文档清单全同步
|
|
49
|
+
- article-to-html 不参与:A 款四主题是「主色调 accent」体系非明暗语义,D 终端极客(黑)与 C 极简白(白)已由风格款覆盖
|
|
50
|
+
|
|
5
51
|
## 0.5.4(2026-11-11)
|
|
6
52
|
|
|
7
53
|
**锦囊交互完善(SKILL.md)**
|
package/README.md
CHANGED
|
@@ -30,10 +30,10 @@
|
|
|
30
30
|
| article-to-html | 文档装裱 | [article-to-html/](article-to-html/) | Word / Markdown / 纯文本 → 精美独立 HTML(思源黑体 + Roboto 商用免费字体,图表 HTML/CSS 重绘),逐章截图(Retina 2x);现成 HTML 可直接截图或先美化 |
|
|
31
31
|
| spec-doc2spec | 工程提效 | [spec-doc2spec/](spec-doc2spec/) | Word / Markdown 需求文档转结构化需求切片(薄入口 + resources 分册);自动检测 Pandoc,未装引导跨系统安装 |
|
|
32
32
|
| spec-spec2doc | 工程提效 | [spec-spec2doc/](spec-spec2doc/) | Markdown 规格导出为 Word / PDF 交付文档;自动检测 Pandoc,未装引导跨系统安装;PDF 双路径(xelatex / Chrome 打印兜底) |
|
|
33
|
-
| magic-deck | 演示汇演 | [magic-deck/](magic-deck/) | 内容 → 单文件 HTML 幻灯(16:9 舞台 + 播放引擎 + 十六套版式模板 +
|
|
34
|
-
| deck-stage | 演示汇演 | [deck-stage/](deck-stage/) | 报告/素材 → 专业 .pptx 登台文稿:三问交互(素材 → 页骨架表 → 成片方式),常规页原生可编辑(数据卡/时间线/柱图/饼图/折线),封面与结尾页 HTML 截图保真,每页可带演讲备注;视觉与报表同源(tech/biz/mono/warm
|
|
33
|
+
| magic-deck | 演示汇演 | [magic-deck/](magic-deck/) | 内容 → 单文件 HTML 幻灯(16:9 舞台 + 播放引擎 + 十六套版式模板 + 十七套主题 + 领域成套模板 21 套 + 图表动画五式 + 动画库 + 全屏放映纯净模式):自动播放/循环/间隔、键盘热键、页内连接、逐页 PNG 截图与主体复制(不含操作元素) |
|
|
34
|
+
| deck-stage | 演示汇演 | [deck-stage/](deck-stage/) | 报告/素材 → 专业 .pptx 登台文稿:三问交互(素材 → 页骨架表 → 成片方式),常规页原生可编辑(数据卡/时间线/柱图/饼图/折线),封面与结尾页 HTML 截图保真,每页可带演讲备注;视觉与报表同源(tech/biz/mono/light/warm 五主题,mono 为 IDEA 黑亮、light 为 IDEA 白亮) |
|
|
35
35
|
| meta-forge | 技能自造 | [meta-forge/](meta-forge/) | 元技能:从需求出发锻造完整技能包(薄入口 + resources 拆分 + user-config),自动植入四大机制(CONFIG_VERSION 钥匙 / user-config 抽离 / reference 双轨 / 自检纪律),入仓库时自动登记 README 与 cli.js 分类表 |
|
|
36
|
-
| prompt-pouch | 沟通协作 | [prompt-pouch/](prompt-pouch/) | 锦囊提示词管理台:生成并维护本地 HTML 管理页面(分组侧栏/搜索/拖拽与按钮排序/收藏/{变量}
|
|
36
|
+
| prompt-pouch | 沟通协作 | [prompt-pouch/](prompt-pouch/) | 锦囊提示词管理台:生成并维护本地 HTML 管理页面(分组侧栏/搜索/拖拽与按钮排序/收藏/{变量}插值/一键复制/标签全交互(点击过滤·悬停删·快捷加,AI 批量整理智能打标)/导入导出 JSON 备份/分组 emoji 快捷面板),数据存 data/prompts.json、滚动备份在 backup/ 子目录,页面与数据分离,双笔协作(页面直写 + AI 代笔) |
|
|
37
37
|
|
|
38
38
|
## 安装
|
|
39
39
|
|
|
@@ -94,9 +94,10 @@ cp -R spec-doc2spec spec-spec2doc <你的 AI 助手技能目录>/
|
|
|
94
94
|
- **常驻保护**:目标目录已存在的 `user-config.md`(及技能 `.preserve` 清单声明的文件)永不被覆盖,你的本地配置永久保留;官方配置内容有更新时另存 `.upstream` 对照文件,可按需手动合并新配置点
|
|
95
95
|
- **版本感知**:官方 `user-config.md` 首行的 `CONFIG_VERSION` 高于你的本地版本(配置结构增/减/改名)时——
|
|
96
96
|
1. 先把你的配置备份为 `user-config.md.bak-<时间戳>`
|
|
97
|
-
2. 交互三选一:`[1] 官方覆盖`(旧配置在备份中随时找回)/ `[2] 保留我的` + 官方版另存 `.upstream` 对照(默认)/ `[3]
|
|
97
|
+
2. 交互三选一:`[1] 官方覆盖`(旧配置在备份中随时找回)/ `[2] 保留我的` + 官方版另存 `.upstream` 对照(默认)/ `[3] 稍后处理`(本次不生成对照文件)
|
|
98
98
|
3. `--yes` 或非交互环境默认 `[2]`,最安全
|
|
99
99
|
- **版本一致**:无感升级,只更新技能文件,配置原样保留
|
|
100
|
+
- **结构同步**:升级时清理官方已删除的文件与空目录(历史只增不删的废弃文件不再残留);`user-config.md`、`.preserve` 清单文件、`.upstream` 对照、`.bak-*` 备份与 `node_modules` 依赖永远不动
|
|
100
101
|
|
|
101
102
|
技能维护者约定:官方配置结构每次变化(新增/改名/删除配置键)时,`user-config.md` 的 `CONFIG_VERSION` 递增 1,并在 SKILL.md「配置版本机制」节写明迁移规则(AI 每次执行前也会自检该版本)。
|
|
102
103
|
|
package/annual-report/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: annual-report
|
|
3
|
-
description: 生成年度总结(默认五段式:年度概览/核心成果与里程碑/经验与成长/不足与反思/新年展望与规划),适配各行业(内置 12 行业职业词典,可指定角色身份)。数据来源灵活:直接口述、给一段文字、发文件(Word/PDF/Excel/PPT 等)或图片,都能整理成年度总结。支持自定义模板(可永久或临时指定)。支持自然语言指定年度(2026年/去年/近一年/最近12个月等)。当用户请求写年度总结、年终总结、年度复盘、年总结、/annual-report
|
|
3
|
+
description: 生成年度总结(默认五段式:年度概览/核心成果与里程碑/经验与成长/不足与反思/新年展望与规划),适配各行业(内置 12 行业职业词典,可指定角色身份)。数据来源灵活:直接口述、给一段文字、发文件(Word/PDF/Excel/PPT 等)或图片,都能整理成年度总结。支持自定义模板(可永久或临时指定)。支持自然语言指定年度(2026年/去年/近一年/最近12个月等)。当用户请求写年度总结、年终总结、年度复盘、年总结、/annual-report,或询问年度总结用法(年度总结怎么用/年度总结使用说明)时使用。用户说「写总结/工作总结/写个汇报」等未言明周期的词时,先 AskUserQuestion 分流(日报/周报/年报)再执行,不擅自默认。
|
|
4
4
|
allowed-tools: Bash, Read, Write
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
---
|
|
@@ -11,6 +11,7 @@ disable-model-invocation: false
|
|
|
11
11
|
|
|
12
12
|
## 生成流程
|
|
13
13
|
|
|
14
|
+
0.5 **周期歧义分流**:用户说「写总结/工作总结/写个汇报/做一份总结」等未言明周期的词 → AskUserQuestion 三选一(日报/周报/年报)确认周期再继续,不擅自默认
|
|
14
15
|
0. **读用户配置**(DISK/FORMATS/DIR/OPEN_HTML/THEME/TEMPLATE/ROLE/CONFIRM/CONFIG_VERSION、自定义模板)→ 先 Read 同目录 `user-config.md`
|
|
15
16
|
1. **解析年度**(自然语言 → 目标年度区间)→ 读 `resources/date-parsing.md`
|
|
16
17
|
2. **收集数据**(多源:会话口述 / 文字 / 文件 / 图片 / 代码提交记录,合并去重)→ 读 `resources/data-collection.md`
|
|
@@ -23,7 +24,7 @@ disable-model-invocation: false
|
|
|
23
24
|
|
|
24
25
|
**执行本 skill 前必须先 Read 同目录 `user-config.md`**:默认配置(DISK/FORMATS/DIR/OPEN_HTML/THEME/TEMPLATE/ROLE/CONFIRM/CONFIG_VERSION)与自定义模板都在该文件中,以它为准。升级技能时 user-config.md 不会被覆盖,你的修改永久保留;官方更新配置时另存 `user-config.md.upstream` 对照文件,可按需手动合并新配置点。
|
|
25
26
|
|
|
26
|
-
- **THEME**:html 页面主题,tech 深蓝科技(默认)/ biz 浅色商务 / mono
|
|
27
|
+
- **THEME**:html 页面主题,tech 深蓝科技(默认)/ biz 浅色商务 / mono IDEA 黑亮 / light IDEA 白亮 / warm 温暖渐变;生成时写 `<html data-theme="THEME值">` 定默认,页面右下角换肤坞随点随换(localStorage 记忆、?shot 截图模式与打印隐藏)
|
|
27
28
|
|
|
28
29
|
## 配置版本机制(升级保护)
|
|
29
30
|
|
|
@@ -49,5 +50,5 @@ disable-model-invocation: false
|
|
|
49
50
|
- 五段式骨架行业无关:年度概览(一句话 TL;DR + 3-6 项核心数据卡,数字带同比基准)/ 核心成果与里程碑(按季度 Q1-Q4 时间线 8-12 项,每项 20-40 字 + 价值归因)/ 经验与成长(3-5 条,个人成长允许「我」)/ 不足与反思(2-4 条三环:问题+影响+改进,改进带可验证动作与时间)/ 新年展望与规划(3-5 项目标,各带量化指标、完成标准与分季度行动节点)
|
|
50
51
|
- 中文顿号序号(1、2、3);段内无内容写「暂无」;量化优先(业务结果指标优先于提交统计),杜绝空话套话;落笔前五问自检(结论/基准/闭环/可验证/归属)
|
|
51
52
|
- 行业术语/指标/里程碑主题/风险话术/标题按 `resources/industry-dictionary.md` 职业词典取词(未提职业按 ROLE 画像;标题 = 年份前缀 + 词典「标题」变量,如「2026 研发年度总结」)
|
|
52
|
-
-
|
|
53
|
+
- 页面主题五选一(tech 深蓝科技默认 / biz 浅色商务 / mono IDEA 黑亮 / light IDEA 白亮 / warm 温暖渐变):THEME 配置定默认,右下角换肤坞随点随换
|
|
53
54
|
- 完整规则(聚合来源 / 纯文字模式 / 写作风格约束 / 使用提示)见 `resources/content-rules.md`
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
## HTML 年度版式(深蓝面板体系,与日报/周报同源)
|
|
13
13
|
|
|
14
|
-
- 复用日报/周报深蓝面板视觉体系:背景 #0a1929 + SVG feTurbulence 微噪点(opacity .04)+ 三层科技底纹(.grid-pattern 60px 青色细网格 var(--scan-dim) + .stars 8 个 1-1.5px 星点白/青/紫/绿散落 + .scanlines 2px 周期扫描线 var(--scan-dim));禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖);字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas;颜色全部用 CSS 变量统一主题令牌:19 令牌 ×
|
|
14
|
+
- 复用日报/周报深蓝面板视觉体系:背景 #0a1929 + SVG feTurbulence 微噪点(opacity .04)+ 三层科技底纹(.grid-pattern 60px 青色细网格 var(--scan-dim) + .stars 8 个 1-1.5px 星点白/青/紫/绿散落 + .scanlines 2px 周期扫描线 var(--scan-dim));禁用任何 CDN 与外部网络引用(@import、外链 CSS/JS/图片/网络字体一律禁止,页面必须公司内网离线双击可打开、零外部依赖);字体全用系统本地字体栈 ui-monospace/'SF Mono'/SFMono-Regular/Menlo/Consolas;颜色全部用 CSS 变量统一主题令牌:19 令牌 × 5 主题(tech 深蓝科技(默认,色值与旧 ask 色板一致)/biz 浅色商务/mono IDEA 黑亮(JetBrains New UI Dark 官方色系:编辑区 #1e1f22 + 面板 #2b2d30)/light IDEA 白亮(IntelliJ Light 官方色系:白编辑区 + 浅灰面板)/warm 温暖渐变,html[data-theme] 运行时切换;12 核心契约 --bg/--bg2/--panel/--panel-solid/--text/--muted/--accent/--accent2/--border/--glow/--title-grad/--tag-bg + 报告扩展 --glow-soft/--scan/--scan-dim/--heat/--green/--orange/--rose;生成时按 THEME 配置写 data-theme 定默认,页面右下角换肤坞五色点随点随换、localStorage 记忆、?shot 截图模式与打印隐藏)
|
|
15
15
|
- 头部卡片:标题按行业词典「标题」变量取词 + 年份前缀(如「2026 研发年度总结」;话术含职业词 → 该词条标题,未提职业 → 按 ROLE 画像匹配词条,词典外行业 → 「YYYY 年度总结」兜底;词典标题行见 `resources/industry-dictionary.md`)+ 副标题(ROLE 画像或年度区间)+ 生成时间行;speccore ask 同款发光特效:四边 1px 青色浮光线 transparent→var(--accent)→transparent 整条平移扫动(上 scanX 左→右、右 scanY 上→下、下 scanX-rev 右→左、左 scanY-rev 下→上,四线同周期 3s linear 单向平移,亮段完整穿越卡片后消失于两端界外,卡片 overflow:hidden 裁剪;禁止自创 background-position 滚动/常驻辉光/往返摆动/亮段半嵌常驻变体)+ 顶部光斑 cardGlow(radial-gradient ellipse at 50% 10% var(--glow)→transparent 70%,opacity .5→1 + scale 1→1.6,transform-origin top center,3s 循环,头部与每张分节卡片内均放 .card-glow 层)+ 标题文字青色光晕呼吸(text-shadow 双圈 3s 循环)
|
|
16
16
|
- 五张分节卡片(实心深蓝底 #0b1e37 + 1px 白色微透细线 8px 周期淡条纹(repeating-linear-gradient(180deg, rgba(255,255,255,.012) 0 1px, transparent 1px 8px),与日报/周报同款,头部卡片同条纹) + 上下边缘 1px 微亮描边 #0f3350 + 圆角 6px + overflow:hidden + 保留阴影与 inset 内发光),左侧 8px 宽节色竖线贯穿整卡(box-shadow 0 0 12px 同色 30% 光晕),内容 padding-left 24px;节色:概览亮蓝 linear-gradient(180deg,#38bdf8,#0ea5e9) / 成果青绿 linear-gradient(180deg,#5eead4,#14b8a6) / 成长紫 linear-gradient(180deg,#a5b4fc,#6366f1) / 反思玫红 linear-gradient(180deg,#fda4af,#e11d48) / 展望橙 linear-gradient(180deg,#fdba74,#f97316);节标题 18px 同色渐变 SVG 语义图标(概览=仪表盘、成果=奖杯、成长=上升箭头、反思=三角警示、展望=日历)+ 文字微光晕(h2 flex gap 10px,标题色=节色亮端,同色双圈发光字 3s 呼吸 secGlow 动画,仅节标题文字发光,SVG 图标不加)
|
|
17
17
|
- 数字选择:用户口述的业务结果指标(响应时间/错误率/转化率/成功率等)优先写入,提交统计(提交数/文件数/行数)仅在无业务指标时兜底,两者都有时业务指标在前、提交统计后置或省略;数字凡有对比基准必带(环比/同比/目标完成度至少其一,如「+18%」「达目标 90%」),无基准来源时不作要求 - 概览节:一句话 TL;DR 引言行 + 核心数据卡 3-6 张横排(.stat-card flex 均分:大数字 28px 渐变字 + 12px muted 标签 + 11.5px 同比小字「较去年:+18%」,上涨 --green 绿、下跌 --rose 红;数据卡左侧小色条同概览节色)
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<title>2026 研发年度总结</title>
|
|
7
7
|
<style>
|
|
8
8
|
|
|
9
|
-
/* ═══
|
|
9
|
+
/* ═══ 五主题令牌:12 核心契约(与 magic-deck 一致)+ 报告扩展(发光/氛围/热力/语义色);html[data-theme] 运行时切换,THEME 生成时定默认 ═══ */
|
|
10
10
|
:root, [data-theme="tech"]{
|
|
11
11
|
--bg:#0a1929; --bg2:#071525; --panel:rgba(11,30,55,.9); --panel-solid:#0b1e37;
|
|
12
12
|
--text:#bae6fd; --muted:#5b7fa5; --accent:#0ea5e9; --accent2:#14b8a6;
|
|
@@ -29,16 +29,27 @@
|
|
|
29
29
|
--heat:rgba(37,99,235,.55);
|
|
30
30
|
--green:#0d9488; --orange:#ea580c; --rose:#e11d48;
|
|
31
31
|
}
|
|
32
|
-
[data-theme="mono"]{
|
|
33
|
-
--bg:#
|
|
34
|
-
--
|
|
35
|
-
--
|
|
36
|
-
--
|
|
37
|
-
--
|
|
38
|
-
--
|
|
39
|
-
--scan:rgba(
|
|
40
|
-
--heat:rgba(
|
|
41
|
-
--green:#
|
|
32
|
+
[data-theme="mono"]{ /* IDEA 黑亮:JetBrains New UI Dark 官方(编辑区 #1e1f22 + 面板 #2b2d30 + 描边 #3c3f41) */
|
|
33
|
+
--bg:#1e1f22; --bg2:#2b2d30; --panel:rgba(43,45,48,.95); --panel-solid:#2b2d30;
|
|
34
|
+
--card-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 12px 32px rgba(0,0,0,.5), 0 0 24px rgba(53,116,240,.16);
|
|
35
|
+
--text:#dfe1e5; --muted:#9aa0a6; --accent:#3574f0; --accent2:#5e9aff;
|
|
36
|
+
--border:rgba(53,116,240,.26); --glow:rgba(53,116,240,.3); --glow-soft:rgba(53,116,240,.13);
|
|
37
|
+
--title-grad:linear-gradient(90deg,#dfe1e5,#5e9aff 50%,#3574f0);
|
|
38
|
+
--tag-bg:rgba(53,116,240,.13);
|
|
39
|
+
--scan:rgba(223,225,229,.18); --scan-dim:rgba(223,225,229,.07);
|
|
40
|
+
--heat:rgba(53,116,240,.55);
|
|
41
|
+
--green:#4da36b; --orange:#d09645; --rose:#d85f73;
|
|
42
|
+
}
|
|
43
|
+
[data-theme="light"]{ /* IDEA 白亮:IntelliJ Light 官方(白编辑区 + 浅灰面板 #f2f2f2 + IDEA 蓝 #2675bf) */
|
|
44
|
+
--bg:#ffffff; --bg2:#f2f2f2; --panel:rgba(255,255,255,.98); --panel-solid:#ffffff;
|
|
45
|
+
--card-shadow:0 1px 2px rgba(30,31,34,.06), 0 10px 28px rgba(30,31,34,.12);
|
|
46
|
+
--text:#1e1f22; --muted:#6e7781; --accent:#2675bf; --accent2:#4a9be0;
|
|
47
|
+
--border:rgba(38,117,191,.18); --glow:rgba(38,117,191,.2); --glow-soft:rgba(38,117,191,.1);
|
|
48
|
+
--title-grad:linear-gradient(90deg,#1e5f9f,#2675bf 55%,#4a9be0);
|
|
49
|
+
--tag-bg:rgba(38,117,191,.08);
|
|
50
|
+
--scan:rgba(38,117,191,.12); --scan-dim:rgba(38,117,191,.04);
|
|
51
|
+
--heat:rgba(38,117,191,.55);
|
|
52
|
+
--green:#2f8a5b; --orange:#d97706; --rose:#d6336c;
|
|
42
53
|
}
|
|
43
54
|
[data-theme="warm"]{
|
|
44
55
|
--bg:#f7ebd9; --bg2:#efe0c8; --panel:rgba(255,250,243,.97); --panel-solid:#fffaf3;
|
|
@@ -52,7 +63,9 @@
|
|
|
52
63
|
--green:#0d9488; --orange:#c2410c; --rose:#be123c;
|
|
53
64
|
}
|
|
54
65
|
/* 浅色主题下星点氛围自然退隐 */
|
|
55
|
-
[data-theme="biz"] .stars, [data-theme="
|
|
66
|
+
[data-theme="biz"] .stars, [data-theme="light"] .stars, [data-theme="warm"] .stars{ opacity:.28; }
|
|
67
|
+
/* mono 黑亮下星点换装:去彩改中性灰白(条纹留存不泛蓝) */
|
|
68
|
+
[data-theme="mono"] .stars{ background:radial-gradient(1px 1px at 12% 22%,rgba(223,225,229,.32),transparent),radial-gradient(1px 1px at 28% 68%,rgba(223,225,229,.28),transparent),radial-gradient(1.5px 1.5px at 45% 15%,rgba(223,225,229,.24),transparent),radial-gradient(1px 1px at 62% 78%,rgba(223,225,229,.26),transparent),radial-gradient(1px 1px at 78% 32%,rgba(223,225,229,.3),transparent),radial-gradient(1.5px 1.5px at 88% 58%,rgba(223,225,229,.28),transparent),radial-gradient(1px 1px at 8% 85%,rgba(223,225,229,.26),transparent),radial-gradient(1px 1px at 55% 45%,rgba(223,225,229,.24),transparent)}
|
|
56
69
|
|
|
57
70
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
58
71
|
html,body{background:var(--bg)}
|
|
@@ -214,7 +227,7 @@ footer{text-align:center;font-size:10px;color:var(--muted);letter-spacing:1px;pa
|
|
|
214
227
|
/* 卡片 3D 微倾斜(仅 hover 卡片) */
|
|
215
228
|
.section:hover{transform:perspective(900px) translateY(-2px) rotateY(calc(var(--mx,0)*2.5deg)) rotateX(calc(var(--my,0)*-2.5deg))}
|
|
216
229
|
|
|
217
|
-
/*
|
|
230
|
+
/* 主题换肤坞:右下角五色点随点随换,记忆上次选择;打印与截图模式隐藏 */
|
|
218
231
|
.theme-dock{
|
|
219
232
|
position:fixed; right:18px; bottom:18px; z-index:1001;
|
|
220
233
|
display:flex; gap:8px; padding:8px 10px; border-radius:999px;
|
|
@@ -230,7 +243,8 @@ footer{text-align:center;font-size:10px;color:var(--muted);letter-spacing:1px;pa
|
|
|
230
243
|
.theme-dock .th-dot.on{ border-color:var(--text); }
|
|
231
244
|
.theme-dock .th-dot[data-theme="tech"]{ background:#0ea5e9; }
|
|
232
245
|
.theme-dock .th-dot[data-theme="biz"]{ background:#2563eb; }
|
|
233
|
-
.theme-dock .th-dot[data-theme="mono"]{ background:#
|
|
246
|
+
.theme-dock .th-dot[data-theme="mono"]{ background:#1e1f22; }
|
|
247
|
+
.theme-dock .th-dot[data-theme="light"]{ background:#ffffff; }
|
|
234
248
|
.theme-dock .th-dot[data-theme="warm"]{ background:#d97706; }
|
|
235
249
|
@media print{ .theme-dock{ display:none; } }
|
|
236
250
|
</style>
|
|
@@ -376,11 +390,12 @@ footer{text-align:center;font-size:10px;color:var(--muted);letter-spacing:1px;pa
|
|
|
376
390
|
<footer>GENERATED BY SPECCORE TEAM · 2026</footer>
|
|
377
391
|
</div>
|
|
378
392
|
|
|
379
|
-
<!--
|
|
393
|
+
<!-- 主题换肤坞(五色点) -->
|
|
380
394
|
<div class="theme-dock" id="themeDock">
|
|
381
395
|
<button class="th-dot" type="button" data-theme="tech" title="深蓝科技"></button>
|
|
382
396
|
<button class="th-dot" type="button" data-theme="biz" title="浅色商务"></button>
|
|
383
|
-
<button class="th-dot" type="button" data-theme="mono" title="
|
|
397
|
+
<button class="th-dot" type="button" data-theme="mono" title="IDEA 黑亮"></button>
|
|
398
|
+
<button class="th-dot" type="button" data-theme="light" title="IDEA 白亮"></button>
|
|
384
399
|
<button class="th-dot" type="button" data-theme="warm" title="温暖渐变"></button>
|
|
385
400
|
</div>
|
|
386
401
|
|
|
@@ -433,9 +448,9 @@ if (location.search.indexOf('shot=content') > -1) {
|
|
|
433
448
|
});
|
|
434
449
|
}
|
|
435
450
|
|
|
436
|
-
//
|
|
451
|
+
// 主题换肤:五套配色随点随换;记忆上次选择(localStorage,失败静默);?shot 截图模式隐藏坞
|
|
437
452
|
(function(){
|
|
438
|
-
var THEMES = ['tech','biz','mono','warm'];
|
|
453
|
+
var THEMES = ['tech','biz','mono','light','warm'];
|
|
439
454
|
var dock = document.getElementById('themeDock');
|
|
440
455
|
if (!dock) return;
|
|
441
456
|
if (location.search.indexOf('shot=') !== -1){ dock.style.display = 'none'; }
|
|
@@ -16,7 +16,7 @@ DIR: auto # 落盘根目录:auto = 按当前系统自动
|
|
|
16
16
|
DIR_MAC: /Users/luzhaosheng/MyWork/智慧食堂/reports # macOS 落盘根目录(自动按目标年度建子目录 annual-YYYY;目录不存在时回退用户主目录下 reports)
|
|
17
17
|
DIR_WIN: d:\Workspace_QCoder\reports # Windows 落盘根目录(自动按目标年度建子目录 annual-YYYY;目录/盘符不存在时回退用户主目录下 reports)
|
|
18
18
|
OPEN_HTML: true # 落盘后是否自动用浏览器打开 html(FORMATS 不含 html 时忽略)
|
|
19
|
-
THEME: tech # html 页面主题:tech 深蓝科技(默认)/ biz 浅色商务 / mono
|
|
19
|
+
THEME: tech # html 页面主题:tech 深蓝科技(默认)/ biz 浅色商务 / mono IDEA 黑亮 / light IDEA 白亮 / warm 温暖渐变;生成时写 <html data-theme="THEME值"> 定默认,页面右下角换肤坞五色点随点随换(浏览器本地记忆,?shot 截图模式自动隐藏,打印隐藏)
|
|
20
20
|
TEMPLATE: default # 报告模板:default = 内置五段式(年度概览/核心成果与里程碑/经验与成长/不足与反思/新年展望与规划);custom = 使用下方「📝 自定义模板」节;口头临时指定模板仅当次生效
|
|
21
21
|
ROLE: 全栈开发工程师(企业内技术开发) # 用户默认职业角色与主要工作内容(两者并存:职业名 + 括号内工作内容,生成内容/术语/量化指标/里程碑/风险话术全部按此画像走);用户随口描述职业时(如「我搞装修的,天天跑工地」)→ AI 提炼为规范表述(装修项目经理(负责工地现场管理、施工进度与质量巡检))更新此处;说「以 XX 的身份写」→ 当次临时换角色不改配置;说「以后默认用 XX 角色 / 我的职业是 XX / 我的主要工作是 XX」→ 永久更新此处
|
|
22
22
|
CONFIRM: never # 落盘前确认:never = 直接生成落盘不确认(默认);text = 纯文字整理模式先出效果确认后再落盘;always = 任何方式生成都先确认;临时说「先看看效果」当次先确认、说「不用确认」当次跳过
|
package/article-to-html/SKILL.md
CHANGED
|
@@ -9,45 +9,7 @@ Turn any Word/Markdown/plain-text article into a standalone styled HTML page and
|
|
|
9
9
|
|
|
10
10
|
## 用户使用说明(User Guide)
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
### 能干什么(三句话版)
|
|
15
|
-
|
|
16
|
-
1. **文档变网页**:把 Word / Markdown / 纯文本文章装裱成带封面的精美 HTML 页面——免费商用字体、图表矢量重绘、双击即开
|
|
17
|
-
2. **已有页面美化**:给一个现成的 HTML 换装修(配色/排版/组件样式),不动正文文字
|
|
18
|
-
3. **按章节截图**:把文章页面按章节截成统一宽度的高清图(1460px),适合公众号配图与拼长图
|
|
19
|
-
|
|
20
|
-
### 用户怎么开口(示例话术)
|
|
21
|
-
|
|
22
|
-
| 用户说(说法可以换) | 技能做 |
|
|
23
|
-
|:---|:---|
|
|
24
|
-
| 「把这篇文章转成 HTML」「做成网页」「排版一下」「公众号排版」 | 走全流程:解析 → 建页面 → 截图前先问一句效果满意否 |
|
|
25
|
-
| 直接丢一个 .docx / .md / .txt 文件路径(什么都不说也行) | 同上,丢路径即触发 |
|
|
26
|
-
| 「把这篇 Word 转成好看的网页,顺便截个图」 | 全流程,用户点头后自动逐章截图 |
|
|
27
|
-
| 「这个页面美化一下」「装修一下」「换个配色」「好看点」 | 只装修已有 HTML,不改正文 |
|
|
28
|
-
| 「这个 HTML 按章节截图」「截成长图」「每章一张图」「出图」 | 只截图,先看页面结构再逐章定格 |
|
|
29
|
-
| 「使用说明」「怎么用」「能干什么」「有什么功能」 | 回复本节的人话版用法说明 |
|
|
30
|
-
|
|
31
|
-
### 过程中会问什么
|
|
32
|
-
|
|
33
|
-
- **字体**:系统缺思源黑体时,问是否自动安装(全页只许 Roboto + 思源黑体,无替代字体)
|
|
34
|
-
- **风格**:文章气质拿不准时,让用户在 2-4 款版式候选里挑
|
|
35
|
-
- **确认一**:页面做好后、截图前问「效果满意吗」——可反复调,至多 3 轮
|
|
36
|
-
- **确认二**:截完图请用户抽看封面 + 最长章节两张图,发现缺字/截断只重截该章
|
|
37
|
-
|
|
38
|
-
### 交付物
|
|
39
|
-
|
|
40
|
-
- `<标题>.html`——标准版(配 assets/fonts 字体文件)
|
|
41
|
-
- `<标题>-单文件版.html`——字体全内嵌,双击即开、可随意移动分享
|
|
42
|
-
- `文章截图/章节截图/C00-封面.png … C0N-xx.png`——统一 1460px 宽,按序拼接即整篇长图
|
|
43
|
-
|
|
44
|
-
### 常见问题
|
|
45
|
-
|
|
46
|
-
- **为什么截图统一 1460px 宽?** 统一规格便于拼长图、发公众号,Retina 2x 保证高清
|
|
47
|
-
- **为什么只有 Roboto + 思源黑体?** 两者均为免费商用授权,其余字体一律不用,零侵权
|
|
48
|
-
- **单文件版什么时候给?** 定稿后重铸一次;中途调整期间不重铸以省时间
|
|
49
|
-
- **改过的文章再处理?** 会先问「覆盖重生成 / 只重新截图 / 仅改样式」三选一
|
|
50
|
-
- **页面能换主题色吗?** A 款页面右下角四个色点随时切换(科技蓝/暖棕金/墨绿/梅紫),浏览器记住上次选择;默认主题色在 user-config.md 的 THEME 配置里改
|
|
12
|
+
当用户问「这个技能怎么用」「使用说明」「能干什么」时,读 `resources/usage-guide.md` 将其内容原样输出(首行标题改为「文章装裱师使用指南」),不执行任何转换或截图动作。
|
|
51
13
|
|
|
52
14
|
## ⚙️ 配置与自定义主题
|
|
53
15
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# 文章装裱师使用指南
|
|
2
|
+
|
|
3
|
+
当用户问「这个技能怎么用」「使用说明」「能干什么」时,用本节的人话版说明回复,不要复述内部流程术语(骨架侦察/零侵权核查等)。
|
|
4
|
+
|
|
5
|
+
### 能干什么(三句话版)
|
|
6
|
+
|
|
7
|
+
1. **文档变网页**:把 Word / Markdown / 纯文本文章装裱成带封面的精美 HTML 页面——免费商用字体、图表矢量重绘、双击即开
|
|
8
|
+
2. **已有页面美化**:给一个现成的 HTML 换装修(配色/排版/组件样式),不动正文文字
|
|
9
|
+
3. **按章节截图**:把文章页面按章节截成统一宽度的高清图(1460px),适合公众号配图与拼长图
|
|
10
|
+
|
|
11
|
+
### 用户怎么开口(示例话术)
|
|
12
|
+
|
|
13
|
+
| 用户说(说法可以换) | 技能做 |
|
|
14
|
+
|:---|:---|
|
|
15
|
+
| 「把这篇文章转成 HTML」「做成网页」「排版一下」「公众号排版」 | 走全流程:解析 → 建页面 → 截图前先问一句效果满意否 |
|
|
16
|
+
| 直接丢一个 .docx / .md / .txt 文件路径(什么都不说也行) | 同上,丢路径即触发 |
|
|
17
|
+
| 「把这篇 Word 转成好看的网页,顺便截个图」 | 全流程,用户点头后自动逐章截图 |
|
|
18
|
+
| 「这个页面美化一下」「装修一下」「换个配色」「好看点」 | 只装修已有 HTML,不改正文 |
|
|
19
|
+
| 「这个 HTML 按章节截图」「截成长图」「每章一张图」「出图」 | 只截图,先看页面结构再逐章定格 |
|
|
20
|
+
| 「使用说明」「怎么用」「能干什么」「有什么功能」 | 回复本节的人话版用法说明 |
|
|
21
|
+
|
|
22
|
+
### 过程中会问什么
|
|
23
|
+
|
|
24
|
+
- **字体**:系统缺思源黑体时,问是否自动安装(全页只许 Roboto + 思源黑体,无替代字体)
|
|
25
|
+
- **风格**:文章气质拿不准时,让用户在 2-4 款版式候选里挑
|
|
26
|
+
- **确认一**:页面做好后、截图前问「效果满意吗」——可反复调,至多 3 轮
|
|
27
|
+
- **确认二**:截完图请用户抽看封面 + 最长章节两张图,发现缺字/截断只重截该章
|
|
28
|
+
|
|
29
|
+
### 交付物
|
|
30
|
+
|
|
31
|
+
- `<标题>.html`——标准版(配 assets/fonts 字体文件)
|
|
32
|
+
- `<标题>-单文件版.html`——字体全内嵌,双击即开、可随意移动分享
|
|
33
|
+
- `文章截图/章节截图/C00-封面.png … C0N-xx.png`——统一 1460px 宽,按序拼接即整篇长图
|
|
34
|
+
|
|
35
|
+
### 常见问题
|
|
36
|
+
|
|
37
|
+
- **为什么截图统一 1460px 宽?** 统一规格便于拼长图、发公众号,Retina 2x 保证高清
|
|
38
|
+
- **为什么只有 Roboto + 思源黑体?** 两者均为免费商用授权,其余字体一律不用,零侵权
|
|
39
|
+
- **单文件版什么时候给?** 定稿后重铸一次;中途调整期间不重铸以省时间
|
|
40
|
+
- **改过的文章再处理?** 会先问「覆盖重生成 / 只重新截图 / 仅改样式」三选一
|
|
41
|
+
- **页面能换主题色吗?** A 款页面右下角四个色点随时切换(科技蓝/暖棕金/墨绿/梅紫),浏览器记住上次选择;默认主题色在 user-config.md 的 THEME 配置里改
|
package/cli.js
CHANGED
|
@@ -41,6 +41,9 @@ const KNOWN_SKILL_DIRS = [
|
|
|
41
41
|
// 包内不视为技能的目录
|
|
42
42
|
const SKIP_DIRS = new Set(["template", "node_modules", ".git", ".github"]);
|
|
43
43
|
|
|
44
|
+
// 复制时排除的杂质(macOS 元数据 / 嵌套版本库目录)
|
|
45
|
+
const COPY_EXCLUDE = new Set([".ds_store", ".git"]);
|
|
46
|
+
|
|
44
47
|
// ---------- 工具 ----------
|
|
45
48
|
|
|
46
49
|
function expandHome(p) {
|
|
@@ -129,26 +132,52 @@ function stamp() {
|
|
|
129
132
|
return "" + d.getFullYear() + p(d.getMonth() + 1) + p(d.getDate()) + "-" + p(d.getHours()) + p(d.getMinutes()) + p(d.getSeconds());
|
|
130
133
|
}
|
|
131
134
|
|
|
132
|
-
function copyDir(src, dest, preserve, hits, upstreams) {
|
|
135
|
+
function copyDir(src, dest, preserve, hits, upstreams, genUpstream) {
|
|
133
136
|
fs.mkdirSync(dest, { recursive: true });
|
|
134
137
|
for (const entry of fs.readdirSync(src)) {
|
|
138
|
+
if (COPY_EXCLUDE.has(entry.toLowerCase())) continue; // 跳过 .DS_Store 等杂质
|
|
135
139
|
const s = path.join(src, entry);
|
|
136
140
|
const d = path.join(dest, entry);
|
|
137
|
-
if (fs.statSync(s).isDirectory()) copyDir(s, d, preserve, hits, upstreams);
|
|
141
|
+
if (fs.statSync(s).isDirectory()) copyDir(s, d, preserve, hits, upstreams, genUpstream);
|
|
138
142
|
else if (preserve.has(entry.toLowerCase()) && fs.existsSync(d)) {
|
|
139
143
|
hits.push(d);
|
|
140
144
|
// 配置演进:官方版与本地版内容不同时,另存 .upstream 对照文件,供用户手动合并新配置点
|
|
141
145
|
const sData = fs.readFileSync(s, "utf8");
|
|
142
146
|
const dData = fs.readFileSync(d, "utf8");
|
|
143
147
|
if (sData !== dData) {
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
if (genUpstream !== false) {
|
|
149
|
+
fs.writeFileSync(d + ".upstream", sData);
|
|
150
|
+
upstreams.push(d + ".upstream");
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
// 内容已一致(用户已手动合并或本就相同),旧对照文件已无意义
|
|
154
|
+
try { fs.unlinkSync(d + ".upstream"); } catch (e) {}
|
|
146
155
|
}
|
|
147
156
|
}
|
|
148
157
|
else fs.copyFileSync(s, d);
|
|
149
158
|
}
|
|
150
159
|
}
|
|
151
160
|
|
|
161
|
+
// 升级前清理:删除目标目录中官方已移除的文件(历史升级只增不删,废弃文件会残留)
|
|
162
|
+
// 保护:preserve 清单文件、.upstream 对照、.bak- 备份、node_modules 依赖、COPY_EXCLUDE 项一律不动
|
|
163
|
+
function pruneDir(src, dest, preserve) {
|
|
164
|
+
if (!fs.existsSync(dest)) return;
|
|
165
|
+
for (const entry of fs.readdirSync(dest)) {
|
|
166
|
+
const lower = entry.toLowerCase();
|
|
167
|
+
if (COPY_EXCLUDE.has(lower)) continue;
|
|
168
|
+
if (lower === "node_modules" || lower.endsWith(".upstream") || lower.includes(".bak-")) continue;
|
|
169
|
+
if (preserve.has(lower)) continue; // 用户文件永不删除
|
|
170
|
+
const d = path.join(dest, entry);
|
|
171
|
+
const s = path.join(src, entry);
|
|
172
|
+
if (fs.statSync(d).isDirectory()) {
|
|
173
|
+
pruneDir(s, d, preserve);
|
|
174
|
+
if (fs.readdirSync(d).length === 0) fs.rmdirSync(d); // 清空后的目录一并删除
|
|
175
|
+
} else if (!fs.existsSync(s)) {
|
|
176
|
+
fs.unlinkSync(d);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
152
181
|
function ask(question) {
|
|
153
182
|
return new Promise((resolve) => {
|
|
154
183
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -288,7 +317,7 @@ async function upgradeSkill(src, dest, argv, existed) {
|
|
|
288
317
|
if (process.stdin.isTTY && !argv.yes) {
|
|
289
318
|
console.log(" [1] 官方覆盖 —— 用官方新配置替换(旧配置在备份中,随时找回)");
|
|
290
319
|
console.log(" [2] 保留我的 —— 不覆盖,官方新配置另存 .upstream 对照(默认)");
|
|
291
|
-
console.log(" [3] 稍后处理 ——
|
|
320
|
+
console.log(" [3] 稍后处理 —— 本次只升级技能文件,不生成对照文件,配置改天自己合并");
|
|
292
321
|
const ans = await ask(" 你的选择(回车默认 2):");
|
|
293
322
|
if (ans === "1") mode = "official";
|
|
294
323
|
else if (ans === "3") mode = "later";
|
|
@@ -302,7 +331,9 @@ async function upgradeSkill(src, dest, argv, existed) {
|
|
|
302
331
|
fs.unlinkSync(localCfg); // 备份已做,移除后 copyDir 正常覆盖
|
|
303
332
|
try { fs.unlinkSync(localCfg + ".upstream"); } catch (e) {} // 旧对照已无意义,清理
|
|
304
333
|
}
|
|
305
|
-
|
|
334
|
+
const preserve = loadPreserveSet(src);
|
|
335
|
+
if (existed) pruneDir(src, dest, preserve); // 先清理官方已删除的文件,再复制(只增不删 → 结构同步)
|
|
336
|
+
copyDir(src, dest, preserve, hits, upstreams, mode !== "later"); // [3] 稍后处理不生成对照文件
|
|
306
337
|
|
|
307
338
|
// 依赖提示:技能自带 package.json(如 deck-stage 依赖 PptxGenJS)且目标无 node_modules 时
|
|
308
339
|
// (本地仓库直装会连带复制 node_modules 离线可用;npm 全局装出的包不含 node_modules)
|
|
@@ -314,6 +345,8 @@ async function upgradeSkill(src, dest, argv, existed) {
|
|
|
314
345
|
let note = existed ? "已更新" : "已安装";
|
|
315
346
|
if (mode === "official") {
|
|
316
347
|
note += `(已用官方配置覆盖,你的旧配置备份在 ${path.basename(bakFile)})`;
|
|
348
|
+
} else if (mode === "later") {
|
|
349
|
+
note += `(配置结构有变:你的配置已备份 ${path.basename(bakFile)},本次未生成对照文件,请稍后自行合并)`;
|
|
317
350
|
} else if (bakFile) {
|
|
318
351
|
const ups = upstreams.map((u) => path.basename(u)).join("、");
|
|
319
352
|
note += `(配置结构有变:你的配置已备份 ${path.basename(bakFile)}` +
|
|
@@ -494,7 +527,7 @@ function printHelp() {
|
|
|
494
527
|
· 官方 user-config.md 的 CONFIG_VERSION 高于你的本地版本(配置结构变化)时:
|
|
495
528
|
先备份你的配置为 user-config.md.bak-<时间戳>,再询问三选一——
|
|
496
529
|
[1] 官方覆盖(备份在侧,随时找回)/ [2] 保留我的 + 官方版另存 .upstream 对照(默认)
|
|
497
|
-
[3]
|
|
530
|
+
[3] 稍后处理(不生成对照文件);--yes 或非交互时默认 [2]
|
|
498
531
|
|
|
499
532
|
示例:
|
|
500
533
|
skill-forge ls
|
package/daily-report/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: daily-report
|
|
3
|
-
description: 生成工作日报(默认任务进度/明日计划/风险阻塞点三段结构,中文顿号序号),适配各行业(内置 12 行业职业词典,可指定角色身份)。数据来源灵活:直接口述、给一段文字、发文件(Word/PDF/Excel/PPT 等)或图片,都能整理成日报。支持自定义模板(可永久或临时指定)。支持自然语言指定日期(今天/昨天/上周三/10月20号等)。当用户请求写日报、今日日报、昨天的日报、生成日报、/daily-report
|
|
3
|
+
description: 生成工作日报(默认任务进度/明日计划/风险阻塞点三段结构,中文顿号序号),适配各行业(内置 12 行业职业词典,可指定角色身份)。数据来源灵活:直接口述、给一段文字、发文件(Word/PDF/Excel/PPT 等)或图片,都能整理成日报。支持自定义模板(可永久或临时指定)。支持自然语言指定日期(今天/昨天/上周三/10月20号等)。当用户请求写日报、今日日报、昨天的日报、生成日报、/daily-report,或询问日报用法(日报怎么用/日报使用说明/日报有哪些使用方式)时使用。用户说「写总结/工作总结/写个汇报」等未言明周期的词时,先 AskUserQuestion 分流(日报/周报/年报)再执行,不擅自默认。
|
|
4
4
|
allowed-tools: Bash, Read, Write
|
|
5
5
|
disable-model-invocation: false
|
|
6
6
|
---
|
|
@@ -11,6 +11,7 @@ disable-model-invocation: false
|
|
|
11
11
|
|
|
12
12
|
## 生成流程
|
|
13
13
|
|
|
14
|
+
0.5 **周期歧义分流**:用户说「写总结/工作总结/写个汇报/做一份总结」等未言明周期的词 → AskUserQuestion 三选一(日报/周报/年报)确认周期再继续,不擅自默认
|
|
14
15
|
0. **读用户配置**(DISK/FORMATS/DIR/OPEN_HTML/THEME/TEMPLATE/ROLE/CONFIRM/CONFIG_VERSION、自定义模板)→ 先 Read 同目录 `user-config.md`
|
|
15
16
|
1. **解析日期**(自然语言 → 目标日期 YYYY-MM-DD)→ 读 `resources/date-parsing.md`
|
|
16
17
|
2. **收集数据**(多源:会话口述 / 文字 / 文件 / 图片 / 代码提交记录,合并去重)→ 读 `resources/data-collection.md`
|
|
@@ -23,7 +24,7 @@ disable-model-invocation: false
|
|
|
23
24
|
|
|
24
25
|
**执行本 skill 前必须先 Read 同目录 `user-config.md`**:默认配置(DISK/FORMATS/DIR/OPEN_HTML/THEME/TEMPLATE/ROLE/CONFIRM/CONFIG_VERSION)与自定义模板都在该文件中,以它为准。升级技能时 user-config.md 不会被覆盖,你的修改永久保留;官方更新配置时另存 `user-config.md.upstream` 对照文件,可按需手动合并新配置点。
|
|
25
26
|
|
|
26
|
-
- **THEME**:html 页面主题,tech 深蓝科技(默认)/ biz 浅色商务 / mono
|
|
27
|
+
- **THEME**:html 页面主题,tech 深蓝科技(默认)/ biz 浅色商务 / mono IDEA 黑亮 / light IDEA 白亮 / warm 温暖渐变;生成时写 `<html data-theme="THEME值">` 定默认,页面右下角换肤坞随点随换(localStorage 记忆、?shot 截图模式与打印隐藏)
|
|
27
28
|
|
|
28
29
|
## 配置版本机制(升级保护)
|
|
29
30
|
|
|
@@ -50,5 +51,5 @@ disable-model-invocation: false
|
|
|
50
51
|
- 三段兜底写「暂无」;计划点带进度百分比与预估用时+完成标准(口述有时必写);风险阻塞点四环(问题+影响+建议+责任与时间,第四环口述有时必写)
|
|
51
52
|
- 用时单位 XH(小时),估算值注明「约」
|
|
52
53
|
- 数字凡有对比基准必带;业务结果指标优先于提交统计;流水无主语、结论判断归因处允许「我」;落笔前五问自检(结论/基准/闭环/可验证/归属)
|
|
53
|
-
-
|
|
54
|
+
- 页面主题五选一(tech 深蓝科技默认 / biz 浅色商务 / mono IDEA 黑亮 / light IDEA 白亮 / warm 温暖渐变):THEME 配置定默认,右下角换肤坞随点随换
|
|
54
55
|
- 完整规则(聚合来源 / 纯文字模式 / 写作风格约束 / 使用提示)见 `resources/content-rules.md`
|