@stdd/plugin 0.9.1 → 0.9.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stdd",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Native STDD workflow skills and lifecycle context",
5
5
  "author": {
6
6
  "name": "Azamat Almazbek uulu"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stdd",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Native STDD workflow skills and lifecycle context for Codex",
5
5
  "author": {
6
6
  "name": "Azamat Almazbek uulu"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stdd/plugin",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Universal STDD workflow skills and lifecycle integration for Codex, Claude Code, and Pi",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -6,6 +6,15 @@ runs the adapters; re-run it after upgrading stdd to refresh the output.
6
6
 
7
7
  ## Common output
8
8
 
9
+ Every host receives the same five-route always-on contract. Investigation
10
+ answers current-state factual or diagnostic questions directly, Brainstorming
11
+ explores opinions and future or hypothetical behavior directly, and only
12
+ explicit intent to persist or modify the repository enters Start Change.
13
+ Implement and Finish Change execute and close that action. Unknown current
14
+ facts may cause Investigation → Brainstorming; ordinary docs or code reading
15
+ inside Brainstorming does not. The renderer preserves host-native invocation
16
+ syntax: Claude `/name`, Codex `$name`, and Pi `/skill:name`.
17
+
9
18
  Every init installs `.stdd/` into the target repo:
10
19
 
11
20
  ```
@@ -148,6 +157,10 @@ fail-open and never forward arbitrary child output.
148
157
 
149
158
  ## Design rules for adapters
150
159
 
160
+ - The five direct/action routes are mandatory and stay semantically identical
161
+ across hosts; only their invocation syntax changes.
162
+ - Idle lifecycle output is neutral: discussion and read-only work do not need a
163
+ task, and generated hooks do not prime agents to create one.
151
164
  - One source of truth: adapters copy or point, never fork playbook content.
152
165
  - Always-on instructions contain invariants and routing only; detailed
153
166
  workflows live in lazy skills.
@@ -89,12 +89,12 @@ export function status(cwd, asJson, localOnly = false) {
89
89
  plan: { present: false },
90
90
  review: null,
91
91
  pr: { state: "unknown", reason: "idle task" },
92
- next: 'start a task with `stdd task start "<short name>"`',
92
+ next: "no task is required for discussion or read-only work",
93
93
  };
94
94
  if (asJson) console.log(JSON.stringify(idle, null, "\t"));
95
95
  else
96
96
  console.log(
97
- `task: idle on ${branch}\nnext: start a task with \`stdd task start "<short name>"\``,
97
+ `task: idle on ${branch}\nnext: no task is required for discussion or read-only work`,
98
98
  );
99
99
  return;
100
100
  }
@@ -220,10 +220,17 @@ Agent adapters have two outputs with deliberately different context costs:
220
220
  - a short, always-on instruction block carrying only repository invariants;
221
221
  - native, lazily loaded skills carrying the task workflows.
222
222
 
223
- Three routing skills make the main path explicit instead of asking an agent
224
- to infer a workflow from a flat list: `stdd-start-change` classifies first,
225
- opens a task only for repository-changing work, and routes read-only questions
226
- without writing state; `stdd-implement` runs the docs/red/green/verify loop, and
223
+ Five routing skills make the main path explicit instead of asking an agent
224
+ to infer a workflow from a flat list. `stdd-investigation` directly answers
225
+ current-state factual and diagnostic questions with evidence;
226
+ `stdd-brainstorming` directly explores opinions, future behavior, and
227
+ hypothetical implementation approaches. Both are read-only and create no task,
228
+ ledger event, persisted artifact, or repository mutation. When unknown current
229
+ facts materially affect a design, they may run in sequence as Investigation →
230
+ Brainstorming; reading docs or code while brainstorming does not itself switch
231
+ workflows. `stdd-start-change` begins only after explicit intent to persist a
232
+ work artifact or modify the repository; a hypothetical plan shown in chat stays
233
+ Brainstorming. `stdd-implement` runs the docs/red/green/verify loop, and
227
234
  `stdd-finish-change` closes review, evidence, PR checks, and any requested
228
235
  runtime verification. Specialized playbooks remain independently invocable.
229
236
 
@@ -249,7 +256,9 @@ half-written state — see
249
256
  `stdd status --json` has one stable top-level shape in every lifecycle
250
257
  state: `state`, `task`, `branch`, `loop`, `slice`, `plan`, `review`, `pr`,
251
258
  and `next` are always present. Idle state uses explicit empty/null values,
252
- so integrations never need a second response schema.
259
+ so integrations never need a second response schema. Its string-valued `next`
260
+ is neutral: no task is required for discussion or read-only work, and a task
261
+ starts only when the user chooses persisted or repository-changing action.
253
262
 
254
263
  Readers consider only the current branch's active task. A plan that was
255
264
  already present when the task started stays invisible until rewritten for
@@ -71,6 +71,15 @@ syntax when both hosts are selected. The append-system file is user-owned;
71
71
  init maintains only its marked STDD section and saves the generated source as
72
72
  `.stdd/PI-snippet.md`.
73
73
 
74
+ Every host's managed instructions expose five mandatory routes in native
75
+ syntax: Investigation and Brainstorming are direct read-only routes, Start
76
+ Change is the explicit boundary for persisted or repository-changing action,
77
+ and Implement and Finish Change execute and close that action. The router may
78
+ sequence Investigation → Brainstorming only when unknown current facts
79
+ materially affect future design. It never sends read-only work through Start
80
+ Change or treats ordinary code and docs reading during Brainstorming as a
81
+ separate Investigation.
82
+
74
83
  ## Adoption modes and the universal bundle
75
84
 
76
85
  STDD has three cumulative adoption modes. **Personal plugin** use installs the
@@ -144,10 +153,11 @@ and do not enumerate either kit or project skills. A local recipe that
144
153
  reuses a kit playbook's `name` replaces it: project knowledge outranks the kit.
145
154
  Local recipe names must otherwise be unique; init rejects duplicates before
146
155
  writing generated state and names both conflicting source files.
147
- The three skills named by that router (`stdd-start-change`, `stdd-implement`,
148
- and `stdd-finish-change`) are mandatory; init rejects a profile or local
149
- override that would make one inactive. Other inactive local overrides still
150
- shadow their kit playbook intentionally.
156
+ The five skills named by that router (`stdd-investigation`,
157
+ `stdd-brainstorming`, `stdd-start-change`, `stdd-implement`, and
158
+ `stdd-finish-change`) are mandatory; init rejects a profile or local override
159
+ that would make one inactive. Other inactive local overrides still shadow
160
+ their kit playbook intentionally.
151
161
 
152
162
  ## CI adapters
153
163
 
@@ -222,8 +232,10 @@ re-init removes older managed Claude `PostCompact` entries to avoid running the
222
232
  ritual twice, while preserving unrelated user hooks. Each integration runs
223
233
  `stdd status --local`, which never calls a forge or the network, so every fresh
224
234
  context opens with local loop state and the next step already in it — recorded
225
- state instead of recall. Hook entries are merged into existing valid files
226
- without duplication. A conflicting Pi extension or invalid JSON settings are
235
+ state instead of recall. When that state is idle, the injected human or JSON
236
+ output is neutral: it says that discussion and read-only work require no task
237
+ instead of prompting task creation. Hook entries are merged into existing valid
238
+ files without duplication. A conflicting Pi extension or invalid JSON settings are
227
239
  left untouched and a manual instruction is printed instead. Codex hooks and
228
240
  Pi project extensions remain subject to their host's repository trust review.
229
241
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stdd/cli",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Spec + Test Driven Development — a markdown-first methodology kit for teams building software with AI coding agents",
5
5
  "type": "module",
6
6
  "exports": {
@@ -1,46 +1,65 @@
1
1
  ---
2
2
  name: stdd-brainstorming
3
- description: Shape a fuzzy idea into an agreed behavior contract before any plan or code
4
- when: A non-trivial change is requested and the requirements, scope, or approach are not yet pinned down.
3
+ description: Explore future behavior and hypothetical approaches without forcing action
4
+ when: Asked for opinions, ideation, future behavior, or a hypothetical implementation approach, with no explicit intent to persist or modify the repository.
5
5
  ---
6
6
 
7
7
  # Brainstorming
8
8
 
9
- The goal is agreement on **what** and **why** before anyone invests in **how**.
10
- The output is not a document it is a shared understanding that becomes a
11
- docs edit and a PR description.
12
-
13
- ## Process
14
-
15
- 1. **Understand the current state first.** Read the relevant docs and the code
16
- the change will touch. Questions asked from ignorance waste the other
17
- side's time; questions asked from knowledge sharpen the idea.
18
- 2. **Ask one question at a time.** Prefer questions that eliminate whole
19
- branches of the design space: who is it for, what triggers it, what must
20
- never happen, what is explicitly out of scope. When the answer space is
21
- enumerable, offer it as a closed choice with your recommendation first
22
- a closed question costs the other side seconds, an open one minutes.
23
- Keep open questions for genuinely open design space.
24
- 3. **Challenge scope creep in both directions.** If the idea is bigger than
25
- the need, say so and propose the smaller version. If the stated need hides
26
- a larger real problem, surface it.
27
- 4. **Propose 2–3 approaches with a recommendation.** For each: one paragraph,
28
- the trade-off that actually matters, and what it costs later. Recommend
29
- one; do not present a menu without an opinion.
30
- 5. **Converge on the behavior contract.** State the agreed behavior as rules
31
- precise enough to test. Confirm them explicitly.
32
-
33
- ## Output
34
-
35
- - The agreed rules become the **docs edit** (the spec) — the first commit of
36
- the branch.
37
- - The rationale, rejected alternatives, and scope decisions go into the
38
- **PR description** when the branch opens.
39
- - Nothing from this conversation is committed as a standalone file.
9
+ Use Brainstorming as an adaptive conversational stance, not a fixed interview.
10
+ The goal is useful clarity about **what** and **why** before anyone commits to
11
+ action. Clarity, deciding not to act, and continuing later are all successful
12
+ outcomes.
13
+
14
+ ## Contract
15
+
16
+ - Stay read-only: create no task, ledger event, persisted artifact, or
17
+ repository mutation.
18
+ - Ground the discussion in current docs or code when materially useful. If
19
+ unknown current facts materially affect the design, invoke
20
+ `stdd-investigation` first; ordinary reading here is not Investigation.
21
+ - A hypothetical plan shown in chat remains Brainstorming. Explicit intent to
22
+ persist an artifact or modify the repository crosses into Start Change when
23
+ no action boundary is active. Within an active change, do not invoke Start
24
+ Change again; proceed to Planning or Implement as the agreed action requires.
25
+
26
+ ## Conversation
27
+
28
+ 1. **Understand the real need.** Let the user provide context in their own
29
+ shape. Challenge assumptions and decompose ideas that are larger than the
30
+ need; apply YAGNI rather than rewarding scope.
31
+ 2. **Ask only decision-bearing questions.** Ask at most one per turn, and only
32
+ when its answer is needed to proceed. Prefer a concise closed choice when
33
+ the answer space is known. Use a question batch only when the user requests
34
+ one.
35
+ 3. **Offer useful alternatives.** Once context is sufficient, present two or
36
+ three materially distinct approaches, state the trade-off that matters, and
37
+ lead with a recommendation. Do not manufacture alternatives when only one
38
+ approach is sensible.
39
+ 4. **Validate incrementally.** Check substantive decisions as they emerge
40
+ instead of withholding all validation for a final ceremony. An optional
41
+ recap may state the problem, preferred approach, and unresolved questions.
42
+
43
+ ## Outcomes
44
+
45
+ Follow the user's intent without forcing a three-option menu:
46
+
47
+ - **No action:** summarize if useful, then stop. Do not pressure the user to
48
+ formalize or implement anything.
49
+ - **Defer:** leave a portable backlog note in chat. Persist it only when the
50
+ user explicitly chooses a destination; if no action boundary is active,
51
+ invoke `stdd-start-change` before writing it.
52
+ - **Act now:** when the user explicitly chooses persisted or
53
+ repository-changing action, invoke `stdd-start-change` if no action boundary
54
+ is active. Within an active change, proceed directly to Planning or Implement
55
+ as appropriate.
40
56
 
41
57
  ## Anti-patterns
42
58
 
43
- - Jumping to implementation detail while behavior is still unsettled.
44
- - Asking multiple stacked questions at once.
45
- - Writing a "spec document" instead of editing the real docs.
46
- - Agreeing silently: if you disagree with the direction, say so with reasons.
59
+ - Turning exploration into a mandatory interview or checklist.
60
+ - Asking stacked questions when one decision would unlock progress.
61
+ - Jumping into code or artifact creation without explicit action intent.
62
+ - Treating every conversation as a change that must converge on docs, a plan,
63
+ or a PR.
64
+ - Presenting options without an opinion, or inventing options to satisfy a
65
+ quota.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: stdd-investigation
3
- description: Read-only diagnosis — evidence-backed findings, no changes
4
- when: Asked to diagnose, triage, or explain behavior WITHOUT changing anything.
3
+ description: Read-only current-state diagnosis — evidence-backed findings, no changes
4
+ when: Asked a factual question about current behavior, or to diagnose or triage it, WITHOUT changing anything.
5
5
  ---
6
6
 
7
7
  # Investigation
@@ -13,9 +13,12 @@ it.
13
13
 
14
14
  ## Contract
15
15
 
16
- - No file edits, no state-changing side effects — reads only.
16
+ - No task, ledger event, persisted artifact, file edit, or state-changing side
17
+ effect — reads only.
17
18
  - Every claim in the report is backed by evidence you actually observed,
18
19
  or labeled as unverified with the blocker named.
20
+ - Opinions, future behavior, and hypothetical implementation approaches belong
21
+ in Brainstorming, not Investigation.
19
22
 
20
23
  ## Process
21
24
 
@@ -29,5 +32,8 @@ it.
29
32
  you could not test, report as an explicitly unverified hypothesis with
30
33
  the blocker that prevented the test.
31
34
  3. **Deliver the report**: the diagnosis (or ranked hypotheses) with its
32
- evidence, the blockers, and the narrowest next step a fixing session
33
- should take.
35
+ evidence, the blockers, and the narrowest useful next step.
36
+ 4. **Hand off only when the prompt needs design.** If unknown current facts
37
+ materially affect requested future behavior, finish the factual diagnosis
38
+ and then invoke `stdd-brainstorming`. Merely reading docs or code during
39
+ Brainstorming does not require a separate Investigation.
@@ -1,27 +1,24 @@
1
1
  ---
2
2
  name: stdd-start-change
3
- description: Classify a request, open durable task state only for changes, and route to the smallest applicable workflow
4
- when: A new implementation, fix, refactor, investigation, or repository change is beginning.
3
+ description: Open durable task state and route work after explicit intent to persist or modify the repository
4
+ when: The user explicitly wants a persisted work artifact or repository change.
5
5
  ---
6
6
 
7
7
  # Start change
8
8
 
9
- Classify the request before writing task state:
10
-
11
- - read-only question or diagnosis → invoke `stdd-investigation`; do not start a
12
- task or write the ledger;
13
- - uncertain behavior or scope invoke `stdd-brainstorming`;
14
- - agreed multi-step behavior → invoke `stdd-planning`;
15
- - known defect without a diagnosis → invoke `stdd-debugging`;
16
- - small agreed change → invoke `stdd-implement` directly.
9
+ Start Change is the action boundary. Invoke it only after explicit intent to
10
+ persist a work artifact or modify the repository. Read-only factual diagnosis
11
+ routes directly to `stdd-investigation`; opinions, future behavior, and
12
+ hypothetical implementation approaches route directly to `stdd-brainstorming`.
13
+ Neither needs a task. A hypothetical plan shown only in chat remains
14
+ Brainstorming.
17
15
 
18
16
  Run `stdd policy show` before asking anything: it may already answer which
19
17
  agent owns this area, which standing permission covers the work, and what this
20
18
  repository treats as routine rather than a decision. Read it through the
21
19
  command, never as raw markdown — the command is where the rules are applied.
22
20
 
23
- For every route that may change the repository, open one task boundary before
24
- carrying state across prompts:
21
+ Open one task boundary before carrying action state across prompts:
25
22
 
26
23
  ```bash
27
24
  stdd task start "<short change name>"
@@ -31,7 +28,14 @@ stdd status --local
31
28
  If another task is active, do not reset it silently. Finish it, continue it,
32
29
  or ask the user which task owns the checkout.
33
30
 
34
- For a change, read `.stdd/method.md` and the canonical docs governing the
35
- touched behavior. The classification is a routing decision, not ceremony:
36
- skip workflows that do not apply, but never skip a mechanical contract that
37
- does.
31
+ Then classify the chosen action and route to the smallest applicable workflow:
32
+
33
+ - behavior or scope is still uncertain invoke `stdd-brainstorming` within
34
+ the active change boundary;
35
+ - agreed multi-step behavior → invoke `stdd-planning`;
36
+ - known defect without a diagnosis → invoke `stdd-debugging`;
37
+ - small agreed change → invoke `stdd-implement` directly.
38
+
39
+ Read `.stdd/method.md` and the canonical docs governing the touched behavior.
40
+ The classification is a routing decision, not ceremony: skip workflows that do
41
+ not apply, but never skip a mechanical contract that does.
@@ -17,6 +17,8 @@ const deepFreeze = (value) => {
17
17
  };
18
18
 
19
19
  export const MANDATORY_ROUTING_SKILLS = deepFreeze([
20
+ "stdd-investigation",
21
+ "stdd-brainstorming",
20
22
  "stdd-start-change",
21
23
  "stdd-implement",
22
24
  "stdd-finish-change",
@@ -212,16 +214,27 @@ export function renderAgentInstructions({
212
214
  throw new TypeError("agent instructions projectLogEnabled must be a boolean");
213
215
  }
214
216
  const invoke = (name) => `\`${adapter.explicitPrefix}${name}\``;
215
- const [startChange, implement, finishChange] = MANDATORY_ROUTING_SKILLS;
217
+ const [investigation, brainstorming, startChange, implement, finishChange] = MANDATORY_ROUTING_SKILLS;
216
218
  return [
217
219
  `<!-- ${safeStamp} -->`,
218
220
  "",
219
221
  "## STDD",
220
222
  "",
221
- "This repository follows `.stdd/method.md`. Before any repository change",
222
- "(behavior, implementation-only work, fixes, refactors, or investigation),",
223
- `invoke ${invoke(startChange)}; use ${invoke(implement)} for`,
224
- `the docs/red/green/verify slice and ${invoke(finishChange)} to close it.`,
223
+ "This repository follows `.stdd/method.md`. Route read-only current-state",
224
+ `factual or diagnostic questions directly to Investigation with ${invoke(investigation)}.`,
225
+ "Route opinions, future behavior, and hypothetical implementation approaches",
226
+ `directly to Brainstorming with ${invoke(brainstorming)}.`,
227
+ "",
228
+ "Use Investigation → Brainstorming only when unknown current facts materially affect future design.",
229
+ "Reading docs or code during Brainstorming does not by itself require Investigation.",
230
+ "",
231
+ "Start Change is the action boundary. Invoke it only after explicit intent to",
232
+ `persist a work artifact or modify the repository, using ${invoke(startChange)}.`,
233
+ "A hypothetical plan shown only in chat remains Brainstorming.",
234
+ "",
235
+ "Before any repository change (behavior, implementation-only work, fixes, or",
236
+ `refactors), invoke ${invoke(startChange)}; use ${invoke(implement)} for the`,
237
+ `docs/red/green/verify slice and ${invoke(finishChange)} to close it.`,
225
238
  "",
226
239
  ...(projectLogEnabled
227
240
  ? [
@@ -1,48 +1,67 @@
1
1
  ---
2
2
  name: stdd-brainstorming
3
- description: "Shape a fuzzy idea into an agreed behavior contract before any plan or code. Use when: A non-trivial change is requested and the requirements, scope, or approach are not yet pinned down."
3
+ description: "Explore future behavior and hypothetical approaches without forcing action. Use when: Asked for opinions, ideation, future behavior, or a hypothetical implementation approach, with no explicit intent to persist or modify the repository."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Brainstorming
10
10
 
11
- The goal is agreement on **what** and **why** before anyone invests in **how**.
12
- The output is not a document it is a shared understanding that becomes a
13
- docs edit and a PR description.
14
-
15
- ## Process
16
-
17
- 1. **Understand the current state first.** Read the relevant docs and the code
18
- the change will touch. Questions asked from ignorance waste the other
19
- side's time; questions asked from knowledge sharpen the idea.
20
- 2. **Ask one question at a time.** Prefer questions that eliminate whole
21
- branches of the design space: who is it for, what triggers it, what must
22
- never happen, what is explicitly out of scope. When the answer space is
23
- enumerable, offer it as a closed choice with your recommendation first
24
- a closed question costs the other side seconds, an open one minutes.
25
- Keep open questions for genuinely open design space.
26
- 3. **Challenge scope creep in both directions.** If the idea is bigger than
27
- the need, say so and propose the smaller version. If the stated need hides
28
- a larger real problem, surface it.
29
- 4. **Propose 2–3 approaches with a recommendation.** For each: one paragraph,
30
- the trade-off that actually matters, and what it costs later. Recommend
31
- one; do not present a menu without an opinion.
32
- 5. **Converge on the behavior contract.** State the agreed behavior as rules
33
- precise enough to test. Confirm them explicitly.
34
-
35
- ## Output
36
-
37
- - The agreed rules become the **docs edit** (the spec) — the first commit of
38
- the branch.
39
- - The rationale, rejected alternatives, and scope decisions go into the
40
- **PR description** when the branch opens.
41
- - Nothing from this conversation is committed as a standalone file.
11
+ Use Brainstorming as an adaptive conversational stance, not a fixed interview.
12
+ The goal is useful clarity about **what** and **why** before anyone commits to
13
+ action. Clarity, deciding not to act, and continuing later are all successful
14
+ outcomes.
15
+
16
+ ## Contract
17
+
18
+ - Stay read-only: create no task, ledger event, persisted artifact, or
19
+ repository mutation.
20
+ - Ground the discussion in current docs or code when materially useful. If
21
+ unknown current facts materially affect the design, invoke
22
+ `stdd-investigation` first; ordinary reading here is not Investigation.
23
+ - A hypothetical plan shown in chat remains Brainstorming. Explicit intent to
24
+ persist an artifact or modify the repository crosses into Start Change when
25
+ no action boundary is active. Within an active change, do not invoke Start
26
+ Change again; proceed to Planning or Implement as the agreed action requires.
27
+
28
+ ## Conversation
29
+
30
+ 1. **Understand the real need.** Let the user provide context in their own
31
+ shape. Challenge assumptions and decompose ideas that are larger than the
32
+ need; apply YAGNI rather than rewarding scope.
33
+ 2. **Ask only decision-bearing questions.** Ask at most one per turn, and only
34
+ when its answer is needed to proceed. Prefer a concise closed choice when
35
+ the answer space is known. Use a question batch only when the user requests
36
+ one.
37
+ 3. **Offer useful alternatives.** Once context is sufficient, present two or
38
+ three materially distinct approaches, state the trade-off that matters, and
39
+ lead with a recommendation. Do not manufacture alternatives when only one
40
+ approach is sensible.
41
+ 4. **Validate incrementally.** Check substantive decisions as they emerge
42
+ instead of withholding all validation for a final ceremony. An optional
43
+ recap may state the problem, preferred approach, and unresolved questions.
44
+
45
+ ## Outcomes
46
+
47
+ Follow the user's intent without forcing a three-option menu:
48
+
49
+ - **No action:** summarize if useful, then stop. Do not pressure the user to
50
+ formalize or implement anything.
51
+ - **Defer:** leave a portable backlog note in chat. Persist it only when the
52
+ user explicitly chooses a destination; if no action boundary is active,
53
+ invoke `stdd-start-change` before writing it.
54
+ - **Act now:** when the user explicitly chooses persisted or
55
+ repository-changing action, invoke `stdd-start-change` if no action boundary
56
+ is active. Within an active change, proceed directly to Planning or Implement
57
+ as appropriate.
42
58
 
43
59
  ## Anti-patterns
44
60
 
45
- - Jumping to implementation detail while behavior is still unsettled.
46
- - Asking multiple stacked questions at once.
47
- - Writing a "spec document" instead of editing the real docs.
48
- - Agreeing silently: if you disagree with the direction, say so with reasons.
61
+ - Turning exploration into a mandatory interview or checklist.
62
+ - Asking stacked questions when one decision would unlock progress.
63
+ - Jumping into code or artifact creation without explicit action intent.
64
+ - Treating every conversation as a change that must converge on docs, a plan,
65
+ or a PR.
66
+ - Presenting options without an opinion, or inventing options to satisfy a
67
+ quota.
@@ -3,7 +3,7 @@ name: stdd-debugging
3
3
  description: "Find and fix the root cause of a defect, not its symptom. Use when: A bug, crash, failing test, or unexplained behavior is reported."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Debugging
@@ -3,7 +3,7 @@ name: stdd-delegate-slice
3
3
  description: "Hand a slice of work to a worker session with a declared scope, a ledger handoff, and a reviewed result. Use when: Before implementing a multi-step change whose steps are independent — hand slices to worker sessions (subagent, second CLI, teammate) instead of implementing everything inline; also whenever a worker's result comes back for review."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Delegate a Slice
@@ -3,7 +3,7 @@ name: stdd-finish-change
3
3
  description: "Close an implemented change with independent review, PR evidence, terminal CI, and runtime verification when required. Use when: Implementation is locally verified and the change is ready for review, delivery, or handoff."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Finish change
@@ -3,7 +3,7 @@ name: stdd-implement
3
3
  description: "Execute one agreed behavior slice through docs, genuine red, implementation, and fresh verification. Use when: The behavior contract is agreed and production changes are ready to begin."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Implement
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: stdd-investigation
3
- description: "Read-only diagnosis — evidence-backed findings, no changes. Use when: Asked to diagnose, triage, or explain behavior WITHOUT changing anything."
3
+ description: "Read-only current-state diagnosis — evidence-backed findings, no changes. Use when: Asked a factual question about current behavior, or to diagnose or triage it, WITHOUT changing anything."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Investigation
@@ -15,9 +15,12 @@ it.
15
15
 
16
16
  ## Contract
17
17
 
18
- - No file edits, no state-changing side effects — reads only.
18
+ - No task, ledger event, persisted artifact, file edit, or state-changing side
19
+ effect — reads only.
19
20
  - Every claim in the report is backed by evidence you actually observed,
20
21
  or labeled as unverified with the blocker named.
22
+ - Opinions, future behavior, and hypothetical implementation approaches belong
23
+ in Brainstorming, not Investigation.
21
24
 
22
25
  ## Process
23
26
 
@@ -31,5 +34,8 @@ it.
31
34
  you could not test, report as an explicitly unverified hypothesis with
32
35
  the blocker that prevented the test.
33
36
  3. **Deliver the report**: the diagnosis (or ranked hypotheses) with its
34
- evidence, the blockers, and the narrowest next step a fixing session
35
- should take.
37
+ evidence, the blockers, and the narrowest useful next step.
38
+ 4. **Hand off only when the prompt needs design.** If unknown current facts
39
+ materially affect requested future behavior, finish the factual diagnosis
40
+ and then invoke `stdd-brainstorming`. Merely reading docs or code during
41
+ Brainstorming does not require a separate Investigation.
@@ -3,7 +3,7 @@ name: stdd-planning
3
3
  description: "Turn an agreed behavior contract into an executable, verifiable sequence of work. Use when: The behavior contract is agreed (docs edit drafted or committed) and the change is large enough to need ordered steps — before the first implementation edit, to fix the execution mode and delivery boundary."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Planning
@@ -3,7 +3,7 @@ name: stdd-pr-green
3
3
  description: "A PR is done only when its required checks settle terminal-green on the current head. Use when: A PR/MR exists, or is about to be opened, for the current branch."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # PR Green
@@ -1,29 +1,26 @@
1
1
  ---
2
2
  name: stdd-start-change
3
- description: "Classify a request, open durable task state only for changes, and route to the smallest applicable workflow. Use when: A new implementation, fix, refactor, investigation, or repository change is beginning."
3
+ description: "Open durable task state and route work after explicit intent to persist or modify the repository. Use when: The user explicitly wants a persisted work artifact or repository change."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Start change
10
10
 
11
- Classify the request before writing task state:
12
-
13
- - read-only question or diagnosis → invoke `stdd-investigation`; do not start a
14
- task or write the ledger;
15
- - uncertain behavior or scope invoke `stdd-brainstorming`;
16
- - agreed multi-step behavior → invoke `stdd-planning`;
17
- - known defect without a diagnosis → invoke `stdd-debugging`;
18
- - small agreed change → invoke `stdd-implement` directly.
11
+ Start Change is the action boundary. Invoke it only after explicit intent to
12
+ persist a work artifact or modify the repository. Read-only factual diagnosis
13
+ routes directly to `stdd-investigation`; opinions, future behavior, and
14
+ hypothetical implementation approaches route directly to `stdd-brainstorming`.
15
+ Neither needs a task. A hypothetical plan shown only in chat remains
16
+ Brainstorming.
19
17
 
20
18
  Run `stdd policy show` before asking anything: it may already answer which
21
19
  agent owns this area, which standing permission covers the work, and what this
22
20
  repository treats as routine rather than a decision. Read it through the
23
21
  command, never as raw markdown — the command is where the rules are applied.
24
22
 
25
- For every route that may change the repository, open one task boundary before
26
- carrying state across prompts:
23
+ Open one task boundary before carrying action state across prompts:
27
24
 
28
25
  ```bash
29
26
  stdd task start "<short change name>"
@@ -33,7 +30,14 @@ stdd status --local
33
30
  If another task is active, do not reset it silently. Finish it, continue it,
34
31
  or ask the user which task owns the checkout.
35
32
 
36
- For a change, read `.stdd/method.md` and the canonical docs governing the
37
- touched behavior. The classification is a routing decision, not ceremony:
38
- skip workflows that do not apply, but never skip a mechanical contract that
39
- does.
33
+ Then classify the chosen action and route to the smallest applicable workflow:
34
+
35
+ - behavior or scope is still uncertain invoke `stdd-brainstorming` within
36
+ the active change boundary;
37
+ - agreed multi-step behavior → invoke `stdd-planning`;
38
+ - known defect without a diagnosis → invoke `stdd-debugging`;
39
+ - small agreed change → invoke `stdd-implement` directly.
40
+
41
+ Read `.stdd/method.md` and the canonical docs governing the touched behavior.
42
+ The classification is a routing decision, not ceremony: skip workflows that do
43
+ not apply, but never skip a mechanical contract that does.
@@ -3,7 +3,7 @@ name: stdd-worktrees
3
3
  description: "Work in an isolated workspace without fighting the platform's native isolation. Use when: Starting implementation work that should not disturb the user's current checkout."
4
4
  ---
5
5
 
6
- <!-- generated by stdd plugin build v0.9.1 — do not edit -->
6
+ <!-- generated by stdd plugin build v0.9.2 — do not edit -->
7
7
 
8
8
 
9
9
  # Isolated Workspaces