@llman-sdd/core 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/archive/freeze.ts +86 -18
- package/src/archive/frozenCard.ts +105 -0
- package/src/archive/sevenzip.ts +15 -13
- package/src/change/closeOutHarness.ts +29 -0
- package/src/change/collect.ts +140 -0
- package/src/change/frontmatter.ts +48 -6
- package/src/change/id.ts +2 -6
- package/src/change/lifecycle.ts +285 -86
- package/src/change/nextId.ts +63 -2
- package/src/change/resolve.ts +2 -2
- package/src/change/tasks.ts +59 -0
- package/src/config/changeId.ts +14 -12
- package/src/config/load.ts +14 -0
- package/src/config/schema.ts +4 -41
- package/src/config/surface.ts +6 -36
- package/src/context/indexStore.ts +7 -3
- package/src/context/retrieve.ts +8 -10
- package/src/context/tree.ts +28 -24
- package/src/git/spawnGit.ts +90 -2
- package/src/index.ts +67 -59
- package/src/init/defaultConfig.ts +1 -5
- package/src/init/init.ts +19 -4
- package/src/ports.ts +1 -7
- package/src/project/migrateNotes.ts +104 -0
- package/src/render/machine.ts +30 -0
- package/src/report/collect.ts +11 -127
- package/src/report/graph/analysis.ts +152 -0
- package/src/report/graph/deps.ts +30 -0
- package/src/report/graph/graphData.ts +53 -0
- package/src/report/graph/nodes.ts +130 -0
- package/src/report/graph/render.ts +83 -0
- package/src/report/graph/types.ts +47 -0
- package/src/report/graph.ts +9 -381
- package/src/report/show.ts +20 -22
- package/src/report/specHelpers.ts +42 -21
- package/src/report/specs.ts +23 -25
- package/src/review/review.ts +45 -30
- package/src/spec/authoring.ts +91 -63
- package/src/spec/ir.ts +43 -15
- package/src/spec/migrateNative.ts +167 -0
- package/src/spec/parser.ts +73 -77
- package/src/spec/reqRegistry.ts +8 -9
- package/src/templates/embedded.ts +10 -16
- package/src/templates/engine.ts +10 -5
- package/src/templates/locale.ts +1 -1
- package/src/templates/skills.ts +4 -5
- package/src/validation/changeCheck.ts +128 -105
- package/src/validation/harness.ts +161 -0
- package/src/validation/staleness.ts +9 -5
- package/src/validation/validate.ts +60 -88
- package/templates/en/skills/llman-sdd-apply-cycle.md +20 -28
- package/templates/en/skills/llman-sdd-apply.md +58 -76
- package/templates/en/skills/llman-sdd-arch-review.md +12 -19
- package/templates/en/skills/llman-sdd-archive.md +27 -42
- package/templates/en/skills/llman-sdd-continue.md +17 -24
- package/templates/en/skills/llman-sdd-draft.md +17 -28
- package/templates/en/skills/llman-sdd-explore.md +29 -43
- package/templates/en/skills/llman-sdd-ff.md +12 -17
- package/templates/en/skills/llman-sdd-graph.md +14 -32
- package/templates/en/skills/llman-sdd-propose.md +48 -63
- package/templates/en/skills/llman-sdd-quick.md +12 -27
- package/templates/en/skills/llman-sdd-research.md +13 -24
- package/templates/en/skills/llman-sdd-specs-compact.md +14 -39
- package/templates/en/skills/llman-sdd-validate.md +11 -15
- package/templates/en/skills/llman-sdd-verify.md +23 -44
- package/templates/en/skills/llman-sdd-wayfinder.md +18 -22
- package/templates/en/units/skills/cli-footer.md +2 -0
- package/templates/en/units/skills/git-native-flow-brief.md +7 -6
- package/templates/en/units/skills/git-native-flow.md +21 -11
- package/templates/en/units/skills/human-readable-summary.md +2 -3
- package/templates/en/units/skills/stage-guard.md +7 -7
- package/templates/en/units/skills/structured-protocol.md +5 -8
- package/templates/en/units/skills/validation-hints.md +10 -14
- package/templates/en/units/spec/feature-contract.md +27 -16
- package/templates/en/units/workflow/archive-freeze-guidance.md +6 -3
- package/templates/zh-Hans/skills/llman-sdd-apply-cycle.md +23 -31
- package/templates/zh-Hans/skills/llman-sdd-apply.md +63 -81
- package/templates/zh-Hans/skills/llman-sdd-arch-review.md +21 -28
- package/templates/zh-Hans/skills/llman-sdd-archive.md +29 -44
- package/templates/zh-Hans/skills/llman-sdd-continue.md +17 -24
- package/templates/zh-Hans/skills/llman-sdd-draft.md +18 -29
- package/templates/zh-Hans/skills/llman-sdd-explore.md +34 -48
- package/templates/zh-Hans/skills/llman-sdd-ff.md +13 -18
- package/templates/zh-Hans/skills/llman-sdd-graph.md +16 -34
- package/templates/zh-Hans/skills/llman-sdd-propose.md +51 -65
- package/templates/zh-Hans/skills/llman-sdd-quick.md +15 -30
- package/templates/zh-Hans/skills/llman-sdd-research.md +17 -28
- package/templates/zh-Hans/skills/llman-sdd-specs-compact.md +15 -40
- package/templates/zh-Hans/skills/llman-sdd-validate.md +11 -15
- package/templates/zh-Hans/skills/llman-sdd-verify.md +26 -47
- package/templates/zh-Hans/skills/llman-sdd-wayfinder.md +25 -29
- package/templates/zh-Hans/units/skills/cli-footer.md +2 -0
- package/templates/zh-Hans/units/skills/git-native-flow-brief.md +7 -6
- package/templates/zh-Hans/units/skills/git-native-flow.md +22 -12
- package/templates/zh-Hans/units/skills/human-readable-summary.md +4 -5
- package/templates/zh-Hans/units/skills/stage-guard.md +9 -9
- package/templates/zh-Hans/units/skills/structured-protocol.md +5 -8
- package/templates/zh-Hans/units/skills/validation-hints.md +10 -14
- package/templates/zh-Hans/units/spec/feature-contract.md +25 -16
- package/templates/zh-Hans/units/workflow/archive-freeze-guidance.md +6 -2
- package/templates/en/skills/llman-sdd-onboard.md +0 -34
- package/templates/en/skills/llman-sdd-show.md +0 -24
- package/templates/en/units/migrate-prompt.md +0 -28
- package/templates/zh-Hans/skills/llman-sdd-onboard.md +0 -34
- package/templates/zh-Hans/skills/llman-sdd-show.md +0 -24
- package/templates/zh-Hans/units/migrate-prompt.md +0 -28
|
@@ -1,78 +1,64 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-explore"
|
|
3
|
-
description: "
|
|
3
|
+
description: "探索模式:理清思路、调查需求、分析问题;只思考不写代码。意图不明或需先分析再行动时用。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD Explore
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
在开始实现前理清思路、调查问题、澄清需求时用此 skill。
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
12
|
+
**探索模式只思考,不实现:**
|
|
13
|
+
- 可以读文件、搜代码、调查代码库。
|
|
14
|
+
- 可以建/改规划文档(proposal/design/tasks)。
|
|
15
|
+
- `llmanspec/specs/**` **只读**——除非 change 已绑定分支且你在该分支上;否则 STOP 并建议 `llman-sdd-propose` / `change start`。
|
|
16
|
+
- 禁止写应用代码。
|
|
17
17
|
|
|
18
18
|
## Pipeline 位置
|
|
19
19
|
|
|
20
20
|
{{ unit("skills/git-native-flow-brief") }}
|
|
21
21
|
|
|
22
|
-
### Skill 导航(非生命周期;仅指示当前 skill)
|
|
23
|
-
|
|
24
22
|
```mermaid
|
|
25
23
|
flowchart LR
|
|
26
|
-
explore["★ llman-sdd-explore
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
verify --> archive["llman-sdd-archive<br/>归档"]
|
|
24
|
+
explore["★ llman-sdd-explore"] --> propose["llman-sdd-propose"]
|
|
25
|
+
propose --> apply["llman-sdd-apply"]
|
|
26
|
+
apply --> verify["llman-sdd-verify"]
|
|
27
|
+
verify --> archive["llman-sdd-archive"]
|
|
31
28
|
|
|
32
29
|
style explore fill:#fff3cd,stroke:#ffc107,stroke-width:3px
|
|
33
30
|
```
|
|
34
31
|
|
|
35
|
-
> 📍
|
|
36
|
-
> 📎 如果是小改动(不改行为合约),可直接走 `llman-sdd-quick`(快速路径)
|
|
37
|
-
> 🗺️ Skill 导航 ≠ Git-native 生命周期
|
|
32
|
+
> 📍 你在探索阶段 → 下一步通常 `llman-sdd-propose`;小改动(不改合约)走 `llman-sdd-quick`。
|
|
38
33
|
|
|
39
|
-
##
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- 需要时用 ASCII 图可视化
|
|
43
|
-
- 同时保留多个选项与权衡
|
|
34
|
+
## 姿态
|
|
35
|
+
- 好奇而不教条,以真实代码为依据。
|
|
36
|
+
- 需要时用 ASCII 图可视化;同时保留多个选项与权衡。
|
|
44
37
|
|
|
45
38
|
## 建议动作
|
|
46
|
-
1.
|
|
47
|
-
-
|
|
48
|
-
- 如果 context 不可用,运行 `llman-sdd index rebuild`(默认 `pageindex`,无需模型)后重试。
|
|
39
|
+
1. 用 `llman-sdd context --task "<任务>" --paths "<文件>"` 定位相关 specs,通读其 `direct` 列出的 spec 全文(这些是必须理解的合约)。
|
|
40
|
+
- context 不可用 → 先 `llman-sdd index check`:stale/缺失则 `llman-sdd index rebuild`(默认 pageindex,免模型)后重试;fresh 仍不可用(`LLMAN_SDD_INDEX_CHAT_MODEL` 未设)→ 改用 `llman-sdd list --specs` + 直读 `.feature`——勿循环 rebuild。
|
|
49
41
|
2. 澄清目标与约束(问 1–3 个问题)。
|
|
50
|
-
3.
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
4.
|
|
57
|
-
-
|
|
42
|
+
3. **逐问深挖分支(可选,用户显式触发才进入)**:触发词「深挖」「grill」「逐个问」「彻底理清」。进入后一问一答走清决策:
|
|
43
|
+
- 一次只问一个问题,附你的推荐答案,等反馈再问下一个。
|
|
44
|
+
- 事实 vs 决策分离:能读 `.feature`/代码/跑命令查证的事实自行查证,**不问**用户;只有决策(取舍、偏好、范围边界)才问。
|
|
45
|
+
- 术语校准:术语冲突或模糊立即指出(「spec 定义 'X' 为 A,你刚说成 B——哪个对?」);解决后:已绑定分支且当前在绑定分支上 → 更新 `.feature`;否则只记入 `proposal.md`,禁止在默认分支改 specs。MUST NOT 另建 `CONTEXT.md` 词表当第二权威。
|
|
46
|
+
- 决策回写:已解决的决策写进该 change 的 `proposal.md`「Open Questions」段。
|
|
47
|
+
- 完成判据:每个待定决策都已解决或显式推迟。未触发时保持默认(问 1–3 个问题)。
|
|
48
|
+
4. 涉及某个 change id 时,读 `llmanspec/changes/<id>/` 下的工件。
|
|
49
|
+
- 诊断校验错误先跑 `llman-sdd validate <spec> --strict` 过结构门禁(Gherkin / `@req` 链接 / 双写 / req_id 唯一性);配置了 `bdd.run_command` 时 validate 缺省执行该 harness(`--no-check` 跳过)。失败项在缺省 TOON 输出的 `items[].issues[]` 逐条指明;`--output human` 输出人读 `FAIL <item_type>/<id>` 行。
|
|
58
50
|
5. 探索 2–3 个选项与权衡。
|
|
59
|
-
6.
|
|
60
|
-
7.
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
> Git-native:先 `change start`/`attach`(Branch binding)进入 Full,再在绑定分支编辑 live `.feature`(Specs landing);无 `change delta` / solidify / feature_delta。
|
|
51
|
+
6. 判断变更规模,确定是否走完整 SDD。
|
|
52
|
+
7. 结论清晰时建议用户记录(勿自动写):
|
|
53
|
+
- 范围/设计/工作项 → 规划文档(`proposal.md` / `design.md` / `tasks.md`)
|
|
54
|
+
- 约束/可执行 harness → **仅建议**写入 `llmanspec/specs/**`;实际编辑须先绑定分支。未绑定时只记 proposal。
|
|
65
55
|
|
|
66
56
|
## 退出探索模式
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
若用户在探索模式中要求你开始实现,STOP 并提醒其先退出探索模式。
|
|
72
|
-
|
|
73
|
-
> 💡 探索完成 → 下一步 `llman-sdd-propose`(提案)或 `llman-sdd-quick`(快速路径)
|
|
57
|
+
- 行为合约变更 → `llman-sdd-propose`
|
|
58
|
+
- 小改动 / 不改合约 → `llman-sdd-quick`
|
|
59
|
+
- change 已落地 specs(`stage=full`、specs-landed 门绿)→ `llman-sdd-apply`
|
|
60
|
+
若用户在探索中要求开始实现,STOP 并提醒先退出探索模式。
|
|
74
61
|
|
|
75
|
-
|
|
76
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
62
|
+
{{ unit("skills/cli-footer") }}
|
|
77
63
|
|
|
78
64
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -1,38 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-ff"
|
|
3
|
-
description: "
|
|
3
|
+
description: "一趟走完 propose 等价路径:规划文档 → 绑定分支 → 落地 specs。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD Fast-Forward (FF)
|
|
9
9
|
|
|
10
|
-
快速走完 propose
|
|
10
|
+
快速走完 propose 等价路径:规划文档 → 绑定分支 → 落地 specs(至 specs-landed 门通过)。**不是**旧的 `changes/<id>/specs/` delta 模型。
|
|
11
11
|
|
|
12
12
|
## 硬约束
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
- 进入 apply 前须 `readyToImplement=true`。
|
|
14
|
+
- 规划文档只写在 `llmanspec/changes/<id>/`(proposal/design/tasks);specs 只写在绑定分支的 `llmanspec/specs/**`。
|
|
15
|
+
- **禁止**创建 `llmanspec/changes/<id>/specs/`。
|
|
16
|
+
- `stage=full` 且 specs-landed 门通过(或 `needs_specs_change: false`)即可进 apply;verify/finalize 须 `readyToImplement=true`。
|
|
18
17
|
|
|
19
18
|
## 步骤
|
|
20
19
|
|
|
21
|
-
1.
|
|
20
|
+
1. 取得一句话描述;change id 未给则推导并宣布(非阻塞,同 propose 规则);确定受影响 capability。
|
|
22
21
|
2. 确保已 `llman-sdd init`(存在 `llmanspec/`)。
|
|
23
|
-
3.
|
|
24
|
-
4.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
6. **Specs landing**:在绑定分支编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录主文件)并 commit;无合约变更则 `needs_specs_change: false`。
|
|
30
|
-
7. 校验:`llman-sdd validate <id> --strict --no-interactive`。
|
|
31
|
-
8. 用 `llman-sdd show <id> --json` 确认 `readyToImplement=true` 后,建议 `llman-sdd-apply`(不要在未就绪时建议 apply)。
|
|
22
|
+
3. `llmanspec/changes/<id>/` 已存在:询问补齐或换 id;勿未确认就覆盖。
|
|
23
|
+
4. 建规划文档(可短暂在默认分支):`llman-sdd change new <id>`(或手写)→ 充实 `proposal.md` → `design.md`(按需)→ `tasks.md`。
|
|
24
|
+
5. **绑定分支**:`llman-sdd change start <id>`(干净树 + 默认分支)或手动建分支后 `change attach <id>`。
|
|
25
|
+
6. **落地 specs**:在绑定分支编辑 `llmanspec/specs/<capability>.feature`(扁平,或目录主文件)并 commit;无合约变更设 `needs_specs_change: false`。
|
|
26
|
+
7. 校验:`llman-sdd validate <id> --strict`。
|
|
27
|
+
8. 用 `llman-sdd show <id> --output json` 确认 specs-landed 门绿(`specsLanded`/`needsSpecsChange`)后建议 `llman-sdd-apply`(未落地前不要建议)。
|
|
32
28
|
|
|
33
29
|
{{ unit("skills/git-native-flow-brief") }}
|
|
34
|
-
|
|
35
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
30
|
+
{{ unit("skills/cli-footer") }}
|
|
36
31
|
{{ unit("skills/validation-hints") }}
|
|
37
32
|
|
|
38
33
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,58 +1,46 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-graph"
|
|
3
|
-
description: "
|
|
3
|
+
description: "用 mermaid 图可视化 change 依赖(depends_on/blocks)。辅助工具,任意阶段可用。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD 依赖图
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
## Pipeline 位置
|
|
13
|
-
|
|
14
|
-
```mermaid
|
|
15
|
-
flowchart LR
|
|
16
|
-
pipeline["主 pipeline:<br/>propose → apply → verify → archive"]
|
|
17
|
-
graph["📎 llman-sdd-graph<br/>依赖可视化(辅助工具)"]
|
|
18
|
-
graph -.->|任意阶段可用| pipeline
|
|
19
|
-
|
|
20
|
-
style graph fill:#e8f4e8,stroke:#28a745,stroke-width:2px
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
> 📎 辅助工具,可在 pipeline 任意阶段使用。需要提案 → `llman-sdd-propose`;需要实施 → 仅当 `readyToImplement=true` 时用 `llman-sdd-apply`。
|
|
10
|
+
可视化 change 之间的依赖关系。辅助工具,不属于主 pipeline(propose → apply → verify → archive),任意阶段可用。
|
|
24
11
|
|
|
25
12
|
## 用法
|
|
26
13
|
|
|
27
|
-
**聚焦视图(seed
|
|
14
|
+
**聚焦视图(seed 模式)**——指定 change 及其关系邻域:
|
|
28
15
|
|
|
29
16
|
```bash
|
|
30
|
-
llman-sdd graph <change-id> #
|
|
17
|
+
llman-sdd graph <change-id> # 该 change + 直接关系(depth 1)
|
|
31
18
|
llman-sdd graph <change-id> --depth 3 # 递归 3 层
|
|
32
|
-
llman-sdd graph <change-id> --depth 0 #
|
|
19
|
+
llman-sdd graph <change-id> --depth 0 # 仅自身
|
|
33
20
|
```
|
|
34
21
|
|
|
35
|
-
|
|
22
|
+
沿 upstream(depends_on)、downstream(被谁依赖)、blocks 三方向遍历,自动发现活跃与已归档 change。
|
|
36
23
|
|
|
37
|
-
**全局视图(scope
|
|
24
|
+
**全局视图(scope 模式)**——以 scope 内节点为根,沿 `depends_on` 展开一层(depth 1,缺省),避免无限依赖链;`--depth` 同样约束全图模式:
|
|
38
25
|
|
|
39
26
|
```bash
|
|
40
|
-
llman-sdd graph #
|
|
41
|
-
llman-sdd graph --scope archived #
|
|
42
|
-
llman-sdd graph --scope all # 全部
|
|
27
|
+
llman-sdd graph # 活跃 change + 直接依赖(depth 1 缺省)
|
|
28
|
+
llman-sdd graph --scope archived # 已归档 + 直接依赖
|
|
29
|
+
llman-sdd graph --scope all # 全部 + 直接依赖
|
|
30
|
+
llman-sdd graph --depth 0 # 仅 scope 内节点(不拉依赖 target)
|
|
31
|
+
llman-sdd graph --depth 3 # 依赖链递归展开 3 层
|
|
43
32
|
```
|
|
44
33
|
|
|
45
34
|
## 输出
|
|
46
35
|
|
|
47
|
-
-
|
|
36
|
+
- mermaid flowchart 到 stdout,可管道到文件或渲染器:
|
|
48
37
|
```
|
|
49
38
|
llman-sdd graph c50 > deps.mmd
|
|
50
39
|
llman-sdd graph c50 --depth 2 | mmdc -i - -o deps.png
|
|
51
40
|
```
|
|
52
|
-
-
|
|
53
|
-
- 当图中存在互不相连的分组时,每组渲染为独立的 subgraph,标注 "Active"、"Done" 或 "Mixed"。
|
|
41
|
+
- 已归档 change 以 "✓ done" 后缀和绿色高亮显示;互不相连的分组各渲染为独立 subgraph,标注 "Active" / "Done" / "Mixed"。
|
|
54
42
|
|
|
55
|
-
##
|
|
43
|
+
## 依赖声明(proposal frontmatter)
|
|
56
44
|
|
|
57
45
|
```yaml
|
|
58
46
|
---
|
|
@@ -61,14 +49,8 @@ depends_on:
|
|
|
61
49
|
blocks:
|
|
62
50
|
- blocked-change-id
|
|
63
51
|
---
|
|
64
|
-
|
|
65
|
-
## Why
|
|
66
|
-
...
|
|
67
52
|
```
|
|
68
53
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
72
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
54
|
+
{{ unit("skills/cli-footer") }}
|
|
73
55
|
|
|
74
56
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,119 +1,105 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-propose"
|
|
3
|
-
description: "
|
|
3
|
+
description: "为 MUST/SHALL 行为合约变更创建提案(proposal/tasks → 绑定分支 → 落地 specs)。小改动走 quick,记想法走 draft。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD Propose
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
创建带规划文档的新 change(proposal + tasks;design 可选):**先** `change start`(或 `attach`)绑定分支,**再**在绑定分支编辑 `llmanspec/specs/<capability>.feature`(扁平,或目录主文件)落地 specs、校验,并建议下一步。
|
|
11
11
|
|
|
12
12
|
## Pipeline 位置
|
|
13
13
|
|
|
14
14
|
{{ unit("skills/git-native-flow") }}
|
|
15
15
|
{{ unit("skills/human-readable-summary") }}
|
|
16
16
|
|
|
17
|
-
### Skill 导航(非生命周期;仅指示当前 skill)
|
|
18
|
-
|
|
19
17
|
```mermaid
|
|
20
18
|
flowchart LR
|
|
21
|
-
explore["llman-sdd-explore
|
|
22
|
-
propose["
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
verify --> archive["llman-sdd-archive<br/>归档"]
|
|
19
|
+
explore["llman-sdd-explore"] --> propose["★ llman-sdd-propose"]
|
|
20
|
+
propose --> apply["llman-sdd-apply"]
|
|
21
|
+
apply --> verify["llman-sdd-verify"]
|
|
22
|
+
verify --> archive["llman-sdd-archive"]
|
|
26
23
|
|
|
27
24
|
style propose fill:#fff3cd,stroke:#ffc107,stroke-width:3px
|
|
28
25
|
```
|
|
29
26
|
|
|
30
|
-
> 📍
|
|
31
|
-
> 📎 小改动(不改行为合约)请走 `llman-sdd-quick`(快速路径)
|
|
27
|
+
> 📍 你在 propose 阶段:规划文档(draft → designed → planned)→ 绑定分支 → 落地 specs(至 specs-landed 门通过)→ 下一步 `llman-sdd-apply`。小改动走 `llman-sdd-quick`。
|
|
32
28
|
|
|
33
29
|
## 硬约束
|
|
34
30
|
|
|
35
|
-
- **change id
|
|
36
|
-
- **
|
|
37
|
-
-
|
|
31
|
+
- **change id 非阻塞**:用户给了就用;否则从任务描述推导合法 kebab-case id(动词前缀,过 CLI id 检查,遵循 `llmanspec/AGENTS.md` 命名约定),宣布所用 id 与覆盖方式后继续,MUST NOT 等确认——绑定分支前换 id 成本很低。只想先记 idea(不要 id)时转 `llman-sdd-draft`。
|
|
32
|
+
- **specs 是唯一事实来源**:只在绑定分支**之后**、在**绑定的非默认分支**上编辑 `llmanspec/specs/**`。**不要**在默认分支改 specs。规划文档可短暂留在默认分支。
|
|
33
|
+
- **不要问「要不要继续」**:一口气执行完 propose,生成工件并校验。
|
|
38
34
|
{% if extra_skill_continue %}
|
|
39
|
-
- **change 已存在**:STOP
|
|
35
|
+
- **change 已存在**:STOP。specs-landed 门已绿 → 建议 `llman-sdd-apply`;否则用 `llman-sdd-continue` 补绑定分支 / 落地 specs 或规划文档。
|
|
40
36
|
{% else %}
|
|
41
|
-
- **change 已存在**:STOP
|
|
37
|
+
- **change 已存在**:STOP。specs-landed 门已绿 → 建议 `llman-sdd-apply`;否则补规划文档 / 绑定分支 / 落地 specs(编辑 `llmanspec/changes/<id>/`,或配置 `extra_skills: [llman-sdd-continue]`)。
|
|
42
38
|
{% endif %}
|
|
43
|
-
- **frontmatter 有固定 schema
|
|
39
|
+
- **frontmatter 有固定 schema**:`proposal.md` 只接受 `llmanspec/AGENTS.md`「Change Proposal Frontmatter SSOT」的合法字段(`depends_on`、`blocks`、`branch`、`base_sha`、`needs_specs_change` 等);`status`/`title`/`priority`/`author` 会被 `llman-sdd validate` 报 ERROR。生命周期阶段是推断量(用 `llman-sdd show`/`list` 查),绝不写进 frontmatter。正文 MUST NOT 复读 frontmatter 字段;H1 用人类可读标题,不复读 change id。
|
|
44
40
|
|
|
45
41
|
## 快速记录分流
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
只想**记一个 idea**(「draft 一个提案」「记下 X」「之后要做 Y」)→ `llman-sdd-draft`:经 `change new --from` 建仅含 `proposal.md` 的草案(不问 id、无 tasks/specs/attach)。完整 propose 从这里开始。
|
|
48
44
|
|
|
49
45
|
## 步骤
|
|
50
46
|
|
|
51
47
|
### 0) 预检
|
|
52
48
|
- 读 `llmanspec/config.yaml` 获取项目上下文、规则、locale。
|
|
53
|
-
- `llman-sdd validate --all --strict
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
- 不确定时选完整 SDD(保守)。
|
|
49
|
+
- `llman-sdd validate --all --strict` 确认现有工件干净;有错误则 STOP 并报告(脏工件上叠新 change 会级联出错)。
|
|
50
|
+
- **检查 spec valid_scope 完整性**:`llman-sdd list --specs --json` 列出全部 specs,逐个核对 `valid_scope` 路径在磁盘上存在;有缺失则 STOP 并建议更新该 spec(移除已删路径)。
|
|
51
|
+
|
|
52
|
+
### 1) 判断变更规模
|
|
53
|
+
1. 分类:
|
|
54
|
+
- **行为合约变更**(改 MUST/SHALL、改外部行为)→ 完整 SDD
|
|
55
|
+
- **实现层变更**(重构、typo、性能)→ `llman-sdd-quick`
|
|
56
|
+
- **元规范变更**(SDD 模板/流程)→ 完整 SDD
|
|
57
|
+
- 不确定选完整 SDD(保守)。
|
|
63
58
|
2. 用 `llman-sdd context --task "<目标>" --paths "<范围>"` 找相关 specs。
|
|
64
|
-
- context
|
|
65
|
-
3.
|
|
66
|
-
- 一段简短的变更描述
|
|
67
|
-
- 一个 change id(用户给出则用之;否则按上面的非阻塞规则推导并宣布)
|
|
68
|
-
- 受影响的 capability(用于命名 `specs/<capability>`)
|
|
59
|
+
- context 不可用 → 先 `llman-sdd index check`:stale/缺失则 `llman-sdd index rebuild`(默认 pageindex,免模型)后重试;fresh 仍不可用(`LLMAN_SDD_INDEX_CHAT_MODEL` 未设)→ 改用 `llman-sdd list --specs` + 直读 `.feature`——勿循环 rebuild。
|
|
60
|
+
3. 收集输入:简短变更描述;change id(用户给了就用,否则按非阻塞规则推导并宣布);受影响 capability(命名 `specs/<capability>`)。
|
|
69
61
|
|
|
70
62
|
### 2) 确认项目已初始化
|
|
71
|
-
|
|
63
|
+
- `llmanspec/` 必须存在;缺失则让用户跑 `llman-sdd init`,然后 STOP。
|
|
72
64
|
|
|
73
65
|
### 3) 创建 change 目录与工件
|
|
74
|
-
|
|
66
|
+
- 优先 `llman-sdd change new <change-id>` 生成 `proposal.md` 草案(或手动建 `llmanspec/changes/<change-id>/`)。
|
|
75
67
|
{% if extra_skill_continue %}
|
|
76
|
-
|
|
68
|
+
- change 已存在时 STOP 并建议 `llman-sdd-continue`。
|
|
77
69
|
{% else %}
|
|
78
|
-
|
|
70
|
+
- change 已存在时 STOP 并建议补齐缺失工件或 `llman-sdd-apply`(可经 `extra_skills` 启用 continue)。
|
|
79
71
|
{% endif %}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
- **破坏性合约变更**(移除/重命名字段、命令、tag 或 stage 值域)MUST 规划升级路径:`migrations/v<from>-v<to>/`(README prompt + 一次性脚本,随仓库发布)——写进提案的 What Changes。
|
|
72
|
+
- 充实 `proposal.md`(Why / What Changes / Capabilities / Impact);仅当有权衡/迁移时写 `design.md`。
|
|
73
|
+
- **写 tasks.md 前确认测试边界(seam)**:列出要测的 seam 并与用户确认。seam = 由 `*.feature` GWT 步骤驱动的公共边界(CLI 子进程或公共接口)——MUST 复用既有 harness seam,MUST NOT 脱离 `.feature` 凭空发明;没有 `.feature` 时,seam = 被测的 CLI 子命令或公共函数边界。
|
|
74
|
+
- `tasks.md` 按**垂直切片**拆(每个 task 打穿 schema→API→UI→tests 一条窄而完整的路径,可独立验证),带 `[blocked-by: <task-id>]` 依赖标记。**大范围重构例外**(一个机械改动扫全库、单点编辑牵动大量调用处):按先加后删排序(新的加在旧的旁边 → 分批迁移调用处 → 删旧的),不强拆垂直切片。**tasks.md 只列实现与验证任务**:收口(`change finalize` / `change archive`)是流水线步骤,MUST NOT 列为任务——收口的任务门要求全部任务已勾,列了必然自相矛盾(勾选即虚报、不勾则收口被拒,实施期 `validate --strict` 永红)。前后对比类完成判据(计数、基线)MUST 注明在 change 分支上测量(相对 merge-base)——默认分支测得的值通常恒为基线。
|
|
75
|
+
- **先** `llman-sdd change start <change-id>`(推荐;默认分支上工作树干净时;保留当前检出用 `--worktree`,非默认分叉源用 `--base <branch>`)或手动建分支后 `change attach <change-id>`。
|
|
76
|
+
- **再**在绑定的非默认分支编辑 `llmanspec/specs/<capability>.feature`(扁平,或目录 `llmanspec/specs/<capability>/` 内主文件)并 commit(落地 specs)。**不要**在 start 前改 specs;**不要**为过干净树门禁把 specs commit 到默认分支。已 attach 勿重复 `start`(specs 丢失用 checkout/重建 + `attach --force` 恢复)。
|
|
77
|
+
- 无合约编辑的 change 设 frontmatter `needs_specs_change: false`。`llman-sdd show <id> --output json` 显示 `stage=full` 且 specs-landed 门通过即可进 apply;`readyToImplement=true`(全门)是 verify/finalize 的完成信号。
|
|
78
|
+
- **破坏性合约变更**(移除/重命名字段、命令、tag 或 stage 值域)MUST 规划升级路径:`migrations/v<from>-v<to>/` 下写 README(升级提示;一次性脚本可行时随仓库提供)——写进提案 What Changes。
|
|
88
79
|
|
|
89
80
|
### 4) 校验
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
81
|
+
```bash
|
|
82
|
+
llman-sdd validate <change-id> --strict
|
|
83
|
+
```
|
|
84
|
+
MUST 通过才能继续;失败项在 validate 输出的 `items[].issues[]` 逐条指明,按条修复后重跑。
|
|
94
85
|
|
|
95
86
|
### 4a) 可选 BDD runner(`bdd:` 段)
|
|
96
|
-
- 读 `llmanspec/config.yaml
|
|
97
|
-
- **有**:`validate
|
|
98
|
-
- **无**:若本次 change
|
|
99
|
-
|
|
100
|
-
- **否**:feature 仍做结构校验;仅跳过 runner 执行。
|
|
101
|
-
- **MUST NOT 静默添加 `bdd:` 段**——总是先询问。添加它会改变全项目 `validate --check` 的行为。
|
|
87
|
+
- 读 `llmanspec/config.yaml` 是否含 `bdd:` 段:
|
|
88
|
+
- **有**:`bdd.run_command` 是项目的 BDD 执行入口;validate 在目标集含 spec 时缺省执行它(`--no-check` 跳过)。撰写仍按 4b。
|
|
89
|
+
- **无**:若本次 change 含可执行行为场景(用户会想运行的 Given/When/Then),**一次性前置**询问是否启用 `bdd:` runner 段(会向 `config.yaml` 加一个 `bdd:` 段——仅 runner,不改生命周期)。**是**:展示要加的精确 `bdd:` 段(`run_command` 选匹配项目测试框架的——rstest-bdd 用 `cargo test --features bdd`,pytest-bdd 用 `pytest {feature_dir} -k {feature_name} -v`),用户确认或修改后写入 `config.yaml`,再按 4b 继续。**否**:feature 仍做结构校验;BDD 执行责任始终在项目测试套件。
|
|
90
|
+
- **MUST NOT 静默添加 `bdd:` 段**——总是先问。添加它会向全项目声明 BDD 执行入口。
|
|
102
91
|
|
|
103
92
|
### 4b) 单轨 feature 撰写
|
|
104
|
-
-
|
|
105
|
-
- **单轨**:每个 capability 只有一个 `<capability>.feature
|
|
106
|
-
-
|
|
107
|
-
-
|
|
93
|
+
- 规划文档可短暂留在默认分支;**不要**在默认分支编辑 `llmanspec/specs/**`。绑定分支后,落地 specs 与实现都在绑定分支上。
|
|
94
|
+
- **单轨**:每个 capability 只有一个 `<capability>.feature`。规范样式为原生 Gherkin 分层:`@req:<id>` 挂 `规则:` 块头,块内嵌套 `场景:`(假如/当/那么 步骤,绑定 runner 步骤代码并被执行——**默认首选形态**);仅当需求无法程序化表达(抽象目标、架构决策、治理/人工约束)或暂不转写时,才留下无嵌套场景的 `规则:` 块(裸规则,描述自由文本)并在 proposal/design 记录理由。历史标签(@executable/@rule/@human/@manual)不再使用。
|
|
95
|
+
- **描述可读性**:`规则:` 描述较长时拆成多行便于审查(官方解析器按行保留);描述行不加 `- ` 列表前缀(会原样进入描述),也不得以 `假如/当/那么/而且`(en `Given/When/Then/And/But`)开头——会被 Gherkin 解析为步骤。
|
|
96
|
+
- **结构化新增首选**:向既有 capability 追加规则/场景,优先 `llman-sdd spec next-req-id`(全局 rN 分配)+ `spec add-req`(追加 `规则:` 块)+ `spec add-scenario`(向规则块插入嵌套 `场景:`)。新建 capability 用 `spec skeleton <capability>`;rN 反查用 `spec resolve-req <rN>`。旧式标签文件先 `spec migrate-native`。手改 `.feature` 保留为逃生门(适合改既有条款)。
|
|
97
|
+
- **可执行场景优先判据**(写新条款前先判定):凡 GWT(假如/当/那么)可表达、绑定步骤代码的自动化判定行为 MUST 落成嵌套 `场景:`——纯文字规则无行为守护。用例如下:行为可程序判定(如「当 运行 validate 后,那么 stdout 为 TOON 且退出码为 0」)→ 嵌套 `场景:`;抽象目标/架构决策暂不可程序判定 → 裸 `规则:` 块(无嵌套场景,聚合计数提示,交 specs-compact),并在 proposal/design 记录理由。
|
|
108
98
|
|
|
109
99
|
### 5) 总结并建议下一步
|
|
110
|
-
|
|
111
|
-
- 需要再想清楚:`llman-sdd-explore`。
|
|
112
|
-
|
|
113
|
-
> 💡 提案完成 → 下一步:`llman-sdd-apply`(实施)
|
|
100
|
+
- 进入实现:`llman-sdd-apply`;需要再想清楚:`llman-sdd-explore`。
|
|
114
101
|
|
|
115
|
-
|
|
116
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
102
|
+
{{ unit("skills/cli-footer") }}
|
|
117
103
|
{{ unit("skills/validation-hints") }}
|
|
118
104
|
|
|
119
105
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -1,56 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-quick"
|
|
3
|
-
description: "
|
|
3
|
+
description: "快速路径:不改行为合约的小改动(重构/错字/性能)。要改 MUST/SHALL 就停,转 propose。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD Quick Path
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
不改行为合约的小改动用此路径。
|
|
11
11
|
|
|
12
12
|
## Pipeline 位置
|
|
13
13
|
|
|
14
14
|
```mermaid
|
|
15
15
|
flowchart LR
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
quick["★ llman-sdd-quick ★<br/>快速路径(你现在在这里)"]
|
|
19
|
-
quick --> commit["git commit<br/>完成"]
|
|
20
|
-
|
|
21
|
-
explore --> propose["完整路径:<br/>propose(含 Branch binding 与 Specs landing)→ apply → verify → archive"]
|
|
22
|
-
propose --> apply["..."]
|
|
23
|
-
apply --> verify["..."]
|
|
24
|
-
verify --> archive["..."]
|
|
16
|
+
quick["★ llman-sdd-quick"] --> commit["git commit"]
|
|
17
|
+
explore["llman-sdd-explore"] --> propose["完整路径:propose → apply → verify → archive"]
|
|
25
18
|
|
|
26
19
|
style quick fill:#d4edda,stroke:#28a745,stroke-width:3px
|
|
27
20
|
```
|
|
28
21
|
|
|
29
|
-
> 📍
|
|
30
|
-
> 🗺️ 完整路径含 Git-native Branch binding + Specs landing(不是把 Specs landing 当成独立 skill)
|
|
22
|
+
> 📍 快速路径:直接改代码 commit。发现要改合约 → STOP,转 `llman-sdd-propose`。
|
|
31
23
|
|
|
32
|
-
##
|
|
24
|
+
## 使用条件(全部满足)
|
|
33
25
|
- 不改变任何 spec 中 MUST/SHALL 定义的外部可观测行为
|
|
34
|
-
-
|
|
35
|
-
- 不涉及迁移/兼容性
|
|
36
|
-
- 不是 SDD 元规范变更
|
|
26
|
+
- 不跨 capability;不涉及迁移/兼容性;不是 SDD 元规范变更
|
|
37
27
|
|
|
38
28
|
## 步骤
|
|
39
|
-
1. 用 `llman-sdd context --task "..." --paths "..."` 确认无相关 spec
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
4. git commit(message 写明 why)。
|
|
45
|
-
5. 无需 change 目录,无需 archive。
|
|
29
|
+
1. 用 `llman-sdd context --task "..." --paths "..."` 确认无相关 spec 变更。
|
|
30
|
+
- context 返回 `quality: "unavailable"` → 先 `llman-sdd index check`:stale/缺失则 `llman-sdd index rebuild`(默认 pageindex,免模型)后重试;fresh 仍不可用(`LLMAN_SDD_INDEX_CHAT_MODEL` 未设)→ 改用 `llman-sdd list --specs` + 直读 `.feature`——勿循环 rebuild。
|
|
31
|
+
2. 直接改代码。
|
|
32
|
+
3. 若要动 `llmanspec/specs/**`,STOP——除非已在绑定的非默认 change 分支上(迷你 change:`change start`/`attach` → 编辑 → commit)。禁止在默认分支 commit specs,即使 typo 或仅收紧 scope 也不行。优先把 specs 维护路由到 `llman-sdd-propose`。
|
|
33
|
+
4. git commit(message 写明 why)。无需 change 目录,无需 archive。
|
|
46
34
|
|
|
47
35
|
## 边界处理
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
> 💡 快速路径完成 → git commit 即可。若需要走完整路径 → `llman-sdd-propose` → `llman-sdd-apply` → `llman-sdd-verify` → `llman-sdd-archive`
|
|
36
|
+
- 修改中发现要改行为合约 → STOP,转 `llman-sdd-propose`。
|
|
37
|
+
- 涉及多文件且 scope 不明 → 先用 `llman-sdd context` 确认。
|
|
52
38
|
|
|
53
|
-
|
|
54
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
39
|
+
{{ unit("skills/cli-footer") }}
|
|
55
40
|
|
|
56
41
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -1,46 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "llman-sdd-research"
|
|
3
|
-
description: "
|
|
3
|
+
description: "委托后台 agent 查一手资料(官方文档/API/源码),产出带引用的调研文档。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "{{ llman_version }}"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# LLMAN SDD Research
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
启动**后台 agent** 做调研,你继续手头工作。辅助工具,任意阶段可用(常见于 explore/wayfinder);产出回写 change 的 proposal「Further Notes」段。
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 后台 agent 的职责
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## 职责
|
|
19
|
-
|
|
20
|
-
后台 agent 的工作:
|
|
21
|
-
|
|
22
|
-
1. 针对**一手资料**调研问题——官方文档、源码、spec、第一方 API——而非对它们的二手转述。把每个论断追溯到拥有它的源头。
|
|
23
|
-
2. 把发现写入单个 Markdown 文件,为每个论断标注来源引用。
|
|
24
|
-
3. 存放位置(仓库另有约定时优先遵循):**默认** `llmanspec/changes/<current-change>/research/<topic>.md`(Change 文档,**不是** live specs)。仅当主题跨多个 change、归档后仍常引用时才写 `docs/research/`;**禁止**把单 change 选型/易腐深挖塞进 `docs/research/`。
|
|
25
|
-
4. **禁止**本 skill 直接编辑 `llmanspec/specs/**`。若调研表明必须改 MUST/SHALL → 建议 `llman-sdd-propose`(Branch binding → Specs landing)。
|
|
14
|
+
1. 针对**一手资料**调研——官方文档、源码、spec、第一方 API,而非二手转述;每个论断追溯到拥有它的源头。
|
|
15
|
+
2. 发现写入单个 Markdown 文件,每条论断标注来源。
|
|
16
|
+
3. 存放(仓库另有约定时优先):**默认** `llmanspec/changes/<current-change>/research/<topic>.md`(change 文档,**不是** specs)。仅当主题跨多个 change、归档后仍常引用时才写 `docs/research/`;**禁止**把单 change 选型/易腐深挖塞进 `docs/research/`。
|
|
17
|
+
4. **禁止**本 skill 直接编辑 `llmanspec/specs/**`。调研表明必须改 MUST/SHALL → 建议 `llman-sdd-propose`(绑定分支 → 落地 specs)。
|
|
26
18
|
|
|
27
19
|
## 步骤
|
|
28
20
|
|
|
29
|
-
1.
|
|
30
|
-
2. 用 Agent 工具 `subagent_type=general-purpose` + `run_in_background: true`
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
4. 读取产出,把关键结论摘要回写到当前 change 的 `proposal.md`「Further Notes」段(附文件指针)。
|
|
37
|
-
5. 若调研揭示需要决策,建议进入 `llman-sdd-explore` 的逐问深挖分支。
|
|
21
|
+
1. 明确调研问题(与用户确认;模糊时收窄到能被证实/证伪)。
|
|
22
|
+
2. 用 Agent 工具 `subagent_type=general-purpose` + `run_in_background: true` 启动,prompt 含:
|
|
23
|
+
- 问题陈述;只引一手资料、每条论断标来源 URL/路径的要求;
|
|
24
|
+
- 输出文件路径(默认 `llmanspec/changes/<id>/research/<topic>.md`);
|
|
25
|
+
- 字数上限(建议:聚焦事实,散文叙述 < 1500 词)。
|
|
26
|
+
3. 后台运行期间继续主流程;完成后读产出,把关键结论摘要回写当前 change 的 `proposal.md`「Further Notes」段(附文件指针)。
|
|
27
|
+
4. 若调研揭示需要决策,建议进入 `llman-sdd-explore` 的逐问深挖分支。
|
|
38
28
|
|
|
39
|
-
## 与 wayfinder
|
|
29
|
+
## 与 wayfinder 协作
|
|
40
30
|
|
|
41
|
-
`llman-sdd-wayfinder` 的查资料 ticket 委托本 skill 后台解决;解决后回写 ticket proposal
|
|
31
|
+
`llman-sdd-wayfinder` 的查资料 ticket 委托本 skill 后台解决;解决后回写 ticket proposal,并在地图的 Decisions-so-far 记一行要点。
|
|
42
32
|
|
|
43
|
-
|
|
44
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
33
|
+
{{ unit("skills/cli-footer") }}
|
|
45
34
|
|
|
46
35
|
{{ unit("skills/structured-protocol") }}
|