@llman-sdd/core 0.1.0 → 0.1.2

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 (62) hide show
  1. package/package.json +7 -2
  2. package/templates/en/agents-root-stub.md +9 -0
  3. package/templates/en/llmanspec-agents-stub.md +6 -0
  4. package/templates/en/skills/llman-sdd-apply-cycle.md +75 -0
  5. package/templates/en/skills/llman-sdd-apply.md +126 -0
  6. package/templates/en/skills/llman-sdd-arch-review.md +65 -0
  7. package/templates/en/skills/llman-sdd-archive.md +85 -0
  8. package/templates/en/skills/llman-sdd-continue.md +41 -0
  9. package/templates/en/skills/llman-sdd-draft.md +64 -0
  10. package/templates/en/skills/llman-sdd-explore.md +78 -0
  11. package/templates/en/skills/llman-sdd-ff.md +38 -0
  12. package/templates/en/skills/llman-sdd-graph.md +74 -0
  13. package/templates/en/skills/llman-sdd-onboard.md +34 -0
  14. package/templates/en/skills/llman-sdd-propose.md +120 -0
  15. package/templates/en/skills/llman-sdd-quick.md +56 -0
  16. package/templates/en/skills/llman-sdd-research.md +46 -0
  17. package/templates/en/skills/llman-sdd-show.md +24 -0
  18. package/templates/en/skills/llman-sdd-specs-compact.md +66 -0
  19. package/templates/en/skills/llman-sdd-validate.md +32 -0
  20. package/templates/en/skills/llman-sdd-verify.md +96 -0
  21. package/templates/en/skills/llman-sdd-wayfinder.md +87 -0
  22. package/templates/en/units/migrate-prompt.md +28 -0
  23. package/templates/en/units/skills/ethics-governance.md +6 -0
  24. package/templates/en/units/skills/git-native-flow-brief.md +9 -0
  25. package/templates/en/units/skills/git-native-flow.md +40 -0
  26. package/templates/en/units/skills/human-readable-summary.md +10 -0
  27. package/templates/en/units/skills/stage-guard.md +17 -0
  28. package/templates/en/units/skills/structured-protocol.md +27 -0
  29. package/templates/en/units/skills/validation-hints.md +24 -0
  30. package/templates/en/units/spec/feature-contract.md +29 -0
  31. package/templates/en/units/workflow/archive-freeze-guidance.md +6 -0
  32. package/templates/shared/review.html +45 -0
  33. package/templates/zh-Hans/agents-root-stub.md +9 -0
  34. package/templates/zh-Hans/llmanspec-agents-stub.md +6 -0
  35. package/templates/zh-Hans/skills/llman-sdd-apply-cycle.md +75 -0
  36. package/templates/zh-Hans/skills/llman-sdd-apply.md +126 -0
  37. package/templates/zh-Hans/skills/llman-sdd-arch-review.md +65 -0
  38. package/templates/zh-Hans/skills/llman-sdd-archive.md +85 -0
  39. package/templates/zh-Hans/skills/llman-sdd-continue.md +41 -0
  40. package/templates/zh-Hans/skills/llman-sdd-draft.md +64 -0
  41. package/templates/zh-Hans/skills/llman-sdd-explore.md +78 -0
  42. package/templates/zh-Hans/skills/llman-sdd-ff.md +38 -0
  43. package/templates/zh-Hans/skills/llman-sdd-graph.md +74 -0
  44. package/templates/zh-Hans/skills/llman-sdd-onboard.md +34 -0
  45. package/templates/zh-Hans/skills/llman-sdd-propose.md +119 -0
  46. package/templates/zh-Hans/skills/llman-sdd-quick.md +56 -0
  47. package/templates/zh-Hans/skills/llman-sdd-research.md +46 -0
  48. package/templates/zh-Hans/skills/llman-sdd-show.md +24 -0
  49. package/templates/zh-Hans/skills/llman-sdd-specs-compact.md +66 -0
  50. package/templates/zh-Hans/skills/llman-sdd-validate.md +32 -0
  51. package/templates/zh-Hans/skills/llman-sdd-verify.md +96 -0
  52. package/templates/zh-Hans/skills/llman-sdd-wayfinder.md +87 -0
  53. package/templates/zh-Hans/units/migrate-prompt.md +28 -0
  54. package/templates/zh-Hans/units/skills/ethics-governance.md +6 -0
  55. package/templates/zh-Hans/units/skills/git-native-flow-brief.md +9 -0
  56. package/templates/zh-Hans/units/skills/git-native-flow.md +40 -0
  57. package/templates/zh-Hans/units/skills/human-readable-summary.md +10 -0
  58. package/templates/zh-Hans/units/skills/stage-guard.md +17 -0
  59. package/templates/zh-Hans/units/skills/structured-protocol.md +27 -0
  60. package/templates/zh-Hans/units/skills/validation-hints.md +24 -0
  61. package/templates/zh-Hans/units/spec/feature-contract.md +29 -0
  62. package/templates/zh-Hans/units/workflow/archive-freeze-guidance.md +6 -0
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: "llman-sdd-graph"
3
+ description: "Visualize llman SDD change dependency relationships as a mermaid graph. Use to understand blocking and depends_on relationships for planning or inspection. Auxiliary tool — not part of the main implementation pipeline."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Dependency Graph
9
+
10
+ Use this skill to visualize dependencies between changes.
11
+
12
+ ## Pipeline Position
13
+
14
+ ```mermaid
15
+ flowchart LR
16
+ pipeline["Main pipeline:<br/>propose → apply → verify → archive"]
17
+ graph["📎 llman-sdd-graph<br/>Dependency visualization (utility)"]
18
+ graph -.->|available at any stage| pipeline
19
+
20
+ style graph fill:#e8f4e8,stroke:#28a745,stroke-width:2px
21
+ ```
22
+
23
+ > 📎 Utility tool, available at any pipeline stage. To propose → `llman-sdd-propose`. To implement → `llman-sdd-apply` only when `readyToImplement=true`.
24
+
25
+ ## Usage
26
+
27
+ **Focus view (seed mode):** Show a specific change and its relationship neighborhood.
28
+
29
+ ```bash
30
+ llman sdd graph <change-id> # the change + direct relationships (depth 1)
31
+ llman sdd graph <change-id> --depth 3 # recurse 3 levels
32
+ llman sdd graph <change-id> --depth 0 # just the change itself
33
+ ```
34
+
35
+ Seed mode traverses three directions: upstream (depends_on), downstream (depended by), and blocks, automatically discovering active and archived changes.
36
+
37
+ **Global view (scope mode):** Show all changes by scope.
38
+
39
+ ```bash
40
+ llman sdd graph # all active changes (default)
41
+ llman sdd graph --scope archived # all archived (completed) changes
42
+ llman sdd graph --scope all # everything
43
+ ```
44
+
45
+ ## Output
46
+
47
+ - Output is a mermaid flowchart to stdout, pipeable to a file or renderer:
48
+ ```
49
+ llman sdd graph c50 > deps.mmd
50
+ llman sdd graph c50 --depth 2 | mmdc -i - -o deps.png
51
+ ```
52
+ - Archived (completed) changes are shown with "✓ done" suffix and green highlight.
53
+ - When the graph contains disconnected groups, each group renders as an independent subgraph labeled "Active", "Done", or "Mixed".
54
+
55
+ ## Proposal frontmatter format
56
+
57
+ ```yaml
58
+ ---
59
+ depends_on:
60
+ - other-change-id
61
+ blocks:
62
+ - blocked-change-id
63
+ ---
64
+
65
+ ## Why
66
+ ...
67
+ ```
68
+
69
+ > 💡 This is just a utility — main flow: `llman-sdd-propose` (Branch binding + Specs landing) → `llman-sdd-apply` (requires `readyToImplement`) → `llman-sdd-verify` → `llman-sdd-archive`.
70
+
71
+ > For command details run `llman sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
72
+ > "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman sdd list --specs` or `llman sdd show <capability>`.
73
+
74
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: "llman-sdd-onboard"
3
+ description: "Onboard to the llman SDD workflow in a repository."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Onboard
9
+
10
+ Use this skill to onboard to llman SDD in a repository.
11
+
12
+ ## Steps
13
+ 1. Read `llmanspec/config.yaml` for project context, conventions, and rules.
14
+ 2. Use `llman sdd list --specs --json` to see all specs at a glance.
15
+ - Or use `llman sdd context --task "<task description>" --paths "<files>"` to find task-relevant specs.
16
+ - If context returns `quality: "unavailable"`, run `llman sdd index rebuild` first (default backend is `pageindex`; it needs `LLMAN_SDD_INDEX_CHAT_MODEL` for retrieval but not for rebuilding).
17
+ 3. Read only the `direct` spec files from context output.
18
+ 4. Assess change scale (see triage rules): behavioural contract change → full SDD; implementation change → quick path.
19
+ 5. Advance by path:
20
+ - **Full path**: planning shell (draft → designed [+design.md] → planned [+tasks.md]) → Branch binding → Specs landing (or `needs_specs_change: false`) → `readyToImplement=true` → apply → verify → finalize/archive (skill navigation: propose → apply → verify → archive).
21
+ - **Quick path**: no MUST/SHALL change; edit code and commit (live specs only on a bound branch — see `llman-sdd-quick`).
22
+ 6. Use `llman sdd graph` to visualize change dependencies.
23
+
24
+ > For command details run `llman sdd <cmd> --help`; the CLI is the command reference — skills embed no command tables.
25
+ > "Spec" here = a `.feature` file under this project's `llmanspec/specs/`; run `llman sdd list --specs` or `llman sdd show <capability>`.
26
+
27
+ ## Notes
28
+ - `llmanspec/config.yaml` holds project context, rules, locale, and skills paths.
29
+ - Locale affects templates/skills only; CLI stays English.
30
+ - Refresh skills with `llman sdd init --update`.
31
+
32
+ {{ unit("skills/validation-hints") }}
33
+
34
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: "llman-sdd-propose"
3
+ description: "Create an llman SDD change proposal with planning artifacts (proposal/tasks; `change start`/`attach` first, then edit live specs/features on the bound branch). Use for MUST/SHALL behavioral contract changes."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Propose
9
+
10
+ Create a new change with planning artifacts (proposal + tasks; design optional), **first** `change start` (or `attach`) for Branch binding, **then** edit live `llmanspec/specs/<capability>.feature` (flat, or directory main file) on the bound branch (Specs landing), validate, and suggest next actions.
11
+
12
+ ## Pipeline Position
13
+
14
+ {{ unit("skills/git-native-flow") }}
15
+ {{ unit("skills/human-readable-summary") }}
16
+
17
+ ### Skill navigation (not the lifecycle; shows current skill only)
18
+
19
+ ```mermaid
20
+ flowchart LR
21
+ explore["llman-sdd-explore<br/>Explore"] --> propose
22
+ propose["★ llman-sdd-propose ★<br/>Propose (Branch binding + Specs landing)"]
23
+ propose --> apply["llman-sdd-apply<br/>Implement"]
24
+ apply --> verify["llman-sdd-verify<br/>Verify"]
25
+ verify --> archive["llman-sdd-archive<br/>Archive"]
26
+
27
+ style propose fill:#fff3cd,stroke:#ffc107,stroke-width:3px
28
+ ```
29
+
30
+ > 📍 You are in propose: the Git-native path above is **planning shell (draft → designed → planned) → Branch binding → Specs landing** (until `readyToImplement=true`) → next: `llman-sdd-apply`
31
+ > 📎 For small changes (no behavioral contract changes), use `llman-sdd-quick` (quick path)
32
+
33
+ ## Hard Constraints
34
+
35
+ - **Non-blocking change id**: if the user supplied an id, use it; otherwise derive a valid kebab-case id from the task description (verb prefix, passes the CLI id check, follows the naming convention declared in `llmanspec/AGENTS.md`), announce the chosen id and how to override, and continue — MUST NOT wait for confirmation (ids are cheap to change before Branch binding). Only route to `llman-sdd-draft` when the user wants to capture an idea (draft, no id).
36
+ - **Live specs are SSOT**: edit `llmanspec/specs/**` only **after** Branch binding, on the **bound non-default branch** (Specs landing). **Do not** edit live specs on the default branch; **do not** author under `changes/<id>/specs/` or use `change delta` (removed). The planning shell may briefly live on the default branch.
37
+ - **Don't ask "should I continue?"**: execute the full propose phase in one pass, generate artifacts and validate.
38
+ {% if extra_skill_continue %}
39
+ - **If change already exists**: STOP. If `readyToImplement=true`, suggest `llman-sdd-apply`; otherwise use `llman-sdd-continue` to finish Branch binding / Specs landing, or fill the planning shell.
40
+ {% else %}
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
+ {% 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 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
+
45
+ ## Quick-capture routing
46
+
47
+ If the user just wants to **capture an idea** (e.g. "draft a proposal", "note down X", "remember to do Y later") without full planning, route them to the `llman-sdd-draft` skill — it creates a `proposal.md`-only draft shell via `change new --from` (no id asked, no tasks/specs/attach). Full propose (triage + tasks → `change start`/`attach` → Specs landing) starts here.
48
+
49
+ ## Steps
50
+
51
+ ### 0) Preflight
52
+ - Read `llmanspec/config.yaml` for project context, rules, locale.
53
+ - `llman sdd validate --all --strict --no-interactive`: ensure current artifacts are clean.
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 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
+
57
+ ### 1) Assess change scale (triage)
58
+ 1. Classify:
59
+ - **Behavioral contract change** (modify MUST/SHALL, change external behavior) → full SDD workflow
60
+ - **Implementation change** (refactor, typo, perf) → quick path via `llman-sdd-quick`
61
+ - **Meta-spec change** (SDD templates/process) → full SDD workflow
62
+ - When uncertain, choose full SDD (conservative).
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
+ 3. Gather input:
66
+ - A short description of the change
67
+ - A change id (user-supplied if given; otherwise derive it with the non-blocking rule above and announce it)
68
+ - The impacted capability/capabilities (to name `specs/<capability>`)
69
+
70
+ ### 2) Ensure project is initialized
71
+ - `llmanspec/` must exist; if missing, tell the user to run `llman sdd init`, then STOP.
72
+
73
+ ### 3) Create change directory and artifacts
74
+ - Prefer `llman sdd change new <change-id>` for the draft `proposal.md` shell (or create `llmanspec/changes/<change-id>/` manually).
75
+ {% if extra_skill_continue %}
76
+ - If the change already exists, STOP and suggest `llman-sdd-continue`.
77
+ {% else %}
78
+ - If the change already exists, STOP and suggest filling missing artifacts or `llman-sdd-apply` (optionally enable continue via `extra_skills`).
79
+ {% endif %}
80
+ - Flesh out `proposal.md` (Why / What Changes / Capabilities / Impact)
81
+ - `design.md` only when tradeoffs/migrations matter
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
+ - `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 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
+ - **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 sdd show <id> --json` has `readyToImplement=true`.
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
+
89
+ ### 4) Validate
90
+ ```bash
91
+ llman sdd validate <change-id> --strict --no-interactive
92
+ ```
93
+ This MUST pass before proceeding. If TOON parse errors appear, fix quoting:
94
+ values containing commas/colons/brackets must be double-quoted in tabular rows.
95
+
96
+ ### 4a) Optional BDD runner (`bdd:` block)
97
+ - Read `llmanspec/config.yaml`. Is there a `bdd:` block?
98
+ - **Yes**: `validate --check` runs the harness; authoring follows 4b regardless.
99
+ - **No**: if this change involves executable behavior scenarios (Given/When/Then the user will want to run), ask **once, up front**: "This change looks like it has executable behavior. Enable a `bdd:` runner block so scenarios can be validated as `.feature` files? (adds a `bdd:` block to `config.yaml` — runner only, does not change the lifecycle.)"
100
+ - If **yes**: show the exact `bdd:` block to add (pick a `run_command` matching the project's test framework — `cargo test --features bdd` for rstest-bdd, `pytest {feature_dir} -k {feature_name} -v` for pytest-bdd). Let the user confirm or edit it, write it to `config.yaml`, then proceed with 4b rules.
101
+ - If **no**: features still validate structurally; only runner execution is skipped.
102
+ - **Do NOT silently add the `bdd:` block** — always ask first. Adding it changes how `validate --check` behaves project-wide.
103
+
104
+ ### 4b) Single-track feature authoring
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
+ - **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 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
+
110
+ ### 5) Summarize and suggest next step
111
+ - Enter implementation phase: `llman-sdd-apply`.
112
+ - If you need to think more: `llman-sdd-explore`.
113
+
114
+ > 💡 Proposal done → next: `llman-sdd-apply` (implement)
115
+
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
+ {{ unit("skills/validation-hints") }}
119
+
120
+ {{ unit("skills/structured-protocol") }}
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: "llman-sdd-quick"
3
+ description: "Handle small code changes that do NOT modify behavioral contracts — no MUST/SHALL changes, no spec modifications. Use for refactors, typo fixes, or perf tweaks. Switch to propose for anything affecting externally observable behavior."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Quick Path
9
+
10
+ Use this path for small changes that don't modify behavioral contracts.
11
+
12
+ ## Pipeline Position
13
+
14
+ ```mermaid
15
+ flowchart LR
16
+ explore["llman-sdd-explore<br/>Explore"] --> quick
17
+
18
+ quick["★ llman-sdd-quick ★<br/>Quick path (you are here)"]
19
+ quick --> commit["git commit<br/>Done"]
20
+
21
+ explore --> propose["Full path:<br/>propose (Branch binding + Specs landing) → apply → verify → archive"]
22
+ propose --> apply["..."]
23
+ apply --> verify["..."]
24
+ verify --> archive["..."]
25
+
26
+ style quick fill:#d4edda,stroke:#28a745,stroke-width:3px
27
+ ```
28
+
29
+ > 📍 Quick path: no behavioral contract changes, modify code and commit directly. If you find you need to change a contract → STOP, switch to full path `llman-sdd-propose`
30
+ > 🗺️ Full path includes Git-native Branch binding + Specs landing (Specs landing is not a separate skill)
31
+
32
+ ## Conditions (all must hold)
33
+ - Does not change any MUST/SHALL-defined externally observable behavior
34
+ - Does not cross capability boundaries
35
+ - Does not involve migration or compatibility concerns
36
+ - Is not a meta-spec change (SDD templates/process)
37
+
38
+ ## Steps
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
+ 2. Modify the code directly.
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
+ 4. git commit (message must explain why).
45
+ 5. No change directory, no archive needed.
46
+
47
+ ## Boundary handling
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 sdd context` first.
50
+
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
+
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
+
56
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: "llman-sdd-research"
3
+ description: "Delegate external research to a background agent. Use when the user needs official docs/API/source facts gathered, or wants the reading legwork delegated so they can keep working."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Research
9
+
10
+ Spin up a **background agent** to do the research, so you keep working while it reads.
11
+
12
+ ## Pipeline position
13
+
14
+ Auxiliary tool, usable at any stage. Common in explore/wayfinder to provide factual input for decisions. Output is written back to the change's proposal "Further Notes" section for later stages to consume.
15
+
16
+ > 📍 Standalone optional skill; research output feeds the main flow's explore/propose.
17
+
18
+ ## Responsibilities
19
+
20
+ The background agent's job:
21
+
22
+ 1. Investigate the question against **primary sources** — official docs, source code, specs, first-party APIs — not secondary write-ups. Follow every claim back to the source that owns it.
23
+ 2. Write findings to a single Markdown file, citing each claim's source.
24
+ 3. Save location (follow the repo's own convention if it has one): **default** to `llmanspec/changes/<current-change>/research/<topic>.md` (change docs, **not** live specs). Write to `docs/research/` only when the topic spans multiple changes and will still be referenced after archiving; **never** put single-change decisions or decaying deep-dives into `docs/research/`.
25
+ 4. **MUST NOT** edit `llmanspec/specs/**` in this skill. If research shows MUST/SHALL must change → suggest `llman-sdd-propose` (Branch binding → Specs landing).
26
+
27
+ ## Steps
28
+
29
+ 1. Clarify the research question (confirm with the user; if fuzzy, sharpen to a falsifiable one).
30
+ 2. Use the Agent tool `subagent_type=general-purpose` + `run_in_background: true` to launch the background research, with a prompt containing:
31
+ - The question statement.
32
+ - A requirement to cite only primary sources, with source URL/path per claim.
33
+ - The output file path (default `llmanspec/changes/<id>/research/<topic>.md`).
34
+ - A word limit (suggested: focus on facts, prose narrative < 1500 words).
35
+ 3. Continue main-flow work while it runs in the background; receive a notification when done.
36
+ 4. Read the output, summarize key conclusions back into the current change's `proposal.md` "Further Notes" section (with a file pointer).
37
+ 5. If the research reveals a decision is needed, suggest entering `llman-sdd-explore`'s grilling branch.
38
+
39
+ ## Cooperation with wayfinder
40
+
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
+
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
+
46
+ {{ unit("skills/structured-protocol") }}
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: "llman-sdd-show"
3
+ description: "Inspect llmanspec changes and specs quickly."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Show
9
+
10
+ Use this skill to inspect changes, specs, and JSON output.
11
+
12
+ ## Steps
13
+ 1. List items: `llman sdd list` or `llman sdd list --specs`.
14
+ 2. If the id is unknown or ambiguous, show the list and ask the user to pick.
15
+ 3. Show details: `llman sdd show <id>`.
16
+ 4. Disambiguate with `--type change|spec` when needed.
17
+ 5. For changes, use `--json`: status SSOT fields are `stage` / `specsLanded` / `needsSpecsChange` / `readyToImplement` (never decide apply-readiness from vague "complete artifacts" wording).
18
+
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
+
22
+ {{ unit("skills/validation-hints") }}
23
+
24
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: "llman-sdd-specs-compact"
3
+ description: "Human-triggered maintenance tool. Compacts and deduplicates llman SDD specs after many archived changes — merges redundant requirements and scenarios while preserving all normative behavior. NOT part of the regular pipeline: only run when the user explicitly asks to compact specs."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Specs Compact
9
+
10
+ Use this skill to compact specs without changing normative behavior.
11
+
12
+ ## Pipeline Position
13
+
14
+ ```mermaid
15
+ flowchart LR
16
+ archive["llman-sdd-archive<br/>After archiving"] --> compact
17
+ compact["📎 llman-sdd-specs-compact<br/>Compact specs (maintenance)"]
18
+
19
+ style compact fill:#e8f4e8,stroke:#28a745,stroke-width:2px
20
+ ```
21
+
22
+ > 📎 Maintenance tool, typically run after accumulating many archives. For daily development → `llman-sdd-propose` (Branch binding + Specs landing) / `llman-sdd-apply` (requires `readyToImplement`).
23
+
24
+ ## Context
25
+ - Specs grow bloated with duplicate requirements/scenarios as changes accumulate.
26
+ - Compaction must remain verifiable and regressible.
27
+ - When archive history is too large, it interferes with compaction review and navigation.
28
+
29
+ ## Goal
30
+ - Identify and merge redundant requirements/scenarios.
31
+ - Form a more compact and maintainable spec structure.
32
+
33
+ ## Constraints
34
+ - Don't delete normative behavior without explicit replacement.
35
+ - Try to keep requirement titles stable.
36
+ - Each retained requirement must have at least one valid scenario.
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
+
39
+ ## Workflow
40
+ 1. Inventory current specs (`llman sdd list --specs`).
41
+ 2. If archived history is large, run archive freeze first:
42
+ - Preview: `llman sdd archive freeze --dry-run`
43
+ - Execute: `llman sdd archive freeze --before <YYYY-MM-DD> --keep-recent <N>`
44
+ 3. Identify overlapping items across capabilities.
45
+ 4. Produce a compaction plan (canonical requirements + keep/merge/remove decisions + migration notes).
46
+ 5. Execute and validate (`llman sdd validate --specs --strict --no-interactive`).
47
+
48
+ ## Decision Policy
49
+ - Prefer merging when two requirements are semantically equivalent.
50
+ - Only extract shared spec text when reference relationships are clear.
51
+ - When archive directory is noisy, suggest freezing first before compacting.
52
+ - If compaction would change external behavior, pause and ask the user first.
53
+
54
+ ## Output Contract
55
+ - Output compaction plan grouped by capability.
56
+ - Include: keep/merge/remove decisions with rationale.
57
+ - Include validation commands and expected results.
58
+
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
+
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
+
64
+ {{ unit("skills/validation-hints") }}
65
+
66
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: "llman-sdd-validate"
3
+ description: "Validate llmanspec changes and specs with actionable fixes."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Validate
9
+
10
+ Use this skill to validate change/spec format and staleness.
11
+
12
+ ## Steps
13
+ 1. Validate one item: `llman sdd validate <id>`.
14
+ 2. Validate all: `llman sdd validate --all` (or `--changes` / `--specs`).
15
+ 3. Use `--strict` and `--no-interactive` for CI-like checks.
16
+ 4. If validation fails, summarize the errors and propose minimal, concrete fixes.
17
+ {% if bdd_enabled %}
18
+ 5. **BDD checks (Git-native Partitioned SSOT)**:
19
+ - Validate live `.feature` Gherkin and `@req` / dual-write gates on the **bound branch** (Branch binding required).
20
+ - `.feature` is the harness authority — executable GWT lives only in live `.feature` (no solidify; no `feature_delta` / `change delta`).
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 sdd validate --specs` runs `bdd.run_command` by default.
23
+ - Use `list --specs --json` for `morphology` (includes `dualWriteCount`).
24
+ - Change JSON status fields: `stage` (draft/designed/planned/full) / `specsLanded` / `needsSpecsChange` / `readyToImplement` (`show --json`).
25
+ {% endif %}
26
+
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
+
30
+ {{ unit("skills/validation-hints") }}
31
+
32
+ {{ unit("skills/ethics-governance") }}
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: "llman-sdd-verify"
3
+ description: "Verify that an implemented llman SDD change matches its specs, design, and tasks. Produces a report (CRITICAL / WARNING / SUGGESTION) comparing code to artifacts. Run after apply completes. If clean, the change is ready to archive."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Verify
9
+
10
+ Use this skill to verify that the implementation matches the change's artifacts.
11
+
12
+ ## Pipeline Position
13
+
14
+ ### Skill navigation (not the lifecycle; shows current skill only)
15
+
16
+ ```mermaid
17
+ flowchart LR
18
+ apply["llman-sdd-apply<br/>Implement"] --> verify
19
+ verify["★ llman-sdd-verify ★<br/>Verify (you are here)"]
20
+ verify --> archive["llman-sdd-archive<br/>Archive"]
21
+
22
+ style verify fill:#fff3cd,stroke:#ffc107,stroke-width:3px
23
+ ```
24
+
25
+ > 📍 You are in the verify phase → if pass: next `llman-sdd-archive` (archive); if fail: go back to `llman-sdd-apply` (fix). This is Git-native **I (verify)**; the change should already be Specs-landed (`readyToImplement=true`).
26
+ > 🗺️ Skill navigation ≠ Git-native lifecycle; see brief lifecycle unit at the bottom.
27
+
28
+ ## Hard Constraints
29
+
30
+ - **Must pass apply phase all-green first**: don't skip to verify on changes that haven't been implemented.
31
+ - **CRITICAL issues must be fixed**: CRITICAL problems must be resolved before archive.
32
+ - **Don't ask "should I continue?"**: run the full verification flow, output a complete report.
33
+
34
+ {{ unit("skills/stage-guard") }}
35
+
36
+ ## Steps
37
+ 1. Select the change id (or ask the user to pick from `llman sdd list --json`).
38
+ 2. Run a fast validation gate:
39
+ - `llman sdd validate <id> --strict --no-interactive`
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
+ 3. Read:
42
+ - Live specs on the feature branch: `llmanspec/specs/**` (`<capability>.feature`) — SSOT
43
+ - `proposal.md` and `design.md` if present
44
+ - `tasks.md` to understand what was implemented
45
+ - `llmanspec/changes/<id>/specs/` only if residual old docs exist — ignore; SSOT is live specs
46
+ 4. **Dual-axis review (Standards + Spec, kept separate so neither masks the other)** — diff against `git diff <merge-base>...HEAD` (merge-base is COMPUTED via `git merge-base <local-default> HEAD`; the stored base_sha is audit-only and MUST NOT feed range math) on two axes:
47
+ - **Spec axis**: does the implementation satisfy the `@human` rule MUST/SHALL and the `@executable` GWT?
48
+ - Missing/partial behaviors, wrong implementations, and scope creep in the diff not asked for by the spec.
49
+ - Suggest minimal fixes or artifact updates.
50
+ - **Standards axis**: does the code follow `AGENTS.md` coding style + the Fowler smell baseline?
51
+ - **Authority priority**: `AGENTS.md` documented standard > smell baseline (repo overrides); skip anything tooling already enforces.
52
+ - Smells are **judgement heuristics** ("possible Feature Envy"), not hard violations.
53
+ - Smell baseline (each "what → fix"):
54
+
55
+ | Smell | Fix |
56
+ |-------|-----|
57
+ | Mysterious Name (name hides intent) | rename it |
58
+ | Duplicated Code (same logic shape) | extract the shared part |
59
+ | Feature Envy (method uses another's data more) | move the method over |
60
+ | Data Clumps (same fields travel together) | bundle into a type |
61
+ | Primitive Obsession (primitive stands in for a domain concept) | give it a dedicated type |
62
+ | Repeated Switches (same switch recurs) | polymorphism or a shared map |
63
+ | Shotgun Surgery (one change scatters edits) | gather into one module |
64
+ | Divergent Change (one file changes for unrelated reasons) | split it |
65
+ | Speculative Generality (abstraction for unseen needs) | delete it |
66
+ | Message Chains (long a.b().c()) | hide the chain behind one method |
67
+ | Middle Man (just delegates) | cut it, call direct |
68
+ | Refused Bequest (subclass rejects most inheritance) | use composition |
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
+ 5. **BDD-on verification (Git-native Partitioned SSOT)** — only when `config.yaml` has a `bdd:` block:
71
+ - Confirm the change is attached and you are on that feature branch.
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
+ - Check: legacy `spec.toon` / `*.feature.delta.toon` absent; if present, run toon2features first (do not invent a solidify / repair hunt).
75
+ - Next step after verify passes: `llman-sdd-archive` (not inline finalize here).
76
+ {% if bdd_verify_prompt %}
77
+ - Extra requirement: {{ bdd_verify_prompt }}
78
+ {% endif %}
79
+ 6. Produce a short report:
80
+ - **CRITICAL** (must fix before archive)
81
+ - **WARNING** (should fix)
82
+ - **SUGGESTION** (nice to have)
83
+ 7. **Human review checkpoint**: once the report has no CRITICAL findings and before suggesting archive, run `llman sdd review`:
84
+ - Exit code zero → suggest `llman-sdd-archive` for finalize/archive.
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
+
87
+ > 💡 Verify pass → next: `llman-sdd-archive` (archive); CRITICAL issues → go back to `llman-sdd-apply` (fix)
88
+
89
+ {{ unit("skills/git-native-flow-brief") }}
90
+ {{ unit("skills/human-readable-summary") }}
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
+
94
+ {{ unit("skills/validation-hints") }}
95
+
96
+ {{ unit("skills/structured-protocol") }}
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: "llman-sdd-wayfinder"
3
+ description: "Plan a huge, foggy chunk of work (more than one agent session can hold) as a shared map of decision tickets, resolving them one at a time until the way is clear. Manual trigger only; the agent must not auto-invoke."
4
+ metadata:
5
+ version: "{{ llman_version }}"
6
+ ---
7
+
8
+ # LLMAN SDD Wayfinder
9
+
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
+
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
+
14
+ ## Pipeline position
15
+
16
+ Auxiliary tool, for **pre-planning large work** before the main pipeline. When the map clears, merge onto the main flow at `llman-sdd-propose`.
17
+
18
+ > 📍 Standalone optional skill; when the map clears → `llman-sdd-propose` (collapse decisions into a buildable plan).
19
+
20
+ ## Core principles
21
+
22
+ - **Plan, don't do**: each ticket resolves a decision; the map is done when "the way is clear, no decisions left". The urge to just do the work is usually the signal you've reached the map's edge and should hand off.
23
+ - **Refer by name**: in all human-readable narration, refer to a ticket by its title; MUST NOT use bare ids/numbers.
24
+ - **One session, one ticket**: each session resolves only one ticket (research tickets excepted).
25
+
26
+ ## Map structure
27
+
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
+
30
+ The map's `proposal.md` structure:
31
+
32
+ ```markdown
33
+ ## Destination
34
+ <what reaching the end looks like — spec/decision/change. One or two lines.>
35
+
36
+ ## Notes
37
+ <domain; skills each session should consult; standing preferences for this effort>
38
+
39
+ ## Decisions so far
40
+ <!-- index: one line per closed ticket, gist + link -->
41
+
42
+ ## Not yet specified
43
+ <!-- fog: foreseeable but not yet sharp enough to ticket; graduates as the frontier advances -->
44
+
45
+ ## Out of scope
46
+ <!-- beyond the destination; closed tickets, never graduate -->
47
+ ```
48
+
49
+ ## Ticket types
50
+
51
+ Each ticket is a child change carrying a `wayfinder:<type>` tag (in the proposal title or frontmatter):
52
+
53
+ - **Research (agent-driven)**: read docs/APIs/local resources to surface a fact a decision waits on. Delegate to `llman-sdd-research` in the background.
54
+ - **Prototype (human-in-the-loop)**: raise fidelity with a cheap, rough runnable (throwaway terminal app or UI variant).
55
+ - **Grilling (human-in-the-loop)**: via `llman-sdd-explore`'s grilling branch, one question at a time. **Default type**.
56
+ - **Task (human or agent)**: manual work that must happen before a decision can be made (sign up for a service, move data so its shape is visible).
57
+
58
+ ## Fog of war
59
+
60
+ The map is **deliberately** incomplete. The test for ticket-vs-fog: **can you state the question precisely now** (not whether you can answer it).
61
+ - Can state precisely → ticket (even if blocked).
62
+ - Cannot yet state precisely → **Not yet specified** (coarser than a ticket; one fog patch may graduate into several tickets or none).
63
+
64
+ ## Steps
65
+
66
+ ### Chart the map
67
+ 1. **Name the destination**: use `llman-sdd-explore`'s grilling branch to pin down what this map is finding its way to.
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 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
+ 5. Spin up `llman-sdd-research` background subagents for each research ticket.
72
+ 6. Stop — charting is one session's work; resolve nothing by hand.
73
+
74
+ ### Work through the map
75
+ 1. Load the map (low-resolution view).
76
+ 2. Pick a ticket (user-named or first frontier item); claim it with Branch binding (`change start`, or `change attach` if the branch already exists). The map/ticket **planning shell** may briefly live on the default branch; if the ticket must edit live specs, do Specs landing on the bound branch.
77
+ 3. Resolve it — zoom as needed (read related ticket bodies, invoke skills the Notes block names). In doubt, use `llman-sdd-explore`'s grilling. **Do not** edit `llmanspec/specs/**` before Branch binding.
78
+ 4. Record the resolution: write the answer into the ticket's proposal, close it, append a one-line gist + pointer to the map's Decisions-so-far.
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
+
81
+ ## Output
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
+
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
+
87
+ {{ unit("skills/structured-protocol") }}