@topmindspace/tms-skills 0.1.1 → 0.1.3
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 +82 -0
- package/README.md +13 -3
- package/bin/tms-skills.js +7 -2
- package/package.json +1 -1
- package/top-ppt-html/README.md +69 -148
- package/top-ppt-html/SKILL.md +42 -23
- package/top-ppt-html/agents/openai.yaml +5 -0
- package/top-ppt-html/assets/theme-overview-architecture.png +0 -0
- package/top-ppt-html/assets/theme-overview-research.png +0 -0
- package/top-ppt-html/assets/theme-overview.png +0 -0
- package/top-ppt-html/evals/trigger-queries.json +181 -0
- package/top-ppt-html/package.json +3 -2
- package/top-ppt-html/references/chart-decision-tree.md +42 -0
- package/top-ppt-html/references/charts-discipline.md +3 -1
- package/top-ppt-html/references/charts.md +24 -15
- package/top-ppt-html/references/content-rules.md +54 -34
- package/top-ppt-html/references/default-surface.md +62 -0
- package/top-ppt-html/references/design-system.md +2 -2
- package/top-ppt-html/references/failure-modes.md +14 -1
- package/top-ppt-html/references/icons.md +56 -277
- package/top-ppt-html/references/illustration-layout.md +39 -0
- package/top-ppt-html/references/layout-grammar.md +16 -6
- package/top-ppt-html/references/modes.md +16 -11
- package/top-ppt-html/references/outline-design.md +24 -0
- package/top-ppt-html/references/page-type-matrix.md +35 -0
- package/top-ppt-html/references/playbook.md +42 -86
- package/top-ppt-html/references/pptx-export.md +20 -2
- package/top-ppt-html/references/presentation-craft.md +77 -0
- package/top-ppt-html/references/tech-design.md +11 -5
- package/top-ppt-html/scripts/audit_docs.py +1 -1
- package/top-ppt-html/scripts/audit_skill.py +45 -6
- package/top-ppt-html/scripts/build_examples.py +39 -2260
- package/top-ppt-html/scripts/build_pptx.js +6 -0
- package/top-ppt-html/scripts/check_triggers.py +153 -0
- package/top-ppt-html/scripts/checks_html.py +39 -0
- package/top-ppt-html/scripts/cross_verify.py +5 -1
- package/top-ppt-html/scripts/extract_snippet.py +2 -2
- package/top-ppt-html/scripts/layout-constants.json +111 -18
- package/top-ppt-html/scripts/lib_layout_regions.js +7 -9
- package/top-ppt-html/scripts/negative_tests.py +137 -1
- package/top-ppt-html/scripts/package_skill.py +29 -10
- package/top-ppt-html/scripts/quality_gate.py +11 -3
- package/top-ppt-html/scripts/recommend_layout.py +384 -0
- package/top-ppt-html/scripts/regression.py +1 -1
- package/top-ppt-html/scripts/smoke_pptx.sh +30 -0
- package/top-ppt-html/scripts/sync_runtime.py +22 -25
- package/top-ppt-html/scripts/validate_pptx.py +69 -0
- package/top-ppt-html/scripts/validate_report.py +336 -10
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.html +0 -3926
- package/top-ppt-html/assets/examples/2026-09-09-architecture-spectrum.model.json +0 -168
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.html +0 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-apple-mono.model.json +0 -321
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.html +0 -4325
- package/top-ppt-html/assets/examples/2026-09-09-presentation-brand-red.model.json +0 -321
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.html +0 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-deep-teal.model.json +0 -914
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.html +0 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-indigo-violet.model.json +0 -914
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.html +0 -5527
- package/top-ppt-html/assets/examples/2026-09-09-research-warm-sand.model.json +0 -914
- package/top-ppt-html/references/design-system-engine.md +0 -235
- package/top-ppt-html/references/industry-benchmark.md +0 -105
- package/top-ppt-html/references/reform-plan.md +0 -252
- package/top-ppt-html/scripts/layout_slots.json +0 -830
package/CHANGELOG.md
CHANGED
|
@@ -1,7 +1,89 @@
|
|
|
1
|
+
## 0.1.3 — 2026-09-24
|
|
2
|
+
|
|
3
|
+
### top-ppt-html · QA close-out + docs
|
|
4
|
+
|
|
5
|
+
- **P2-4 playbook 拆表**:意图→页型穷举 → `references/page-type-matrix.md`;图表决策表+七种误用 → `references/chart-decision-tree.md`。playbook 保留 Mode 契约 / V1–V4 / 组合 / **图表多样性摘要** / **反截断** / 路径·命令·L2 路由(体积 22KB→~17KB)。
|
|
6
|
+
- **版本对齐**:根 README / 技能 README / PUBLISHING / `metadata.version` / 双 `package.json` → **0.1.3**(消除残留 0.1.0 横幅)。
|
|
7
|
+
- **IMAGE_CAPTION**:配图页亦认 so-what/lead/figcaption;新增 WARN `IMAGE_NEAR_EMPTY`(近图过空)。
|
|
8
|
+
- **P2-2/P2-3**:不引入 Claude-only `when_to_use`、不写跨端风险 `allowed-tools`(`skills-ref validate` 已通过开放标准字段;扩展字段留给宿主实验)。
|
|
9
|
+
- **P2-5**:可选 `npx skills-ref@0.1.5 validate ./top-ppt-html`(不作为发布硬依赖;主门禁仍 `audit_skill`)。
|
|
10
|
+
- **docs**:根 README 安装表/钉版本/`@0.1.3`;技能 README 改为人类维护指南并指向 SKILL;package REQUIRED + MIN refs ≥25。
|
|
11
|
+
|
|
12
|
+
### Installer
|
|
13
|
+
|
|
14
|
+
- `@topmindspace/tms-skills` → **0.1.3**(整仓同 tag)。
|
|
15
|
+
|
|
16
|
+
### 此前 Unreleased(agent-compat,随 0.1.3 一并发布)
|
|
17
|
+
|
|
18
|
+
- **P0-1 Trigger eval**:`evals/trigger-queries.json` + `scripts/check_triggers.py`;`package_skill.py --check` 门禁。
|
|
19
|
+
- **P0-2 Mode A 读预算诚实**:L0+L1=2;Mode A/Fast 可加 L1.5(`default-surface` + `presentation-craft`)。
|
|
20
|
+
- **P0-3 反过读**:禁止整读清单 + 强制 `extract_snippet.py`。
|
|
21
|
+
- **P1 Frontmatter / 安装路径 / Fast 最小大纲 / 插画 brief**:license·compatibility·metadata;Cursor/Codex 路径;`illustration-layout.md`;`agents/openai.yaml`。
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
## 0.1.2 — 2026-09-24
|
|
25
|
+
|
|
26
|
+
### top-ppt-html · P2 cleanup(advanced 按需 · Mode A 次级骨架 · icons 压缩)
|
|
27
|
+
|
|
28
|
+
- **Advanced charts 按需**:默认读面 = `charts-discipline` + 核图 8;`charts-extended.md` **禁止预读**,仅意图命中 `extract_snippet.py --chart`。`charts.variety.preferCoreFirst` + validate WARN(A/B);advanced **计入** `minTypes`(不降 `presentation=4`,不缩 registry)。
|
|
29
|
+
- **Mode A 骨架分层**:主力 P1–P4+P6/P10;次级 P7–P9/P11–P12(`layoutSystem.modeSkels` + layout-grammar / default-surface / recommend_layout 同口径);画廊侧重主力。
|
|
30
|
+
- **icons.md 压缩**:语义表 + 禁区 + 尺寸档 + 高频 20 SVG(~8.7KB);完整枚举 → `docs/archive/refs/icons-catalog.md`;package 仍 REQUIRED。
|
|
31
|
+
- **docs 对齐**:SKILL / playbook / presentation-craft / modes / charts 门面同步;Fast Mode + 长文溢出序保持不变。
|
|
32
|
+
|
|
33
|
+
### Installer
|
|
34
|
+
|
|
35
|
+
- 安装器 `@topmindspace/tms-skills` → **0.1.2**(随技能包内容更新)。
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### top-ppt-html · Long-text / Quality round(反截断 + 门禁加深)
|
|
40
|
+
|
|
41
|
+
- **反截断政策**:Mode A / content-rules / presentation-craft「长文与信息承载」——溢出顺序固定为 重构→拆页/分章→换形态→有限 fontShrink;**禁止**静默截断 / 砍 so-what / 为疏朗删实质。单页字数改预警(presentation char 1800),不为「字多」单独 FAIL。
|
|
42
|
+
- **结构引导取代硬砍刀**:列表/卡片 `maxItemChars` 等改为引导 + prefer;checklist 同步。
|
|
43
|
+
- **layout-qa 加深**:`LAYOUT_QA_TRUNCATION` / `OVERFLOW_NO_SPLIT` / `HALF_EMPTY` / `ALIGN_RHYTHM`;presentation `--strict` 仍自动 layout-qa。负例 L4–L6。
|
|
44
|
+
- **recommend_layout**:高容量意图 → 多页序列(议程→主张→证据卡→明细),禁一页塞爆。
|
|
45
|
+
- **P1-3 charts facade**:纪律优先 → 核图 8 → extended 按需;**不降** `minTypes.presentation=4`。
|
|
46
|
+
- **P1-4 会场字号**:pptx-export venue 表(小会议室 / 默认 / 礼堂)。
|
|
47
|
+
- **P1-6 chrome**:跨页页脚 y 漂移 `CHROME_DRIFT` WARN + 文档说明。
|
|
48
|
+
|
|
49
|
+
### top-ppt-html · Presentation Craft(Mode A 工艺)
|
|
50
|
+
|
|
51
|
+
- **P0-1 图表多样性(用户明确保留)**:**不降** `minTypes.presentation`(仍为 **4**);registry/advanced 图种保留。纪律改为「按内容选型拉开多样」+ 禁反模式(简单全幅 / 极偏 donut / 为过门禁硬上冷门图);playbook §五 / layout-qa 同步。
|
|
52
|
+
- **P0-2 default-surface**:升为 Mode A / Fast 演示主读面(12 页型 + 8 核图 + V1–V4;P5–P12/advanced 按需);SKILL L2 索引指向。
|
|
53
|
+
- **P0-3 layout-qa 默认**:`validate_report --strict` 在 presentation 下自动 `--layout-qa`;`quality_gate` 同口径;B/C 不强制。
|
|
54
|
+
- **P0-4 主张标题**:Mode A action/claim title(禁话题标签)写入 content-rules / modes;校验 WARN。
|
|
55
|
+
- **P0-5 `presentation-craft.md`**:中英术语一页纸清单(one idea / 3s / whitespace / CRAP / motion=none / WCAG…);package REQUIRED。
|
|
56
|
+
- **P1**:fillTarget A 58–75% + intentional whitespace 豁免;`recommend_layout` 偏 V1–V4、降 donut 默认权重;Fast 路演/汇报/发布/演讲/demo→A;motion=none 铁律短句。
|
|
57
|
+
|
|
58
|
+
### top-ppt-html · Batch 3(瘦身)
|
|
59
|
+
|
|
60
|
+
- **归档 L2**:`industry-benchmark.md` / `design-system-engine.md` → `docs/archive/refs/`(生成路径不读)。
|
|
61
|
+
- **layoutSlots 单源**:删除 `scripts/layout_slots.json`;`lib_layout_regions.js` / `sync_runtime.py` 只读 `layout-constants.layoutSlots`。
|
|
62
|
+
- **示例**:`assets/examples/` 仅留 3 份黄金样张(每模式 1);其余 → `docs/archive/examples/`;`build_examples.py` 瘦身为自检(全量脚本归档)。
|
|
63
|
+
- **主题 PNG**:`theme-overview*.png` 量化压缩约 −70%。
|
|
64
|
+
- **default-surface.md**:12 页型 + 8 图 + V1–V4 速查;playbook §五标注默认 8 核心图。
|
|
65
|
+
- **package**:MIN refs ≥20、examples ≥3;`recommend_layout.py` 入 REQUIRED;README 缩为安装+命令索引。
|
|
66
|
+
|
|
67
|
+
### top-ppt-html · Batch 2(布局选型 + layout-qa + PPTX 对齐)
|
|
68
|
+
|
|
69
|
+
- **recommend_layout.py**:`--mode A|B|C` + `--intent` / `--from-model` / `--stdin` → `{pageType,skel,chart,rationale,v?}`(V1–V4 / 极偏禁 donut / sizeByComplexity)。
|
|
70
|
+
- **validate_report.py --layout-qa**:缺 data-skel、连续同骨架、极偏 donut、演示简单全幅、V 契约;negative_tests 增 L1–L3。
|
|
71
|
+
- **cross_verify.py** 默认 SKIP,`--full-ab` 才跑;regression 同口径。
|
|
72
|
+
- **build_pptx.js** 尊重 `layoutPreset`(缺省由 pageToPreset 回填,写入备注)。
|
|
73
|
+
- **smoke_pptx.sh** + CI skill-gates 冒烟:extract_model → build_pptx → validate_pptx --strict。
|
|
74
|
+
|
|
1
75
|
# Changelog
|
|
2
76
|
|
|
3
77
|
## Unreleased
|
|
4
78
|
|
|
79
|
+
### top-ppt-html 0.1.1 — Batch 1(工作流单写 · Fast Mode)
|
|
80
|
+
|
|
81
|
+
- **模型单写统一**:playbook / SKILL / pptx-export 命令链均为 scaffold → 只填 `REPORT_MODEL` → `render_from_model --inplace` → `validate_report --strict`(禁 HTML/模型双写)。
|
|
82
|
+
- **`render_from_model.py` 纳入 package REQUIRED**;references 最小篇数注释对齐实有数量(≥24)。
|
|
83
|
+
- **Fast Mode**:触发词跳过 Gate 0 + 六项;默认 B/mckinsey/light 等;标准路径仍为硬门禁;`audit_skill` 适配豁免声明。
|
|
84
|
+
- **归档** `references/reform-plan.md` → `docs/archive/reform-plan.md`;硬门禁改指 `qualityGates` + `failure-modes`。
|
|
85
|
+
- 技能 `package.json` 版本对齐仓库叙事 `0.1.1`(LC 仍为 `0.1`)。
|
|
86
|
+
|
|
5
87
|
## 0.1.1 — 2026-09-24
|
|
6
88
|
|
|
7
89
|
### Fixes (P0 / P1)
|
package/README.md
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
| 技能 | 版本 | 做什么 |
|
|
10
10
|
|------|------|--------|
|
|
11
|
-
| [`top-ppt-html`](./top-ppt-html/) | 0.1.
|
|
11
|
+
| [`top-ppt-html`](./top-ppt-html/) | 0.1.3 | 报告 / 演示 / 信息架构图:单文件 HTML + 版式保真的可编辑 16:9 PPTX |
|
|
12
12
|
|
|
13
|
-
安装器包 [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) 亦为 **0.1.
|
|
13
|
+
安装器包 [`@topmindspace/tms-skills`](https://www.npmjs.com/package/@topmindspace/tms-skills) 亦为 **0.1.3**(整仓发版:安装器与当前技能同 tag;未来多技能仍可各自演进,默认随仓库 release)。
|
|
14
14
|
|
|
15
15
|
更多技能以仓库根目录下的技能目录加入(每个目录含 `SKILL.md`)。
|
|
16
16
|
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
npx @topmindspace/tms-skills list
|
|
31
31
|
npx @topmindspace/tms-skills install top-ppt-html
|
|
32
32
|
npx @topmindspace/tms-skills install top-ppt-html --to ./.claude/skills
|
|
33
|
-
npx @topmindspace/tms-skills@0.1.
|
|
33
|
+
npx @topmindspace/tms-skills@0.1.3 install top-ppt-html # 钉版本
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
### GitHub 直装
|
|
@@ -48,6 +48,16 @@ node tms-skills/bin/tms-skills.js install top-ppt-html
|
|
|
48
48
|
|
|
49
49
|
安装器把根目录下的技能目录 `<id>/`(含 `SKILL.md`)复制到目标目录;智能体通过 frontmatter(`name` + `description`)发现技能。
|
|
50
50
|
|
|
51
|
+
默认探测顺序(`resolveDefaultTarget`):项目级 `./.agents` → `./.claude` → `./.cursor` → `./.codex` → `./.mimocode`;再用户级 `~/.claude` → `~/.agents` → `~/.cursor` → `~/.codex`;都没有则落 `./.agents/skills`。也可用 `--to` 显式指定。
|
|
52
|
+
|
|
53
|
+
| 宿主 | 项目级 | 用户级 |
|
|
54
|
+
|------|--------|--------|
|
|
55
|
+
| 通用 / Codex | `.agents/skills` | `~/.agents/skills` |
|
|
56
|
+
| Claude Code | `.claude/skills` | `~/.claude/skills` |
|
|
57
|
+
| Cursor | `.cursor/skills`(兼读 `.agents`) | `~/.cursor/skills` |
|
|
58
|
+
| Codex 兼容 | `.codex/skills` | `~/.codex/skills` |
|
|
59
|
+
| 本仓库另含 | `.mimocode/skills` | — |
|
|
60
|
+
|
|
51
61
|
> **排错**:不要 `npm install <skill-id>`(技能 id 不是独立 npm 包)。「找不到包」→ 换 GitHub 直装,或 `--registry https://registry.npmjs.org/`。
|
|
52
62
|
|
|
53
63
|
### 可选依赖(仅 PPTX 精导)
|
package/bin/tms-skills.js
CHANGED
|
@@ -70,12 +70,17 @@ function readSkillMeta(skillId) {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
function resolveDefaultTarget() {
|
|
73
|
+
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
73
74
|
const candidates = [
|
|
74
75
|
path.join(process.cwd(), '.agents', 'skills'),
|
|
75
76
|
path.join(process.cwd(), '.claude', 'skills'),
|
|
77
|
+
path.join(process.cwd(), '.cursor', 'skills'),
|
|
78
|
+
path.join(process.cwd(), '.codex', 'skills'),
|
|
76
79
|
path.join(process.cwd(), '.mimocode', 'skills'),
|
|
77
|
-
path.join(
|
|
78
|
-
path.join(
|
|
80
|
+
path.join(home, '.claude', 'skills'),
|
|
81
|
+
path.join(home, '.agents', 'skills'),
|
|
82
|
+
path.join(home, '.cursor', 'skills'),
|
|
83
|
+
path.join(home, '.codex', 'skills'),
|
|
79
84
|
];
|
|
80
85
|
for (const dir of candidates) {
|
|
81
86
|
if (dir && fs.existsSync(path.dirname(dir))) {
|
package/package.json
CHANGED
package/top-ppt-html/README.md
CHANGED
|
@@ -3,26 +3,21 @@
|
|
|
3
3
|
**让 idea 飞,好想法被看见。** 一套面向 AI 智能体的商务报告生成技能:把想法、调研、分析、架构方案,变成**专业级的 HTML 报告 + 版式保真的可编辑 PPTX**。
|
|
4
4
|
|
|
5
5
|
- 技能标识:`top-ppt-html`(安装/打包目录名与此一致);品牌名:**TopPPT HTML**
|
|
6
|
-
- 版本:**v0.1.
|
|
6
|
+
- 版本:**v0.1.3**(与 `@topmindspace/tms-skills@0.1.3` 同 tag)
|
|
7
|
+
- **智能体入口**:`SKILL.md` → `references/playbook.md`(L1)→ L2 按需
|
|
8
|
+
- **人类维护者**:本 README(安装 / 命令 / 目录);勿把本文件当生成规范
|
|
7
9
|
|
|
8
|
-
##
|
|
10
|
+
## 一、技能简介(人类速览)
|
|
9
11
|
|
|
10
12
|
| 维度 | 能力 |
|
|
11
13
|
|------|------|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| 素材图片 | **六版式**:full 版心全宽 3:1 / half 左图右注 4:3 / bleed 通栏出血 21:9 / grid 多图网格 4:3(2·3·4·6 张)/ compare 双图 A/B / wall Logo 墙;比例由 `imageSpec` 单源锁定(HTML 用 `.media--r*` 类、PPTX 用同一比例算高度并居中)——**两通道比例一致**;`src` 仅 data: 内联或相对路径;PPTX 声明式放行 |
|
|
20
|
-
| 配图占位 | 无素材时不省略图也不塞无关图:`.media--ph`(虚线框 + 斜纹 + 图标 + 尺寸提示)+ 模型 `image.placeholder` → PPTX 出**原生圆角矩形占位框**(可编辑、`pictures` 不增),交付前替换 `src` 即可;预览模态会把图位替换成真实图片 |
|
|
21
|
-
| 用户图片准备 | `scripts/prepare_images.py <图片\|目录> --layout full\|half\|grid…`:读尺寸/格式/体积 → 按版式建议尺寸缩放压缩(有 Pillow 时)→ 自动选 data: 内联或相对路径 → 产出可粘贴的 `.media` HTML 片段与 `image` 模型对象 |
|
|
22
|
-
| 36 种图表 | 环形 / 多段环形 / 饼图 / 柱状 / 堆叠 / 100% 堆叠条 / 折线 / 双折线 / 面积 / 横向条形 / 双向条形 / 雷达 / 仪表盘 / 玫瑰 / 瀑布 / 漏斗 / 甘特 / 散点 / 气泡 / 矩形树图 / 马赛克 / 进度条组 / 迷你趋势线 / 桑基 / 斜率 / 哑铃 / 棒棒糖 / 点图 / 子弹图 / 华夫 / 箱线 / 帕累托 / 径向条 / 流图 / K 线 / 关系网络(全内联 SVG,随主题与风格变色;**16 类走 PPTX 原生图表,其余形状还原 + 数据表**) |
|
|
23
|
-
| 按需深度模式 | 命中「高保真/1:1/精确还原/正式交付」或含复杂信息图时自动升级:`--deep` 把连续文本流与空间锚点纳入 strict,`--emit-manifest` 产出锚点/容器/数据表/图表通道/图片资产登记,`render_compare.py` 准备渲染对照材料(缺依赖自动跳过) |
|
|
24
|
-
| 质量闭环 | `validate_report.py`(HTML strict 全 PASS,含强调带约束/待核实标注/素材图片与配图占位/图表数据表策略)+ `validate_pptx.py --strict`(0 错误 0 警告,含容器级溢出/表格语义字号与密度/未声明图片硬拦/图片版式·裁切·多图数量·相对路径文件存在性)+ WCAG 对比度与单源完整性审计 + 双通道回归双裁判 + 素材图片导出探针 |
|
|
25
|
-
| 设计标准 | Material Design 3 对齐(克制执行);研究模式对齐咨询机构实践 |
|
|
14
|
+
| 产出 | 单文件 HTML(可翻页、亮暗双主题、header 工具栏)+ 16:9 可编辑 PPTX(精导通道) |
|
|
15
|
+
| 三模式 | A 演示 · B 研究 · C 架构(页型/字号/密度契约见 `playbook.md` §一) |
|
|
16
|
+
| 风格 | 9 套(`styles.md`);编码色板 c1–c5 随风格 |
|
|
17
|
+
| 图表 | 核图 8 默认 + registry 全量;多样性 / 反截断 / Mode A 工艺见 playbook + `presentation-craft.md` |
|
|
18
|
+
| 质量 | `validate_report --strict`(A 隐含 layout-qa)· `validate_pptx --strict` · `quality_gate --deliver` |
|
|
19
|
+
|
|
20
|
+
生成规范、页型/图表穷举、铁律 **不在本文件**——智能体读 `SKILL.md` / playbook;选型大表见 `page-type-matrix.md` / `chart-decision-tree.md`。
|
|
26
21
|
|
|
27
22
|
**核心架构**:HTML 与 PPTX 出自同一内容模型 `window.REPORT_MODEL`(唯一事实源);页面只预览不导出,PPTX 由智能体走「精导通道」生成(extract → build → strict 校验)。阈值与几何全部单源化:`scripts/layout-constants.json`(常量)+ `scripts/model-schema.json`(页型 DSL)。
|
|
28
23
|
|
|
@@ -48,6 +43,16 @@ node tms-skills/bin/tms-skills.js install top-ppt-html
|
|
|
48
43
|
|
|
49
44
|
> **GitHub 更新不会自动进 npm。** 日常可钉 npm 版本;要最新技能用 GitHub 直装,或等 maintainer 打 tag 发版。
|
|
50
45
|
>
|
|
46
|
+
|
|
47
|
+
### 触发词回归(维护者)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
python3 scripts/check_triggers.py # keyword/heuristic vs SKILL description
|
|
51
|
+
# 扩展:编辑 evals/trigger-queries.json(how_to_extend)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
`package_skill.py --check` 会自动跑 trigger coverage。
|
|
55
|
+
|
|
51
56
|
> 「找不到这个包」→ 换 GitHub 直装,或 `--registry https://registry.npmjs.org/`(镜像索引可能滞后)。不要 `npm install top-ppt-html`(技能 id 不是独立 npm 包)。
|
|
52
57
|
|
|
53
58
|
也可将本目录(或 GitHub Release 附件 `top-ppt-html.zip` 解压结果)复制到智能体技能目录,目录名保持 `top-ppt-html`。技能识别面为 `SKILL.md`(frontmatter 的 `name` / `description` 即触发描述)。
|
|
@@ -89,7 +94,7 @@ top-ppt-html/
|
|
|
89
94
|
├─ assets/ # │ 且
|
|
90
95
|
│ ├─ templates/ # 三份模式模板(presentation/research/architecture) │ 入库
|
|
91
96
|
│ │ # + engine.css / ui.js(公共引擎/UI,sync_runtime 注入源)
|
|
92
|
-
│ ├─ examples/ #
|
|
97
|
+
│ ├─ examples/ # 3 份黄金样张 + model(每模式 1;风格见 style-gallery) │
|
|
93
98
|
│ ├─ pptx-export.js # PPTX 预览运行时(含常量/schema 注入块) │
|
|
94
99
|
│ ├─ style-gallery.html # 风格 × 模式 × 亮暗主题交互画廊 │
|
|
95
100
|
│ └─ theme-overview*.png # 3 张主题参考图(整体=演示 / 研究 / 架构) │
|
|
@@ -101,14 +106,17 @@ top-ppt-html/
|
|
|
101
106
|
│ ├─ layouts-combo.md # §32–§34/§39–§50 组合与选型表 §46 │
|
|
102
107
|
│ ├─ charts.md # 逻辑索引(图表 § 路由) │
|
|
103
108
|
│ ├─ charts-basic.md # §16–§35 基础图表代码 │
|
|
104
|
-
│ ├─ charts-extended.md # §52–§70
|
|
109
|
+
│ ├─ charts-extended.md # §52–§70 advanced(意图命中才读,禁预读) │
|
|
105
110
|
│ ├─ charts-discipline.md # §64/§66 误用与多样性纪律 │
|
|
106
111
|
│ ├─ infographics.md # 铁律与边界(逻辑入口);代码已拆分见下两行 │
|
|
107
112
|
│ ├─ infographics-stats.md # 统计图形族 §1–§6 / §71–§77 │
|
|
108
113
|
│ ├─ infographics-structure.md # 结构图形族 §78–§82 │
|
|
109
|
-
│
|
|
110
|
-
│
|
|
111
|
-
│
|
|
114
|
+
│ ├─ page-type-matrix.md # L2 意图→页型穷举(playbook §三 速记) │
|
|
115
|
+
│ ├─ chart-decision-tree.md # L2 图表决策表+误用(playbook §五 摘要) │
|
|
116
|
+
│ ├─ illustration-layout.md # L2 插画/配图 brief │
|
|
117
|
+
│ └─ …(modes / styles / design-system / content-rules / icons / default-surface / │
|
|
118
|
+
│ outline-design / pptx-export / high-fidelity / failure-modes / tech-design; │
|
|
119
|
+
│ 归档见 docs/archive/refs/) │
|
|
112
120
|
├─ evals/ # Eval 框架(结果/过程/风格/效率四类目标) │
|
|
113
121
|
│ ├─ prompts.csv # 14 条 prompt(显式/隐式/上下文/负对照) │
|
|
114
122
|
│ ├─ rubric.schema.json # 风格目标结构化评分契约 │
|
|
@@ -120,135 +128,48 @@ top-ppt-html/
|
|
|
120
128
|
└─ (本地状态目录) # IDE / 智能体本地状态 ← 不进包、不入库
|
|
121
129
|
```
|
|
122
130
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
## 四、开发指南
|
|
126
|
-
|
|
127
|
-
### 4.1 脚本清单
|
|
128
|
-
|
|
129
|
-
| 脚本 | 用途 | 何时跑 |
|
|
130
|
-
|------|------|--------|
|
|
131
|
-
| `env_probe.py` | **公共环境探测模块**(Node 可执行文件 / 含 pptxgenjs 的 node_modules / python-pptx 可用性;统一解析优先级与安装指引,被 regression / probe_image_export 复用,杜绝各写一份) | 无需单独跑;`python scripts/env_probe.py` 可自检 |
|
|
132
|
-
| `sync_runtime.py` | 常量/schema 双注入(pptx-export.js 常量块 + 三模板引擎/UI/运行时内联副本)+ 双端引用与**页型四件套**校验 | **改 layout-constants.json / model-schema.json / engine.css / ui.js / pptx-export.js 后必跑** |
|
|
133
|
-
| `audit_styles.py` | 9 风格 × 亮/暗 WCAG 对比度 + engine.css ↔ JSON 双源一致 + **单源完整性**(强调色表 / 图表登记表 / 校验预算键) | 改任何风格色值或常量后必跑 |
|
|
134
|
-
| `audit_docs.py` | **文档一致性审计**:§ 引用可解析性(跨文件稳定编号)+ 文件前缀规范性 + §46 选型表对 36 图表/29 页型全覆盖 + 图表代码节齐备 + 元数据与必需文件 + **任务路由可解析**(TASK_ROUTES 每条路由实际抽取验证) | 改 `references/*` 或拆分规范文件后 |
|
|
135
|
-
| `audit_skill.py` | **技能工程审计(效率预算与门禁)**:SKILL.md(≤13KB)/ L1 playbook / 单份 reference / 模板的体积上限 · description 软硬上限 · 三档披露(L0/L1/L2)· **Gate 0 位于六项问询之前** · 交互轮次与必读文件预算声明 · 引用完整性 · **内容重复(归一化滑窗,含表格/公式/短语)** | 改 `SKILL.md` / `references/*` 后(与 `audit_docs.py` 互补) |
|
|
136
|
-
| `audit_css.py` | **CSS 类覆盖率审计(报告制)**:engine.css 选择器类 ↔ 消费方语料(模板剔除注入镜像 + 示例 + 运行时 + references 代码配方),列出疑似死类供维护者决策 | 删除/新增 engine.css 规则后 |
|
|
137
|
-
| `scaffold_report.py` | **报告骨架生成器**(替代"整份复制模板"):锁模式/风格/主题 + `data-skel`/`layoutPreset` + REPORT_MODEL;`--plan`/`--preset`/`--list-types` | **每次生成第一步** |
|
|
138
|
-
| `render_from_model.py` | **模型驱动生成**:只填 REPORT_MODEL → `--inplace` 回填 HTML(`[n]`→cite;29 页型渲染器) | 填完模型后 |
|
|
139
|
-
| `extract_snippet.py` | **L2 节级片段抽取**:`--task` 任务路由 / `--chart` 图表代码节 / `--page-type` schema 字段 / `--file --section` 精确节——避免整读 70KB+ 规范 | 取 L2 代码/规范时优先于整文件读 |
|
|
140
|
-
| `lib_layout_regions.js` | **页型布局区域 IR**:槽位 → 英寸矩形(layout_slots + layout-constants 派生);B 通道 exhibit 已消费 | 改布局 IR 后必跑 sync + regression |
|
|
141
|
-
| `quality_gate.py` | **交付一键质量门禁**:HTML strict + 可选 PPTX strict + evals 确定性 + rubric 启发式五维 + `--deliver` 自动生成七要素交付说明(缺一即 FAIL)+ 分项耗时 | 正式交付前推荐 |
|
|
142
|
-
| `checks_html.py` | **HTML 检查公共库**(承载正则 / 图表通道 / 多样性下限 / 组合版式)——validate_report / quality_gate / run_evals 共用,禁止再手抄 | 被上述脚本 import |
|
|
143
|
-
| `measure_height.py` | **页高与容器裁切真值测量**(可选 · Playwright):无头浏览器量 band 真实高度 vs 视口,并检测「内容越过归属容器」(静态估算的盲区);缺依赖自动跳过 | regression 内部 / 排版争议时 |
|
|
144
|
-
| `build_examples.py` | 从模板 + 内容包重建 9 份示例(三模式 × 9 风格全覆盖,含 REPORT_MODEL 与 theme) | 改模板/内容包后 |
|
|
145
|
-
| `validate_report.py` | HTML 质检(三模式预算 + 页高模型与溢出估算 + 模型一致性 + 页型↔版式对应 + 图表登记) | 每份报告交付前(`--strict` 连 WARN 不放过) |
|
|
146
|
-
| `extract_model.py` | 从 HTML 抽取 REPORT_MODEL(自动兜底 style/mode/theme) | 精导第一步 |
|
|
147
|
-
| `build_pptx.js` | PptxGenJS 生成 PPTX(`--model=` 必选,`--style=` / `--theme=light\|dark` 可覆盖) | 精导第二步 |
|
|
148
|
-
| `validate_pptx.py` | PPTX 质检(`--strict` 0/0 硬门禁;`--model` 启用往返保真) | 精导第三步 |
|
|
149
|
-
| `gen_channel_a.js` | A 通道:加载页面预览运行时组装 PPTX(回归双裁判专用) | regression 内部 |
|
|
150
|
-
| `cross_verify.py` | python-pptx 第三方裁判:A/B 产物逐页文本一致 + **B 通道原生图表数值 ↔ 模型一致**(可选依赖,未装则跳过) | regression 内部 |
|
|
151
|
-
| `prepare_images.py` | **用户图片素材准备**(读尺寸/格式/体积 → 按版式建议尺寸缩放压缩 → data: 内联或相对路径 → 产出 `.media` HTML 片段 + `image` 模型对象) | 报告要配用户图片时 |
|
|
152
|
-
| `probe_image_export.py` | **素材图片导出探针**(真实位图 build→strict 0/0 且 `pictures == 声明数`;示例矩阵刻意零图片,真实素材路径/版式/门禁靠它覆盖) | regression 内部 / 改图片相关代码后 |
|
|
153
|
-
| `negative_tests.py` | **门禁反向验证**(故障注入 · 14 例):往合格产物里埋已知缺陷(Exhibit 漏编号 / 引用错配与跳号 / 备注被剔离 / 图表数值篡改 / 标题鉴别力 / 字号越尺 / 未登记图表类型 / 多样性塌陷 / 图片外链 / tbd 无图例 / 模型主题与模式矛盾 / 锚点断裂),断言门禁必须报错——正向全绿只能证明“没误报”,这里证明“真能报” | regression 内部 / 改校验器后必跑 |
|
|
154
|
-
| `regression.py` | **一键全链路回归**(9 示例 HTML strict + 双通道 PPTX 0/0 + 双裁判交叉一致 + 素材图片探针 + 深色主题探针 + 门禁反向验证 + **任务路由全量遍历** + 浏览器页高/裁切真值) | 任何模板/常量/schema/运行时/示例改动后必跑 |
|
|
155
|
-
| `render_compare.py` | **深度模式渲染对照**(PPTX→PDF→位图 + HTML/PPTX 并排对照 + 偏差登记;缺 LibreOffice 自动跳过) | 深度模式交付时(可选) |
|
|
156
|
-
| `capture_theme_overview.js` | playwright 截图画廊 → 3 张主题参考图(演示态=整体图;带 Tab 断言防雷同) | 改画廊后(可选,非交付依赖) |
|
|
157
|
-
| `package_skill.py` | **发布前校验 + 打包**:必需文件齐全 / frontmatter 合规(name 与包名一致、description ≤1024)/ 无临时·缓存路径 → `dist/top-ppt-html.zip` + 发布清单 `dist/top-ppt-html.manifest.json`(版本/条目/SHA-256);`--check` 只校验 | 发布时 / 提交前自检 |
|
|
158
|
-
|
|
159
|
-
### 4.2 单源纪律(最重要的一条规矩)
|
|
160
|
-
|
|
161
|
-
**几何/字号/页型/图表登记/校验预算/强调色/去AI味词一律只改 `scripts/layout-constants.json`,页型字段只改 `scripts/model-schema.json`,公共片段只改注入源,然后跑 `sync_runtime.py`**——禁止手改任何注入副本(模板内联块、pptx-export.js 常量块)。
|
|
162
|
-
|
|
163
|
-
改一套风格色值只需**两处手改 + 一处受审计**(校验器阈值、图表登记、强调色表、去AI味词表全部从 JSON 读;画廊配色也从 JSON 派生,无手抄副本):
|
|
164
|
-
|
|
165
|
-
1. `assets/templates/engine.css`(CSS 侧单源,light + dark 两个块)
|
|
166
|
-
2. `scripts/layout-constants.json` 的 `styles`(light)/ `stylesDark`(dark)/ `styleAccents`(强调色族,供单一强调色检查)
|
|
167
|
-
3. `assets/templates/ui.js` 的 `STYLES` 色板(header 下拉 12px 小色块)——在运行时块之前执行、无法直接读 `PRESETS`,故由 `audit_styles.py` 校验其与 JSON accent 一致(不一致即报 DIFF)
|
|
131
|
+
---
|
|
168
132
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
### 4.3 新增一个 PPTX 页型(四件套,缺一不可)
|
|
172
|
-
|
|
173
|
-
1. `scripts/model-schema.json` 加页型条目(字段/必填/适用模式)
|
|
174
|
-
2. `scripts/layout-constants.json` 加页型几何(`pageTypes`)**并在 `pageTypeGeometry` 登记映射**(`sync_runtime.py` 会校验四件套完整性)
|
|
175
|
-
3. 双引擎渲染:`scripts/build_pptx.js` 与 `assets/pptx-export.js` 各实现(坐标/字号/文本内容严格一致,否则 cross_verify 会报文本差异)
|
|
176
|
-
4. `scripts/build_examples.py` 内容包覆盖新页型 + 校验断言(probes)
|
|
177
|
-
|
|
178
|
-
### 4.4 新增一种图表类型
|
|
179
|
-
|
|
180
|
-
1. `scripts/layout-constants.json` 的 `charts.types` 加类型名 + `charts.minSize` 配最小尺寸 + `charts.registry` 登记四元组(html / pptx 通道 / nativeType 或 path / dataTable 策略)
|
|
181
|
-
2. 补实现代码:普通图表写进 `references/charts.md`(内联 SVG + `data-chart` 标记 + `f-*`/`s-*` 语义类配色);复杂信息图页型写进 `references/infographics.md` §六/§八
|
|
182
|
-
3. `references/components.md` §46 选型表补一行(内容形态 → 版式 → PPTX 页型映射)
|
|
183
|
-
4. 跑 `sync_runtime.py`(图表登记四元组与可达性不变量)+ `audit_styles.py`(图表登记表自洽)+ `regression.py`
|
|
184
|
-
|
|
185
|
-
### 4.5 新增一种图片版式
|
|
186
|
-
|
|
187
|
-
1. `scripts/layout-constants.json` 的 `imageSpec.layouts` 加版式名 + `ratioDefault`(比例,如 `"3:1"`)+ `ratioCssClass`(HTML 锁定类,如 `media--r3-1`)+ `recommendedSizePx`(建议像素)
|
|
188
|
-
2. `assets/templates/engine.css` 补该锁定类(`.media--r3-1{aspect-ratio:3/1}`)
|
|
189
|
-
3. 双引擎渲染:`scripts/build_pptx.js` 与 `assets/pptx-export.js` 的 `imageLayoutShapes` 各加一个分支(几何与比例必须完全一致,否则 HTML/PPTX 会走样)
|
|
190
|
-
4. `references/components.md` §11c-1 版式表补一行(layout ↔ HTML 版式 ↔ 比例 ↔ 建议像素 ↔ 适用)
|
|
191
|
-
5. 跑 `sync_runtime.py`(会校验「版式 ↔ 比例 ↔ 锁定类 ↔ 双引擎实现」四向完整)+ `build_examples.py` + `regression.py`
|
|
192
|
-
|
|
193
|
-
> **配图占位**无需新代码:任何版式的 `image.placeholder` 都复用同一几何(原生圆角矩形 + 虚线 + 居中标签),标签串由 `imageSpec.placeholderLabel` 派生,双引擎自动一致。
|
|
194
|
-
|
|
195
|
-
### 4.6 新增一套风格
|
|
196
|
-
|
|
197
|
-
`references/styles.md` 写 light+dark 两个覆盖块 → 按上节三处联动改单源(含 `layout-constants.json` 的 `styleAccents` 强调色族与 `styleDataColors` / `styleDataColorsDark` 编码色板 c1–c5)→ `assets/style-gallery.html` 的 `STYLE_META` 数组加一项(可选 `darkMain:true` 表示深色优先卡;卡片列表与配色由单源 `PRESETS` 自动派生)→ `audit_styles.py` 全绿 → 重截参考图。
|
|
198
|
-
|
|
199
|
-
## 五、构建与打包
|
|
133
|
+
## 常用命令(细节见 `references/playbook.md`)
|
|
200
134
|
|
|
201
135
|
```bash
|
|
202
|
-
#
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
python scripts/
|
|
207
|
-
python scripts/
|
|
208
|
-
python scripts/
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
python scripts/
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
#
|
|
218
|
-
python scripts/package_skill.py --check
|
|
219
|
-
python scripts/
|
|
136
|
+
# 标准 / Fast 共用链(模型单写)
|
|
137
|
+
python scripts/scaffold_report.py --mode research --style mckinsey --theme light \
|
|
138
|
+
--title "标题" --sections 8 --out report.html
|
|
139
|
+
# 只填 window.REPORT_MODEL 后:
|
|
140
|
+
python scripts/render_from_model.py report.html --inplace
|
|
141
|
+
python scripts/validate_report.py report.html --strict --layout-qa
|
|
142
|
+
python scripts/quality_gate.py report.html --deliver
|
|
143
|
+
|
|
144
|
+
# 布局建议 / PPTX
|
|
145
|
+
python scripts/recommend_layout.py --mode B --intent "经营分析" --pages 10 --json
|
|
146
|
+
python scripts/extract_model.py report.html report.model.json
|
|
147
|
+
node scripts/build_pptx.js report.pptx --model=report.model.json
|
|
148
|
+
python scripts/validate_pptx.py report.pptx --strict --model=report.model.json
|
|
149
|
+
bash scripts/smoke_pptx.sh
|
|
150
|
+
|
|
151
|
+
# 门禁
|
|
152
|
+
python scripts/package_skill.py --check
|
|
153
|
+
python scripts/audit_skill.py && python scripts/audit_docs.py
|
|
154
|
+
python scripts/audit_styles.py && python scripts/audit_css.py
|
|
155
|
+
python scripts/negative_tests.py
|
|
156
|
+
python scripts/check_triggers.py
|
|
157
|
+
# 可选第三方:npx --yes skills-ref@0.1.5 validate .
|
|
220
158
|
```
|
|
221
159
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
|
225
|
-
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
- **regression 里 cross_verify 被跳过?** 说明本机没装 python-pptx(可选第三方裁判);`pip install python-pptx` 后即可启用,不影响交付判定。
|
|
239
|
-
- **改了 engine.css 但模板没变?** 模板里是注入副本——跑 `python scripts/sync_runtime.py`,禁止手改模板内联块。
|
|
240
|
-
- **预览与导出的 PPTX 不一致?** 两者共用同一序列化引擎,先跑 `sync_runtime.py` 确认常量/schema 未漂移,再跑 `regression.py` 的 cross_verify。
|
|
241
|
-
- **浅色模式下最后一页/金句页变成深色?** 该页用了 `band--deep`(反相强调页,浅色主题下必然渲染为深色)——收尾/CTA 改用 `band--accent`,金句改用 `band--accent--solid`;校验器会 WARN(`band--deep` ≤1 处且不得作末页)。
|
|
242
|
-
- **数字没法核实,怎么提示用户改?** 用 `.tbd` 标色 + `.tbd-legend`/`.flagbar` 说明(模型同步写 `section.flags`);规则见 `content-rules.md` 五-b,**只标色不解释会被校验器 WARN**。
|
|
243
|
-
- **PPTX 里能放图片吗?** 默认 `pictures=0`(全原生可编辑);需要时在模型里显式声明 `section.image`(或 `split.right.image`),图片数不得超过声明数(`PICTURES_NOT_DECLARED` 硬拦),`src` 仅允许 data: 内联或相对路径。
|
|
244
|
-
- **某页在浏览器里偏高/偏低?** 页高模型默认"每页一屏 + 垂直居中"(`--band-min`);内容约六七成屏改用 `.band--top`,长结构页(参考资料/附录)用 `.band--flow`。详见 `design-system.md` §1c。
|
|
245
|
-
|
|
246
|
-
## 七、版本、规范与兼容
|
|
247
|
-
|
|
248
|
-
- **当前发布版**:v0.1.0(风格语汇 styleIdentity · 布局语法 · 模型单写 · 硬门禁)。**版本单源 = `scripts/layout-constants.json` `version`**;`model-schema.json` / `layoutSlots` 同步该值;`package_skill.py` 与 `sync_runtime.py` 校验一致。
|
|
249
|
-
- **frontmatter**:仅 `name` + `description`(触发词写清「做什么 + 何时用」,控制在 700 字符软上限内)。
|
|
250
|
-
- **目录与 token 预算**:`SKILL.md`(≤13KB 路由)→ L1 `references/playbook.md`(≤22KB 决策)→ L2 按需(`extract_snippet.py` 节级取码)→ `scripts/` 工具 → `assets/` 素材。`audit_skill.py` 把关体积 / 三档披露 / Gate 0 / 与 references 去重。
|
|
251
|
-
- **工作流(模型单写)**:`scaffold_report.py` → 只填 `REPORT_MODEL` → `render_from_model.py --inplace` → `validate_report --strict`(含 PPTX 再走 extract/build/validate_pptx)。
|
|
252
|
-
- **变更流水**:见仓库根目录 `CHANGELOG.md`。
|
|
253
|
-
- **命名**:`top-ppt-html`;注入标记 `__TOPPPT_*__`;环境变量 `TOP_PPT_NODE_*`;JS API `TopPptHtml`。
|
|
254
|
-
- **发布门禁**:`package_skill.py --check` 通过后产出 `dist/top-ppt-html.zip` + manifest(SHA-256)。
|
|
160
|
+
## 目录要点
|
|
161
|
+
|
|
162
|
+
| 路径 | 用途 |
|
|
163
|
+
|------|------|
|
|
164
|
+
| `SKILL.md` | L0 路由(≤13KB);智能体唯一入口 |
|
|
165
|
+
| `references/playbook.md` | L1 决策层(Mode / 路径 / V1–V4 / 组合 / 多样性摘要 / 命令 / 路由) |
|
|
166
|
+
| `references/page-type-matrix.md` | L2 页型穷举表 |
|
|
167
|
+
| `references/chart-decision-tree.md` | L2 图表决策树 + 七种误用 |
|
|
168
|
+
| `references/default-surface.md` | Mode A L1.5:12 页型 + 核图 8 + V1–V4 |
|
|
169
|
+
| `references/presentation-craft.md` | Mode A L1.5 工艺(反截断 / 大气正式) |
|
|
170
|
+
| `assets/examples/` | 3 份黄金样张(每模式 1) |
|
|
171
|
+
| `evals/trigger-queries.json` | description 触发正/负例;`check_triggers.py` |
|
|
172
|
+
| `docs/archive/` | 历史规范 / 旧示例 |
|
|
173
|
+
|
|
174
|
+
风格画廊与主题参考图:`assets/theme-overview*.png`(Gate 0)。完整规范索引见 playbook §十。
|
|
175
|
+
|
package/top-ppt-html/SKILL.md
CHANGED
|
@@ -1,35 +1,54 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: top-ppt-html
|
|
3
|
-
description: "
|
|
3
|
+
description: "Use when 用户要做报告、演示、汇报、PPT、slides、deck、路演,或写研究报告、分析报告、咨询报告、白皮书、调研、评测、对标、经营分析、复盘、项目汇报、商务/HTML/网页报告,或做架构图、拓扑图、流程图、泳道图、方案图,或把材料做成可视化报告并导出 HTML/PPT/PPTX,或优化排版/版式/配色/图文布局,或要快速模式/fast/直接生成/一键出稿/少问一句。TopPPT HTML:零外链可翻页 HTML(亮暗双主题)+ 版式保真可编辑 16:9 PPTX;三模式(A 演示·每屏一主张 / B 研究·咨询密排 / C 架构·图为王)× 9 风格。Do NOT use for 纯代码工程、非报告类网页或应用开发、视频/图片生成、直接改写已有 Word/PPT 源文件本身。"
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: "Python 3 stdlib for HTML generation; Node >=18 + pptxgenjs for PPTX; optional playwright for browser regression / theme captures."
|
|
6
|
+
metadata:
|
|
7
|
+
version: "0.1.3"
|
|
8
|
+
author: TopMindspace
|
|
4
9
|
---
|
|
5
|
-
|
|
6
10
|
# TopPPT HTML
|
|
7
11
|
|
|
8
12
|
**让 idea 飞,好想法被看见。** 一套技能、三种模式、两种交付:**单文件 HTML 报告**(可翻页、可演示、header 自带工具栏)+ **版式保真的原生可编辑 PPTX**(智能体精导唯一交付通道)。两者同源于一个内容模型 `REPORT_MODEL`。设计对齐 Material Design 3,执行克制(Google/Apple 风);研究模式对齐咨询机构(McKinsey/BCG)的密度与论证结构,但**克制优先**——不加多余的页头标签、页脚信息与装饰。
|
|
9
13
|
|
|
10
|
-
## Gate 0 ·
|
|
14
|
+
## Gate 0 · 先给参考图(**标准模式**硬门禁)
|
|
11
15
|
|
|
12
|
-
|
|
16
|
+
标准路径下,用户表达做报告意向后,**第一件事**是展示参考图,再进入六项问询:
|
|
13
17
|
|
|
14
18
|
| 给什么 | 路径 | 何时 |
|
|
15
19
|
|--------|------|------|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
20
|
+
| 整体图(默认) | `assets/theme-overview.png` | 每次开场 |
|
|
21
|
+
| 按模式拆分 | 演示→整体图;研究→`-research.png`;架构→`-architecture.png` | 模式已明确 |
|
|
22
|
+
| 交互画廊 | `assets/style-gallery.html` | 用户想边看边挑 |
|
|
23
|
+
|
|
24
|
+
**标准模式**:跳过参考图直接问询 = 不合格。**Fast Mode**(下节)豁免 Gate 0 与六项。
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
## Fast Mode · 快速模式(用户显式 opt-in)
|
|
28
|
+
|
|
29
|
+
触发词任一即进入(**跳过 Gate 0 与六项问询**):`快速模式` / `fast` / `直接生成` / `一键出稿` / `fast mode` / `少问一句`。
|
|
30
|
+
|
|
31
|
+
| 参数 | 默认 | 推断 |
|
|
32
|
+
|------|------|------|
|
|
33
|
+
| mode | **B** | **路演/汇报/发布/演讲/demo/融资→A**;架构/拓扑→C;未点明→B |
|
|
34
|
+
| style | B→mckinsey · A→business-blue · C→graphite-dark | |
|
|
35
|
+
| theme | light(graphite→dark) | |
|
|
36
|
+
| 篇幅 | A=10 / B=12 / C=6 | |
|
|
37
|
+
| format | html only(用户要 PPT→html+pptx) | |
|
|
19
38
|
|
|
20
|
-
|
|
39
|
+
流程:一行宣布「Fast 选用:…」→ **最小大纲**(`outline-design.md`「轻量最小集」)→ playbook §二轻量链(骨架→模型单写→回填→strict→`quality_gate --deliver`;可选 pptx)。路径轻量;末可附 `assets/style-gallery.html`。开场声明「已跳过参考图」。**标准模式**仍强制 Gate 0 + 六项。
|
|
21
40
|
|
|
22
41
|
## 唯一入口流程
|
|
23
42
|
|
|
24
43
|
```
|
|
25
|
-
听意图 → Gate 0
|
|
26
|
-
→
|
|
27
|
-
|
|
44
|
+
听意图 → [Fast? → 快路径] : [Gate 0 → 六项(1 轮)→ 内容架构]
|
|
45
|
+
→ 起骨架 → 模型单写(禁改 HTML 正文)→ 脚本回填 → strict 0/0 → 交付
|
|
46
|
+
(命令链见 playbook §二/§九;PPTX 见 pptx-export)
|
|
28
47
|
```
|
|
29
48
|
|
|
30
|
-
**预算(硬)**:交互轮次 **≤3
|
|
49
|
+
**预算(硬)**:交互轮次 **≤3**;**L0+L1 共 2 份**(本文件 + `playbook.md`)。**Mode A/Fast**可加 L1.5:`default-surface.md`+`presentation-craft.md`(非违约)。其余 L2 命中才读、不预读。
|
|
31
50
|
|
|
32
|
-
##
|
|
51
|
+
## 六项问询(标准模式 · 一次问完 · 唯一一次形式参数确认)
|
|
33
52
|
|
|
34
53
|
用户表达意图后**一次问完六项**,每项都带意图推荐;用户不选即按推荐执行,不再追问。
|
|
35
54
|
|
|
@@ -46,7 +65,7 @@ description: "TopPPT HTML:报告 / 演示 / 信息架构图生成器。单文
|
|
|
46
65
|
|
|
47
66
|
| 路径 | 何时 | 多做什么 |
|
|
48
67
|
|------|------|---------|
|
|
49
|
-
| **轻量**(默认) | 页数不多、材料单一完整、关键判断已敲定 |
|
|
68
|
+
| **轻量**(默认) | 页数不多、材料单一完整、关键判断已敲定 | 最小大纲→1 张规划卡(`outline-design.md`「轻量最小集」) |
|
|
50
69
|
| **完整** | 长篇、材料量大且杂、含未敲定关键判断、用户要看框架 | 证据盘点 → 故事线 → 主张树 → 逐页规划卡 → 大纲确认(1 轮) |
|
|
51
70
|
|
|
52
71
|
两条路径的**精确判定条件与完整步骤以 `references/playbook.md` §二为准**。完整路径确认只做一次,用户说"调整"只改指定处;确认后不再有内容层面的反复确认。
|
|
@@ -70,23 +89,23 @@ description: "TopPPT HTML:报告 / 演示 / 信息架构图生成器。单文
|
|
|
70
89
|
**L2 一览**(命中条件与逐任务只读清单的**详表以 playbook §十为准**,此处仅索引):
|
|
71
90
|
|
|
72
91
|
- 模式契约与锁定版式 → `references/modes.md` · 完整路径七步 → `references/outline-design.md`
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
- 配色/主题/字阶 → `
|
|
76
|
-
- PPTX 精导 → `references/pptx-export.md` · 深度高保真 → `references/high-fidelity.md` · 修复顺序 → `references/failure-modes.md` · 技能维护 → `references/tech-design.md`
|
|
92
|
+
- **A/Fast L1.5 → `default-surface.md` + `presentation-craft.md`** · 骨架 `layout-grammar.md` §七 · 插画 `illustration-layout.md`
|
|
93
|
+
- 组件/版式**代码** → `components.md` · 页型表 `page-type-matrix.md` · 图表门面 `charts.md` + 决策树 `chart-decision-tree.md`(extended 按需)· 信息图 → `infographics.md`
|
|
94
|
+
- 配色/主题/字阶 → `styles.md` + `design-system.md` · 写作 → `content-rules.md` · 图标语义 → `icons.md`
|
|
95
|
+
- PPTX 精导 → `references/pptx-export.md` · 深度高保真 → `references/high-fidelity.md` · 修复顺序 → `references/failure-modes.md` · 技能维护 → `references/tech-design.md`
|
|
77
96
|
|
|
78
|
-
**操作方式**:定模式/页型/组合/图 → 只读 `playbook.md`;取代码 → `extract_snippet.py
|
|
97
|
+
**操作方式**:定模式/页型/组合/图 → 只读 `playbook.md`;取代码 → **必须** `extract_snippet.py`。**禁止整读**:`layouts-combo` / `components-atoms` / `charts-basic` / `charts-extended` / `content-rules` 全文 / `pptx-export` / 模式模板 HTML(走 scaffold)。详表 playbook §十。同阶段不重读。
|
|
79
98
|
|
|
80
99
|
## 铁律(12 条 · 交付硬门禁)
|
|
81
100
|
|
|
82
|
-
>
|
|
101
|
+
> 门禁语义;阈值见 playbook / layout 常量 JSON。排版读 `layout-grammar.md`。**motion=none**(无炫技转场;`presentation-craft.md`)。
|
|
83
102
|
|
|
84
103
|
1. **单文件零外链**——无 CDN/外部字体/外部图片,图形一律内联 SVG;`<img src>` 仅 `data:` 或相对路径且必带 `alt`(单图 ≤1.5MB、全篇 ≤8MB);无素材图不留空不省略,用配图占位(`components.md` §11c-3)。
|
|
85
104
|
2. **模式先定后写**——从对应模式模板起步;`data-mode` = `REPORT_MODEL.mode`,页面无模式切换;MD3 映射;PPTX 字号走三模式独立比例尺。
|
|
86
105
|
3. **亮暗双主题一致**——CSS 变量整块换肤 + header 切换 + 文件级记忆;`REPORT_MODEL.theme` 与页面一致,PPTX 同主题导出;强调带只用 accent 家族,**末页禁 `band--deep`**。
|
|
87
|
-
4. **每页一屏 + 高度稳定**——`section.band` ≥ 一屏高且垂直居中;六七成屏用 `.band--top`,长结构页 `.band--flow
|
|
106
|
+
4. **每页一屏 + 高度稳定**——`section.band` ≥ 一屏高且垂直居中;六七成屏用 `.band--top`,长结构页 `.band--flow`。放不下按「重构承载 → 拆页/分章 → 换布局形态 → 有限缩字号」(`containers.overflowRule`);**禁止**静默截断或为疏朗删 so-what/证据;拆页保持信息完整。
|
|
88
107
|
5. **PPT 式翻页 + 骨架固定**——`section.band` 即一页;方向键翻页、页码可点;Agenda 第二页(arch 内容页 ≤4 可省);页头只留 eyebrow + 标题 + 可选导语,页脚全文一个;页头页脚之外不加装饰。
|
|
89
|
-
6.
|
|
108
|
+
6. **标题与字号**——主标题粗体;research=结论句(≥12 字);**presentation=主张/行动句**(禁话题标签);字号随模式,`clamp()`,图表不缩水。
|
|
90
109
|
7. **组合版式 + 细节保全**——默认一页 = 主件 + 从件 + 注释层(矩阵 playbook §四);先判定决策必需信息再定形态,**禁砍口径列/时间列/维度**;密度 L/M/H 禁连续 3 页同档;同一版式不连用超 2 页(扩展签名可 3 页)。
|
|
91
110
|
8. **列表优先 + 去 AI 味 + 图标克制**——大段文字转列表(research 双/三栏正文除外);`aiFlavor` 词表零命中;图标每屏 3–8 个(架构图为王可无)。
|
|
92
111
|
9. **图表够大 + 够多样 + 双通道**——尺寸 ≥ `charts.minSize`;`data-chart` 须在 `charts.registry`(36 种)登记;多样性下限与相邻不同型按 `charts.variety`(playbook §五);原生通道 `addChart` 双击可编辑数据,形状通道须按登记策略附数据表(口径注解见 tech-design §二)。
|
|
@@ -105,7 +124,7 @@ description: "TopPPT HTML:报告 / 演示 / 信息架构图生成器。单文
|
|
|
105
124
|
|
|
106
125
|
- **零依赖可用**:HTML 生成与全部 Python 脚本只用 **Python 标准库**。
|
|
107
126
|
- **PPTX 精导**:另需 Node + pptxgenjs(安装与 `TOP_PPT_NODE_EXE`/`TOP_PPT_NODE_PATH` 探测细节见 `pptx-export.md` 环境备注,探测失败会打印指引)。
|
|
108
|
-
-
|
|
127
|
+
- **硬门禁**:标签泄漏/空页/极偏图/简单大图 → `scripts/layout-constants.json`(qualityGates)+ `failure-modes.md`。
|
|
109
128
|
- **可选**:浏览器页高/裁切真值、参考图重生成需 playwright(`regression.py` 自动探测,缺失即跳过)。
|
|
110
129
|
- **一键回归**:`scripts/regression.py`——模板/常量/schema/运行时/示例改动后必跑。
|
|
111
130
|
- **技能自检**:`audit_skill.py`(体积/披露/Gate 0/内容重复)· `audit_docs.py`(§ 引用 + 任务路由可解析)· `audit_styles.py`(9 风格 × 亮暗 token 与对比度)· `audit_css.py`(CSS 类覆盖率 · 报告制)。
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Codex / ChatGPT Skills UI metadata (optional)
|
|
2
|
+
display_name: "TopPPT HTML"
|
|
3
|
+
short_description: "Reports, decks, and architecture diagrams as single-file HTML + editable 16:9 PPTX."
|
|
4
|
+
default_prompt: "Generate a professional presentation or research report as HTML (and optional PPTX)."
|
|
5
|
+
allow_implicit_invocation: true
|
|
Binary file
|
|
Binary file
|
|
Binary file
|