task-pipeline-skill 0.9.0 → 0.12.0
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/CHANGELOG.md +106 -0
- package/LICENSE +38 -0
- package/README.md +111 -46
- package/cursor/rules/task-pipeline.mdc +49 -7
- package/package.json +2 -3
- package/plugins/task-pipeline/.claude-plugin/plugin.json +2 -2
- package/plugins/task-pipeline/commands/task-pipeline.md +13 -7
- package/plugins/task-pipeline/skills/task-pipeline/SKILL.md +76 -41
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +52 -25
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +7 -3
- package/plugins/task-pipeline/skills/task-pipeline/references/companion-skills.md +26 -6
- package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +131 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/model-tiering.md +55 -22
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +41 -30
- package/{templates → plugins/task-pipeline/skills/task-pipeline/templates}/README.md +6 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/adr.md +64 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +59 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/context.md +87 -0
- package/templates/brief.md +0 -35
|
@@ -1,32 +1,65 @@
|
|
|
1
|
-
# Model
|
|
1
|
+
# Model policy
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
**One model, confirmed once, before the run starts.** Not a per-stage tier list,
|
|
4
|
+
not a hardcoded vendor id — a single decision the operator makes at preflight and
|
|
5
|
+
the pipeline then honors without nagging.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|---|---|---|
|
|
8
|
-
| 0–4 (intake grill, docs, brainstorm, spec, plan) | Fable 5 | `claude-fable-5` |
|
|
9
|
-
| 5–6 (subagent dev, tests) | Opus 4.8 | `claude-opus-4-8` |
|
|
10
|
-
| 7–9 (lint/deploy, logs, docs) | inherit current | — |
|
|
7
|
+
## The default
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
> **Use the most capable reasoning model the environment offers** — at the time of
|
|
10
|
+
> writing that is the **latest Opus generation**, but read that as *"the top tier
|
|
11
|
+
> of whatever you're on"*, not as a specific string.
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
Every stage runs on that model by default. The pipeline is a full delivery cycle:
|
|
14
|
+
the grill has to hear what the operator didn't say, the spec has to lock contracts
|
|
15
|
+
a zero-context implementer will follow, and the build has to hold a plan in its
|
|
16
|
+
head. Downgrading any of those to save tokens costs more in rework than it saves.
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
> Switch: `/model <id>` — then say "continue". *(Reminder only.)*
|
|
18
|
+
## Never hardcode a model id
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
Model ids go stale — generations ship, tiers get renamed, and the operator may not
|
|
21
|
+
even be on the same provider. So:
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
- **Resolve at runtime.** Look at what the environment actually offers (`/model`,
|
|
24
|
+
the harness's model list) and pick the top reasoning tier available there.
|
|
25
|
+
- **Treat any id in this repo as an example**, including in `pipeline.example.json`.
|
|
26
|
+
Stage configs use provider-agnostic tokens:
|
|
27
|
+
- `default` — the model confirmed for this run (the recommendation above)
|
|
28
|
+
- `inherit` — whatever the operator is currently on; no recommendation
|
|
29
|
+
- **Another provider is fine.** "Top tier available" is the contract. If the
|
|
30
|
+
environment has no Opus-class model, the best available one is the right answer —
|
|
31
|
+
say which one you settled on and keep going.
|
|
25
32
|
|
|
26
|
-
|
|
27
|
-
`Agent` / `Workflow` model override — no operator action needed for subagents.
|
|
33
|
+
## Mechanic — confirm at preflight, then stop asking
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
Once, as part of the preflight (before stage 0):
|
|
30
36
|
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
> 🧠 **Model for this run:** recommended **`<top tier available>`**. You're on
|
|
38
|
+
> `<current>`.
|
|
39
|
+
> Switch with `/model <id>`, or say "keep current" / name another. Per-stage
|
|
40
|
+
> overrides welcome (e.g. a cheaper model for mechanical stages) — say so now and
|
|
41
|
+
> I'll record the map.
|
|
42
|
+
|
|
43
|
+
Record the answer in the stage-0 brief (`Model` row of the autonomy sweep). After
|
|
44
|
+
that:
|
|
45
|
+
|
|
46
|
+
- **Do not re-prompt at every stage boundary.** The decision is made; nagging is
|
|
47
|
+
the thing this replaces.
|
|
48
|
+
- **Re-prompt only** when the operator recorded a *per-stage override map* and the
|
|
49
|
+
next stage's entry differs from the current model — then emit the same block
|
|
50
|
+
scoped to that stage.
|
|
51
|
+
- A skill runs inside the current context and **cannot change the main-loop
|
|
52
|
+
model**; only the operator can, via `/model` (or `/fast`). Preflight is
|
|
53
|
+
interactive anyway, so this costs one exchange.
|
|
54
|
+
|
|
55
|
+
## Subagents
|
|
56
|
+
|
|
57
|
+
Stage 5 spawns subagents; the orchestrator pins them to the **run's confirmed
|
|
58
|
+
model** via the `Agent` / `Workflow` model override. No operator action needed —
|
|
59
|
+
and no silent downgrade to a cheaper tier.
|
|
60
|
+
|
|
61
|
+
## Degradation
|
|
62
|
+
|
|
63
|
+
The recommendation is a **reminder, not a block**. If the recommended tier isn't
|
|
64
|
+
available, keep the current model, state plainly which one is in use, and run. The
|
|
65
|
+
pipeline never stalls on a model it can't get.
|
|
@@ -8,7 +8,14 @@ operator's explicit go). These stages (0 intake + 1→9) are the plugin's
|
|
|
8
8
|
`pipeline.schema.json`; a host project replaces it with its own
|
|
9
9
|
stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
10
10
|
|
|
11
|
-
## 0 — Intake grill
|
|
11
|
+
## 0 — Intake grill — MANDATORY
|
|
12
|
+
- **Stage 0 is not optional and not skippable.** There is no "small enough task"
|
|
13
|
+
exemption, no "the request was already clear" exemption, no starting stage 1
|
|
14
|
+
"while the operator thinks". The only sanctioned bypass is the
|
|
15
|
+
entry-from-super-ux short-circuit below, and even that still requires a scope
|
|
16
|
+
confirmation and a record of what was adopted vs skipped. A run that reaches
|
|
17
|
+
stage 1 without a committed, operator-confirmed brief is a **failed run** —
|
|
18
|
+
stop and go back.
|
|
12
19
|
- **Entry-from-super-ux short-circuit (check FIRST).** task-pipeline is often
|
|
13
20
|
launched *from* super-ux — its `/ux` action menu offers "execute autonomously
|
|
14
21
|
via the task-pipeline plugin" once the UX chain (and often a
|
|
@@ -28,33 +35,36 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
28
35
|
up front so stages 1→9 need no further human input beyond the manual gates.
|
|
29
36
|
This is input expansion, not design: turn "make me feature X" into locked
|
|
30
37
|
answers for scope, users, constraints, data, edge cases, done-criteria.
|
|
31
|
-
- **
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
5. **Reconcile contradictions** immediately; chase dodges ("we'll decide
|
|
41
|
-
later" → "what's the latest you can decide and still ship?").
|
|
38
|
+
- **How it runs: [`grill.md`](grill.md)** — the full doctrine, built into this
|
|
39
|
+
skill (nothing to install). In short: one question per turn, a recommended
|
|
40
|
+
answer with each, explore the codebase before asking, depth-first through the
|
|
41
|
+
decision tree, contradictions reconciled on the spot; plus **domain awareness**
|
|
42
|
+
(challenge terms against `CONTEXT.md`, sharpen fuzzy language, stress-test with
|
|
43
|
+
concrete scenarios, cross-reference the code, record ADRs for hard-to-reverse
|
|
44
|
+
calls) and the **autonomy sweep** that pre-resolves every stage-1→9 blocker.
|
|
45
|
+
Deploy authorization has a hard floor there: a standing go counts only when it
|
|
46
|
+
names the target and the preconditions.
|
|
42
47
|
- **UI early-detect:** one branch of the grill is always "does this touch a
|
|
43
48
|
user-facing surface (web/mobile/CLI/TUI)?". If yes → surface **super-ux**
|
|
44
49
|
now (use it if installed; otherwise give the install line — see SKILL.md
|
|
45
50
|
*Prerequisites*); this arms the stage-3 UX track.
|
|
46
51
|
- **Artifact:** lock the resolved decisions into a **task brief** committed at
|
|
47
52
|
`docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` (scope, users/UI verdict,
|
|
48
|
-
constraints, assumptions, explicitly-deferred items, done-criteria)
|
|
49
|
-
|
|
50
|
-
|
|
53
|
+
constraints, assumptions, explicitly-deferred items, done-criteria) **plus the
|
|
54
|
+
autonomy sweep's per-stage answers and the model decision**. Seed it from
|
|
55
|
+
the skill's `templates/brief.md` skeleton — but only when absent, never
|
|
56
|
+
overwrite an existing brief. Stages 2–4 build on this brief; stages 5–9 read
|
|
57
|
+
its autonomy section instead of asking. Where the session produced them, also:
|
|
58
|
+
an updated `CONTEXT.md` (terms written as they resolved) and any ADRs under
|
|
59
|
+
`docs/adr/` — see `grill.md` → *Domain awareness*.
|
|
51
60
|
- **GATE (manual):** shared understanding reached — every detected branch has a
|
|
52
|
-
recorded answer or an explicit deferral, no open contradictions,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
recorded answer or an explicit deferral, no open contradictions, **every
|
|
62
|
+
autonomy-sweep row is answered or explicitly marked "stop and ask here"**, the
|
|
63
|
+
model decision is recorded, and the operator confirms the brief. Stop when a
|
|
64
|
+
re-scan surfaces no new branches (don't grill past diminishing returns;
|
|
65
|
+
reversible calls can be deferred with a note). Only then start stage 1.
|
|
56
66
|
|
|
57
|
-
## 1 — Docs study
|
|
67
|
+
## 1 — Docs study
|
|
58
68
|
- **What:** ground every external library / API / SDK the task touches on the
|
|
59
69
|
*current* docs, before locking any contract.
|
|
60
70
|
- **Invoke:** `context7` MCP (`resolve-library-id` → `get-library-docs`, scope by
|
|
@@ -63,7 +73,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
63
73
|
- **GATE (auto):** every contract the design will lock is grounded in fetched docs,
|
|
64
74
|
not recall. Unresolvable libraries are flagged in the spec.
|
|
65
75
|
|
|
66
|
-
## 2 — Brainstorm
|
|
76
|
+
## 2 — Brainstorm
|
|
67
77
|
- **Invoke:** `superpowers:brainstorming`. One question at a time; 2–3 approaches +
|
|
68
78
|
a recommendation; design presented in sections.
|
|
69
79
|
- **UI detection (mandatory check):** decide whether the task touches any
|
|
@@ -72,7 +82,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
72
82
|
track in stage 3.
|
|
73
83
|
- **GATE (manual):** the user approves the design **and** the UI verdict is recorded.
|
|
74
84
|
|
|
75
|
-
## 3 — Spec
|
|
85
|
+
## 3 — Spec — with UX track for user-facing tasks
|
|
76
86
|
- **UX track (runs FIRST when stage 2 flagged UI; skip entirely otherwise).**
|
|
77
87
|
Requires the **super-ux** skills. If missing on a UI task → give the install
|
|
78
88
|
line and stop (see SKILL.md *Prerequisites*: `/plugin marketplace add
|
|
@@ -89,7 +99,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
89
99
|
screen + state with wireframe and (Figma on) a Figma frame link.
|
|
90
100
|
4. `ux-scenarios` → `docs/ux/scenarios.md` — the **WHAT** (source of truth for
|
|
91
101
|
behavior): scenarios validated per the format contract (`scenario-format.md`,
|
|
92
|
-
ux-contract
|
|
102
|
+
ux-contract v4) — IDs, statuses, `Traces:` to stories/journey stages/flows,
|
|
93
103
|
edge/error states enumerated.
|
|
94
104
|
5. **Run the super-ux linter** (`/ux-lint` or `python3 docs/ux/lint.py`) — it
|
|
95
105
|
must pass: no drift, no orphans, no broken traces or stale Figma links.
|
|
@@ -111,7 +121,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
111
121
|
(or an explicit v1-mode/tiny-project waiver by the operator). No plan (stage 4)
|
|
112
122
|
starts before this — the chain comes BEFORE interface.
|
|
113
123
|
|
|
114
|
-
## 4 — Plan
|
|
124
|
+
## 4 — Plan
|
|
115
125
|
- **Invoke:** `superpowers:writing-plans` →
|
|
116
126
|
`docs/superpowers/plans/YYYY-MM-DD-<feature>.md`. Zero-context tasks, exact
|
|
117
127
|
paths, TDD steps, DoD each, dependency graph + parallel groups, non-overlapping
|
|
@@ -122,14 +132,15 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
122
132
|
includes satisfying them **and** updating the affected super-ux layers in the
|
|
123
133
|
same change (super-ux *same-change* rule).
|
|
124
134
|
|
|
125
|
-
## 5 — Dev
|
|
135
|
+
## 5 — Dev
|
|
126
136
|
- **Invoke:** `superpowers:using-git-worktrees` (isolate) →
|
|
127
137
|
`superpowers:subagent-driven-development` (or `superpowers:executing-plans`).
|
|
128
|
-
TDD per task (failing test → minimal impl → green → commit). Pin subagents to
|
|
138
|
+
TDD per task (failing test → minimal impl → green → commit). Pin subagents to the
|
|
139
|
+
run's confirmed model (`model-tiering.md`).
|
|
129
140
|
- **GATE (auto):** all plan tasks DONE (two-stage review: spec compliance, then code
|
|
130
141
|
quality); full test suite green.
|
|
131
142
|
|
|
132
|
-
## 6 — Tests
|
|
143
|
+
## 6 — Tests
|
|
133
144
|
- **What:** consolidate test coverage for the change: confirm new functionality
|
|
134
145
|
has tests (written test-first in stage 5), update/repair existing tests the
|
|
135
146
|
change touched, and add edge-case + failure-path tests per DoD.
|
|
@@ -139,7 +150,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
139
150
|
is covered; no `skip`/`xfail` smuggling a red suite past the gate. Never advance
|
|
140
151
|
to deploy on a red or partial run.
|
|
141
152
|
|
|
142
|
-
## 7 — Lint + deploy
|
|
153
|
+
## 7 — Lint + deploy
|
|
143
154
|
- Read host conventions (`conventions.md`): run the linter; fix failures. The suite
|
|
144
155
|
is already green from stage 6 — re-run it if code changed since. For UI projects,
|
|
145
156
|
the **super-ux linter** (`python3 docs/ux/lint.py` / `/ux-lint`) is part of lint —
|
|
@@ -150,13 +161,13 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
|
150
161
|
linter) **and** suite green **before** deploy. Deploy is outward → explicit
|
|
151
162
|
operator go. Respect deploy-from-main rules if the project mandates them.
|
|
152
163
|
|
|
153
|
-
## 8 — Post-deploy
|
|
164
|
+
## 8 — Post-deploy
|
|
154
165
|
- Tail deploy logs / health-check per conventions. Confirm clean boot, no error
|
|
155
166
|
spike, live subsystems healthy.
|
|
156
167
|
- **GATE (auto):** clean boot confirmed, or an **honest degradation report** with next
|
|
157
168
|
steps — never silent success.
|
|
158
169
|
|
|
159
|
-
## 9 — Docs + wiki
|
|
170
|
+
## 9 — Docs + wiki
|
|
160
171
|
- Update host module docs / runbooks per the project's self-update rules, in the
|
|
161
172
|
**same change**. For UI tasks, confirm the super-ux layers were updated in this
|
|
162
173
|
change and the linter is green (super-ux *same-change* + *no-drift* rules). Then
|
|
@@ -7,6 +7,12 @@ from the `superpowers` skills, and the `docs/ux/*` skeletons from `super-ux`.
|
|
|
7
7
|
| Template | Seeded to | Stage |
|
|
8
8
|
|---|---|---|
|
|
9
9
|
| `brief.md` | `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` | 0 — intake grill |
|
|
10
|
+
| `context.md` | `CONTEXT.md` at the repo root (or per context) | 0 — grill, domain awareness |
|
|
11
|
+
| `adr.md` | `docs/adr/NNNN-<slug>.md` | 0 — grill, hard-to-reverse decisions |
|
|
12
|
+
|
|
13
|
+
`context.md` and `adr.md` are **format references**, not files to copy wholesale:
|
|
14
|
+
the grill writes `CONTEXT.md` entries and ADRs in their shape, lazily — only once
|
|
15
|
+
there is a resolved term or a decision worth recording.
|
|
10
16
|
|
|
11
17
|
Seeding rule (per the ssheleg canon): create a template copy **only when the
|
|
12
18
|
target is absent**; never overwrite an existing brief.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# ADR — format
|
|
2
|
+
|
|
3
|
+
Architecture Decision Records live in `docs/adr/` with sequential numbering
|
|
4
|
+
(`0001-slug.md`, `0002-slug.md`, …). Scan for the highest existing number and
|
|
5
|
+
increment. Create the directory **lazily** — only when the first ADR is needed.
|
|
6
|
+
|
|
7
|
+
> Adapted from Matt Pocock's `grill-with-docs` (MIT — see the repo LICENSE →
|
|
8
|
+
> *Third-party*).
|
|
9
|
+
|
|
10
|
+
## Template
|
|
11
|
+
|
|
12
|
+
```md
|
|
13
|
+
# {Short title of the decision}
|
|
14
|
+
|
|
15
|
+
{1–3 sentences: what the context was, what was decided, and why.}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
That's it. An ADR can be a single paragraph. The value is recording *that* a
|
|
19
|
+
decision was made and *why* — not filling out sections.
|
|
20
|
+
|
|
21
|
+
## Optional sections
|
|
22
|
+
|
|
23
|
+
Only when they add genuine value; most ADRs need none.
|
|
24
|
+
|
|
25
|
+
- **Status** frontmatter (`proposed | accepted | deprecated | superseded by
|
|
26
|
+
ADR-NNNN`) — useful once decisions start getting revisited.
|
|
27
|
+
- **Considered options** — only when the rejected alternatives are worth
|
|
28
|
+
remembering.
|
|
29
|
+
- **Consequences** — only when non-obvious downstream effects need calling out.
|
|
30
|
+
|
|
31
|
+
## When to write one
|
|
32
|
+
|
|
33
|
+
All three must hold:
|
|
34
|
+
|
|
35
|
+
1. **Hard to reverse** — changing your mind later carries real cost.
|
|
36
|
+
2. **Surprising without context** — a future reader will look at the code and
|
|
37
|
+
wonder "why on earth did they do it this way?"
|
|
38
|
+
3. **A real trade-off** — genuine alternatives existed and one was picked for
|
|
39
|
+
specific reasons.
|
|
40
|
+
|
|
41
|
+
Easy to reverse → skip it, you'll just reverse it. Not surprising → nobody will
|
|
42
|
+
wonder. No real alternative → there's nothing to record beyond "we did the obvious
|
|
43
|
+
thing."
|
|
44
|
+
|
|
45
|
+
### What qualifies
|
|
46
|
+
|
|
47
|
+
- **Architectural shape.** "We're using a monorepo." "The write model is
|
|
48
|
+
event-sourced; the read model projects into Postgres."
|
|
49
|
+
- **Integration patterns between contexts.** "Ordering and Billing communicate via
|
|
50
|
+
domain events, not synchronous HTTP."
|
|
51
|
+
- **Technology choices carrying lock-in.** Database, message bus, auth provider,
|
|
52
|
+
deployment target — not every library, just the ones that would take a quarter to
|
|
53
|
+
swap out.
|
|
54
|
+
- **Boundary and scope decisions.** "Customer data is owned by the Customer
|
|
55
|
+
context; others reference it by ID only." The explicit no's are as valuable as
|
|
56
|
+
the yes's.
|
|
57
|
+
- **Deliberate deviations from the obvious path.** "Manual SQL instead of an ORM
|
|
58
|
+
because X." Anything a reasonable reader would assume the opposite of — this is
|
|
59
|
+
what stops the next engineer from "fixing" something deliberate.
|
|
60
|
+
- **Constraints invisible in the code.** "No AWS, for compliance." "Sub-200ms
|
|
61
|
+
responses, per the partner API contract."
|
|
62
|
+
- **Rejected alternatives whose rejection is non-obvious.** Considered GraphQL,
|
|
63
|
+
picked REST for subtle reasons → record it, or someone re-proposes GraphQL in six
|
|
64
|
+
months.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Task brief — <topic>
|
|
2
|
+
|
|
3
|
+
> Stage-0 intake artifact. The grill fills this in and the operator confirms it
|
|
4
|
+
> before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
|
|
5
|
+
> Every field is a resolved decision or an explicit deferral — no open unknowns.
|
|
6
|
+
|
|
7
|
+
- **Date:** YYYY-MM-DD
|
|
8
|
+
- **Task (one line):** <what the operator asked for, restated>
|
|
9
|
+
- **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
|
|
10
|
+
If yes, the stage-3 super-ux UX track is armed.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
- **In scope:** …
|
|
15
|
+
- **Out of scope / explicitly deferred:** … (with the reason and, for deferrals,
|
|
16
|
+
the latest moment the decision can still be made)
|
|
17
|
+
|
|
18
|
+
## Users & context
|
|
19
|
+
|
|
20
|
+
- **Who / for what:** … (personas, the job being done)
|
|
21
|
+
- **Where it runs / constraints:** platform, runtime, data, integrations, limits
|
|
22
|
+
|
|
23
|
+
## Decisions locked (the grill's output)
|
|
24
|
+
|
|
25
|
+
| # | Decision | Chosen | Rationale |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| 1 | … | … | … |
|
|
28
|
+
|
|
29
|
+
## Autonomy (the sweep — stages 1→9 read this instead of asking)
|
|
30
|
+
|
|
31
|
+
Every row is either a resolved answer or an explicit **STOP AND ASK**. A blank row
|
|
32
|
+
is not neutral — it is a scheduled interruption.
|
|
33
|
+
|
|
34
|
+
| Stage | Question | Answer |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| run-wide | Model for this run | … (most capable available unless overridden; per-stage overrides here) |
|
|
37
|
+
| run-wide | Decide autonomously vs escalate to me | … |
|
|
38
|
+
| 1 Docs | External libs/APIs/SDKs in play; any context7 can't resolve → where their docs live | … |
|
|
39
|
+
| 2–3 Spec | UI verdict (arms super-ux); scenario-tracing waiver, if any | … |
|
|
40
|
+
| 4–5 Dev | Base branch; worktree/branch policy; is `main` off-limits; commit convention; task tracker | … |
|
|
41
|
+
| 6 Tests | Test command; what "green" means; known-red baseline; coverage expectation | … |
|
|
42
|
+
| 7 Lint | Lint command (incl. `docs/ux/lint.py` for UI projects) | … |
|
|
43
|
+
| 7 Deploy | Target + path; release automation on/off; deploy-from-main rule | … |
|
|
44
|
+
| 7 Deploy | **Authorization** — standing go, or ask every time? | … |
|
|
45
|
+
| 8 Post-deploy | Where logs / health live (app name, endpoint, workflow) | … |
|
|
46
|
+
| 9 Docs+wiki | Which module docs / runbooks this change updates; wiki sync yes/no | … |
|
|
47
|
+
|
|
48
|
+
> **Deploy authorization has a hard floor.** A standing go counts only if it is
|
|
49
|
+
> **specific** — named target and named preconditions ("staging, once lint and the
|
|
50
|
+
> full suite are green; production always asks"). Vague blanket permission does not
|
|
51
|
+
> authorize an outward, irreversible action; stage 7 stops and asks.
|
|
52
|
+
|
|
53
|
+
## Done-criteria
|
|
54
|
+
|
|
55
|
+
- Observable, verifiable conditions that mean "this task is finished".
|
|
56
|
+
|
|
57
|
+
## Open assumptions / risks
|
|
58
|
+
|
|
59
|
+
- Assumption → how it's validated (or flagged risky-untested).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# CONTEXT.md — format
|
|
2
|
+
|
|
3
|
+
The project's living glossary. The stage-0 grill writes to it **inline**, as each
|
|
4
|
+
term is resolved. Seeded at the repo root (`CONTEXT.md`) for a single-context repo.
|
|
5
|
+
|
|
6
|
+
> Adapted from Matt Pocock's `grill-with-docs` (MIT — see the repo LICENSE →
|
|
7
|
+
> *Third-party*).
|
|
8
|
+
|
|
9
|
+
## Structure
|
|
10
|
+
|
|
11
|
+
```md
|
|
12
|
+
# {Context Name}
|
|
13
|
+
|
|
14
|
+
{One or two sentences: what this context is and why it exists.}
|
|
15
|
+
|
|
16
|
+
## Language
|
|
17
|
+
|
|
18
|
+
**Order**:
|
|
19
|
+
A confirmed request from a Customer for goods or services.
|
|
20
|
+
_Avoid_: Purchase, transaction
|
|
21
|
+
|
|
22
|
+
**Invoice**:
|
|
23
|
+
A request for payment sent to a customer after delivery.
|
|
24
|
+
_Avoid_: Bill, payment request
|
|
25
|
+
|
|
26
|
+
**Customer**:
|
|
27
|
+
A person or organization that places orders.
|
|
28
|
+
_Avoid_: Client, buyer, account
|
|
29
|
+
|
|
30
|
+
## Relationships
|
|
31
|
+
|
|
32
|
+
- An **Order** produces one or more **Invoices**
|
|
33
|
+
- An **Invoice** belongs to exactly one **Customer**
|
|
34
|
+
|
|
35
|
+
## Example dialogue
|
|
36
|
+
|
|
37
|
+
> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
|
|
38
|
+
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
|
|
39
|
+
|
|
40
|
+
## Flagged ambiguities
|
|
41
|
+
|
|
42
|
+
- "account" was used to mean both **Customer** and **User** — resolved: these are
|
|
43
|
+
distinct concepts.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Rules
|
|
47
|
+
|
|
48
|
+
- **Be opinionated.** Several words for one concept → pick the best, list the rest
|
|
49
|
+
as aliases to avoid.
|
|
50
|
+
- **Flag conflicts explicitly.** An ambiguous term goes under *Flagged ambiguities*
|
|
51
|
+
with its resolution.
|
|
52
|
+
- **Keep definitions tight.** One sentence. Define what it IS, not what it does.
|
|
53
|
+
- **Show relationships.** Bold the term names; express cardinality where obvious.
|
|
54
|
+
- **Only project-specific terms.** General programming concepts (timeouts, error
|
|
55
|
+
types, utility patterns) don't belong, however heavily the project uses them.
|
|
56
|
+
Before adding: is this unique to this context, or just programming?
|
|
57
|
+
- **Group under subheadings** when natural clusters emerge; a flat list is fine
|
|
58
|
+
when the terms are one cohesive area.
|
|
59
|
+
- **Write an example dialogue** — a dev and a domain expert using the terms
|
|
60
|
+
naturally, which is what exposes the boundaries between related concepts.
|
|
61
|
+
|
|
62
|
+
## Single vs multi-context repos
|
|
63
|
+
|
|
64
|
+
**Single context (most repos):** one `CONTEXT.md` at the root.
|
|
65
|
+
|
|
66
|
+
**Multiple contexts:** a `CONTEXT-MAP.md` at the root lists them, where they live,
|
|
67
|
+
and how they relate:
|
|
68
|
+
|
|
69
|
+
```md
|
|
70
|
+
# Context Map
|
|
71
|
+
|
|
72
|
+
## Contexts
|
|
73
|
+
|
|
74
|
+
- [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
|
|
75
|
+
- [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
|
|
76
|
+
- [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
|
|
77
|
+
|
|
78
|
+
## Relationships
|
|
79
|
+
|
|
80
|
+
- **Ordering → Fulfillment**: Ordering emits `OrderPlaced`; Fulfillment consumes it to start picking
|
|
81
|
+
- **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched`; Billing consumes it to invoice
|
|
82
|
+
- **Ordering ↔ Billing**: shared types for `CustomerId` and `Money`
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Which structure applies is inferred: `CONTEXT-MAP.md` exists → read it to find the
|
|
86
|
+
contexts; only a root `CONTEXT.md` → single context; neither → create the root file
|
|
87
|
+
lazily, when the first term is resolved.
|
package/templates/brief.md
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Task brief — <topic>
|
|
2
|
-
|
|
3
|
-
> Stage-0 intake artifact. The grill fills this in and the operator confirms it
|
|
4
|
-
> before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
|
|
5
|
-
> Every field is a resolved decision or an explicit deferral — no open unknowns.
|
|
6
|
-
|
|
7
|
-
- **Date:** YYYY-MM-DD
|
|
8
|
-
- **Task (one line):** <what the operator asked for, restated>
|
|
9
|
-
- **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
|
|
10
|
-
If yes, the stage-3 super-ux UX track is armed.
|
|
11
|
-
|
|
12
|
-
## Scope
|
|
13
|
-
|
|
14
|
-
- **In scope:** …
|
|
15
|
-
- **Out of scope / explicitly deferred:** … (with the reason and, for deferrals,
|
|
16
|
-
the latest moment the decision can still be made)
|
|
17
|
-
|
|
18
|
-
## Users & context
|
|
19
|
-
|
|
20
|
-
- **Who / for what:** … (personas, the job being done)
|
|
21
|
-
- **Where it runs / constraints:** platform, runtime, data, integrations, limits
|
|
22
|
-
|
|
23
|
-
## Decisions locked (the grill's output)
|
|
24
|
-
|
|
25
|
-
| # | Decision | Chosen | Rationale |
|
|
26
|
-
|---|---|---|---|
|
|
27
|
-
| 1 | … | … | … |
|
|
28
|
-
|
|
29
|
-
## Done-criteria
|
|
30
|
-
|
|
31
|
-
- Observable, verifiable conditions that mean "this task is finished".
|
|
32
|
-
|
|
33
|
-
## Open assumptions / risks
|
|
34
|
-
|
|
35
|
-
- Assumption → how it's validated (or flagged risky-untested).
|