@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
|
@@ -40,7 +40,7 @@ flowchart LR
|
|
|
40
40
|
{% else %}
|
|
41
41
|
- **If change already exists**: STOP. If `readyToImplement=true`, suggest `llman-sdd-apply`; otherwise finish the planning shell / Branch binding / Specs landing (edit `llmanspec/changes/<id>/`, or enable `extra_skills: [llman-sdd-continue]`).
|
|
42
42
|
{% endif %}
|
|
43
|
-
- **Frontmatter has a fixed schema**: when fleshing out `proposal.md`, only the allowed fields in `llmanspec/AGENTS.md` "Change Proposal Frontmatter SSOT" are accepted (including `depends_on`, `blocks`, `branch`, `base_sha`, `needs_specs_change`). `status`/`title`/`priority`/`author` etc. are rejected by `llman
|
|
43
|
+
- **Frontmatter has a fixed schema**: when fleshing out `proposal.md`, only the allowed fields in `llmanspec/AGENTS.md` "Change Proposal Frontmatter SSOT" are accepted (including `depends_on`, `blocks`, `branch`, `base_sha`, `needs_specs_change`). `status`/`title`/`priority`/`author` etc. are rejected by `llman-sdd validate` as ERROR; lifecycle stage is inferred (query via `llman-sdd show`/`list`), never stored in frontmatter. Do not re-declare frontmatter fields in the prose body; the body H1 is a human-readable title, not a repeat of the change id.
|
|
44
44
|
|
|
45
45
|
## Quick-capture routing
|
|
46
46
|
|
|
@@ -50,9 +50,9 @@ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note do
|
|
|
50
50
|
|
|
51
51
|
### 0) Preflight
|
|
52
52
|
- Read `llmanspec/config.yaml` for project context, rules, locale.
|
|
53
|
-
- `llman
|
|
53
|
+
- `llman-sdd validate --all --strict --no-interactive`: ensure current artifacts are clean.
|
|
54
54
|
- If pre-existing errors, stop and report (stacking new changes on dirty artifacts causes cascading errors).
|
|
55
|
-
- **Check spec valid_scope integrity**: use `llman
|
|
55
|
+
- **Check spec valid_scope integrity**: use `llman-sdd list --specs --json` to list all specs, then for each spec verify every path in its `valid_scope` exists on disk. If any scope file/directory is missing, stop and suggest updating the spec (remove the deleted path from `valid_scope`).
|
|
56
56
|
|
|
57
57
|
### 1) Assess change scale (triage)
|
|
58
58
|
1. Classify:
|
|
@@ -60,18 +60,18 @@ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note do
|
|
|
60
60
|
- **Implementation change** (refactor, typo, perf) → quick path via `llman-sdd-quick`
|
|
61
61
|
- **Meta-spec change** (SDD templates/process) → full SDD workflow
|
|
62
62
|
- When uncertain, choose full SDD (conservative).
|
|
63
|
-
2. Use `llman
|
|
64
|
-
- If context unavailable, rebuild with `llman
|
|
63
|
+
2. Use `llman-sdd context --task "<goal>" --paths "<scope>"` to find relevant specs.
|
|
64
|
+
- If context unavailable, rebuild with `llman-sdd index rebuild` (default `pageindex`, no model needed) and continue.
|
|
65
65
|
3. Gather input:
|
|
66
66
|
- A short description of the change
|
|
67
67
|
- A change id (user-supplied if given; otherwise derive it with the non-blocking rule above and announce it)
|
|
68
68
|
- The impacted capability/capabilities (to name `specs/<capability>`)
|
|
69
69
|
|
|
70
70
|
### 2) Ensure project is initialized
|
|
71
|
-
- `llmanspec/` must exist; if missing, tell the user to run `llman
|
|
71
|
+
- `llmanspec/` must exist; if missing, tell the user to run `llman-sdd init`, then STOP.
|
|
72
72
|
|
|
73
73
|
### 3) Create change directory and artifacts
|
|
74
|
-
- Prefer `llman
|
|
74
|
+
- Prefer `llman-sdd change new <change-id>` for the draft `proposal.md` shell (or create `llmanspec/changes/<change-id>/` manually).
|
|
75
75
|
{% if extra_skill_continue %}
|
|
76
76
|
- If the change already exists, STOP and suggest `llman-sdd-continue`.
|
|
77
77
|
{% else %}
|
|
@@ -81,14 +81,14 @@ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note do
|
|
|
81
81
|
- `design.md` only when tradeoffs/migrations matter
|
|
82
82
|
- **Confirm seams before writing tasks.md**: list the seams to be tested and confirm with the user. A seam = the public boundary driven by `*.feature` GWT steps (CLI subprocess or public interface) — MUST reuse existing harness seams, MUST NOT invent seams detached from `.feature`. Without `.feature`, seam = the CLI subcommand or public function boundary under test.
|
|
83
83
|
- `tasks.md`: split into **vertical slices** (each task cuts a narrow but complete path through schema→API→UI→tests, independently verifiable), with `[blocked-by: <task-id>]` dependency markers. **Wide-refactor exception** (one mechanical change sweeping the codebase, single edit breaks many call sites): sequence as expand-contract (add new beside old → migrate call sites in batches → delete old), don't force into a vertical slice.
|
|
84
|
-
- **First** `llman
|
|
84
|
+
- **First** `llman-sdd change start <change-id>` (recommended; clean tree on the default branch) or manually create a branch then `change attach <change-id>` to reach Full (bound).
|
|
85
85
|
- **Then** edit live `llmanspec/specs/<capability>.feature` (flat, or directory `llmanspec/specs/<capability>/` main file) on the bound non-default branch and commit (Specs landing). **Do not** edit live specs before start; **do not** commit live specs to the default branch just to satisfy the clean-tree gate. If already attached, do not re-run `start` (recover lost specs by checkout/recreate + `attach --force` if needed).
|
|
86
|
-
- For changes with no live contract edits, set frontmatter `needs_specs_change: false`. Enter apply only when `llman
|
|
86
|
+
- For changes with no live contract edits, set frontmatter `needs_specs_change: false`. Enter apply only when `llman-sdd show <id> --json` has `readyToImplement=true`.
|
|
87
87
|
- **Breaking contract changes** (removed/renamed fields, commands, tags, or stage values) MUST plan the upgrade path: `migrations/v<from>-v<to>/` with README prompt + one-shot script (ship the upgrade dir + one-shot script in the same repo) — include it in the proposal's What Changes.
|
|
88
88
|
|
|
89
89
|
### 4) Validate
|
|
90
90
|
```bash
|
|
91
|
-
llman
|
|
91
|
+
llman-sdd validate <change-id> --strict --no-interactive
|
|
92
92
|
```
|
|
93
93
|
This MUST pass before proceeding. If TOON parse errors appear, fix quoting:
|
|
94
94
|
values containing commas/colons/brackets must be double-quoted in tabular rows.
|
|
@@ -104,8 +104,8 @@ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note do
|
|
|
104
104
|
### 4b) Single-track feature authoring
|
|
105
105
|
- Planning shell (proposal/design/tasks) may briefly live on the default branch; **do not** edit live `llmanspec/specs/**` on the default branch. After Branch binding, Specs landing and implementation happen on the bound branch.
|
|
106
106
|
- **Single-track**: each capability is ONE `<capability>.feature`. Constraint rules are `@req:<id> @human` scenarios (statement verbatim in the description); executable acceptance scenarios carry `@executable` and link back via `@req:<req_id>`. Never nest scenarios in `Rule:` blocks (the runner skips them).
|
|
107
|
-
- Change shell: `llman
|
|
108
|
-
- Do **not** use `change delta` / solidify / `*.feature.delta.toon`; if an active `*.feature.delta.toon` or a legacy `spec.toon` exists, run `llman
|
|
107
|
+
- Change shell: `llman-sdd change new <change-id>` → fill proposal/design/tasks → `llman-sdd change start <change-id>` (or `change attach`) → **then** edit live specs on the bound branch and commit (Specs landing).
|
|
108
|
+
- Do **not** use `change delta` / solidify / `*.feature.delta.toon`; if an active `*.feature.delta.toon` or a legacy `spec.toon` exists, run `llman-sdd project migrate --kind toon2features` first.
|
|
109
109
|
|
|
110
110
|
### 5) Summarize and suggest next step
|
|
111
111
|
- Enter implementation phase: `llman-sdd-apply`.
|
|
@@ -113,8 +113,8 @@ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note do
|
|
|
113
113
|
|
|
114
114
|
> 💡 Proposal done → next: `llman-sdd-apply` (implement)
|
|
115
115
|
|
|
116
|
-
> For command details run `llman
|
|
117
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
116
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
117
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
118
118
|
{{ unit("skills/validation-hints") }}
|
|
119
119
|
|
|
120
120
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -36,9 +36,9 @@ flowchart LR
|
|
|
36
36
|
- Is not a meta-spec change (SDD templates/process)
|
|
37
37
|
|
|
38
38
|
## Steps
|
|
39
|
-
1. Use `llman
|
|
40
|
-
- If context returns `quality: "unavailable"`, rebuild with `llman
|
|
41
|
-
- Use `llman
|
|
39
|
+
1. Use `llman-sdd context --task "..." --paths "..."` to confirm no spec changes needed.
|
|
40
|
+
- If context returns `quality: "unavailable"`, rebuild with `llman-sdd index rebuild` (default `pageindex`, no model needed).
|
|
41
|
+
- Use `llman-sdd list --specs --json` for keyword-level spec metadata.
|
|
42
42
|
2. Modify the code directly.
|
|
43
43
|
3. If you need to touch `llmanspec/specs/**`, STOP unless you are on a bound non-default change branch (mini change: `change start`/`attach` → edit → commit). Never commit live specs on the default branch — not even for typo or scope-only fixes. Prefer routing live-spec maintenance to `llman-sdd-propose`, or require an existing bound branch.
|
|
44
44
|
4. git commit (message must explain why).
|
|
@@ -46,11 +46,11 @@ flowchart LR
|
|
|
46
46
|
|
|
47
47
|
## Boundary handling
|
|
48
48
|
- If during modification you find a behavioral contract change → STOP, switch to `llman-sdd-propose` (full path).
|
|
49
|
-
- If multiple files are involved and scope is unclear → verify with `llman
|
|
49
|
+
- If multiple files are involved and scope is unclear → verify with `llman-sdd context` first.
|
|
50
50
|
|
|
51
51
|
> 💡 Quick path done → git commit. If you need the full path → `llman-sdd-propose` → `llman-sdd-apply` → `llman-sdd-verify` → `llman-sdd-archive`
|
|
52
52
|
|
|
53
|
-
> For command details run `llman
|
|
54
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
53
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
54
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
55
55
|
|
|
56
56
|
{{ unit("skills/ethics-governance") }}
|
|
@@ -40,7 +40,7 @@ The background agent's job:
|
|
|
40
40
|
|
|
41
41
|
`llman-sdd-wayfinder`'s research tickets delegate to this skill for background resolution; on completion, write back to the ticket proposal and record a one-line gist in the map's Decisions-so-far.
|
|
42
42
|
|
|
43
|
-
> For command details run `llman
|
|
44
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
43
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
44
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
45
45
|
|
|
46
46
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -10,14 +10,14 @@ metadata:
|
|
|
10
10
|
Use this skill to inspect changes, specs, and JSON output.
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
|
-
1. List items: `llman
|
|
13
|
+
1. List items: `llman-sdd list` or `llman-sdd list --specs`.
|
|
14
14
|
2. If the id is unknown or ambiguous, show the list and ask the user to pick.
|
|
15
|
-
3. Show details: `llman
|
|
15
|
+
3. Show details: `llman-sdd show <id>`.
|
|
16
16
|
4. Disambiguate with `--type change|spec` when needed.
|
|
17
17
|
5. For changes, use `--json`: status SSOT fields are `stage` / `specsLanded` / `needsSpecsChange` / `readyToImplement` (never decide apply-readiness from vague "complete artifacts" wording).
|
|
18
18
|
|
|
19
|
-
> For command details run `llman
|
|
20
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
19
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
20
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
21
21
|
|
|
22
22
|
{{ unit("skills/validation-hints") }}
|
|
23
23
|
|
|
@@ -37,13 +37,13 @@ flowchart LR
|
|
|
37
37
|
- **Editing live `llmanspec/specs/**` requires a change**: Branch binding first (`change start` / `attach`), then commit on the bound branch (Specs landing style); **never** compact-rewrite live specs on the default branch.
|
|
38
38
|
|
|
39
39
|
## Workflow
|
|
40
|
-
1. Inventory current specs (`llman
|
|
40
|
+
1. Inventory current specs (`llman-sdd list --specs`).
|
|
41
41
|
2. If archived history is large, run archive freeze first:
|
|
42
|
-
- Preview: `llman
|
|
43
|
-
- Execute: `llman
|
|
42
|
+
- Preview: `llman-sdd archive freeze --dry-run`
|
|
43
|
+
- Execute: `llman-sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
|
|
44
44
|
3. Identify overlapping items across capabilities.
|
|
45
45
|
4. Produce a compaction plan (canonical requirements + keep/merge/remove decisions + migration notes).
|
|
46
|
-
5. Execute and validate (`llman
|
|
46
|
+
5. Execute and validate (`llman-sdd validate --specs --strict --no-interactive`).
|
|
47
47
|
|
|
48
48
|
## Decision Policy
|
|
49
49
|
- Prefer merging when two requirements are semantically equivalent.
|
|
@@ -58,8 +58,8 @@ flowchart LR
|
|
|
58
58
|
|
|
59
59
|
> 💡 After maintenance, new work goes through the normal pipeline: `llman-sdd-propose` (Branch binding + Specs landing) → `llman-sdd-apply` (requires `readyToImplement`) → `llman-sdd-verify` → `llman-sdd-archive`.
|
|
60
60
|
|
|
61
|
-
> For command details run `llman
|
|
62
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
61
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
62
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
63
63
|
|
|
64
64
|
{{ unit("skills/validation-hints") }}
|
|
65
65
|
|
|
@@ -10,8 +10,8 @@ metadata:
|
|
|
10
10
|
Use this skill to validate change/spec format and staleness.
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
|
-
1. Validate one item: `llman
|
|
14
|
-
2. Validate all: `llman
|
|
13
|
+
1. Validate one item: `llman-sdd validate <id>`.
|
|
14
|
+
2. Validate all: `llman-sdd validate --all` (or `--changes` / `--specs`).
|
|
15
15
|
3. Use `--strict` and `--no-interactive` for CI-like checks.
|
|
16
16
|
4. If validation fails, summarize the errors and propose minimal, concrete fixes.
|
|
17
17
|
{% if bdd_enabled %}
|
|
@@ -19,13 +19,13 @@ Use this skill to validate change/spec format and staleness.
|
|
|
19
19
|
- Validate live `.feature` Gherkin and `@req` / dual-write gates on the **bound branch** (Branch binding required).
|
|
20
20
|
- `.feature` is the harness authority — executable GWT lives only in live `.feature` (no solidify; no `feature_delta` / `change delta`).
|
|
21
21
|
- Change lifecycle gates: `change start` / `attach` (Branch binding), `finalize` (close-out; auto commit `archive(sdd): <id>`, `--no-commit` to skip) / `diff` (read-only). `change checkpoint` is removed (no mid-flight archive point; `change finalize` does not require a clean tree).
|
|
22
|
-
- `llman
|
|
22
|
+
- `llman-sdd validate --specs` runs `bdd.run_command` by default.
|
|
23
23
|
- Use `list --specs --json` for `morphology` (includes `dualWriteCount`).
|
|
24
24
|
- Change JSON status fields: `stage` (draft/designed/planned/full) / `specsLanded` / `needsSpecsChange` / `readyToImplement` (`show --json`).
|
|
25
25
|
{% endif %}
|
|
26
26
|
|
|
27
|
-
> For command details run `llman
|
|
28
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
27
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
28
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `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
|
## Steps
|
|
37
|
-
1. Select the change id (or ask the user to pick from `llman
|
|
37
|
+
1. Select the change id (or ask the user to pick from `llman-sdd list --json`).
|
|
38
38
|
2. Run a fast validation gate:
|
|
39
|
-
- `llman
|
|
39
|
+
- `llman-sdd validate <id> --strict --no-interactive`
|
|
40
40
|
- **When diagnosing structural issues (Gherkin parse / `@req` linkage / dual-write / global req_id uniqueness), prefer adding `--no-check`** (skips the potentially slow `bdd.run_command` under BDD-on); run the full `--check` (full mode) only after structural gates are green. Each `FAIL <item_type>/<id>` line lists a failing item (above the Totals line).
|
|
41
41
|
3. Read:
|
|
42
42
|
- Live specs on the feature branch: `llmanspec/specs/**` (`<capability>.feature`) — SSOT
|
|
@@ -69,8 +69,8 @@ flowchart LR
|
|
|
69
69
|
- The two axes may be reviewed in parallel (sub-agents); the report MUST present them separately, MUST NOT merge or cross-rerank (one axis passing must not mask the other failing).
|
|
70
70
|
5. **BDD-on verification (Git-native Partitioned SSOT)** — only when `config.yaml` has a `bdd:` block:
|
|
71
71
|
- Confirm the change is attached and you are on that feature branch.
|
|
72
|
-
- `llman
|
|
73
|
-
- Optional read-only review: `llman
|
|
72
|
+
- `llman-sdd validate --specs`: Gherkin + `@req`/dual-write gates; runs `bdd.run_command` by default (`--no-check` to skip).
|
|
73
|
+
- Optional read-only review: `llman-sdd change diff <id>` (or `--export-patch <path>`). Diff is review/export only — never treat it as an apply step.
|
|
74
74
|
- Check: legacy `spec.toon` / `*.feature.delta.toon` absent; if present, run toon2features first (do not invent a solidify / repair hunt).
|
|
75
75
|
- Next step after verify passes: `llman-sdd-archive` (not inline finalize here).
|
|
76
76
|
{% if bdd_verify_prompt %}
|
|
@@ -80,7 +80,7 @@ flowchart LR
|
|
|
80
80
|
- **CRITICAL** (must fix before archive)
|
|
81
81
|
- **WARNING** (should fix)
|
|
82
82
|
- **SUGGESTION** (nice to have)
|
|
83
|
-
7. **Human review checkpoint**: once the report has no CRITICAL findings and before suggesting archive, run `llman
|
|
83
|
+
7. **Human review checkpoint**: once the report has no CRITICAL findings and before suggesting archive, run `llman-sdd review`:
|
|
84
84
|
- Exit code zero → suggest `llman-sdd-archive` for finalize/archive.
|
|
85
85
|
- Non-zero exit = CRITICAL findings: fix via `llman-sdd-apply`, then re-run review; MUST NOT enter finalize/archive with CRITICAL findings open.
|
|
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
|
-
> For command details run `llman
|
|
92
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
91
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
92
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
93
93
|
|
|
94
94
|
{{ unit("skills/validation-hints") }}
|
|
95
95
|
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
A loose, large idea has arrived — too big for a single agent session, wrapped in fog: the way from here to the **destination** isn't visible yet. This skill finds that way rather than charging at the destination.
|
|
11
11
|
|
|
12
|
-
It charts the path as an llman SDD **change dependency graph** (`llman
|
|
12
|
+
It charts the path as an llman SDD **change dependency graph** (`llman-sdd graph`): each sub-work (ticket) resolves a **decision** rather than delivering a slice, worked one at a time until the way is clear.
|
|
13
13
|
|
|
14
14
|
## Pipeline position
|
|
15
15
|
|
|
@@ -25,7 +25,7 @@ Auxiliary tool, for **pre-planning large work** before the main pipeline. When t
|
|
|
25
25
|
|
|
26
26
|
## Map structure
|
|
27
27
|
|
|
28
|
-
The map is a change (overview proposal); its sub-decisions are `depends_on` child changes. Use `llman
|
|
28
|
+
The map is a change (overview proposal); its sub-decisions are `depends_on` child changes. Use `llman-sdd graph <map-id> --scope active` to visualize the **frontier** (takeable items).
|
|
29
29
|
|
|
30
30
|
The map's `proposal.md` structure:
|
|
31
31
|
|
|
@@ -66,8 +66,8 @@ The map is **deliberately** incomplete. The test for ticket-vs-fog: **can you st
|
|
|
66
66
|
### Chart the map
|
|
67
67
|
1. **Name the destination**: use `llman-sdd-explore`'s grilling branch to pin down what this map is finding its way to.
|
|
68
68
|
2. **Breadth-first scan**: grill again, fanning out rather than deep-diving, surfacing open decisions and the first takeable steps. If **no fog surfaces** — the way is already clear, the whole effort fits one session — you don't need a map; stop and ask the user how to proceed.
|
|
69
|
-
3. **Create the map** (overview change): `llman
|
|
70
|
-
4. **Create the tickets you can specify now** as child changes, then wire blocking edges with `llman
|
|
69
|
+
3. **Create the map** (overview change): `llman-sdd change new <map-id>`, fill Destination/Notes, leave Decisions-so-far empty, write fog into Not yet specified.
|
|
70
|
+
4. **Create the tickets you can specify now** as child changes, then wire blocking edges with `llman-sdd graph` (second pass: ids needed before cross-referencing).
|
|
71
71
|
5. Spin up `llman-sdd-research` background subagents for each research ticket.
|
|
72
72
|
6. Stop — charting is one session's work; resolve nothing by hand.
|
|
73
73
|
|
|
@@ -79,9 +79,9 @@ The map is **deliberately** incomplete. The test for ticket-vs-fog: **can you st
|
|
|
79
79
|
5. Add newly-surfaced tickets (create-then-wire); graduate fog that the answer has made specifiable, clearing it from Not yet specified. If the answer reveals a ticket sits beyond the destination, rule it out of scope rather than resolving it on the route.
|
|
80
80
|
|
|
81
81
|
## Output
|
|
82
|
-
Map change + child decision changes' dependency graph (`llman
|
|
82
|
+
Map change + child decision changes' dependency graph (`llman-sdd graph`). When the way is clear, proceed to `llman-sdd-propose` (Branch binding → Specs landing through `readyToImplement=true`) to collapse decisions into an implementable plan.
|
|
83
83
|
|
|
84
|
-
> For command details run `llman
|
|
85
|
-
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman
|
|
84
|
+
> For command details run `llman-sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
|
|
85
|
+
> "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman-sdd list --specs` or `llman-sdd show <capability>`.
|
|
86
86
|
|
|
87
87
|
{{ unit("skills/structured-protocol") }}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# llman
|
|
1
|
+
# llman-sdd project migrate — collaboration notes
|
|
2
2
|
|
|
3
3
|
## Command intent
|
|
4
4
|
|
|
5
|
-
- `llman
|
|
6
|
-
- `llman
|
|
5
|
+
- `llman-sdd project migrate --kind toon2features`: legacy `spec.toon` → single-track `.feature` (one-shot, idempotent).
|
|
6
|
+
- `llman-sdd project migrate --kind specs-flatten`: pure single-file directories `specs/<cap>/<cap>.feature` → flat `specs/<cap>.feature` (git mv preserves history).
|
|
7
7
|
|
|
8
8
|
## What the agent does
|
|
9
9
|
|
|
10
10
|
- First confirm migration is actually needed (no legacy / single-file dirs → no-op).
|
|
11
11
|
- Run `--dry-run` first and read the precheck report; resolve `conflict` / `misnamed` entries manually — never force.
|
|
12
|
-
- After migrating, run `llman
|
|
12
|
+
- After migrating, run `llman-sdd validate --specs --strict --no-interactive` and the project BDD suite.
|
|
13
13
|
|
|
14
14
|
## What the human does
|
|
15
15
|
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
|
|
25
25
|
## Next steps
|
|
26
26
|
|
|
27
|
-
- `llman
|
|
27
|
+
- `llman-sdd validate --specs --strict --no-interactive`
|
|
28
28
|
- project BDD run (e.g. `cargo test --features bdd`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Ethics Governance
|
|
2
2
|
- `ethics.risk_level`: low — reads/writes this repo and `llmanspec/` only, no outward-facing actions; a skill body may override.
|
|
3
3
|
- `ethics.prohibited_actions`: actions violating the skill body's hard rules; push / PR / external upload without an explicit user request.
|
|
4
|
-
- `ethics.required_evidence`: conclusions backed by command output or file paths; gate state per `llman
|
|
4
|
+
- `ethics.required_evidence`: conclusions backed by command output or file paths; gate state per `llman-sdd validate`.
|
|
5
5
|
- `ethics.refusal_contract`: gate CRITICAL not cleared → refuse to advance; self-repair cap reached → report a blocker.
|
|
6
6
|
- `ethics.escalation_policy`: pause and ask the user before changing SDD contracts/templates or irreversible actions.
|
|
@@ -35,6 +35,6 @@ flowchart TB
|
|
|
35
35
|
|
|
36
36
|
Hard rules:
|
|
37
37
|
1. **First** `change start` / `attach` (Branch binding) to enter Full; **then** edit `llmanspec/specs/**` on the bound non-default branch and commit (Specs landing).
|
|
38
|
-
2. For changes with no live contract edits, set frontmatter `needs_specs_change: false`. Enter apply only when `llman
|
|
39
|
-
3. `change checkpoint` is removed (no mid-flight archive point; `change finalize` does not require a clean tree). Close-out is `llman
|
|
38
|
+
2. For changes with no live contract edits, set frontmatter `needs_specs_change: false`. Enter apply only when `llman-sdd show <id> --json` has `readyToImplement=true` — `Full ∧` every `gateChecks` item passes (specs-landed = `specsLanded ∨ needs_specs_change=false`; ranges are live merge-bases, stored `base_sha` is audit-only).
|
|
39
|
+
3. `change checkpoint` is removed (no mid-flight archive point; `change finalize` does not require a clean tree). Close-out is `llman-sdd change finalize <id>`: it auto-commits `archive(sdd): <id>` (impl diff + rename in one commit); `--no-commit` skips the auto commit for manual/CI histories. Commits on the change branch are free (segmented or finalize single-shot).
|
|
40
40
|
4. **Do not** commit live specs to the default branch just to satisfy the clean-tree gate; if already attached, do not re-run `start`.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Decide from authoritative JSON (never from vague "complete artifacts" wording):
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
llman
|
|
6
|
+
llman-sdd show <id> --json --type change
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Read: `stage`, `specsLanded`, `needsSpecsChange`, `readyToImplement`, `gateChecks` (per-item `pass` + one-line `hint` when failing).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Context
|
|
2
|
-
- Check state before acting: change/spec status comes from `llman
|
|
3
|
-
- Locate relevant specs with `llman
|
|
2
|
+
- Check state before acting: change/spec status comes from `llman-sdd show/list/validate` output.
|
|
3
|
+
- Locate relevant specs with `llman-sdd context --task --paths` before reading spec files.
|
|
4
4
|
|
|
5
5
|
## Goal
|
|
6
6
|
- Reach one verifiable outcome for this command; report result paths and validation state.
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
- Keep changes minimal; never force past a known validation failure.
|
|
11
11
|
|
|
12
12
|
## Workflow
|
|
13
|
-
- Treat `llman
|
|
14
|
-
- Command details: the generated command reference below, or `llman
|
|
13
|
+
- Treat `llman-sdd` command output as the source of truth at every step; run `llman-sdd validate` after touching artifacts.
|
|
14
|
+
- Command details: the generated command reference below, or `llman-sdd <cmd> --help`.
|
|
15
15
|
|
|
16
16
|
## Decision Policy
|
|
17
17
|
- Clarify high-impact ambiguity before proceeding; verify facts yourself, ask the user only for decisions.
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
## Ethics Governance
|
|
23
23
|
- `ethics.risk_level`: low — reads/writes this repo and `llmanspec/` only, no outward-facing actions; a skill body may override.
|
|
24
24
|
- `ethics.prohibited_actions`: actions violating the skill body's hard rules; push / PR / external upload without an explicit user request.
|
|
25
|
-
- `ethics.required_evidence`: conclusions backed by command output or file paths; gate state per `llman
|
|
25
|
+
- `ethics.required_evidence`: conclusions backed by command output or file paths; gate state per `llman-sdd validate`.
|
|
26
26
|
- `ethics.refusal_contract`: gate CRITICAL not cleared → refuse to advance; self-repair cap reached → report a blocker.
|
|
27
27
|
- `ethics.escalation_policy`: pause and ask the user before changing SDD contracts/templates or irreversible actions.
|
|
@@ -15,10 +15,10 @@ Every capability `.feature` (`llmanspec/specs/<capability>.feature` or `llmanspe
|
|
|
15
15
|
- `@manual` requires `@human`. Never combine `@human` with `@executable`.
|
|
16
16
|
|
|
17
17
|
3) Legacy `spec.toon` present (`legacy spec.toon found ... run ... toon2features`):
|
|
18
|
-
Run `llman
|
|
18
|
+
Run `llman-sdd project migrate --kind toon2features --yes`, review the diff, commit.
|
|
19
19
|
|
|
20
20
|
Git-native guardrail:
|
|
21
21
|
- **Branch binding** → **Specs landing**: first `change start` / `attach`, then edit live `.feature` files on the bound non-default branch and commit.
|
|
22
|
-
- Locked rules (report-only): editing/removing an existing `@human` scenario yields a WARNING and never blocks validate / change finalize / change diff; the report names the edited rule by `@req:<id>`. Control points: git branch diff plus `llman
|
|
22
|
+
- Locked rules (report-only): editing/removing an existing `@human` scenario yields a WARNING and never blocks validate / change finalize / change diff; the report names the edited rule by `@req:<id>`. Control points: git branch diff plus `llman-sdd review` / `change diff` output. Legacy lock-ack metadata (frontmatter `rules_touched` / `agent_acked`, the `@agent` tag, the `--yes` ack semantics) is fully removed — no aliases, no compat layer (locked rules are report-only: a warning, never a block).
|
|
23
23
|
- Apply requires `readyToImplement=true` (or `needs_specs_change: false`). Close-out prefers `change finalize`.
|
|
24
24
|
- Do not use `change delta` / solidify / `*.feature.delta.toon`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Archive Cold Backup Guidance
|
|
2
2
|
- If archived directories are growing too large, use cold backup maintenance:
|
|
3
|
-
- Preview freeze candidates: `llman
|
|
4
|
-
- Freeze old archives: `llman
|
|
5
|
-
- Restore when needed: `llman
|
|
3
|
+
- Preview freeze candidates: `llman-sdd archive freeze --dry-run`
|
|
4
|
+
- Freeze old archives: `llman-sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
|
|
5
|
+
- Restore when needed: `llman-sdd archive thaw --change <YYYY-MM-DD-id>`
|
|
6
6
|
- Apply freeze/thaw only to dated archive directories (`YYYY-MM-DD-*`) and keep a small recent window unfrozen when possible.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
|
-
<title>llman
|
|
5
|
+
<title>llman-sdd review — __GENERATED__</title>
|
|
6
6
|
<style>
|
|
7
7
|
body { font-family: system-ui, sans-serif; margin: 2rem; }
|
|
8
8
|
.critical { color: #b91c1c; font-weight: 700; }
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
</style>
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
|
-
<h1>llman
|
|
16
|
+
<h1>llman-sdd review</h1>
|
|
17
17
|
<p>critical=<span class="critical">__CRITICAL__</span>
|
|
18
18
|
warning=<span class="warning">__WARNING__</span></p>
|
|
19
19
|
<h2>Signals</h2>
|
|
@@ -16,13 +16,13 @@ disable-model-invocation: true
|
|
|
16
16
|
|
|
17
17
|
### 0) 门禁 + 状态
|
|
18
18
|
```bash
|
|
19
|
-
llman
|
|
19
|
+
llman-sdd show <change-id> --json --type change
|
|
20
20
|
```
|
|
21
|
-
> 阶段判定:用 `llman
|
|
21
|
+
> 阶段判定:用 `llman-sdd show <id> --json --type change` 的 `stage` / `readyToImplement` 字段;完整判定表见 llman-sdd-apply。
|
|
22
22
|
|
|
23
23
|
- 须在绑定的非默认分支上。
|
|
24
24
|
- `readyToImplement` 不为 true → STOP(先 Specs landing 或 `needs_specs_change: false`);**不要**直接 finalize。
|
|
25
|
-
- 进度以 `tasks.md` checkbox 为准(或 `llman
|
|
25
|
+
- 进度以 `tasks.md` checkbox 为准(或 `llman-sdd list` 的任务计数);实现时仍须阅读 `tasks.md`、proposal/design 与绑定分支上的 live `llmanspec/specs/**`(SSOT)。
|
|
26
26
|
|
|
27
27
|
### 1) 循环:实施 → 测试
|
|
28
28
|
对每个未完成 task:
|
|
@@ -33,7 +33,7 @@ llman sdd show <change-id> --json --type change
|
|
|
33
33
|
|
|
34
34
|
### 2) 校验
|
|
35
35
|
```bash
|
|
36
|
-
llman
|
|
36
|
+
llman-sdd validate <change-id> --strict --no-interactive
|
|
37
37
|
```
|
|
38
38
|
失败则修复重试(自修复预算与 `llman-sdd-apply` 一致:上限 8 轮)。
|
|
39
39
|
|
|
@@ -42,7 +42,7 @@ llman sdd validate <change-id> --strict --no-interactive
|
|
|
42
42
|
|
|
43
43
|
### 4) 归档
|
|
44
44
|
```bash
|
|
45
|
-
llman
|
|
45
|
+
llman-sdd change finalize <change-id>
|
|
46
46
|
```
|
|
47
47
|
(工作区可脏;自动合并(squash 缺省)+ 文档改名 + **自动提交** `archive(sdd): <change-id>` 单进程完成。`--no-commit` 跳过自动提交用于手动/CI 历史——此时自行 `git add -A && git commit -m "archive(sdd): <change-id>"`。)
|
|
48
48
|
|
|
@@ -71,5 +71,5 @@ push / Hosting PR 仅当用户明确要求。
|
|
|
71
71
|
- `ethics.refusal_contract`: 门禁或校验自修复 8 轮仍失败 → 报告 blocker,禁止强行归档
|
|
72
72
|
- `ethics.escalation_policy`: 若改动 SDD 工作流 spec/模板,归档前暂停请用户确认
|
|
73
73
|
|
|
74
|
-
> 命令细节用 `llman
|
|
75
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
74
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
75
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
@@ -42,7 +42,7 @@ flowchart LR
|
|
|
42
42
|
## Commit 策略
|
|
43
43
|
|
|
44
44
|
- **change 分支上提交自由**(无存档点概念:`change finalize` 不要求干净树):可按 task/里程碑分段提交(利于 review),也可保持工作区不提交、交给 finalize 一次收尾——两条路都是一等公民。`change checkpoint` 已不存在(调用它以非零退出报错并指向 finalize),因此没有「中途存档点」要维护;`change finalize` 对两种形态都原生支持(不要求干净树)。
|
|
45
|
-
- **默认收尾**:全部 task 过门禁且 verify 全绿后,`llman
|
|
45
|
+
- **默认收尾**:全部 task 过门禁且 verify 全绿后,`llman-sdd change finalize <id>` 自动提交 `archive(sdd): <change-id>`(未提交的实现 diff + frontmatter + archive 改名一次提交)。不要在 apply 循环内 finalize。`--no-commit` 可跳过自动提交(手动/CI 历史、pre-commit hook 冲突场景)。
|
|
46
46
|
- **blocker 中断**:必须因 blocker STOP 时,先做**一次** WIP commit(如 `wip(sdd): <change-id> <摘要>`)保全现场,再报告。
|
|
47
47
|
|
|
48
48
|
## 步骤
|
|
@@ -51,18 +51,18 @@ flowchart LR
|
|
|
51
51
|
- 读取并遵守:`llmanspec/config.yaml`、`AGENTS.md`(若存在)。
|
|
52
52
|
- `git status --porcelain`:
|
|
53
53
|
- 若工作区不干净且改动不属于当前 change:先 `git stash push -u -m "llman-sdd-apply autopilot backup"` 做备份。
|
|
54
|
-
- 运行 `llman
|
|
54
|
+
- 运行 `llman-sdd validate --all --strict --no-interactive`:
|
|
55
55
|
- 若失败且与当前 change 无关,先停下报告(工件不一致会导致实现无法以 SSOT 驱动)。
|
|
56
|
-
- **检查 spec valid_scope 完整性**:使用 `llman
|
|
56
|
+
- **检查 spec valid_scope 完整性**:使用 `llman-sdd list --specs --json` 列出所有 spec,然后对每个 spec 验证其 `valid_scope` 中的每个路径是否存在于磁盘上。若存在缺失的文件/目录,停下并建议更新 spec(从 `valid_scope` 中移除已删除的路径)。
|
|
57
57
|
|
|
58
58
|
### 1) 选择变更 id 并检查前置条件
|
|
59
59
|
- 若已提供 change id,直接使用。
|
|
60
|
-
- 否则从上下文推断;若不明确,运行 `llman
|
|
60
|
+
- 否则从上下文推断;若不明确,运行 `llman-sdd list --json` 并让用户选择。
|
|
61
61
|
- 始终说明:"使用变更:<id>",并告知如何覆盖。
|
|
62
|
-
- 确认已在经 `llman
|
|
62
|
+
- 确认已在经 `llman-sdd change start <id>` 或 `change attach <id>` 绑定的非默认 feature 分支上(仅在需要重绑时用 `--force`)。分支上的 specs/features 即 SSOT——不要在 `changes/<id>/specs/` 下编写。
|
|
63
63
|
{{ unit("skills/stage-guard") }}
|
|
64
|
-
- 使用 `llman
|
|
65
|
-
- 若 context 不可用,运行 `llman
|
|
64
|
+
- 使用 `llman-sdd context --task "<proposal 中的目标>" --paths "<specs 中的 scope>"` 获取相关 specs。
|
|
65
|
+
- 若 context 不可用,运行 `llman-sdd index rebuild` 后重试。
|
|
66
66
|
|
|
67
67
|
### 2) 阅读 SSOT 工件
|
|
68
68
|
必须通读以下文件:
|
|
@@ -89,8 +89,8 @@ flowchart LR
|
|
|
89
89
|
运行项目门禁命令(根据项目实际选择):
|
|
90
90
|
- 相关测试集:`just test` 或 `cargo test --all`
|
|
91
91
|
- 格式/lint:`just check` 或 `just lint` + `just fmt`
|
|
92
|
-
- Git-native:留在绑定 feature 分支;按需编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录 `llmanspec/specs/<capability>/` 内主文件;规则 `@human`,验收 `@executable`);spec 改动后跑 `llman
|
|
93
|
-
- SDD 校验:`llman
|
|
92
|
+
- Git-native:留在绑定 feature 分支;按需编辑 live `llmanspec/specs/<capability>.feature`(扁平,或目录 `llmanspec/specs/<capability>/` 内主文件;规则 `@human`,验收 `@executable`);spec 改动后跑 `llman-sdd validate --specs`;分支上可自由提交(分段,或留脏交给 finalize)。勿使用 `change delta` / solidify / feature_delta;`change checkpoint` 已移除。
|
|
93
|
+
- SDD 校验:`llman-sdd validate <id> --strict --no-interactive`
|
|
94
94
|
|
|
95
95
|
**若失败 → 进入自修复循环(不要问要不要继续):**
|
|
96
96
|
1. 解析失败原因(测试失败 / lint / 格式 / 校验错误)。
|
|
@@ -107,7 +107,7 @@ flowchart LR
|
|
|
107
107
|
|
|
108
108
|
**自修复上限 8 轮**;超过仍不通过视为 blocker:停止并输出 blocker 报告(含最后一次失败命令与输出摘要、你已尝试的修复)。
|
|
109
109
|
|
|
110
|
-
**人审检查点(每个 task 批次门禁通过后)**:批次全绿后、进入下一批次或输出完成报告前,运行 `llman
|
|
110
|
+
**人审检查点(每个 task 批次门禁通过后)**:批次全绿后、进入下一批次或输出完成报告前,运行 `llman-sdd review`:
|
|
111
111
|
|
|
112
112
|
- 退出码为零 → 继续。
|
|
113
113
|
- 非零退出 = 存在 CRITICAL 发现:STOP,修复后重跑 review;MUST NOT 带着 CRITICAL 进入下一批次或输出完成报告。
|
|
@@ -118,8 +118,8 @@ flowchart LR
|
|
|
118
118
|
|
|
119
119
|
> 💡 实施完成 → 下一步 `llman-sdd-verify`(验证)
|
|
120
120
|
|
|
121
|
-
> 命令细节用 `llman
|
|
122
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
121
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
122
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
123
123
|
|
|
124
124
|
{{ unit("skills/validation-hints") }}
|
|
125
125
|
|
|
@@ -59,7 +59,7 @@ metadata:
|
|
|
59
59
|
## 输出
|
|
60
60
|
候选清单(文本;可选 HTML 报告写 OS temp dir 不落 repo)+ 用户选定后的逐问深挖决策记录(回写 proposal;合约变更须经 Specs landing 才回写 live `<capability>.feature`)。
|
|
61
61
|
|
|
62
|
-
> 命令细节用 `llman
|
|
63
|
-
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman
|
|
62
|
+
> 命令细节用 `llman-sdd <cmd> --help` 查看;命令参考以 CLI 为准,skill 不内嵌命令表。
|
|
63
|
+
> 文中「规约」= 本项目 `llmanspec/specs/` 下的 `.feature` 文件;用 `llman-sdd list --specs` / `llman-sdd show <capability>` 查全文。
|
|
64
64
|
|
|
65
65
|
{{ unit("skills/structured-protocol") }}
|