@llman-sdd/core 0.1.2 → 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/package.json +1 -1
- package/src/archive/sevenzip.ts +1 -1
- package/src/context/indexStore.ts +6 -12
- package/src/git/spawnGit.ts +0 -8
- package/src/index.ts +32 -4
- package/src/init/defaultConfig.ts +2 -2
- package/src/init/init.ts +46 -56
- package/src/report/collect.ts +3 -3
- package/src/report/graph.ts +22 -34
- package/src/report/show.ts +14 -37
- package/src/report/specs.ts +19 -19
- package/src/review/review.ts +34 -9
- package/src/spec/ir.ts +7 -0
- package/src/spec/parser.ts +9 -4
- package/src/templates/embedded.ts +67 -0
- package/src/templates/engine.ts +3 -2
- package/src/validation/validate.ts +3 -5
- package/templates/en/agents-root-stub.md +1 -1
- package/templates/en/skills/llman-sdd-apply-cycle.md +7 -7
- package/templates/en/skills/llman-sdd-apply.md +12 -12
- package/templates/en/skills/llman-sdd-arch-review.md +2 -2
- package/templates/en/skills/llman-sdd-archive.md +12 -12
- package/templates/en/skills/llman-sdd-continue.md +8 -8
- package/templates/en/skills/llman-sdd-draft.md +5 -5
- package/templates/en/skills/llman-sdd-explore.md +5 -5
- package/templates/en/skills/llman-sdd-ff.md +7 -7
- package/templates/en/skills/llman-sdd-graph.md +10 -10
- package/templates/en/skills/llman-sdd-onboard.md +7 -7
- package/templates/en/skills/llman-sdd-propose.md +14 -14
- package/templates/en/skills/llman-sdd-quick.md +6 -6
- package/templates/en/skills/llman-sdd-research.md +2 -2
- package/templates/en/skills/llman-sdd-show.md +4 -4
- package/templates/en/skills/llman-sdd-specs-compact.md +6 -6
- package/templates/en/skills/llman-sdd-validate.md +5 -5
- package/templates/en/skills/llman-sdd-verify.md +7 -7
- package/templates/en/skills/llman-sdd-wayfinder.md +7 -7
- package/templates/en/units/migrate-prompt.md +5 -5
- package/templates/en/units/skills/ethics-governance.md +1 -1
- package/templates/en/units/skills/git-native-flow.md +2 -2
- package/templates/en/units/skills/stage-guard.md +1 -1
- package/templates/en/units/skills/structured-protocol.md +5 -5
- package/templates/en/units/skills/validation-hints.md +2 -2
- package/templates/en/units/workflow/archive-freeze-guidance.md +3 -3
- package/templates/shared/review.html +2 -2
- package/templates/zh-Hans/agents-root-stub.md +1 -1
- package/templates/zh-Hans/skills/llman-sdd-apply-cycle.md +7 -7
- package/templates/zh-Hans/skills/llman-sdd-apply.md +12 -12
- package/templates/zh-Hans/skills/llman-sdd-arch-review.md +2 -2
- package/templates/zh-Hans/skills/llman-sdd-archive.md +12 -12
- package/templates/zh-Hans/skills/llman-sdd-continue.md +8 -8
- package/templates/zh-Hans/skills/llman-sdd-draft.md +5 -5
- package/templates/zh-Hans/skills/llman-sdd-explore.md +5 -5
- package/templates/zh-Hans/skills/llman-sdd-ff.md +7 -7
- package/templates/zh-Hans/skills/llman-sdd-graph.md +10 -10
- package/templates/zh-Hans/skills/llman-sdd-onboard.md +7 -7
- package/templates/zh-Hans/skills/llman-sdd-propose.md +14 -14
- package/templates/zh-Hans/skills/llman-sdd-quick.md +6 -6
- package/templates/zh-Hans/skills/llman-sdd-research.md +2 -2
- package/templates/zh-Hans/skills/llman-sdd-show.md +4 -4
- package/templates/zh-Hans/skills/llman-sdd-specs-compact.md +6 -6
- package/templates/zh-Hans/skills/llman-sdd-validate.md +5 -5
- package/templates/zh-Hans/skills/llman-sdd-verify.md +7 -7
- package/templates/zh-Hans/skills/llman-sdd-wayfinder.md +7 -7
- package/templates/zh-Hans/units/migrate-prompt.md +5 -5
- package/templates/zh-Hans/units/skills/ethics-governance.md +1 -1
- package/templates/zh-Hans/units/skills/git-native-flow.md +2 -2
- package/templates/zh-Hans/units/skills/stage-guard.md +1 -1
- package/templates/zh-Hans/units/skills/structured-protocol.md +5 -5
- package/templates/zh-Hans/units/skills/validation-hints.md +2 -2
- package/templates/zh-Hans/units/workflow/archive-freeze-guidance.md +3 -3
|
@@ -26,7 +26,7 @@ flowchart LR
|
|
|
26
26
|
|
|
27
27
|
- **必须先通过 verify 阶段全绿**:未通过验证的 change 禁止归档。
|
|
28
28
|
- **须已 Branch binding**:`change start` / `attach` 已完成;无绑定则 STOP。
|
|
29
|
-
- **SSOT 校验**:每个 change 归档前必须通过 `llman
|
|
29
|
+
- **SSOT 校验**:每个 change 归档前必须通过 `llman-sdd validate <id> --strict --no-interactive`。
|
|
30
30
|
- **不要问「要不要继续」**:批量归档时间线上一路执行到底,除非遇到无法自动解决的错误。
|
|
31
31
|
- **收尾不默认导向 PR/push**:archive/finalize 后由 CLI 处理本地合并(squash 缺省),再一次性 `git commit` 提交收口。`git push` / Hosting PR 仅为可选——仅当用户或项目明确要求远程审查时才做。**Agent MUST NOT** 因本 skill 默认执行 push 或创建 PR。
|
|
32
32
|
|
|
@@ -37,34 +37,34 @@ flowchart LR
|
|
|
37
37
|
- 若有未预期改动,先处理(stash 或报告)。
|
|
38
38
|
|
|
39
39
|
### 1) 确认目标变更
|
|
40
|
-
- 确定目标 ID:单个或批量(来自用户输入或 `llman
|
|
40
|
+
- 确定目标 ID:单个或批量(来自用户输入或 `llman-sdd list --json`)。
|
|
41
41
|
- 始终说明:"归档 IDs:<id1>, <id2>, ..."。
|
|
42
42
|
- 确认每个 change 都已通过 verify 阶段的全绿验证。
|
|
43
43
|
|
|
44
44
|
### 2) 逐个归档
|
|
45
|
-
- **人审检查点(每个 id 归档执行前,含批量)**:运行 `llman
|
|
46
|
-
- 先逐个校验:`llman
|
|
45
|
+
- **人审检查点(每个 id 归档执行前,含批量)**:运行 `llman-sdd review --capability <id>`。退出码为零 → 继续;非零 = CRITICAL 发现:STOP 修复后重跑;MUST NOT 带着 CRITICAL 归档。
|
|
46
|
+
- 先逐个校验:`llman-sdd validate <id> --strict --no-interactive`。
|
|
47
47
|
- 校验失败 → STOP 并报告;不要跳过校验强行归档。
|
|
48
|
-
- 可选预览:`llman
|
|
48
|
+
- 可选预览:`llman-sdd change archive <id> --dry-run`。
|
|
49
49
|
- 执行归档:
|
|
50
|
-
- 默认:`llman
|
|
51
|
-
- 仅工具类变更:`llman
|
|
50
|
+
- 默认:`llman-sdd change archive <id>`
|
|
51
|
+
- 仅工具类变更:`llman-sdd change archive <id> --skip-specs`
|
|
52
52
|
- **任一失败立即停止**,报告剩余未处理 ID。
|
|
53
53
|
- **Git-native 收尾**:
|
|
54
54
|
- 前置:已 Branch binding(`change start` / `attach`);仍在绑定分支上(或合并后已在目标分支)。
|
|
55
55
|
- `change archive` / `change finalize` **先自动合并**(目标 `--into` > 绑定 `base_branch` > 默认分支;方式 squash 缺省或 `ff`;目标被其他 worktree 持有时跳过并打印手动命令),**再**将 change 文档改名到 `changes/archive/`——合并失败也不会回滚改名,降级提示显式可见。
|
|
56
|
-
- specs 下遗留 `*.feature.delta.toon` 或 `spec.toon` 均为迁移阻断项——跑 `llman
|
|
56
|
+
- specs 下遗留 `*.feature.delta.toon` 或 `spec.toon` 均为迁移阻断项——跑 `llman-sdd project migrate --kind toon2features`。
|
|
57
57
|
- **默认:`change finalize`(单命令收口)**——门禁 → 自动合并 → 文档改名 → **自动提交** `archive(sdd): <change-id>`(squash 缺省:实现 diff + 改名收敛为目标分支**单个**提交;无需手动 `git commit`;锁定规则改动为报告制 WARNING——只警告不阻断):
|
|
58
58
|
```text
|
|
59
59
|
1. 实现 live specs + 代码(工作区可保持脏;分支上提交自由——分段或完全不提交)
|
|
60
|
-
2. llman
|
|
60
|
+
2. llman-sdd change finalize <id> # 门禁 + 合并(squash 缺省)+ 改名 + 自动提交
|
|
61
61
|
3. 可选:git commit --amend # 调整提交说明;git branch -D <feature> # squash 后分支不再是祖先,-d 会被 git 拒绝
|
|
62
62
|
```
|
|
63
63
|
`--no-commit` 跳过自动提交(CI / pre-commit hook 冲突):finalize 此时留脏工作区并打印手动 `git commit` 命令。幂等重试:自动提交失败后重跑会识别已归档改名并补提交。
|
|
64
64
|
- **Fallback:普通 `change archive <id>`**——同样的合并 + 改名,无自动提交;要求干净树。`checkpointed`/`checkpoint_sha` 字段已随 checkpoint 一同移除(无存档点概念:`change finalize` 不要求干净树)——无需预写任何存档字段,快照审查用 `change diff`。
|
|
65
65
|
|
|
66
66
|
### 3) 全量校验
|
|
67
|
-
- 全部归档完成后执行:`llman
|
|
67
|
+
- 全部归档完成后执行:`llman-sdd validate --all --strict --no-interactive`。
|
|
68
68
|
- 确认归档后的 specs 工件一致。
|
|
69
69
|
|
|
70
70
|
### 4) Commit 引导
|
|
@@ -77,8 +77,8 @@ flowchart LR
|
|
|
77
77
|
|
|
78
78
|
{{ unit("workflow/archive-freeze-guidance") }}
|
|
79
79
|
|
|
80
|
-
> 命令细节用 `llman
|
|
81
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
80
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
81
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
82
82
|
|
|
83
83
|
{{ unit("skills/validation-hints") }}
|
|
84
84
|
|
|
@@ -12,30 +12,30 @@ metadata:
|
|
|
12
12
|
## 步骤
|
|
13
13
|
1. 确定 change id:
|
|
14
14
|
- 若用户已提供,直接使用。
|
|
15
|
-
- 否则运行 `llman
|
|
15
|
+
- 否则运行 `llman-sdd list --json` 并询问要继续哪个 change。
|
|
16
16
|
- 始终说明:"使用变更:<id>"。
|
|
17
17
|
2. 阅读变更目录:`llmanspec/changes/<id>/`。
|
|
18
|
-
> 阶段判定:用 `llman
|
|
18
|
+
> 阶段判定:用 `llman-sdd show <id> --json --type change` 的 `stage` / `readyToImplement` 字段;完整判定表见 llman-sdd-apply。
|
|
19
19
|
3. 确定下一个要创建的 artifact(按顺序):
|
|
20
20
|
1) `proposal.md`
|
|
21
21
|
2) `design.md`(仅当涉及设计权衡时)
|
|
22
22
|
3) `tasks.md`
|
|
23
|
-
4) `llman
|
|
23
|
+
4) `llman-sdd change start <id>`(或分支已存在时用 `change attach <id>`)——Branch binding
|
|
24
24
|
5) 在**绑定分支**上编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录主文件)并 commit——Specs landing(无合约变更可设 `needs_specs_change: false`)
|
|
25
25
|
4. 只创建**一个**缺失 artifact(或在绑定分支上做一次 live spec/feature 编辑)。
|
|
26
26
|
- continue 模式**不要**实现应用代码。
|
|
27
27
|
- **不要**创建 `*.feature.delta.toon` 或 `changes/<id>/specs/` 下的文件。
|
|
28
28
|
- **不要**在未 start/attach 前改公共 `llmanspec/specs/**`。
|
|
29
|
-
5. 若所有 artifact 已齐全,按 `llman
|
|
29
|
+
5. 若所有 artifact 已齐全,按 `llman-sdd show <id> --json` 建议下一步:
|
|
30
30
|
- `readyToImplement=false` → 先完成 Specs landing(或 `needs_specs_change: false`);**不要**建议 apply
|
|
31
31
|
- `readyToImplement=true` → 实施:`llman-sdd-apply`
|
|
32
32
|
- verify 之后 → 归档:`llman-sdd-archive`
|
|
33
|
-
- 校验:`llman
|
|
34
|
-
- 审查:`llman
|
|
33
|
+
- 校验:`llman-sdd validate <id> --strict --no-interactive`
|
|
34
|
+
- 审查:`llman-sdd change diff <id>`(只读)
|
|
35
35
|
|
|
36
36
|
{{ unit("skills/git-native-flow") }}
|
|
37
|
-
> 命令细节用 `llman
|
|
38
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
37
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
38
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
39
39
|
{{ unit("skills/validation-hints") }}
|
|
40
40
|
|
|
41
41
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -31,13 +31,13 @@ flowchart LR
|
|
|
31
31
|
- **MUST NOT 创建 tasks/design/specs/attach**:本技能仅创建 `proposal.md` 草案壳。完整规划工件属于 `llman-sdd-propose`。
|
|
32
32
|
- **MUST NOT 做 triage 或判断变更规模**:那是 propose 的职责。若用户想开始实现,建议 `llman-sdd-propose`。
|
|
33
33
|
- **适用边界**:若描述明显涉及 MUST/SHALL 行为合约变更或多文件改动,建议用 `llman-sdd-propose` 而非停在草案——但仍先建草案壳以免想法丢失。
|
|
34
|
-
- **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
|
|
34
|
+
- **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 字段(不要 `## Status` 段);正文 H1 用人类可读标题,不要复读 change id。
|
|
35
35
|
|
|
36
36
|
## 步骤
|
|
37
37
|
|
|
38
38
|
### 0) Preflight
|
|
39
39
|
- 读取 `llmanspec/config.yaml` 了解项目上下文、规则、locale。
|
|
40
|
-
- 必须存在 `llmanspec/`;若不存在,提示先运行 `llman
|
|
40
|
+
- 必须存在 `llmanspec/`;若不存在,提示先运行 `llman-sdd init`,然后 STOP。
|
|
41
41
|
|
|
42
42
|
### 1) 捕获描述
|
|
43
43
|
- 直接采用用户的描述(如「draft: 加一个导出 json 的命令」「记一下: sdd change 应该支持 worktree」)。
|
|
@@ -45,7 +45,7 @@ flowchart LR
|
|
|
45
45
|
|
|
46
46
|
### 2) 创建草案壳
|
|
47
47
|
```bash
|
|
48
|
-
llman
|
|
48
|
+
llman-sdd change new --from "<用户描述>"
|
|
49
49
|
```
|
|
50
50
|
- CLI 会生成合法的 kebab-case id(清洗 + 校验),在 `llmanspec/changes/<生成的 id>/` 下创建 `proposal.md`(含 `## Why` / `## What Changes` TODO 段的 skeleton),并打印最终 id 与路径。
|
|
51
51
|
- 若生成的 id 与既有 change 冲突,CLI 以非零退出码失败;建议改写描述或用 `--force` 覆盖(对草案很罕见)。
|
|
@@ -58,7 +58,7 @@ llman sdd change new --from "<用户描述>"
|
|
|
58
58
|
|
|
59
59
|
> 💡 草案已记 → 下一步:编辑 `proposal.md`,然后 `llman-sdd-propose` 正式化。
|
|
60
60
|
|
|
61
|
-
> 命令细节用 `llman
|
|
62
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
61
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
62
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
63
63
|
|
|
64
64
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -43,9 +43,9 @@ flowchart LR
|
|
|
43
43
|
- 同时保留多个选项与权衡
|
|
44
44
|
|
|
45
45
|
## 建议动作
|
|
46
|
-
1. 使用 `llman
|
|
46
|
+
1. 使用 `llman-sdd context --task "<任务>" --paths "<文件>"` 快速定位相关 specs。
|
|
47
47
|
- 阅读 context 的 `direct` 列出的 spec 全文(这些是必须理解的合约)。
|
|
48
|
-
- 如果 context 不可用,运行 `llman
|
|
48
|
+
- 如果 context 不可用,运行 `llman-sdd index rebuild`(默认 `pageindex`,无需模型)后重试。
|
|
49
49
|
2. 澄清目标与约束(问 1–3 个问题)。
|
|
50
50
|
3. **逐问深挖分支(可选,仅当用户显式触发时进入)**:触发词为「深挖」「grill」「逐个问」「彻底理清」。进入后一问一答走清决策:
|
|
51
51
|
- **一次只问一个问题**,并附你的推荐答案,等用户反馈后再继续下一个。
|
|
@@ -54,7 +54,7 @@ flowchart LR
|
|
|
54
54
|
- **决策回写**:已解决的决策回写到该 change 的 `proposal.md`「Open Questions」段(规划壳;可短暂在默认分支)。
|
|
55
55
|
- **完成判据**:每个待定决策都已解决或被显式推迟。未触发时保持默认(问 1–3 个问题)行为不变。
|
|
56
56
|
4. 如果某个 change id 相关,阅读 `llmanspec/changes/<id>/` 下的 artifacts。
|
|
57
|
-
- 诊断校验错误时优先跑 `llman
|
|
57
|
+
- 诊断校验错误时优先跑 `llman-sdd validate <spec> --strict --no-check`(fast mode,跳过可能耗时的 `bdd.run_command`),先解决结构门禁(Gherkin / `@req` 链接 / 双写 / req_id 唯一性),再跑 full mode(`--check` 或 `cargo test --features bdd`)。错误输出中的 `FAIL <item_type>/<id>` 行会逐条指明失败项。
|
|
58
58
|
5. 探索 2–3 个选项与权衡。
|
|
59
59
|
6. 判断变更规模(triage),确定是否需要走完整 SDD 流程。
|
|
60
60
|
7. 当结论逐渐清晰时,建议用户把它记录下来(不要自动写入):
|
|
@@ -72,7 +72,7 @@ flowchart LR
|
|
|
72
72
|
|
|
73
73
|
> 💡 探索完成 → 下一步 `llman-sdd-propose`(提案)或 `llman-sdd-quick`(快速路径)
|
|
74
74
|
|
|
75
|
-
> 命令细节用 `llman
|
|
76
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
75
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
76
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
77
77
|
|
|
78
78
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -19,20 +19,20 @@ metadata:
|
|
|
19
19
|
## 步骤
|
|
20
20
|
|
|
21
21
|
1. 询问用户:一句话描述、change id(或派生)、受影响 capability、确认最终 id。
|
|
22
|
-
2. 确保已 `llman
|
|
22
|
+
2. 确保已 `llman-sdd init`(存在 `llmanspec/`)。
|
|
23
23
|
3. 若 `llmanspec/changes/<id>/` 已存在:询问补齐或换 id;勿未确认就覆盖。
|
|
24
24
|
4. 创建**规划壳**(可短暂在默认分支):
|
|
25
|
-
- `llman
|
|
25
|
+
- `llman-sdd change new <id>`(或手写)→ 充实 `proposal.md`
|
|
26
26
|
- `design.md`(按需)
|
|
27
27
|
- `tasks.md`
|
|
28
|
-
5. **Branch binding**:`llman
|
|
28
|
+
5. **Branch binding**:`llman-sdd change start <id>`(干净树 + 默认分支)或手动建分支后 `change attach <id>`。
|
|
29
29
|
6. **Specs landing**:在绑定分支编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录主文件)并 commit;无合约变更则 `needs_specs_change: false`。
|
|
30
|
-
7. 校验:`llman
|
|
31
|
-
8. 用 `llman
|
|
30
|
+
7. 校验:`llman-sdd validate <id> --strict --no-interactive`。
|
|
31
|
+
8. 用 `llman-sdd show <id> --json` 确认 `readyToImplement=true` 后,建议 `llman-sdd-apply`(不要在未就绪时建议 apply)。
|
|
32
32
|
|
|
33
33
|
{{ unit("skills/git-native-flow-brief") }}
|
|
34
|
-
> 命令细节用 `llman
|
|
35
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
34
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
35
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
36
36
|
{{ unit("skills/validation-hints") }}
|
|
37
37
|
|
|
38
38
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -27,9 +27,9 @@ flowchart LR
|
|
|
27
27
|
**聚焦视图(seed 模式):** 展示指定变更及其关系邻域。
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
llman
|
|
31
|
-
llman
|
|
32
|
-
llman
|
|
30
|
+
llman-sdd graph <change-id> # 该变更 + 直接关系(depth 1)
|
|
31
|
+
llman-sdd graph <change-id> --depth 3 # 递归 3 层
|
|
32
|
+
llman-sdd graph <change-id> --depth 0 # 仅该变更自身
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
seed 模式沿 upstream(depends_on)、downstream(被谁依赖)、blocks 三个方向遍历,自动发现活跃和已归档变更。
|
|
@@ -37,17 +37,17 @@ seed 模式沿 upstream(depends_on)、downstream(被谁依赖)、blocks
|
|
|
37
37
|
**全局视图(scope 模式):** 按范围展示所有变更。
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
llman
|
|
41
|
-
llman
|
|
42
|
-
llman
|
|
40
|
+
llman-sdd graph # 所有活跃变更(默认)
|
|
41
|
+
llman-sdd graph --scope archived # 所有已归档(已完成)变更
|
|
42
|
+
llman-sdd graph --scope all # 全部
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
## 输出
|
|
46
46
|
|
|
47
47
|
- 输出为 mermaid flowchart 到标准输出,可管道到文件或渲染器:
|
|
48
48
|
```
|
|
49
|
-
llman
|
|
50
|
-
llman
|
|
49
|
+
llman-sdd graph c50 > deps.mmd
|
|
50
|
+
llman-sdd graph c50 --depth 2 | mmdc -i - -o deps.png
|
|
51
51
|
```
|
|
52
52
|
- 已归档(已完成)变更以 "✓ done" 后缀和绿色高亮显示。
|
|
53
53
|
- 当图中存在互不相连的分组时,每组渲染为独立的 subgraph,标注 "Active"、"Done" 或 "Mixed"。
|
|
@@ -68,7 +68,7 @@ blocks:
|
|
|
68
68
|
|
|
69
69
|
> 💡 这只是辅助工具 — 主流程:`llman-sdd-propose`(含 Branch binding + Specs landing)→ `llman-sdd-apply`(须 `readyToImplement`)→ `llman-sdd-verify` → `llman-sdd-archive`。
|
|
70
70
|
|
|
71
|
-
> 命令细节用 `llman
|
|
72
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
71
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
72
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
73
73
|
|
|
74
74
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -11,23 +11,23 @@ metadata:
|
|
|
11
11
|
|
|
12
12
|
## 步骤
|
|
13
13
|
1. 阅读 `llmanspec/config.yaml` 了解项目上下文、约定与规则。
|
|
14
|
-
2. 使用 `llman
|
|
15
|
-
- 或者使用 `llman
|
|
16
|
-
- 如果 context 返回 `quality: "unavailable"`,先运行 `llman
|
|
14
|
+
2. 使用 `llman-sdd list --specs --json` 了解项目中的 specs 概览。
|
|
15
|
+
- 或者使用 `llman-sdd context --task "<任务描述>" --paths "<路径>"` 获取与当前任务相关的 specs。
|
|
16
|
+
- 如果 context 返回 `quality: "unavailable"`,先运行 `llman-sdd index rebuild` 重建索引(默认 backend 为 `pageindex`;检索需 `LLMAN_SDD_INDEX_CHAT_MODEL`,但重建不需要)。
|
|
17
17
|
3. 根据 context 的 `direct`/`related` 分类,只读 target spec 全文。
|
|
18
18
|
4. 判断变更规模(见 triage 规则),决定走完整 SDD 流程或快速路径。
|
|
19
19
|
5. 按路径推进:
|
|
20
20
|
- **完整路径**:规划壳(draft → designed [+design.md] → planned [+tasks.md])→ Branch binding → Specs landing(或 `needs_specs_change: false`)→ `readyToImplement=true` → apply → verify → finalize/archive(Skill 导航:propose → apply → verify → archive)。
|
|
21
21
|
- **快速路径**:不改 MUST/SHALL,直接改代码 commit(触及 live specs 须已绑定分支,见 `llman-sdd-quick`)。
|
|
22
|
-
6. 使用 `llman
|
|
22
|
+
6. 使用 `llman-sdd graph` 可视化变更依赖关系(depends_on/blocks)。
|
|
23
23
|
|
|
24
|
-
> 命令细节用 `llman
|
|
25
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
24
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
25
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
26
26
|
|
|
27
27
|
## 备注
|
|
28
28
|
- `llmanspec/config.yaml` 包含项目上下文、规则、locale 与 skills 路径。
|
|
29
29
|
- locale 仅影响模板与 skills,CLI 仍为英文。
|
|
30
|
-
- 使用 `llman
|
|
30
|
+
- 使用 `llman-sdd init --update` 刷新技能。
|
|
31
31
|
|
|
32
32
|
{{ unit("skills/validation-hints") }}
|
|
33
33
|
|
|
@@ -40,7 +40,7 @@ flowchart LR
|
|
|
40
40
|
{% else %}
|
|
41
41
|
- **change 已存在**:STOP。若 `readyToImplement=true`,建议 `llman-sdd-apply`;否则补完规划壳 / Branch binding / Specs landing(编辑 `llmanspec/changes/<id>/`,或在配置启用 `extra_skills: [llman-sdd-continue]`)。
|
|
42
42
|
{% endif %}
|
|
43
|
-
- **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
|
|
43
|
+
- **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
44
|
|
|
45
45
|
## 快速记录分流
|
|
46
46
|
|
|
@@ -50,9 +50,9 @@ flowchart LR
|
|
|
50
50
|
|
|
51
51
|
### 0) 预检
|
|
52
52
|
- 读 `llmanspec/config.yaml` 获取项目上下文、规则、locale。
|
|
53
|
-
- `llman
|
|
53
|
+
- `llman-sdd validate --all --strict --no-interactive`:确认现有工件干净。
|
|
54
54
|
- 若已有错误,STOP 并报告(在脏工件上叠新 change 会造成级联错误)。
|
|
55
|
-
- **检查 spec valid_scope 完整性**:用 `llman
|
|
55
|
+
- **检查 spec valid_scope 完整性**:用 `llman-sdd list --specs --json` 列出全部 specs,逐个核对其 `valid_scope` 中的路径在磁盘上是否存在。任何 scope 文件/目录缺失时,STOP 并建议更新该 spec(从 `valid_scope` 移除已删除的路径)。
|
|
56
56
|
|
|
57
57
|
### 1) 评估 change 规模(triage)
|
|
58
58
|
1. 判定类型:
|
|
@@ -60,18 +60,18 @@ flowchart LR
|
|
|
60
60
|
- **实现层变更**(重构、typo、性能)→ 走 `llman-sdd-quick` 快速路径
|
|
61
61
|
- **元规范变更**(SDD 模板/流程)→ 完整 SDD 工作流
|
|
62
62
|
- 不确定时选完整 SDD(保守)。
|
|
63
|
-
2. 用 `llman
|
|
64
|
-
- context 不可用时,跑 `llman
|
|
63
|
+
2. 用 `llman-sdd context --task "<目标>" --paths "<范围>"` 找相关 specs。
|
|
64
|
+
- context 不可用时,跑 `llman-sdd index rebuild`(默认 `pageindex`,无需模型)后继续。
|
|
65
65
|
3. 收集输入:
|
|
66
66
|
- 一段简短的变更描述
|
|
67
67
|
- 一个 change id(用户给出则用之;否则按上面的非阻塞规则推导并宣布)
|
|
68
68
|
- 受影响的 capability(用于命名 `specs/<capability>`)
|
|
69
69
|
|
|
70
70
|
### 2) 确认项目已初始化
|
|
71
|
-
- `llmanspec/` 必须存在;若缺失,让用户运行 `llman
|
|
71
|
+
- `llmanspec/` 必须存在;若缺失,让用户运行 `llman-sdd init`,然后 STOP。
|
|
72
72
|
|
|
73
73
|
### 3) 创建 change 目录与工件
|
|
74
|
-
- 优先用 `llman
|
|
74
|
+
- 优先用 `llman-sdd change new <change-id>` 生成 `proposal.md` 草案壳(或手动创建 `llmanspec/changes/<change-id>/`)。
|
|
75
75
|
{% if extra_skill_continue %}
|
|
76
76
|
- change 已存在时,STOP 并建议 `llman-sdd-continue`。
|
|
77
77
|
{% else %}
|
|
@@ -81,14 +81,14 @@ flowchart LR
|
|
|
81
81
|
- 仅当存在权衡/迁移时写 `design.md`
|
|
82
82
|
- **写 tasks.md 前确认测试边界(seam,接缝)**:列出将要测试的 seam 并与用户确认。seam = 由 `*.feature` GWT 步骤驱动的公共边界(CLI 子进程或公共接口)——MUST 复用既有 harness seam,MUST NOT 脱离 `.feature` 凭空发明 seam。没有 `.feature` 时,seam = 被测的 CLI 子命令或公共函数边界。
|
|
83
83
|
- `tasks.md`:按**垂直切片**拆分(每个 task 打穿 schema→API→UI→tests 一条窄而完整的路径,可独立验证),并带 `[blocked-by: <task-id>]` 依赖标记。**大范围重构例外**(一个机械改动扫全库、单点编辑牵动大量调用处):按 expand-contract 排序(旧的旁边加新的 → 分批迁移调用处 → 删掉旧的),不强拆垂直切片。
|
|
84
|
-
- **先** `llman
|
|
84
|
+
- **先** `llman-sdd change start <change-id>`(推荐;默认分支上工作树干净时)或手动建分支后 `change attach <change-id>` 到达 Full(bound)。
|
|
85
85
|
- **然后**在绑定的非默认分支上编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录 `llmanspec/specs/<capability>/` 内主文件)并 commit(Specs landing)。**不要**在 start 之前改 live specs;**不要**为过干净树门禁把 live specs commit 到默认分支。已 attach 时勿重复 `start`(丢失 specs 时用 checkout/重建 + `attach --force` 恢复)。
|
|
86
|
-
- 无 live 合约编辑的 change,设置 frontmatter `needs_specs_change: false`。仅当 `llman
|
|
86
|
+
- 无 live 合约编辑的 change,设置 frontmatter `needs_specs_change: false`。仅当 `llman-sdd show <id> --json` 给出 `readyToImplement=true` 才进入 apply。
|
|
87
87
|
- **破坏性合约变更**(移除/重命名字段、命令、tag 或 stage 值域)MUST 规划升级路径:`migrations/v<from>-v<to>/`(README prompt + 一次性脚本,随仓库发布)——写进提案的 What Changes。
|
|
88
88
|
|
|
89
89
|
### 4) 校验
|
|
90
90
|
```bash
|
|
91
|
-
llman
|
|
91
|
+
llman-sdd validate <change-id> --strict --no-interactive
|
|
92
92
|
```
|
|
93
93
|
这一步 MUST 通过后才能继续。若出现 TOON 解析错误,修复引号:表格式行中含逗号/冒号/括号的值必须加双引号。
|
|
94
94
|
|
|
@@ -103,8 +103,8 @@ flowchart LR
|
|
|
103
103
|
### 4b) 单轨 feature 撰写
|
|
104
104
|
- 规划壳(proposal/design/tasks)可短暂留在默认分支;**不要**在默认分支上编辑 live `llmanspec/specs/**`。Branch binding 之后,Specs landing 与实现都发生在绑定分支上。
|
|
105
105
|
- **单轨**:每个 capability 只有一个 `<capability>.feature`。约束规则是 `@req:<id> @human` 场景(statement 全文放描述);可执行验收场景带 `@executable` 并用 `@req:<req_id>` 挂回规则。绝不把场景嵌进 `Rule:` 块(runner 会静默跳过其中场景)。
|
|
106
|
-
- change 壳:`llman
|
|
107
|
-
- **不要**使用 `change delta` / solidify / `*.feature.delta.toon`;存在活跃 `*.feature.delta.toon` 或遗留 `spec.toon` 时,先跑 `llman
|
|
106
|
+
- change 壳:`llman-sdd change new <change-id>` → 填 proposal/design/tasks → `llman-sdd change start <change-id>`(或 `change attach`)→ **然后**在绑定分支编辑 live specs 并 commit(Specs landing)。
|
|
107
|
+
- **不要**使用 `change delta` / solidify / `*.feature.delta.toon`;存在活跃 `*.feature.delta.toon` 或遗留 `spec.toon` 时,先跑 `llman-sdd project migrate --kind toon2features`。
|
|
108
108
|
|
|
109
109
|
### 5) 总结并建议下一步
|
|
110
110
|
- 进入实现阶段:`llman-sdd-apply`。
|
|
@@ -112,8 +112,8 @@ flowchart LR
|
|
|
112
112
|
|
|
113
113
|
> 💡 提案完成 → 下一步:`llman-sdd-apply`(实施)
|
|
114
114
|
|
|
115
|
-
> 命令细节用 `llman
|
|
116
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
115
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
116
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
117
117
|
{{ unit("skills/validation-hints") }}
|
|
118
118
|
|
|
119
119
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -36,9 +36,9 @@ flowchart LR
|
|
|
36
36
|
- 不是 SDD 元规范变更
|
|
37
37
|
|
|
38
38
|
## 步骤
|
|
39
|
-
1. 用 `llman
|
|
40
|
-
- 如果 context 返回 `quality: "unavailable"`,运行 `llman
|
|
41
|
-
- 可以用 `llman
|
|
39
|
+
1. 用 `llman-sdd context --task "..." --paths "..."` 确认无相关 spec 变更需要。
|
|
40
|
+
- 如果 context 返回 `quality: "unavailable"`,运行 `llman-sdd index rebuild`(默认 `pageindex`,无需模型)。
|
|
41
|
+
- 可以用 `llman-sdd list --specs --json` 查看 specs 元数据。
|
|
42
42
|
2. 直接修改代码。
|
|
43
43
|
3. 若要动 `llmanspec/specs/**`,STOP——除非已在绑定的非默认 change 分支上(迷你 change:`change start`/`attach` → 编辑 → commit)。禁止在默认分支 commit live specs,即使是 typo 或仅收紧 scope 也不行。优先把 live specs 维护路由到 `llman-sdd-propose`,或要求已有绑定分支。
|
|
44
44
|
4. git commit(message 写明 why)。
|
|
@@ -46,11 +46,11 @@ flowchart LR
|
|
|
46
46
|
|
|
47
47
|
## 边界处理
|
|
48
48
|
- 如果在修改中发现需要改变行为合约 → STOP,改走 `llman-sdd-propose`(完整路径)。
|
|
49
|
-
- 如果涉及到多个文件且不确定 scope → 先用 `llman
|
|
49
|
+
- 如果涉及到多个文件且不确定 scope → 先用 `llman-sdd context` 确认。
|
|
50
50
|
|
|
51
51
|
> 💡 快速路径完成 → git commit 即可。若需要走完整路径 → `llman-sdd-propose` → `llman-sdd-apply` → `llman-sdd-verify` → `llman-sdd-archive`
|
|
52
52
|
|
|
53
|
-
> 命令细节用 `llman
|
|
54
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
53
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
54
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
55
55
|
|
|
56
56
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -40,7 +40,7 @@ metadata:
|
|
|
40
40
|
|
|
41
41
|
`llman-sdd-wayfinder` 的查资料 ticket 委托本 skill 后台解决;解决后回写 ticket proposal 并在 map 的 Decisions-so-far 记一行要点。
|
|
42
42
|
|
|
43
|
-
> 命令细节用 `llman
|
|
44
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
43
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
44
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
45
45
|
|
|
46
46
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -10,14 +10,14 @@ metadata:
|
|
|
10
10
|
使用此 skill 快速查看变更与 specs。
|
|
11
11
|
|
|
12
12
|
## 步骤
|
|
13
|
-
1. 列出条目:`llman
|
|
13
|
+
1. 列出条目:`llman-sdd list` 或 `llman-sdd list --specs`。
|
|
14
14
|
2. 如果 id 不明确,展示列表并让用户选择。
|
|
15
|
-
3. 查看详情:`llman
|
|
15
|
+
3. 查看详情:`llman-sdd show <id>`。
|
|
16
16
|
4. 需要时使用 `--type change|spec` 消除歧义。
|
|
17
17
|
5. 对 change 使用 `--json`:状态 SSOT 字段为 `stage` / `specsLanded` / `needsSpecsChange` / `readyToImplement`(勿凭「完整工件」口头判断可否 apply)。
|
|
18
18
|
|
|
19
|
-
> 命令细节用 `llman
|
|
20
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
19
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
20
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
21
21
|
|
|
22
22
|
{{ unit("skills/validation-hints") }}
|
|
23
23
|
|
|
@@ -37,13 +37,13 @@ flowchart LR
|
|
|
37
37
|
- **编辑 live `llmanspec/specs/**` 须走 change**:先 Branch binding(`change start` / `attach`),在绑定分支上做 Specs landing 式提交;**禁止**在默认分支直接压缩改写 live specs。
|
|
38
38
|
|
|
39
39
|
## Workflow
|
|
40
|
-
1. 盘点当前 specs(`llman
|
|
40
|
+
1. 盘点当前 specs(`llman-sdd list --specs`)。
|
|
41
41
|
2. 如果已归档历史较大,先执行 archive freeze:
|
|
42
|
-
- 预览:`llman
|
|
43
|
-
- 执行:`llman
|
|
42
|
+
- 预览:`llman-sdd archive freeze --dry-run`
|
|
43
|
+
- 执行:`llman-sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
|
|
44
44
|
3. 识别跨 capability 的重叠项。
|
|
45
45
|
4. 产出压缩计划(canonical requirements + keep/merge/remove 决策 + 迁移说明)。
|
|
46
|
-
5. 执行并验证(`llman
|
|
46
|
+
5. 执行并验证(`llman-sdd validate --specs --strict --no-interactive`)。
|
|
47
47
|
|
|
48
48
|
## Decision Policy
|
|
49
49
|
- 两条 requirement 语义等价时优先合并。
|
|
@@ -58,8 +58,8 @@ flowchart LR
|
|
|
58
58
|
|
|
59
59
|
> 💡 维护完成后,新需求走正常 pipeline:`llman-sdd-propose`(含 Branch binding + Specs landing)→ `llman-sdd-apply`(须 `readyToImplement`)→ `llman-sdd-verify` → `llman-sdd-archive`。
|
|
60
60
|
|
|
61
|
-
> 命令细节用 `llman
|
|
62
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
61
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
62
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
63
63
|
|
|
64
64
|
{{ unit("skills/validation-hints") }}
|
|
65
65
|
|
|
@@ -10,8 +10,8 @@ metadata:
|
|
|
10
10
|
使用此 skill 校验变更/spec 格式与过期状态。
|
|
11
11
|
|
|
12
12
|
## 步骤
|
|
13
|
-
1. 校验单个条目:`llman
|
|
14
|
-
2. 批量校验:`llman
|
|
13
|
+
1. 校验单个条目:`llman-sdd validate <id>`。
|
|
14
|
+
2. 批量校验:`llman-sdd validate --all`(或 `--changes` / `--specs`)。
|
|
15
15
|
3. 在 CI 或自动化场景中使用 `--strict` 与 `--no-interactive`。
|
|
16
16
|
4. 若校验失败,汇总错误并给出最小、可执行的修复建议。
|
|
17
17
|
{% if bdd_enabled %}
|
|
@@ -19,13 +19,13 @@ metadata:
|
|
|
19
19
|
- 在**绑定分支**上验证 live `.feature` Gherkin 与 `@req` / 双写门禁(须已 Branch binding)。
|
|
20
20
|
- `.feature` 是 harness 权威——可执行 GWT 只在 live `.feature` 维护(无 solidify;无 `feature_delta` / `change delta`)。
|
|
21
21
|
- Change 生命周期门禁:`change start` / `attach`(Branch binding)、`finalize`(收口;自动提交 `archive(sdd): <id>`,`--no-commit` 跳过)/ `diff`(只读)。`change checkpoint` 已移除(无存档点概念:中途不必存档,`change finalize` 不要求干净树)。
|
|
22
|
-
- `llman
|
|
22
|
+
- `llman-sdd validate --specs` 默认自动运行 `bdd.run_command`。
|
|
23
23
|
- 可用 `list --specs --json` 查看 `morphology`(含 `dualWriteCount`)。
|
|
24
24
|
- Change JSON 状态字段:`stage`(draft/designed/planned/full)/ `specsLanded` / `needsSpecsChange` / `readyToImplement`(`show --json`)。
|
|
25
25
|
{% endif %}
|
|
26
26
|
|
|
27
|
-
> 命令细节用 `llman
|
|
28
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
27
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
28
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
29
29
|
|
|
30
30
|
{{ unit("skills/validation-hints") }}
|
|
31
31
|
|
|
@@ -34,9 +34,9 @@ flowchart LR
|
|
|
34
34
|
{{ unit("skills/stage-guard") }}
|
|
35
35
|
|
|
36
36
|
## 步骤
|
|
37
|
-
1. 确定 change id(不明确时让用户从 `llman
|
|
37
|
+
1. 确定 change id(不明确时让用户从 `llman-sdd list --json` 选择)。
|
|
38
38
|
2. 先跑一个快速校验门禁:
|
|
39
|
-
- `llman
|
|
39
|
+
- `llman-sdd validate <id> --strict --no-interactive`
|
|
40
40
|
- **诊断结构问题(Gherkin 解析 / `@req` 链接 / 双写 / 全局 req_id 唯一性)时优先加 `--no-check`**(BDD-on 下跳过可能耗时的 `bdd.run_command`),结构门禁全绿后再跑完整 `--check`(full mode)。`FAIL <item_type>/<id>` 行会逐条列出失败项(在 Totals 行上方)。
|
|
41
41
|
3. 阅读:
|
|
42
42
|
- feature 分支上的 live specs:`llmanspec/specs/**`(`<capability>.feature`)——SSOT
|
|
@@ -69,8 +69,8 @@ flowchart LR
|
|
|
69
69
|
- 两轴可并行(sub-agent)审查;报告 MUST 分离呈现,MUST NOT 合并或交叉重排(一轴通过不能掩盖另一轴失败)。
|
|
70
70
|
5. **BDD-on 验证(Git-native Partitioned SSOT)**——仅当 `config.yaml` 含 `bdd:` 段时:
|
|
71
71
|
- 确认 change 已 attach,且当前在对应 feature 分支上。
|
|
72
|
-
- `llman
|
|
73
|
-
- 可选只读审查:`llman
|
|
72
|
+
- `llman-sdd validate --specs`:Gherkin + `@req`/双写门禁;默认跑 `bdd.run_command`(可用 `--no-check` 跳过)。
|
|
73
|
+
- 可选只读审查:`llman-sdd change diff <id>`(或 `--export-patch <path>`)。diff 仅作审查/导出——绝不当作 apply 步骤。
|
|
74
74
|
- 检查:无遗留 `spec.toon` / `*.feature.delta.toon`;若存在,先跑 toon2features(不要自创 solidify/找补步骤)。
|
|
75
75
|
- verify 通过后下一步:`llman-sdd-archive`(勿在此 inline finalize)。
|
|
76
76
|
{% if bdd_verify_prompt %}
|
|
@@ -80,7 +80,7 @@ flowchart LR
|
|
|
80
80
|
- **CRITICAL**(归档前必须修复)
|
|
81
81
|
- **WARNING**(建议修复)
|
|
82
82
|
- **SUGGESTION**(可选优化)
|
|
83
|
-
7. **人审检查点**:报告无 CRITICAL 后、建议归档前,运行 `llman
|
|
83
|
+
7. **人审检查点**:报告无 CRITICAL 后、建议归档前,运行 `llman-sdd review`:
|
|
84
84
|
- 退出码为零 → 建议 `llman-sdd-archive` 进行 finalize/archive。
|
|
85
85
|
- 非零退出 = CRITICAL 发现:用 `llman-sdd-apply` 修复后重跑 review;MUST NOT 带着 CRITICAL 进入 finalize/archive。
|
|
86
86
|
|
|
@@ -88,8 +88,8 @@ flowchart LR
|
|
|
88
88
|
|
|
89
89
|
{{ unit("skills/git-native-flow-brief") }}
|
|
90
90
|
{{ unit("skills/human-readable-summary") }}
|
|
91
|
-
> 命令细节用 `llman
|
|
92
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
91
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
92
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
93
93
|
|
|
94
94
|
{{ unit("skills/validation-hints") }}
|
|
95
95
|
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
一个又大又乱的工作来了——大到单个 agent 会话装不下,还裹着一团迷雾:从现在到**目的地**的路还看不见。这个 skill 不急着动手,而是先把路找出来。
|
|
11
11
|
|
|
12
|
-
它把路径画成 llman SDD 的 **change 依赖图**(`llman
|
|
12
|
+
它把路径画成 llman SDD 的 **change 依赖图**(`llman-sdd graph`):每个子工作(ticket)解决一个**决策**而非交付一块代码,逐个解决直到路径清晰。
|
|
13
13
|
|
|
14
14
|
## Pipeline 位置
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ metadata:
|
|
|
25
25
|
|
|
26
26
|
## 地图结构
|
|
27
27
|
|
|
28
|
-
地图本身是一个 change(总纲 proposal),它的子决策是 `depends_on` 的子 change。用 `llman
|
|
28
|
+
地图本身是一个 change(总纲 proposal),它的子决策是 `depends_on` 的子 change。用 `llman-sdd graph <map-id> --scope active` 可视化当前**可着手项**。
|
|
29
29
|
|
|
30
30
|
地图的 `proposal.md` 结构:
|
|
31
31
|
|
|
@@ -66,8 +66,8 @@ metadata:
|
|
|
66
66
|
### 画地图
|
|
67
67
|
1. **命名目的地**:用 `llman-sdd-explore` 的逐问深挖分支钉死这趟地图要通往哪里。
|
|
68
68
|
2. **广度优先扫可着手项**:再次逐问深挖,扇开而非深挖一条,把开放决策和现在能迈的第一步浮出来。若**没有模糊点浮出**——路径已清晰、整个工作一个会话能装下——那就不需要地图,停下问用户想怎么做。
|
|
69
|
-
3. **创建地图**(总纲 change):`llman
|
|
70
|
-
4. **创建现在能说清的 ticket**为子 change,然后用 `llman
|
|
69
|
+
3. **创建地图**(总纲 change):`llman-sdd change new <map-id>`,填 Destination/Notes,Decisions-so-far 留空,模糊点写进尚未清晰区。
|
|
70
|
+
4. **创建现在能说清的 ticket**为子 change,然后用 `llman-sdd graph` 接依赖边(第二步:先有 id 才能互引)。
|
|
71
71
|
5. 为每个查资料 ticket 启动 `llman-sdd-research` 后台 subagent。
|
|
72
72
|
6. 停——画图是单个会话的活,不要顺手解决任何决策。
|
|
73
73
|
|
|
@@ -79,9 +79,9 @@ metadata:
|
|
|
79
79
|
5. 新增 ticket(先建再接线);把答案让模糊点变清晰、升级成 ticket 的,从尚未清晰区移除。若答案揭示某 ticket 越过目的地,归入范围外而非在路径上解决。
|
|
80
80
|
|
|
81
81
|
## 输出
|
|
82
|
-
地图 change + 子决策 change 的依赖图(`llman
|
|
82
|
+
地图 change + 子决策 change 的依赖图(`llman-sdd graph`)。路径清晰后建议进入 `llman-sdd-propose`(含 Branch binding → Specs landing,至 `readyToImplement=true`)把决策收拢为可实施计划。
|
|
83
83
|
|
|
84
|
-
> 命令细节用 `llman
|
|
85
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
84
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
85
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
86
86
|
|
|
87
87
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# llman
|
|
1
|
+
# llman-sdd project migrate — 协作说明
|
|
2
2
|
|
|
3
3
|
## 命令意图
|
|
4
4
|
|
|
5
|
-
- `llman
|
|
6
|
-
- `llman
|
|
5
|
+
- `llman-sdd project migrate --kind toon2features`:遗留 `spec.toon` → 单轨 `.feature`(一次性迁移,幂等)。
|
|
6
|
+
- `llman-sdd project migrate --kind specs-flatten`:纯同名单文件目录 `specs/<cap>/<cap>.feature` → 扁平 `specs/<cap>.feature`(git mv 保留历史)。
|
|
7
7
|
|
|
8
8
|
## Agent 该做什么
|
|
9
9
|
|
|
10
10
|
- 先确认是否真需要迁移(无 legacy / 单文件目录 → no-op)。
|
|
11
11
|
- 先跑 `--dry-run` 看预检查报告;`conflict` / `misnamed` 项人工处理,勿强行迁移。
|
|
12
|
-
- 迁移后运行 `llman
|
|
12
|
+
- 迁移后运行 `llman-sdd validate --specs --strict --no-interactive` 与项目 BDD 套件。
|
|
13
13
|
|
|
14
14
|
## 人类该做什么
|
|
15
15
|
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
|
|
25
25
|
## 下一步
|
|
26
26
|
|
|
27
|
-
- `llman
|
|
27
|
+
- `llman-sdd validate --specs --strict --no-interactive`
|
|
28
28
|
- 项目 BDD 运行(如 `cargo test --features bdd`)
|