@namewta/speculo 0.1.20 → 0.1.21
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/package.json +1 -1
- package/template/commands/archive.md +1 -1
- package/template/commands/handoff.md +1 -1
- package/template/commands/status.md +1 -1
- package/template/skills/config-prune/SKILL.md +7 -29
- package/template/skills/config-prune/references/audit-rules.md +38 -0
- package/template/skills/github-npm-ops/references/failure-recovery.md +2 -2
- package/template/skills/github-npm-ops/references/issue-pr-triage.md +1 -1
- package/template/skills/github-npm-ops/references/preflight-checklist.md +3 -3
- package/template/skills/github-npm-ops/references/release-pipeline.md +3 -3
- package/template/skills/handoff/SKILL.md +34 -11
- package/template/skills/speculo-write/references/persistence-contract-sop.md +86 -7
- package/template/skills/speculo-write/references/workflow-authoring-sop.md +34 -1
- package/template/workflows/dev/02-prd/02-prd.md +1 -1
- package/template/workflows/dev/02-prd/prd-zoom-out.md +1 -1
- package/template/workflows/dev/03-tdd/03-tdd.md +22 -125
- package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +34 -0
- package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +34 -0
- package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +34 -0
- package/template/workflows/dev/04-finalize/04-finalize.md +28 -108
- package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +35 -0
- package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +25 -108
- package/template/workflows/dev/A-improve-architecture/architecture-grill.md +30 -0
- package/template/workflows/dev/A-improve-architecture/architecture-review.md +29 -0
- package/template/workflows/dev/A-improve-architecture/architecture-scan.md +37 -0
- package/template/workflows/dev/AGENTS.md +10 -2
- package/template/workflows/dev/D-docs-sync/D-docs-sync.md +14 -1
- package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +34 -0
- package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +34 -0
- package/template/workflows/dev/H-diagnose/H-diagnose.md +12 -23
- package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +33 -0
- package/template/workflows/dev/H-diagnose/agents/fix-agent.md +34 -0
- package/template/workflows/dev/I-to-issues/I-to-issues.md +29 -90
- package/template/workflows/dev/I-to-issues/issues-slices.md +3 -3
- package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +6 -22
- package/template/workflows/dev/R-review/R-review.md +33 -121
- package/template/workflows/dev/R-review/agents/engineering-review-agent.md +33 -0
- package/template/workflows/dev/R-review/agents/spec-review-agent.md +34 -0
- package/template/workflows/dev/R-review/agents/standards-review-agent.md +34 -0
- package/template/workflows/dev/R-review/review-setup.md +39 -1
- package/template/workflows/dev/_templates/issues-slices-template.md +1 -1
- package/template/workflows/dev/_templates/{prd-overview-template.md → overview-template.md} +0 -1
- package/template/workflows/doc/AGENTS.md +10 -2
- package/template/workflows/doc/B-writing-beats/B-writing-beats.md +1 -1
- package/template/workflows/doc/E-edit-article/E-edit-article.md +1 -1
- package/template/workflows/doc/S-writing-shape/S-writing-shape.md +1 -1
- package/template/workflows/doc/T-teach/T-teach.md +30 -113
- package/template/workflows/doc/_templates/teach-learning-record-template.md +1 -1
- package/template/workflows/doc/_templates/teach-lesson-html-template.md +24 -0
- package/template/workflows/person/AGENTS.md +14 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +32 -158
- package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -1
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +12 -238
- package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +1 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +3 -61
- package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +3 -50
- package/template/workflows/person/M-mao-zedong-cognitive-os/references/research/15-quote-bank.md +10 -10
- package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -69
|
@@ -12,152 +12,64 @@ keywords: [review, diff, spec, engineering, standards, security, solid, pr, 审
|
|
|
12
12
|
|
|
13
13
|
> **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-review-auth-module`)。审查产物写入 `speculo/.speculo/dev/<change>/`。
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
### 何时使用
|
|
15
|
+
## 何时使用
|
|
18
16
|
|
|
19
17
|
当用户想审查分支、PR、进行中的变更,或要求 `review since <fixed-point>` 时使用。
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
三个维度是三种独立的"镜头",**不合并、不重排、不让一个维度的结论掩盖另一个**:
|
|
19
|
+
## 三个审查维度
|
|
24
20
|
|
|
25
21
|
| 维度 | 问题 | 关注 |
|
|
26
22
|
|------|------|------|
|
|
27
|
-
| **Spec** | 做对了吗? | 是否忠实实现来源 issue / PRD / spec
|
|
28
|
-
| **Engineering** | 做好了吗? |
|
|
29
|
-
| **Standards** | 合规吗? |
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
### 严重度模型
|
|
34
|
-
|
|
35
|
-
每条 finding 必须标注严重度:
|
|
36
|
-
|
|
37
|
-
| 级别 | 名称 | 含义 | 动作 |
|
|
38
|
-
|------|------|------|------|
|
|
39
|
-
| **P0** | Critical | 安全漏洞、数据丢失风险、正确性 bug | 必须阻断合并 |
|
|
40
|
-
| **P1** | High | 逻辑错误、显著 SOLID 违背、性能回退、关键需求缺失 | 合并前应修复 |
|
|
41
|
-
| **P2** | Medium | 代码异味、可维护性隐患、轻微 SOLID 违背、范围蔓延 | 本 PR 修或建后续项 |
|
|
42
|
-
| **P3** | Low | 风格、命名、小建议 | 可选改进 |
|
|
43
|
-
|
|
44
|
-
### 执行原则
|
|
45
|
-
|
|
46
|
-
- 用户说的任何东西都是固定点。若用户没有指定固定点,先询问;拿到前不要继续。
|
|
47
|
-
- 比较命令使用三点语法:`git diff <fixed-point>...HEAD`,同时记录 `git log <fixed-point>..HEAD --oneline`。
|
|
48
|
-
- **Worktree 模式**:若当前 change 为 worktree 隔离模式(`.status.json` 的 `worktree_enabled` 为真),fixed point 默认取 `base_branch`,且审查必须完整覆盖 change 分支树 `base_branch..change_branch` 的**每一个 commit**,不能只看最新工作区状态。此时读取 `../../../skills/worktree-isolation/SKILL.md` 的 `references/audit-branch-tree.md`;非 worktree 模式不读取该 skill。
|
|
49
|
-
- **Review-first**:本工作流默认只产出审查结论,**不修改代码**;除非用户在看到 findings 后明确授权修复。
|
|
50
|
-
- **诚实优先**:无法覆盖的区域要显式声明(见 `review-verdict.md` 的 clean-review 要求),不得用"看起来没问题"代替实际检查。
|
|
51
|
-
- 机器已强制的标准(lint / 类型 / 格式)只记录来源,不重复人工检查工具已覆盖的内容。
|
|
52
|
-
- 如果环境支持并行子代理,三个维度应并行执行;如果不支持,按三个独立上下文顺序执行,并在报告中保持分离。
|
|
53
|
-
|
|
54
|
-
### 渐进披露(Engineering 维度深度清单)
|
|
55
|
-
|
|
56
|
-
进入 Engineering 维度审查时,按需读取同目录清单:
|
|
57
|
-
|
|
58
|
-
- `solid-checklist.md`:检查 SOLID 违背与架构异味、给重构启发式时读取。
|
|
59
|
-
- `security-checklist.md`:检查安全漏洞、竞态、密钥、密码学与运行时风险时读取。
|
|
60
|
-
- `code-quality-checklist.md`:检查错误处理、性能 / 缓存、边界条件时读取。
|
|
61
|
-
- `removal-checklist.md`:识别死代码与删除候选、产出删除 / 推迟计划时读取。
|
|
62
|
-
|
|
63
|
-
### 独立使用
|
|
64
|
-
|
|
65
|
-
本工作流**零硬依赖**,无需预先执行 dev/01、dev/02、dev/I 等其他工作流即可独立进入。只需用户提供 fixed point(分支/commit/tag)+ 当前 git 仓库即可启动。
|
|
66
|
-
|
|
67
|
-
**独立进入流程:**
|
|
68
|
-
|
|
69
|
-
1. **fixed point**:若用户未指定,先询问;拿到前不继续。在 worktree 模式下默认取 `base_branch`。
|
|
70
|
-
2. **change 目录**:若用户未指定 `<change>` 目录,按 `YYYY-MM-DD-<kebab-name>` 格式创建(如 `2026-06-17-review-auth-refactor`),初始化 `.status.json` 并更新 `dev-status.json`。
|
|
71
|
-
3. **信息自采集**:若同 change 目录下无上游产物(PRD、slices、decision-log 等),**自行通过代码库探索采集审查所需上下文**,不要求用户先执行其他工作流:
|
|
72
|
-
- `git log <fixed-point>..HEAD --oneline` 提取 commit message 中的 issue/PR 引用
|
|
73
|
-
- 搜索仓库中与变更模块匹配的 spec 文档、README、设计文档
|
|
74
|
-
- 从代码注释、TODO/FIXME 和 commit message 正文推断需求意图
|
|
75
|
-
- 搜索 `speculo/.speculo/.config/RULES.md`、`speculo/.speculo/.config/adr/`、`AGENTS.md`、`CONTRIBUTING.md` 获取标准来源
|
|
76
|
-
- 搜索 `.editorconfig`、`eslint.config.*`、`biome.json`、`prettier.config.*`、`tsconfig.json` 获取机器强制标准
|
|
77
|
-
4. **深度搜索**:Spec 和 Standards 来源仍不足时:
|
|
78
|
-
- 对关键路径(auth/支付/数据写入/网络)执行额外的代码库考古(`git log -p -- <path>`)
|
|
79
|
-
- 搜索 `speculo/.speculo/doc/` 和 `speculo/.speculo/archive/` 中的领域文档
|
|
80
|
-
- 检查变更模块的现有测试文件以推断预期行为
|
|
81
|
-
5. **诚实优先**:找不到 spec 时明确记录 `no spec available`,不编造;找不到成文标准时记录覆盖空白,不把缺失当作"无问题"。Engineering 维度始终执行,不依赖任何外部产物。
|
|
82
|
-
|
|
83
|
-
### 缺少 change 目录时的自初始化
|
|
84
|
-
|
|
85
|
-
若当前无对应 change 目录,按以下步骤创建:
|
|
86
|
-
|
|
87
|
-
1. 从审查意图提取 `<kebab-name>`(如 `review-auth-refactor`、`review-api-changes`)
|
|
88
|
-
2. 创建 `speculo/.speculo/dev/<YYYY-MM-DD>-<kebab-name>/`
|
|
89
|
-
3. 初始化 `.status.json`:
|
|
90
|
-
```json
|
|
91
|
-
{
|
|
92
|
-
"dev_entry": "dev/R",
|
|
93
|
-
"current_phase": "1. Review Setup",
|
|
94
|
-
"phase_history": [],
|
|
95
|
-
"change_status": "active",
|
|
96
|
-
"review_fixed_point": null,
|
|
97
|
-
"review_diff_command": null,
|
|
98
|
-
"review_axes": ["spec", "engineering", "standards"],
|
|
99
|
-
"standards_sources": [],
|
|
100
|
-
"spec_sources": [],
|
|
101
|
-
"severity_summary": { "p0": 0, "p1": 0, "p2": 0, "p3": 0 },
|
|
102
|
-
"review_verdict": null,
|
|
103
|
-
"review_status": "collecting"
|
|
104
|
-
}
|
|
105
|
-
```
|
|
106
|
-
4. 在 `speculo/.speculo/dev-status.json` 的 `active` 数组中追加该 change 目录名
|
|
23
|
+
| **Spec** | 做对了吗? | 是否忠实实现来源 issue / PRD / spec |
|
|
24
|
+
| **Engineering** | 做好了吗? | 工程质量:SOLID、安全、错误处理、性能、边界、死代码 |
|
|
25
|
+
| **Standards** | 合规吗? | 是否违反仓库已记录的标准 |
|
|
26
|
+
|
|
27
|
+
详细严重度模型、独立进入流程与来源深度搜索见 `review-setup.md`。
|
|
107
28
|
|
|
108
29
|
## 阶段
|
|
109
30
|
|
|
31
|
+
| Phase | id | agent | 规范 | 模板 | 产物 |
|
|
32
|
+
|-------|-----|-------|------|------|------|
|
|
33
|
+
| 1. Review Setup | `review-setup` | — | `review-setup.md` | `../_templates/review-sources-template.md` | `review-sources.md` |
|
|
34
|
+
| 2. Multi-Axis Review | `multi-axis-review` | `agents/spec-review-agent.md`、`agents/engineering-review-agent.md`、`agents/standards-review-agent.md` | `review-axes.md` | `../_templates/review-report-template.md` | `review-report.md` |
|
|
35
|
+
| 3. Verdict & Next Steps | `verdict-next-steps` | — | `review-verdict.md` | `../_templates/review-verdict-template.md` | `review-verdict.md` |
|
|
36
|
+
|
|
110
37
|
### 1. Review Setup — 固定点、范围与来源收集
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
- 产物:`review-sources.md`
|
|
114
|
-
- 完成准则:
|
|
115
|
-
- 已记录 fixed point、diff 命令、commit 列表、diff 规模与分批策略
|
|
116
|
-
- 已列出 standards 来源与 spec 来源,或记录各自缺失
|
|
117
|
-
- 已标识关键路径(auth / 支付 / 数据写入 / 网络)
|
|
118
|
-
- `review-sources.md` 无残留 `[TODO:]`
|
|
38
|
+
- id:`review-setup`
|
|
39
|
+
- 完成准则:fixed point、diff 命令、来源清单已记录;`review-sources.md` 无残留 `[TODO:]`
|
|
119
40
|
|
|
120
41
|
### 2. Multi-Axis Review — 三维度审查
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
- 产物:`review-report.md`
|
|
124
|
-
- 完成准则:
|
|
125
|
-
- Spec / Engineering / Standards 分区独立呈现,不合并、不重排
|
|
126
|
-
- 每条 finding 带严重度(P0–P3)、文件/行或 hunk 依据,以及对应 spec / 清单 / 标准引用
|
|
127
|
-
- `review-report.md` 无残留 `[TODO:]`
|
|
42
|
+
- id:`multi-axis-review`
|
|
43
|
+
- 完成准则:三维度分区独立呈现;每条 finding 带 P0–P3 严重度;`review-report.md` 无残留 `[TODO:]`
|
|
128
44
|
|
|
129
45
|
### 3. Verdict & Next Steps — 裁决与后续确认
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
- 产物:`review-verdict.md`
|
|
133
|
-
- 完成准则:
|
|
134
|
-
- 给出整体裁决(APPROVE / REQUEST_CHANGES / COMMENT)与严重度汇总
|
|
135
|
-
- 完成 clean-review 声明:检查了什么、未覆盖什么、残留风险
|
|
136
|
-
- 已向用户给出后续选项,未经确认不实施修复
|
|
137
|
-
- `review-verdict.md` 无残留 `[TODO:]`
|
|
46
|
+
- id:`verdict-next-steps`
|
|
47
|
+
- 完成准则:整体裁决与 clean-review 声明已给出;未经确认不实施修复;`review-verdict.md` 无残留 `[TODO:]`
|
|
138
48
|
|
|
139
49
|
## 依赖
|
|
140
50
|
|
|
141
51
|
- 硬依赖:无;用户提供 fixed point 即可进入
|
|
142
|
-
-
|
|
52
|
+
- 软依赖:同 change 下若有 `prd.md`、`slices.md` 等可继承增强 Spec 维度;缺失时自行采集,不阻塞流程
|
|
143
53
|
|
|
144
54
|
## 状态扩展字段
|
|
145
55
|
|
|
146
|
-
本工作流需在同 change 的 `.status.json` 追加:
|
|
147
|
-
|
|
148
56
|
- `dev_entry` (string) — 固定为 `dev/R`
|
|
149
|
-
- `review_fixed_point` (string)
|
|
150
|
-
- `review_diff_command` (string)
|
|
151
|
-
- `review_axes` (array) —
|
|
152
|
-
- `standards_sources` (array)
|
|
153
|
-
- `spec_sources` (array)
|
|
154
|
-
- `severity_summary` (object) —
|
|
155
|
-
- `review_verdict` (approve | request_changes | comment | null)
|
|
156
|
-
- `review_status` (collecting | reviewing | judged | completed | blocked)
|
|
57
|
+
- `review_fixed_point` (string)
|
|
58
|
+
- `review_diff_command` (string)
|
|
59
|
+
- `review_axes` (array) — `spec` | `engineering` | `standards`
|
|
60
|
+
- `standards_sources` (array)
|
|
61
|
+
- `spec_sources` (array)
|
|
62
|
+
- `severity_summary` (object) — `{ "p0": n, "p1": n, "p2": n, "p3": n }`
|
|
63
|
+
- `review_verdict` (approve | request_changes | comment | null)
|
|
64
|
+
- `review_status` (collecting | reviewing | judged | completed | blocked)
|
|
157
65
|
|
|
158
66
|
## 完成与状态更新
|
|
159
67
|
|
|
160
68
|
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
161
69
|
- 完成 setup 后写入 fixed point、diff 命令、`review_axes` 和来源清单。
|
|
162
70
|
- 完成报告后更新 `severity_summary`,置 `review_status: judged`。
|
|
163
|
-
- 完成裁决后写入 `review_verdict`,置 `review_status: completed
|
|
71
|
+
- 完成裁决后写入 `review_verdict`,置 `review_status: completed`;不自动完成 change —— 是否进入修复(`../03-tdd/03-tdd.md`)、收尾(`../04-finalize/04-finalize.md`)由用户决定。
|
|
72
|
+
|
|
73
|
+
### 缺少 change 目录时
|
|
74
|
+
|
|
75
|
+
若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/R-review/engineering-review-agent
|
|
3
|
+
type: agent
|
|
4
|
+
name: Engineering Review Agent
|
|
5
|
+
description: 隔离执行 Engineering 维度审查:做好了吗
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 使命
|
|
9
|
+
|
|
10
|
+
独立审查 diff 的 Engineering 维度:SOLID、安全、错误处理、性能、边界、死代码。
|
|
11
|
+
|
|
12
|
+
## 输入契约
|
|
13
|
+
|
|
14
|
+
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
+
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
+
- 上游产物:`review-sources.md`
|
|
17
|
+
- 清单:`../solid-checklist.md`、`../security-checklist.md`、`../code-quality-checklist.md`、`../removal-checklist.md`
|
|
18
|
+
|
|
19
|
+
## 执行规范
|
|
20
|
+
|
|
21
|
+
- 使用 `review-sources.md` 中的 diff 命令。
|
|
22
|
+
- Engineering 维度始终执行,不依赖外部 spec。
|
|
23
|
+
- 按需读取同目录清单;每条 finding 带 P0–P3 严重度与清单引用。
|
|
24
|
+
- 产出写入 `review-report.md` 的 Engineering 分区。
|
|
25
|
+
|
|
26
|
+
## 产物与状态
|
|
27
|
+
|
|
28
|
+
- 产物:`review-report.md`(Engineering 分区)
|
|
29
|
+
- `.status.json`:追加 `review_axes` 含 `engineering`;更新 `severity_summary`
|
|
30
|
+
|
|
31
|
+
## 边界
|
|
32
|
+
|
|
33
|
+
- 只写 Engineering 分区;不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/R-review/spec-review-agent
|
|
3
|
+
type: agent
|
|
4
|
+
name: Spec Review Agent
|
|
5
|
+
description: 隔离执行 Spec 维度审查:做对了吗
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 使命
|
|
9
|
+
|
|
10
|
+
独立审查 diff 的 Spec 维度:是否忠实实现来源 issue / PRD / spec。
|
|
11
|
+
|
|
12
|
+
## 输入契约
|
|
13
|
+
|
|
14
|
+
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
+
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
+
- 上游产物:`review-sources.md`(fixed point、diff 命令、spec 来源)
|
|
17
|
+
- 规范:`../review-axes.md`(Spec 分区)
|
|
18
|
+
|
|
19
|
+
## 执行规范
|
|
20
|
+
|
|
21
|
+
- 使用 `review-sources.md` 中的 diff 命令与 spec 来源。
|
|
22
|
+
- 无 spec 时报告 `no spec available`,不编造需求。
|
|
23
|
+
- 每条 finding 带 P0–P3 严重度、文件/行依据与 spec 引用。
|
|
24
|
+
- 产出写入 `review-report.md` 的 Spec 分区(与 Engineering、Standards 分区独立)。
|
|
25
|
+
|
|
26
|
+
## 产物与状态
|
|
27
|
+
|
|
28
|
+
- 产物:`review-report.md`(Spec 分区)
|
|
29
|
+
- `.status.json`:追加 `review_axes` 含 `spec`;更新 `severity_summary`
|
|
30
|
+
|
|
31
|
+
## 边界
|
|
32
|
+
|
|
33
|
+
- 只写 Spec 分区;不合并或重排其他维度 findings。
|
|
34
|
+
- 不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev/R-review/standards-review-agent
|
|
3
|
+
type: agent
|
|
4
|
+
name: Standards Review Agent
|
|
5
|
+
description: 隔离执行 Standards 维度审查:合规吗
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 使命
|
|
9
|
+
|
|
10
|
+
独立审查 diff 的 Standards 维度:是否违反仓库已记录的标准。
|
|
11
|
+
|
|
12
|
+
## 输入契约
|
|
13
|
+
|
|
14
|
+
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
+
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
+
- 上游产物:`review-sources.md`(standards 来源清单)
|
|
17
|
+
- 规范:`../review-axes.md`(Standards 分区)
|
|
18
|
+
|
|
19
|
+
## 执行规范
|
|
20
|
+
|
|
21
|
+
- 使用 `review-sources.md` 中的 diff 命令与 standards 来源。
|
|
22
|
+
- 无成文标准时报告覆盖空白,不把缺失当作无问题。
|
|
23
|
+
- 机器已强制的标准(lint / 类型)只记录来源,不重复人工检查。
|
|
24
|
+
- 每条 finding 带 P0–P3 严重度与标准引用。
|
|
25
|
+
- 产出写入 `review-report.md` 的 Standards 分区。
|
|
26
|
+
|
|
27
|
+
## 产物与状态
|
|
28
|
+
|
|
29
|
+
- 产物:`review-report.md`(Standards 分区)
|
|
30
|
+
- `.status.json`:追加 `review_axes` 含 `standards`;更新 `severity_summary`
|
|
31
|
+
|
|
32
|
+
## 边界
|
|
33
|
+
|
|
34
|
+
- 只写 Standards 分区;不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -6,6 +6,37 @@
|
|
|
6
6
|
- 当前 git 仓库
|
|
7
7
|
- 当前 change 目录:`speculo/.speculo/dev/<change>/`
|
|
8
8
|
|
|
9
|
+
## 严重度模型
|
|
10
|
+
|
|
11
|
+
每条 finding 必须标注严重度:
|
|
12
|
+
|
|
13
|
+
| 级别 | 名称 | 含义 | 动作 |
|
|
14
|
+
|------|------|------|------|
|
|
15
|
+
| **P0** | Critical | 安全漏洞、数据丢失风险、正确性 bug | 必须阻断合并 |
|
|
16
|
+
| **P1** | High | 逻辑错误、显著 SOLID 违背、性能回退、关键需求缺失 | 合并前应修复 |
|
|
17
|
+
| **P2** | Medium | 代码异味、可维护性隐患、轻微 SOLID 违背、范围蔓延 | 本 PR 修或建后续项 |
|
|
18
|
+
| **P3** | Low | 风格、命名、小建议 | 可选改进 |
|
|
19
|
+
|
|
20
|
+
## 执行原则
|
|
21
|
+
|
|
22
|
+
- 用户说的任何东西都是固定点。若用户没有指定固定点,先询问;拿到前不要继续。
|
|
23
|
+
- 比较命令使用三点语法:`git diff <fixed-point>...HEAD`,同时记录 `git log <fixed-point>..HEAD --oneline`。
|
|
24
|
+
- **Worktree 模式**:若当前 change 为 worktree 隔离模式(`.status.json` 的 `worktree_enabled` 为真),fixed point 默认取 `base_branch`,且审查必须完整覆盖 change 分支树 `base_branch..change_branch` 的**每一个 commit**。此时读取 `../../../skills/worktree-isolation/SKILL.md` 的 `references/audit-branch-tree.md`。
|
|
25
|
+
- **Review-first**:本工作流默认只产出审查结论,**不修改代码**;除非用户在看到 findings 后明确授权修复。
|
|
26
|
+
- **诚实优先**:无法覆盖的区域要显式声明(见 `review-verdict.md` 的 clean-review 要求)。
|
|
27
|
+
- 机器已强制的标准(lint / 类型 / 格式)只记录来源,不重复人工检查。
|
|
28
|
+
- 如果环境支持并行子代理,三个维度应并行执行;否则按三个独立上下文顺序执行。
|
|
29
|
+
|
|
30
|
+
## 独立进入流程
|
|
31
|
+
|
|
32
|
+
本工作流**零硬依赖**。只需用户提供 fixed point + 当前 git 仓库即可启动。
|
|
33
|
+
|
|
34
|
+
1. **fixed point**:若用户未指定,先询问;worktree 模式下默认取 `base_branch`。
|
|
35
|
+
2. **change 目录**:若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
|
|
36
|
+
3. **信息自采集**:若同 change 下无上游产物,按下方「来源深度搜索」自行采集审查上下文。
|
|
37
|
+
4. **深度搜索**:Spec 和 Standards 来源仍不足时,对关键路径执行额外考古;检查测试文件推断预期行为。
|
|
38
|
+
5. **诚实优先**:找不到 spec 时记录 `no spec available`;找不到成文标准时记录覆盖空白。Engineering 维度始终执行。
|
|
39
|
+
|
|
9
40
|
## 独立进入时的来源深度搜索
|
|
10
41
|
|
|
11
42
|
当本工作流独立进入(无上游 PRD、slices、decision-log 等产物)时,在收集 spec 和 standards 来源时执行以下扩展搜索。**不要求用户先执行 dev/01、dev/02 或其他工作流。**
|
|
@@ -57,7 +88,14 @@
|
|
|
57
88
|
- `.editorconfig`、`eslint.config.*`、`biome.json`、`prettier.config.*`、`tsconfig.json`
|
|
58
89
|
- 全部缺失时记录覆盖空白说明
|
|
59
90
|
7. 机器强制的标准只记录来源,不重复检查工具已覆盖的内容。
|
|
60
|
-
8. Engineering 维度不需要外部来源,但记录将依据同目录的 `solid-checklist.md`、`security-checklist.md`、`code-quality-checklist.md`、`removal-checklist.md
|
|
91
|
+
8. Engineering 维度不需要外部来源,但记录将依据同目录的 `solid-checklist.md`、`security-checklist.md`、`code-quality-checklist.md`、`removal-checklist.md`(进入 Engineering 审查时按需读取)。
|
|
92
|
+
|
|
93
|
+
## 渐进披露(Engineering 维度深度清单)
|
|
94
|
+
|
|
95
|
+
- `solid-checklist.md`:SOLID 违背与架构异味
|
|
96
|
+
- `security-checklist.md`:安全漏洞、竞态、密钥、密码学
|
|
97
|
+
- `code-quality-checklist.md`:错误处理、性能、边界条件
|
|
98
|
+
- `removal-checklist.md`:死代码与删除候选
|
|
61
99
|
|
|
62
100
|
## 边界
|
|
63
101
|
|
|
@@ -86,7 +86,7 @@ P1 phase1-xxx 切片名称 依赖 P0
|
|
|
86
86
|
[TODO: 汇总影响全局或跨切片的技术选型与取舍,如方案选择(工具类 vs 正则)、字段复用/新建决策、SQL 追加规则等。防止下游对同一问题反复争论。单文件小改可删除本节。]
|
|
87
87
|
|
|
88
88
|
## 6. 风险与回滚
|
|
89
|
-
[TODO: 条件段——本期涉及删除/数据迁移/外部副作用/高耦合时填:风险 / 触发条件 / 缓解 / 回滚 表;有
|
|
89
|
+
[TODO: 条件段——本期涉及删除/数据迁移/外部副作用/高耦合时填:风险 / 触发条件 / 缓解 / 回滚 表;有 overview.md 风险则继承细化。纯增量小改可删除本节。]
|
|
90
90
|
|
|
91
91
|
## 7. 退役清单
|
|
92
92
|
[TODO: 条件段——仅当删除既有能力时填:项 / 处置 / 验证 表,逐条记录被删或被迁内容及其去向。无删除则删除本节。]
|
|
@@ -39,7 +39,7 @@ keywords: [doc, writing, article, fragments, edit, agents, 文档, 写作]
|
|
|
39
39
|
2. 若只有一个 active change,默认继续该 change;若有多个 active change,要求用户选择。
|
|
40
40
|
3. 若没有 active change,按用户意图创建新的 doc change。**以下三步为原子操作,不可跳过,前一步失败时停止后续并报告:**
|
|
41
41
|
- **3a. 创建 change 目录** —— `speculo/.speculo/doc/<YYYY-MM-DD>-<kebab-name>/`(使用当前日期,`<kebab-name>` 从用户意图提取,不超过 5 个词)。
|
|
42
|
-
- **3b. 写入 `.status.json`** —— 在 change 目录下创建 `.status.json`,按
|
|
42
|
+
- **3b. 写入 `.status.json`** —— 在 change 目录下创建 `.status.json`,按 `../../skills/speculo-write/references/persistence-contract-sop.md` 最小初始化模板填入所有必填字段(`name`、`category: "doc"`、`change_status: "active"`、`created_at`、`updated_at`、`current_phase: "00-init"`、`phase_history`)。
|
|
43
43
|
- **3c. 更新 `doc-status.json`** —— 读取 `speculo/.speculo/doc-status.json`,在 `active[]` 中追加该 change 的索引条目(`name`、`current_phase: "00-init"`、`updated_at`),写回文件。
|
|
44
44
|
- 以上三步全部成功后,方可继续推荐入口。
|
|
45
45
|
4. 推荐入口时优先使用用户显式别名;没有别名时按用户意图推荐一个横向 workflow。
|
|
@@ -64,9 +64,17 @@ keywords: [doc, writing, article, fragments, edit, agents, 文档, 写作]
|
|
|
64
64
|
- `phase_history` 最后一项为 `blocked` 或 `updated_at` 超过 14 天未变化的 change
|
|
65
65
|
- 推荐下一步入口和原因
|
|
66
66
|
|
|
67
|
+
## 续跑协议
|
|
68
|
+
|
|
69
|
+
1. 读取 change 目录下 `.status.json` 的 `current_phase` 与 `phase_history`。
|
|
70
|
+
2. 跳过 `status: completed` 的 phase;从 `in-progress`、`blocked` 或首个 `pending` phase 继续。
|
|
71
|
+
3. 根据 `current_phase` 匹配 workflow 入口 `## 阶段` 中的机器 id,只读取对应 phase 文件与模板。
|
|
72
|
+
4. 首个 workflow 进入 change 时写入 `execution_mode`(使用入口声明的执行模式名或用户指定别名)。
|
|
73
|
+
5. 不得因续跑而重复创建 change 或重写已完成的 phase 产物。
|
|
74
|
+
|
|
67
75
|
## 完成与状态更新
|
|
68
76
|
|
|
69
77
|
- 所有 doc workflow 必须维护同一 change 的 `.status.json`。
|
|
70
78
|
- 进入 phase 时更新 `current_phase`,并在 `phase_history` 追加 `in-progress` 记录。
|
|
71
79
|
- phase 完成时写入 `completed_at` 和 `status: completed`。
|
|
72
|
-
-
|
|
80
|
+
- 用户确认文章、素材采集或编辑边界完成后,调用 `../../commands/archive.md` 归档 change;不得自行写入 `change_status: completed`(doc 分类无 finalize workflow)。
|
|
@@ -76,4 +76,4 @@ beat 是旅程中的一个动作:铺开一个场景、落下一个观点、提
|
|
|
76
76
|
|
|
77
77
|
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
78
78
|
- 每次写入 beat 后更新 `beat_count`、`current_beat_status` 和 `updated_at`。
|
|
79
|
-
-
|
|
79
|
+
- 文章自然结束且用户确认后,调用 `../../commands/archive.md` 归档 change;不得自行写入 `change_status: completed`。
|
|
@@ -76,4 +76,4 @@ keywords: [edit, article, revise, clarity, draft, 编辑, 修订]
|
|
|
76
76
|
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
77
77
|
- 完成 edit plan 后更新 `section_count` 和 `edit_status`。
|
|
78
78
|
- 每节重写后更新 `updated_at` 和 `edit_status`。
|
|
79
|
-
- 用户确认 edited article
|
|
79
|
+
- 用户确认 edited article 完成后,调用 `../../commands/archive.md` 归档 change;不得自行写入 `change_status: completed`。
|
|
@@ -78,4 +78,4 @@ keywords: [shape, article, markdown, draft, writing, 塑形]
|
|
|
78
78
|
|
|
79
79
|
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
80
80
|
- 每次写入块后更新 `format_decisions`、`writing_status` 和 `updated_at`。
|
|
81
|
-
-
|
|
81
|
+
- 文章完成由用户决定;用户确认完成后,调用 `../../commands/archive.md` 归档 change;不得自行写入 `change_status: completed`。
|
|
@@ -8,140 +8,57 @@ keywords: [teach, lesson, learning, glossary, 教学, 课程, 术语, 学习]
|
|
|
8
8
|
|
|
9
9
|
# Teaching Design 工作流执行指引
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
本工作流是 `doc/T` 入口:围绕学习主题设计交互式教学体验(使命→资源→课程→参考→记录)。
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
> **产物目录:** `speculo/.speculo/doc/<change>/`。`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
## 核心理念
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
深度学习需要 Knowledge(高质量资源)、Skills(交互式课程)与 Wisdom(实践互动)。留存设计原则:retrieval practice、spacing、interleaving。每节课短小、给一个具体胜利,控制在学习者工作记忆容量内。
|
|
18
18
|
|
|
19
|
-
-
|
|
20
|
-
- **Skills(技能)** — 通过你设计的高度相关交互式课程获得
|
|
21
|
-
- **Wisdom(智慧)** — 来自与其他学习者和实践者的互动
|
|
22
|
-
|
|
23
|
-
获取知识时,难度是敌人——它会吃掉理解所需的工作记忆。练习技能时,难度是工具——有努力的提取才能建立长期留存。
|
|
24
|
-
|
|
25
|
-
### 留存设计原则
|
|
26
|
-
|
|
27
|
-
- **Retrieval practice**:让用户从记忆中回忆,而非重新阅读
|
|
28
|
-
- **Spacing**:把练习分散到多节课,不要集中轰炸
|
|
29
|
-
- **Interleaving**:在技能练习中混合不同但相关的主题
|
|
30
|
-
|
|
31
|
-
每节课应该短小精悍,在很短时间内可完成。学习者工作记忆很有限,必须控制在容量内。但每节课应该给用户一个具体的小胜利。
|
|
32
|
-
|
|
33
|
-
### 最近发展区
|
|
34
|
-
|
|
35
|
-
每节课用户都应该感觉被挑战得「刚好够」。判断最近发展区的方法:
|
|
36
|
-
|
|
37
|
-
1. 读取 `learning-records/`,了解用户已知什么
|
|
38
|
-
2. 基于使命判断下一个该教什么
|
|
39
|
-
3. 教能放进最近发展区的最相关内容
|
|
40
|
-
|
|
41
|
-
### Lesson 铁律
|
|
42
|
-
|
|
43
|
-
一节 lesson 是自包含的单个 HTML 文件,保存为 `speculo/.speculo/doc/<change>/lessons/<编号>.html`。它必须:
|
|
44
|
-
|
|
45
|
-
- **漂亮** — 干净、可读的排版和布局,用户以后会回来复习
|
|
46
|
-
- **短** — 在几分钟内可完成
|
|
47
|
-
- **给一个胜利** — 每节课一个具体可感知的收获
|
|
48
|
-
- **直接关联使命** — 每节课都追溯回 MISSION.md
|
|
49
|
-
- **链向其他资源** — 通过 HTML 锚点链向其他课程和参考文档
|
|
50
|
-
- **推荐一手资料** — 每节课推荐一个最高质量、最高信任度的外部资源
|
|
51
|
-
- **提示提问** — 每节课包含提醒用户向 AI 教师追问
|
|
52
|
-
|
|
53
|
-
### 课程结构模板
|
|
54
|
-
|
|
55
|
-
```html
|
|
56
|
-
<!DOCTYPE html>
|
|
57
|
-
<html lang="zh-CN">
|
|
58
|
-
<head>
|
|
59
|
-
<meta charset="UTF-8">
|
|
60
|
-
<title>课程标题</title>
|
|
61
|
-
<style>
|
|
62
|
-
body { max-width: 680px; margin: 2rem auto; padding: 0 1rem; font-family: system-ui; line-height: 1.7; color: #1a1a1a; }
|
|
63
|
-
h1 { font-size: 1.6rem; margin-top: 2.5rem; }
|
|
64
|
-
blockquote { border-left: 3px solid #ddd; margin-left: 0; padding-left: 1rem; color: #555; }
|
|
65
|
-
.cite { font-size: 0.85rem; color: #888; margin-top: 2rem; border-top: 1px solid #eee; padding-top: 0.5rem; }
|
|
66
|
-
.reminder { background: #f5f5f5; padding: 0.8rem 1rem; border-radius: 6px; margin-top: 2rem; font-size: 0.9rem; }
|
|
67
|
-
</style>
|
|
68
|
-
</head>
|
|
69
|
-
<body>
|
|
70
|
-
<!-- 课程内容 -->
|
|
71
|
-
<div class="cite">📖 推荐一手资料:<a href="...">资源标题</a></div>
|
|
72
|
-
<div class="reminder">💡 有疑问?直接问我——我是你的 AI 教师。</div>
|
|
73
|
-
</body>
|
|
74
|
-
</html>
|
|
75
|
-
```
|
|
19
|
+
Lesson 铁律与 HTML 课程结构见 `teach-lesson.md` 与 `../_templates/teach-lesson-html-template.md`。
|
|
76
20
|
|
|
77
21
|
## 阶段
|
|
78
22
|
|
|
79
|
-
|
|
23
|
+
| Phase | id | 规范 | 模板 | 产物 |
|
|
24
|
+
|-------|-----|------|------|------|
|
|
25
|
+
| 1. Mission Setup | `mission-setup` | `teach-mission.md` | `../_templates/teach-mission-template.md` | `mission.md` |
|
|
26
|
+
| 2. Resources Curation | `resources-curation` | `teach-resources.md` | `../_templates/teach-resources-template.md` | `resources.md` |
|
|
27
|
+
| 3. Lesson Design | `lesson-design` | `teach-lesson.md` | `../_templates/teach-lesson-html-template.md` | `lessons/<编号>.html` |
|
|
28
|
+
| 4. Lesson Wrap | `lesson-wrap` | `teach-lesson-wrap.md` | glossary + learning-record 模板 | `reference/<编号>.html` 等 |
|
|
29
|
+
|
|
30
|
+
Phase 3 ↔ 4 为紧密循环:每节课程完成后立即收尾。`current_loop` 映射:`mission-setup` | `resources-curation` | `lesson-design` | `lesson-wrap`。
|
|
80
31
|
|
|
81
32
|
### 1. Mission Setup — 确立学习使命
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- 产物:`mission.md`
|
|
85
|
-
- 完成准则:
|
|
86
|
-
- 已追问出具体、可观测的成功标准(非「想了解 X」而是「能做 Y」)
|
|
87
|
-
- Why / Success / Constraints / Out of scope 四段均已填写
|
|
88
|
-
- `mission.md` 无残留 `[TODO:]`
|
|
33
|
+
- id:`mission-setup`
|
|
34
|
+
- 完成准则:`mission.md` 无残留 `[TODO:]`;成功标准可观测
|
|
89
35
|
|
|
90
36
|
### 2. Resources Curation — 策展可信资源
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- 已找到至少一个可推荐社区(除非用户选择不加入社区)
|
|
98
|
-
- `resources.md` 无残留 `[TODO:]`
|
|
99
|
-
|
|
100
|
-
### 3. Lesson Design — 设计一节交互式课程(主循环)
|
|
101
|
-
- 规范:`teach-lesson.md`
|
|
102
|
-
- 模板:无(HTML 课程见内置指引的课程结构模板)
|
|
103
|
-
- 产物:`lessons/<编号>.html`
|
|
104
|
-
- 完成准则:
|
|
105
|
-
- 课程短小(几分钟内可完成)、有一个具体胜利、直接关联使命
|
|
106
|
-
- 课程已链向相关参考文档和其他课程
|
|
107
|
-
- 课程包含一手资料推荐和 AI 追问提示
|
|
108
|
-
- 编号从已有最高编号 +1
|
|
37
|
+
- id:`resources-curation`
|
|
38
|
+
- 完成准则:`resources.md` 无残留 `[TODO:]`;至少一条高信任度资源
|
|
39
|
+
|
|
40
|
+
### 3. Lesson Design — 设计一节交互式课程
|
|
41
|
+
- id:`lesson-design`
|
|
42
|
+
- 完成准则:课程关联 `mission.md`;编号递增
|
|
109
43
|
|
|
110
44
|
### 4. Lesson Wrap — 课程收尾
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
- 产物:`reference/<编号>.html`、`GLOSSARY.md`(持续更新)、`learning-records/<编号>.md`(可选)
|
|
114
|
-
- 完成准则:
|
|
115
|
-
- 已为该课程创建压缩参考文档(cheat sheet / 速查)
|
|
116
|
-
- 用户在本课中真正理解的术语已收录进 GLOSSARY.md
|
|
117
|
-
- 若产生非显而易见的洞察,已写 learning record
|
|
118
|
-
- 已更新 `NOTES.md`(若用户表达了教学偏好)
|
|
45
|
+
- id:`lesson-wrap`
|
|
46
|
+
- 完成准则:参考文档与 GLOSSARY 已更新
|
|
119
47
|
|
|
120
48
|
## 依赖
|
|
121
49
|
|
|
122
|
-
- 硬依赖:Phase 1 → Phase 2
|
|
123
|
-
- 软依赖:Phase 2 → Phase 3
|
|
124
|
-
- Phase 3 ↔ Phase 4 为紧密循环:每节课程完成后立即收尾
|
|
50
|
+
- 硬依赖:Phase 1 → Phase 2
|
|
51
|
+
- 软依赖:Phase 2 → Phase 3
|
|
125
52
|
|
|
126
53
|
## 状态扩展字段
|
|
127
54
|
|
|
128
|
-
本工作流需在同 change 的 `.status.json` 追加:
|
|
129
|
-
|
|
130
55
|
- `doc_entry` (string) — 固定为 `doc/T`
|
|
131
|
-
- `mission_status` (drafting | confirmed)
|
|
132
|
-
- `resource_count` (number)
|
|
133
|
-
- `
|
|
134
|
-
- `reference_count` (number) — 已创建参考文档数量
|
|
135
|
-
- `learning_record_count` (number) — 已写学习记录数量
|
|
136
|
-
- `glossary_term_count` (number) — 术语表条目数
|
|
137
|
-
- `current_loop` (mission | resources | lesson | wrap) — 当前循环位置
|
|
56
|
+
- `mission_status` (drafting | confirmed)
|
|
57
|
+
- `resource_count`、`lesson_count`、`reference_count`、`learning_record_count`、`glossary_term_count` (number)
|
|
58
|
+
- `current_loop` (mission-setup | resources-curation | lesson-design | lesson-wrap)
|
|
138
59
|
|
|
139
60
|
## 完成与状态更新
|
|
140
61
|
|
|
141
62
|
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
142
|
-
- Phase
|
|
143
|
-
-
|
|
144
|
-
- 每次捕捉到学习洞察时追加 `learning_record_count`。
|
|
145
|
-
- 用户声明学习目标全部达成后,可把 `change_status` 置为 `completed`。
|
|
146
|
-
- 如有可沉淀教学经验,在用户允许时追加到 `speculo/.speculo/.config/LESSONS.md`。
|
|
147
|
-
- NOTES.md 作为教学偏好暂存区,AI 在后续课程设计中应参考其中记录。
|
|
63
|
+
- Phase 3-4 循环时更新 `lesson_count` 等计数。
|
|
64
|
+
- 用户声明学习目标全部达成后,调用 `../../commands/archive.md` 归档 change;不得自行写入 `change_status: completed`。
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
1. **用户展示了非显而易见的真正理解** — 不是仅仅接触过,而是有证据表明能正确使用这个概念。这为后续教学设定了新底线。
|
|
22
22
|
2. **用户披露了先验知识** — 「我已经知道 X」。记录下来避免后续重新教。同时记录声称的深度。
|
|
23
23
|
3. **一个误解被纠正** — 用户之前相信了错误的东西,现在明白了为什么。高价值:预测后续相关主题的绊脚石。
|
|
24
|
-
4. **使命因学习而改变** — 用户发现自己在意的和最初想的不同。交叉引用
|
|
24
|
+
4. **使命因学习而改变** — 用户发现自己在意的和最初想的不同。交叉引用 `mission.md` 并更新它。
|
|
25
25
|
|
|
26
26
|
### 不写的情况
|
|
27
27
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
> **服务工作流:** `../T-teach/T-teach.md`
|
|
2
|
+
> **产物文件名:** `lessons/<编号>.html`
|
|
3
|
+
|
|
4
|
+
```html
|
|
5
|
+
<!DOCTYPE html>
|
|
6
|
+
<html lang="zh-CN">
|
|
7
|
+
<head>
|
|
8
|
+
<meta charset="UTF-8">
|
|
9
|
+
<title>课程标题</title>
|
|
10
|
+
<style>
|
|
11
|
+
body { max-width: 680px; margin: 2rem auto; padding: 0 1rem; font-family: system-ui; line-height: 1.7; color: #1a1a1a; }
|
|
12
|
+
h1 { font-size: 1.6rem; margin-top: 2.5rem; }
|
|
13
|
+
blockquote { border-left: 3px solid #ddd; margin-left: 0; padding-left: 1rem; color: #555; }
|
|
14
|
+
.cite { font-size: 0.85rem; color: #888; margin-top: 2rem; border-top: 1px solid #eee; padding-top: 0.5rem; }
|
|
15
|
+
.reminder { background: #f5f5f5; padding: 0.8rem 1rem; border-radius: 6px; margin-top: 2rem; font-size: 0.9rem; }
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
<body>
|
|
19
|
+
<!-- 课程内容 -->
|
|
20
|
+
<div class="cite">📖 推荐一手资料:<a href="...">资源标题</a></div>
|
|
21
|
+
<div class="reminder">💡 有疑问?直接问我——我是你的 AI 教师。</div>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
24
|
+
```
|