@llman-sdd/core 0.1.2 → 0.1.4

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.
Files changed (71) hide show
  1. package/package.json +1 -1
  2. package/src/archive/freeze.ts +6 -4
  3. package/src/archive/sevenzip.ts +35 -6
  4. package/src/context/indexStore.ts +6 -12
  5. package/src/git/spawnGit.ts +0 -8
  6. package/src/index.ts +39 -5
  7. package/src/init/defaultConfig.ts +2 -2
  8. package/src/init/init.ts +46 -56
  9. package/src/report/collect.ts +3 -3
  10. package/src/report/graph.ts +22 -34
  11. package/src/report/show.ts +14 -37
  12. package/src/report/specs.ts +19 -19
  13. package/src/review/review.ts +34 -9
  14. package/src/spec/ir.ts +7 -0
  15. package/src/spec/parser.ts +9 -4
  16. package/src/templates/embedded.ts +68 -0
  17. package/src/templates/engine.ts +3 -2
  18. package/src/validation/validate.ts +3 -5
  19. package/templates/en/agents-root-stub.md +1 -1
  20. package/templates/en/skills/llman-sdd-apply-cycle.md +7 -7
  21. package/templates/en/skills/llman-sdd-apply.md +12 -12
  22. package/templates/en/skills/llman-sdd-arch-review.md +2 -2
  23. package/templates/en/skills/llman-sdd-archive.md +12 -12
  24. package/templates/en/skills/llman-sdd-continue.md +8 -8
  25. package/templates/en/skills/llman-sdd-draft.md +5 -5
  26. package/templates/en/skills/llman-sdd-explore.md +5 -5
  27. package/templates/en/skills/llman-sdd-ff.md +7 -7
  28. package/templates/en/skills/llman-sdd-graph.md +10 -10
  29. package/templates/en/skills/llman-sdd-onboard.md +7 -7
  30. package/templates/en/skills/llman-sdd-propose.md +14 -14
  31. package/templates/en/skills/llman-sdd-quick.md +6 -6
  32. package/templates/en/skills/llman-sdd-research.md +2 -2
  33. package/templates/en/skills/llman-sdd-show.md +4 -4
  34. package/templates/en/skills/llman-sdd-specs-compact.md +6 -6
  35. package/templates/en/skills/llman-sdd-validate.md +5 -5
  36. package/templates/en/skills/llman-sdd-verify.md +7 -7
  37. package/templates/en/skills/llman-sdd-wayfinder.md +7 -7
  38. package/templates/en/units/migrate-prompt.md +5 -5
  39. package/templates/en/units/skills/ethics-governance.md +1 -1
  40. package/templates/en/units/skills/git-native-flow.md +2 -2
  41. package/templates/en/units/skills/stage-guard.md +1 -1
  42. package/templates/en/units/skills/structured-protocol.md +5 -5
  43. package/templates/en/units/skills/validation-hints.md +2 -2
  44. package/templates/en/units/workflow/archive-freeze-guidance.md +3 -3
  45. package/templates/shared/review.html +2 -2
  46. package/templates/zh-Hans/agents-root-stub.md +1 -1
  47. package/templates/zh-Hans/skills/llman-sdd-apply-cycle.md +7 -7
  48. package/templates/zh-Hans/skills/llman-sdd-apply.md +12 -12
  49. package/templates/zh-Hans/skills/llman-sdd-arch-review.md +2 -2
  50. package/templates/zh-Hans/skills/llman-sdd-archive.md +12 -12
  51. package/templates/zh-Hans/skills/llman-sdd-continue.md +8 -8
  52. package/templates/zh-Hans/skills/llman-sdd-draft.md +5 -5
  53. package/templates/zh-Hans/skills/llman-sdd-explore.md +5 -5
  54. package/templates/zh-Hans/skills/llman-sdd-ff.md +7 -7
  55. package/templates/zh-Hans/skills/llman-sdd-graph.md +10 -10
  56. package/templates/zh-Hans/skills/llman-sdd-onboard.md +7 -7
  57. package/templates/zh-Hans/skills/llman-sdd-propose.md +14 -14
  58. package/templates/zh-Hans/skills/llman-sdd-quick.md +6 -6
  59. package/templates/zh-Hans/skills/llman-sdd-research.md +2 -2
  60. package/templates/zh-Hans/skills/llman-sdd-show.md +4 -4
  61. package/templates/zh-Hans/skills/llman-sdd-specs-compact.md +6 -6
  62. package/templates/zh-Hans/skills/llman-sdd-validate.md +5 -5
  63. package/templates/zh-Hans/skills/llman-sdd-verify.md +7 -7
  64. package/templates/zh-Hans/skills/llman-sdd-wayfinder.md +7 -7
  65. package/templates/zh-Hans/units/migrate-prompt.md +5 -5
  66. package/templates/zh-Hans/units/skills/ethics-governance.md +1 -1
  67. package/templates/zh-Hans/units/skills/git-native-flow.md +2 -2
  68. package/templates/zh-Hans/units/skills/stage-guard.md +1 -1
  69. package/templates/zh-Hans/units/skills/structured-protocol.md +5 -5
  70. package/templates/zh-Hans/units/skills/validation-hints.md +2 -2
  71. package/templates/zh-Hans/units/workflow/archive-freeze-guidance.md +3 -3
@@ -34,9 +34,9 @@ flowchart LR
34
34
  {{ unit("skills/stage-guard") }}
35
35
 
36
36
  ## 步骤
37
- 1. 确定 change id(不明确时让用户从 `llman sdd list --json` 选择)。
37
+ 1. 确定 change id(不明确时让用户从 `llman-sdd list --json` 选择)。
38
38
  2. 先跑一个快速校验门禁:
39
- - `llman sdd validate <id> --strict --no-interactive`
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 sdd validate --specs`:Gherkin + `@req`/双写门禁;默认跑 `bdd.run_command`(可用 `--no-check` 跳过)。
73
- - 可选只读审查:`llman sdd change diff <id>`(或 `--export-patch <path>`)。diff 仅作审查/导出——绝不当作 apply 步骤。
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 sdd review`:
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 sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
92
- > 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman sdd list --specs` / `llman sdd show <capability>` 查全文。
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 sdd graph`):每个子工作(ticket)解决一个**决策**而非交付一块代码,逐个解决直到路径清晰。
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 sdd graph <map-id> --scope active` 可视化当前**可着手项**。
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 sdd change new <map-id>`,填 Destination/Notes,Decisions-so-far 留空,模糊点写进尚未清晰区。
70
- 4. **创建现在能说清的 ticket**为子 change,然后用 `llman sdd graph` 接依赖边(第二步:先有 id 才能互引)。
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 sdd graph`)。路径清晰后建议进入 `llman-sdd-propose`(含 Branch binding → Specs landing,至 `readyToImplement=true`)把决策收拢为可实施计划。
82
+ 地图 change + 子决策 change 的依赖图(`llman-sdd graph`)。路径清晰后建议进入 `llman-sdd-propose`(含 Branch binding → Specs landing,至 `readyToImplement=true`)把决策收拢为可实施计划。
83
83
 
84
- > 命令细节用 `llman sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
85
- > 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman sdd list --specs` / `llman sdd show <capability>` 查全文。
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 sdd project migrate — 协作说明
1
+ # llman-sdd project migrate — 协作说明
2
2
 
3
3
  ## 命令意图
4
4
 
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 保留历史)。
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 sdd validate --specs --strict --no-interactive` 与项目 BDD 套件。
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 sdd validate --specs --strict --no-interactive`
27
+ - `llman-sdd validate --specs --strict --no-interactive`
28
28
  - 项目 BDD 运行(如 `cargo test --features bdd`)
@@ -1,6 +1,6 @@
1
1
  ## Ethics Governance
2
2
  - `ethics.risk_level`:low——仅读写本仓库与 `llmanspec/`,无外发动作;正文另有声明时从其声明。
3
3
  - `ethics.prohibited_actions`:违反正文「硬约束」的动作;未经用户明确要求的 push / PR / 外部上传。
4
- - `ethics.required_evidence`:结论须有命令输出或文件路径佐证;门禁状态以 `llman sdd validate` 为准。
4
+ - `ethics.required_evidence`:结论须有命令输出或文件路径佐证;门禁状态以 `llman-sdd validate` 为准。
5
5
  - `ethics.refusal_contract`:门禁 CRITICAL 未清零 → 拒绝进入下一阶段;自修复达上限 → 报告 blocker。
6
6
  - `ethics.escalation_policy`:改动 SDD 合约/模板或执行不可逆动作前,暂停并请用户确认。
@@ -35,6 +35,6 @@ flowchart TB
35
35
 
36
36
  硬规则:
37
37
  1. **先** `change start` / `attach`(Branch binding / 分支绑定)进入 Full;**再**在绑定的非默认分支编辑 `llmanspec/specs/**` 并 commit(Specs landing / 合约落地)。
38
- 2. 无 live 合约变更时可设 frontmatter `needs_specs_change: false`。进入 apply 前 `llman sdd show <id> --json` 的 `readyToImplement` 须为 true(`Full ∧ gateChecks 全过`;specs-landed 项 = `specsLanded ∨ needs_specs_change=false`;一切范围 = 现算 merge-base,存储 `base_sha` 仅审计)。
39
- 3. `change checkpoint` 已移除(无存档点概念:中途不必存档,`change finalize` 不要求干净树)。收口一律 `llman sdd change finalize <id>`:自动提交 `archive(sdd): <id>`(实现 diff + 改名一次提交);`--no-commit` 跳过自动提交(CI/手动历史场景)。change 分支上提交自由(分段或 finalize 单次收尾均可)。
38
+ 2. 无 live 合约变更时可设 frontmatter `needs_specs_change: false`。进入 apply 前 `llman-sdd show <id> --json` 的 `readyToImplement` 须为 true(`Full ∧ gateChecks 全过`;specs-landed 项 = `specsLanded ∨ needs_specs_change=false`;一切范围 = 现算 merge-base,存储 `base_sha` 仅审计)。
39
+ 3. `change checkpoint` 已移除(无存档点概念:中途不必存档,`change finalize` 不要求干净树)。收口一律 `llman-sdd change finalize <id>`:自动提交 `archive(sdd): <id>`(实现 diff + 改名一次提交);`--no-commit` 跳过自动提交(CI/手动历史场景)。change 分支上提交自由(分段或 finalize 单次收尾均可)。
40
40
  4. **禁止**为过干净树门禁把 live specs commit 到默认分支;已 attach 时不要重复 `start`。
@@ -3,7 +3,7 @@
3
3
  用权威 JSON 判定(勿凭「完整工件」口头说法):
4
4
 
5
5
  ```bash
6
- llman sdd show <id> --json --type change
6
+ llman-sdd show <id> --json --type change
7
7
  ```
8
8
 
9
9
  解读字段:`stage`、`specsLanded`、`needsSpecsChange`、`readyToImplement`、`gateChecks`(逐项 `pass` + 未过时一行 `hint`)。
@@ -1,6 +1,6 @@
1
1
  ## Context
2
- - 先查状态再动手:change/spec 状态以 `llman sdd show/list/validate` 输出为准。
3
- - 读 spec 全文前先用 `llman sdd context --task --paths` 定位相关 specs。
2
+ - 先查状态再动手:change/spec 状态以 `llman-sdd show/list/validate` 输出为准。
3
+ - 读 spec 全文前先用 `llman-sdd context --task --paths` 定位相关 specs。
4
4
 
5
5
  ## Goal
6
6
  - 本节命令达成一个可验证结果;结果路径与校验状态随报告输出。
@@ -10,8 +10,8 @@
10
10
  - 改动保持最小;已知校验错误禁止强行继续。
11
11
 
12
12
  ## Workflow
13
- - 每步以 `llman sdd` 命令结果为事实来源;改动工件后必跑 `llman sdd validate`。
14
- - 命令细节见下方生成式命令参考或 `llman sdd <cmd> --help`。
13
+ - 每步以 `llman-sdd` 命令结果为事实来源;改动工件后必跑 `llman-sdd validate`。
14
+ - 命令细节见下方生成式命令参考或 `llman-sdd <cmd> --help`。
15
15
 
16
16
  ## Decision Policy
17
17
  - 高影响歧义先澄清再继续;事实自己查证,只有决策问用户。
@@ -22,6 +22,6 @@
22
22
  ## Ethics Governance
23
23
  - `ethics.risk_level`:low——仅读写本仓库与 `llmanspec/`,无外发动作;正文另有声明时从其声明。
24
24
  - `ethics.prohibited_actions`:违反正文「硬约束」的动作;未经用户明确要求的 push / PR / 外部上传。
25
- - `ethics.required_evidence`:结论须有命令输出或文件路径佐证;门禁状态以 `llman sdd validate` 为准。
25
+ - `ethics.required_evidence`:结论须有命令输出或文件路径佐证;门禁状态以 `llman-sdd validate` 为准。
26
26
  - `ethics.refusal_contract`:门禁 CRITICAL 未清零 → 拒绝进入下一阶段;自修复达上限 → 报告 blocker。
27
27
  - `ethics.escalation_policy`:改动 SDD 合约/模板或执行不可逆动作前,暂停并请用户确认。
@@ -15,10 +15,10 @@
15
15
  - `@manual` 须与 `@human` 同用;禁止 `@human` 与 `@executable` 同场景。
16
16
 
17
17
  3)遗留 `spec.toon`(`legacy spec.toon found ... run ... toon2features`):
18
- 运行 `llman sdd project migrate --kind toon2features --yes`,审阅 diff 后提交。
18
+ 运行 `llman-sdd project migrate --kind toon2features --yes`,审阅 diff 后提交。
19
19
 
20
20
  Git-native 护栏:
21
21
  - **Branch binding** → **Specs landing**:先 `change start` / `attach`,再在绑定的非默认分支编辑 live `.feature` 并 commit。
22
- - 锁定规则(报告制):改/删既有 `@human` 场景只出 WARNING,不阻断 validate / change finalize / change diff;报告按 `@req:<id>` 指明被改的是哪条规则。控制点:git 分支对比 + `llman sdd review` / `change diff` 的报告浮现。旧的锁定确认元数据(frontmatter `rules_touched` / `agent_acked`、`@agent` tag、`--yes` 的确认语义)已全部删除,无别名、无兼容层。
22
+ - 锁定规则(报告制):改/删既有 `@human` 场景只出 WARNING,不阻断 validate / change finalize / change diff;报告按 `@req:<id>` 指明被改的是哪条规则。控制点:git 分支对比 + `llman-sdd review` / `change diff` 的报告浮现。旧的锁定确认元数据(frontmatter `rules_touched` / `agent_acked`、`@agent` tag、`--yes` 的确认语义)已全部删除,无别名、无兼容层。
23
23
  - apply 前须 `readyToImplement=true`(或 `needs_specs_change: false`)。收尾优先 `change finalize`。
24
24
  - 勿使用 `change delta` / solidify / `*.feature.delta.toon`。
@@ -1,6 +1,6 @@
1
1
  ## Archive 冷备引导
2
2
  - 当 archive 目录增长过大时,使用冷备维护:
3
- - 预览冻结候选:`llman sdd archive freeze --dry-run`
4
- - 冻结旧归档:`llman sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
5
- - 需要恢复时:`llman sdd archive thaw --change <YYYY-MM-DD-id>`
3
+ - 预览冻结候选:`llman-sdd archive freeze --dry-run`
4
+ - 冻结旧归档:`llman-sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
5
+ - 需要恢复时:`llman-sdd archive thaw --change <YYYY-MM-DD-id>`
6
6
  - freeze/thaw 仅用于日期归档目录(`YYYY-MM-DD-*`);建议保留少量最近目录不冻结。