wdi-method 0.6.31 → 0.6.32

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.
@@ -6,6 +6,8 @@ disable-model-invocation: true
6
6
 
7
7
  # WDI Daily What-to-Build Triage
8
8
 
9
+ > **Typed by the owner, or not at all.** Run this skill only when the person typed `wdi-daily-what-to-build` — `/wdi-daily-what-to-build` or this host's own syntax for it — in the turn that is running. Reached any other way (a description that looked relevant, another skill, a subagent), stop and name it instead. Hosts that can hold a skill to manual-only already do; on the others, this line is the lock.
10
+
9
11
  Daily entry point for "I just tested something by hand, now what." Classifies the notes (new feature,
10
12
  fix, removal, or green), authors the resulting spec or ticket through this repo's own `wdi-build` flow,
11
13
  dispatches an independent second opinion grounded in the *original* notes, folds that feedback back in,
@@ -107,9 +109,10 @@ Reviewer resolution:
107
109
  - If `.control/custom-dispatch.yaml` exists in the repo root (or in the main repository root via `(git rev-parse --git-common-dir)/..` when running inside a linked git worktree): inspect `runners:` and `roles.reviewer`.
108
110
  A runner definition specifies `type:` (`auto`, `in-session`, or `shell-out`):
109
111
  - `auto` (recommended): Evaluates whether the runner's target model is reachable in-session from the active
110
- session profile (per the caller's global agent collaboration rules). Dispatches in-session via the `Agent`
111
- tool in read-only mode if reachable; falls back to shell-out using `command` if unreachable in-session.
112
- - `in-session`: Dispatches strictly via the in-session `Agent` tool using a read-only subagent type.
112
+ session profile (per the caller's global agent collaboration rules). Dispatches through this host's own
113
+ subagent tooling in read-only mode if reachable; falls back to shell-out using `command` if unreachable in-session.
114
+ - `in-session`: Dispatches strictly through this host's own subagent tooling, read-only. A host with none
115
+ cannot satisfy it — stop and report (fail-closed).
113
116
  - `shell-out`: Dispatches strictly via external shell `command` (single-string command, passing the review packet path).
114
117
  A shell-out reviewer MUST be invoked with its read-only flag where supported (e.g. `--trust-tools=fs_read` for
115
118
  `kiro-cli`, `--mode plan` for `cursor-agent`).
@@ -124,11 +127,11 @@ Reviewer resolution:
124
127
  killing). Record in the final report: `peer review: fell back to coordinator self-review after timeout/failure`.
125
128
  MUST NOT fabricate or synthesize unread reviewer output as if it were faithfully received.
126
129
  - In the absence of a custom runner file: follow the caller's configured agent collaboration setup
127
- (e.g., in-session read-only subagent via the `Agent` tool if reachable, or the caller's configured CLI
130
+ (e.g., a read-only subagent through this host's own tooling if reachable, or the caller's configured CLI
128
131
  environment).
129
132
 
130
- When the dispatched reviewer has no native Skill tool, instruct it to read and follow the target
131
- guide directly as plain markdown instructions.
133
+ The reviewer loads the target guide the way its host loads any instruction: through its skill tool where
134
+ it has one, otherwise by reading the guide in full. MUST NOT hand it a summary in the guide's place.
132
135
 
133
136
  ## 5. Coordinator fold-in, stamping, and validation
134
137
 
@@ -6,6 +6,8 @@ disable-model-invocation: true
6
6
 
7
7
  # WDI Daily What-to-Test
8
8
 
9
+ > **Typed by the owner, or not at all.** Run this skill only when the person typed `wdi-daily-what-to-test` — `/wdi-daily-what-to-test` or this host's own syntax for it — in the turn that is running. Reached any other way (a description that looked relevant, another skill, a subagent), stop and name it instead. Hosts that can hold a skill to manual-only already do; on the others, this line is the lock.
10
+
9
11
  The post-merge daily verification step after a `wdi-autopilot` or ticket delivery run merges: lands
10
12
  back on the active development branch, safely prunes stale merged worktrees and task branches while
11
13
  strictly preserving protected branches, configures the application where it needs to be for platform
@@ -6,6 +6,8 @@ disable-model-invocation: true
6
6
 
7
7
  # WDI Explain To Me
8
8
 
9
+ > **Typed by the owner, or not at all.** Run this skill only when the person typed `wdi-explain-to-me` — `/wdi-explain-to-me` or this host's own syntax for it — in the turn that is running. Reached any other way (a description that looked relevant, another skill, a subagent), stop and name it instead. Hosts that can hold a skill to manual-only already do; on the others, this line is the lock.
10
+
9
11
  The owner names a problem. The result is a **decision briefing**: everything needed to decide, with the
10
12
  agent doing all of the reading and the owner doing only the deciding.
11
13
 
@@ -37,6 +37,9 @@ Three things, in this order, and nothing else unless asked:
37
37
  1. **Where the project stands** — the last gate passed, and which gate is next.
38
38
  2. **What blocks that gate** — the specific artifact, validator, or blocking question that is not ready.
39
39
  3. **Which skill to invoke next** — one skill, named, with its intent, and the reason in a clause.
40
+ Write it the way **this host** types a skill: `invoke:` for this host's entry in `hosts:` in
41
+ `.control/wdi-method.yaml` — `/{skill}`, `${skill}`, `/skill:{skill}`, `@{skill}` — or, where it says
42
+ `natural`, as "ask for the `<skill>` skill". Without a `hosts:` entry, name the skill and no syntax.
40
43
 
41
44
  Keep it under fifteen lines. A routing answer that needs scrolling has failed at its job.
42
45
 
@@ -79,7 +82,7 @@ mis-route in this flow, because every other gate is the same for every component
79
82
  | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
80
83
  | Closed specs remain in `.scratch/`, or need archival/pruning | `wdi-prune-or-archive` — archives closed spec to `.archive/specs/` or prunes from disk |
81
84
  | Raw manual-test notes needing triage, review, and spec drafting | `wdi-daily-what-to-build` — classifies notes, drafts spec/tickets via `wdi-build`, gets second opinion |
82
- | Autonomous delivery loop with local runner and peer review | `wdi-daily-autopilot` — composes routine, resolves local runners, launches `/loop` unattended |
85
+ | Autonomous delivery loop with local runner and peer review | `wdi-daily-autopilot` — composes routine, resolves local runners, starts the host's own scheduler (once where the host has none) |
83
86
  | Merged autopilot run needing branch cleanup and physical test checklist | `wdi-daily-what-to-test` — syncs branch, prunes merged worktrees/branches, configures smoke target, provides delta-scoped checklist |
84
87
  | Cleaning up generated rendered duplicate files from git | Untrack via `git rm -r --cached .what-rendered/ .how-rendered/`, add to `.gitignore`, regenerate via `validate.py --generate` |
85
88
 
@@ -12,7 +12,7 @@ of where things are, a reader that can see this product's code.
12
12
  | Intent | Does | Precondition | How often |
13
13
  |---|---|---|---|
14
14
  | `setup` | Guide the global `mode` setting · scaffold the registries that are still empty · **report** the documents already present, read-only · derive the two structure maps · align the engines | before G1 | once per project |
15
- | `engines` | Run `npx wdi-method engines --fix`, then report what it changed: the flag stripped from `to-spec` · `to-tickets` · `implement` so `wdi-build` can invoke them, the retired BMad G5 wrappers locked out of model invocation and denied in `.claude/settings.json`, and `docs/agents/` repaired where it still carried upstream's answer | after every `wdi-method install` or `update` | each version jump, and any time `engines-invocable` is red |
15
+ | `engines` | Run `npx wdi-method engines --fix`, then report what it changed: the flag stripped from `to-spec` · `to-tickets` · `implement` so `wdi-build` can invoke them, the retired BMad G5 wrappers locked out of model invocation (and denied in `.claude/settings.json` / `opencode.json` for those hosts), the engines checked against every folder each selected host reads, and `docs/agents/` repaired where it still carried upstream's answer | after every `wdi-method install` or `update` | each version jump, and any time `engines-invocable` is red |
16
16
  | `component` | Propose the slicing from the brief plus every PRD · birth what is accepted: registry row plus `SRS`/`SDD` skeletons · propose `mode`, `risk_accepted`, `risk_note`, `owns` | **G2 passed** — read from `gates_passed`; missing, ask the owner | each time a component is born |
17
17
  | `mode` | Change `mode` — global in `index.yaml`, or one component in `components.yaml`. Guided | — | any time |
18
18
  | `risk` | Set or review one component's `risk_accepted`, with disclosure of what it touches | the component exists | any time, usually before G4 |
@@ -6,6 +6,8 @@ disable-model-invocation: true
6
6
 
7
7
  # WDI Prune or Archive
8
8
 
9
+ > **Typed by the owner, or not at all.** Run this skill only when the person typed `wdi-prune-or-archive` — `/wdi-prune-or-archive` or this host's own syntax for it — in the turn that is running. Reached any other way (a description that looked relevant, another skill, a subagent), stop and name it instead. Hosts that can hold a skill to manual-only already do; on the others, this line is the lock.
10
+
9
11
  Standalone housekeeping skill for closed specifications. Moves completed spec directories to
10
12
  `.archive/specs/<spec-folder>/` or prunes completed tickets from disk using `lifecycle.py`, while
11
13
  strictly preserving requirement traceability and RTM metadata in `.control/registry/specs.yaml`.
@@ -48,7 +48,8 @@ free text and both default to English:
48
48
  Read those two before writing a document. A technical term the industry writes in English MUST be left in
49
49
  English whatever the setting says — an equivalent MUST NOT be invented for it.
50
50
 
51
- **These files are always English, whatever the settings say:** `AGENTS.md`, `CLAUDE.md`, and everything
51
+ **These files are always English, whatever the settings say:** `AGENTS.md`, every rule file that mirrors
52
+ its method block (`CLAUDE.md`, `GEMINI.md`, and the others a selected host reads), and everything
52
53
  under `.constitution/`. They are agent instructions, and they travel to every repo through the
53
54
  `wdi-method` package. The one exception is `.constitution/project/`, which is this product's own room.
54
55
 
@@ -160,6 +161,16 @@ The daily tier, started only when the owner types it: `wdi-daily-what-to-build`
160
161
  **No BMad skill is invoked directly.** Each has a wrapper, and the wrapper is what checks position,
161
162
  verifies the result, and lands the memlog.
162
163
 
164
+ **These hold on every host, whatever the host itself allows.** Many hosts cannot hold a skill to
165
+ manual-only, so on those this block is the lock:
166
+
167
+ - `wdi-daily-what-to-build` · `wdi-daily-autopilot` · `wdi-daily-what-to-test` · `wdi-prune-or-archive` ·
168
+ `wdi-explain-to-me` MUST run only when the owner typed them in the turn that is running.
169
+ - The thirteen BMad skills retired at G5 (`.constitution/method/document/bmad-skill-register.md`) MUST NOT
170
+ be invoked by a model at all; a person typing one is the only route.
171
+ - A skill is invoked through this host's own skill mechanism. On a host with no skill tool that is reading
172
+ the skill's whole `SKILL.md` from this repo — never a paraphrase from memory.
173
+
163
174
  ## What MUST NOT be done
164
175
 
165
176
  - A method file MUST NOT be invented or patched here to improve the method. If a rule is wrong, it is
@@ -56,9 +56,26 @@ others leaves a method that cannot run:
56
56
  | Set | Note |
57
57
  |---|---|
58
58
  | `.constitution/` | Minus the product articles; `promote` / `install` handle the seam |
59
- | `.claude/skills/wdi-*/` (and `.agents/skills/wdi-*/` when those agents are selected) | Every wrapper. A wrapper without its guide, or a guide without its wrapper, is half a method |
59
+ | `.<host>/skills/wdi-*/` for every host selected at install | Every wrapper. A wrapper without its guide, or a guide without its wrapper, is half a method |
60
60
  | `_bmad/custom/*.toml` | The one most likely to be forgotten. `*.user.toml` stays behind |
61
- | `AGENTS.md` | The routing table is the method; from `## Code` down is the product. `install` / `update` MUST NOT overwrite an existing `AGENTS.md` |
61
+ | `AGENTS.md`, and each rule file a selected host reads beside it | The routing table is the method; from `## Code` down is the product. `install` / `update` MUST NOT overwrite an existing `AGENTS.md` |
62
+
63
+ ## One method, many hosts
64
+
65
+ The method runs on every host the installer offers, and each host differs in five ways that matter.
66
+ `lib/platforms.mjs` in the package is the one record of them; `install` writes the selected hosts into
67
+ `.control/wdi-method.yaml` under `hosts:`, and the skills and `validate.py` read them from there.
68
+
69
+ | Difference | What the method does about it |
70
+ |---|---|
71
+ | **Where skills are read** (`reads:`) | The `wdi-*` skills go to each host's own folder. The six engines MUST be in a folder every selected host reads — Kiro reads only `.kiro/skills` — and `npx wdi-method engines` names the `npx skills add --agent` that puts them there |
72
+ | **How a skill is loaded** | Through the host's own mechanism: a skill tool where it has one, otherwise reading the whole `SKILL.md`. Both are invocation; a paraphrase is neither |
73
+ | **How a person types one** (`invoke:`) | `/name`, `$name`, `/skill:name`, `@name`, or asked for by name. `wdi-help` names the next skill in this host's form |
74
+ | **Manual-only** (`manual_only:`) | Three layers. The host's own lock where it has one (`disable-model-invocation`; `.claude/settings.json` deny rules; `opencode.json` `ask`). A guard line at the top of each manual-only skill. The `AGENTS.md` block, mirrored into every rule file a host reads. On a host with no lock the last two are all there is, and that is the host's limit, not a gap in the install |
75
+ | **A scheduler of its own** (`loop:`) | `wdi-daily-autopilot` and `wdi-autopilot` start it where it exists. Where it does not, they run one iteration per invocation — a shell loop or an OS scheduler is not a substitute |
76
+
77
+ A host the method dropped is named by `update` and left alone: its folders may hold the product's own
78
+ files too, so removing them is the owner's call.
62
79
 
63
80
  ## Two directions
64
81