@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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/package.json +1 -1
- package/runtime/adapters/README.md +13 -0
- package/runtime/cli/status.mjs +2 -2
- package/runtime/method/README.md +14 -5
- package/runtime/method/reference-integration.md +18 -6
- package/runtime/package.json +1 -1
- package/runtime/playbooks/brainstorming.md +56 -37
- package/runtime/playbooks/investigation.md +11 -5
- package/runtime/playbooks/start-change.md +20 -16
- package/runtime/sdk/adapters.mjs +18 -5
- package/skills/stdd-brainstorming/SKILL.md +56 -37
- package/skills/stdd-debugging/SKILL.md +1 -1
- package/skills/stdd-delegate-slice/SKILL.md +1 -1
- package/skills/stdd-finish-change/SKILL.md +1 -1
- package/skills/stdd-implement/SKILL.md +1 -1
- package/skills/stdd-investigation/SKILL.md +11 -5
- package/skills/stdd-planning/SKILL.md +1 -1
- package/skills/stdd-pr-green/SKILL.md +1 -1
- package/skills/stdd-start-change/SKILL.md +20 -16
- package/skills/stdd-worktrees/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -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.
|
package/runtime/cli/status.mjs
CHANGED
|
@@ -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:
|
|
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:
|
|
97
|
+
`task: idle on ${branch}\nnext: no task is required for discussion or read-only work`,
|
|
98
98
|
);
|
|
99
99
|
return;
|
|
100
100
|
}
|
package/runtime/method/README.md
CHANGED
|
@@ -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
|
-
|
|
224
|
-
to infer a workflow from a flat list
|
|
225
|
-
|
|
226
|
-
|
|
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
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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.
|
|
226
|
-
|
|
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
|
|
package/runtime/package.json
CHANGED
|
@@ -1,46 +1,65 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: stdd-brainstorming
|
|
3
|
-
description:
|
|
4
|
-
when:
|
|
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
|
-
|
|
10
|
-
The
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
-
|
|
44
|
-
- Asking
|
|
45
|
-
-
|
|
46
|
-
-
|
|
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
|
|
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
|
|
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
|
|
33
|
-
|
|
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:
|
|
4
|
-
when:
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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.
|
package/runtime/sdk/adapters.mjs
CHANGED
|
@@ -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`.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
`
|
|
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: "
|
|
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.
|
|
6
|
+
<!-- generated by stdd plugin build v0.9.2 — do not edit -->
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
# Brainstorming
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
The
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
-
|
|
46
|
-
- Asking
|
|
47
|
-
-
|
|
48
|
-
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
35
|
-
|
|
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.
|
|
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.
|
|
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: "
|
|
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.
|
|
6
|
+
<!-- generated by stdd plugin build v0.9.2 — do not edit -->
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
# Start change
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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.
|
|
6
|
+
<!-- generated by stdd plugin build v0.9.2 — do not edit -->
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
# Isolated Workspaces
|