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.
@@ -1,20 +1,20 @@
1
1
  ---
2
2
  name: task-pipeline
3
- description: "Orchestrates a task through the full end-to-end delivery pipeline — an up-front intake grill that expands the request into a complete brief, then docs study, brainstorm, spec, plan, subagent-driven build, test suite, lint/deploy, post-deploy log check, and docs/wiki sync — as gated stages built on the superpowers skills. Use when the user wants to run a task through the pipeline, asks for the full cycle / полный цикл / прогони по конвейеру, invokes /task-pipeline, or starts any substantial feature, fix, or build that should follow the disciplined cycle rather than ad-hoc coding. Grills the operator first so the rest runs autonomously; recommends super-ux for any user-facing task; reminds which model to switch to per stage; reads host-project conventions for deploy/docs/wiki so it stays project-agnostic."
3
+ description: "Use when running a substantial task through the full end-to-end delivery pipeline — an up-front intake grill that expands the request into a complete brief, then docs study, brainstorm, spec, plan, subagent-driven build, test suite, lint/deploy, post-deploy log check, and docs/wiki sync — as gated stages built on the superpowers skills. Use when the user wants to run a task through the pipeline, asks for the full cycle / полный цикл / прогони по конвейеру, invokes /task-pipeline, or starts any substantial feature, fix, or build that should follow the disciplined cycle rather than ad-hoc coding. The intake grill is mandatory — it front-loads every decision, including the per-stage autonomy sweep, so stages 1→9 run without mid-flight questions; recommends super-ux for any user-facing task; confirms one model up front (most capable available, never a hardcoded id); reads host-project conventions for deploy/docs/wiki so it stays project-agnostic."
4
4
  ---
5
5
 
6
6
  # task-pipeline
7
7
 
8
8
  Thin orchestrator. Runs a task through **gated stages**, each built on an
9
9
  existing skill. Keeps the main thread disciplined: no stage advances until its
10
- gate passes; each stage names the model to use.
10
+ gate passes; the whole run uses one model, confirmed before it starts.
11
11
 
12
12
  **Grill first, then run autonomously.** A one-line task ("make me feature X") is
13
- never enough to finish without a human in the loop. Stage 0 **grills the operator
14
- up front** — a relentless, one-question-at-a-time interview that resolves every
15
- decision branch and locks the answers into a brief. That front-loads all the
16
- human input so stages 1→9 can run to the end with only the built-in gate
17
- approvals, not mid-flight discovery.
13
+ never enough to finish without a human in the loop. Stage 0 is **mandatory**: a
14
+ relentless, one-question-at-a-time interview that resolves every decision branch
15
+ *and* sweeps stages 1→9 for anything that would stop the run later then locks
16
+ the answers into a brief. Autonomy is bought there or not at all; every question
17
+ skipped at stage 0 comes back as an interruption at stage 6.
18
18
 
19
19
  **Config contract: [`pipeline.schema.json`](pipeline.schema.json).** A pipeline is
20
20
  a machine-readable config — an ordered list of stages, each with `skills[]` (the
@@ -56,58 +56,92 @@ workflow for the WHY→UI→scenario chain (`/ux`, `ux-foundation`, `ux-flows`,
56
56
  (or `npx skills add ssheleg/super-ux`). For UI tasks the spec gate **requires**
57
57
  it — install before stage 3, otherwise stop and ask the operator to install.
58
58
 
59
- **grill-me (optional, enhances stage 0).** If the `grill-me` / `grilling` skill
60
- resolves, stage 0 uses it; otherwise stage 0 runs its own built-in grill loop —
61
- no hard dependency. Install (optional): `npx skills add mattpocock/skills` or the
62
- engineering-advanced-skills marketplace.
59
+ **The grill is built in no companion skill, nothing to install.** Stage 0 ships
60
+ with this skill: the full doctrine lives in [`references/grill.md`](references/grill.md)
61
+ (interview loop, domain awareness, autonomy sweep, output). It is **mandatory**
62
+ no "clear enough task" exemption, no starting stage 1 without a committed,
63
+ operator-confirmed brief. The one sanctioned bypass is the entry-from-super-ux
64
+ short-circuit, and even that demands a scope confirmation.
65
+
66
+ Two things the grill does beyond clarifying the request:
67
+ - **Domain awareness.** It reads the project's own `CONTEXT.md` / `docs/adr/` and
68
+ holds the operator to them — challenging terms that conflict with the glossary,
69
+ sharpening overloaded words, stress-testing with concrete scenarios, and
70
+ flagging where the code contradicts what was just said. Resolved terms are
71
+ written to `CONTEXT.md` as they land; genuinely hard-to-reverse decisions get an
72
+ ADR.
73
+ - **The autonomy sweep.** It pre-resolves what would otherwise stop stages 1→9
74
+ mid-flight (test/lint/deploy commands, branch policy, log locations, docs
75
+ targets, the model decision, deploy authorization). Autonomy is bought here or
76
+ not at all — an unasked question is a scheduled interruption.
63
77
 
64
78
  ## How to run
65
79
 
66
80
  1. Restate the task in one line. Create a **TaskList: one task per stage, starting
67
81
  with stage 0** (survives context loss; lets you resume). Then run the
68
82
  **companion preflight** (`references/companion-skills.md`): detect which
69
- companion skills resolve and emit the recommendation block install the
70
- required/recommended ones (superpowers always; super-ux for UI tasks) before
71
- proceeding.
72
- 2. **Run stage 0 (Intake grill) first** grill the operator until shared
73
- understanding is reached and the brief is locked (`references/stages.md` → 0).
74
- Do not touch stage 1 before the brief is confirmed. **Entered from super-ux?**
83
+ companion skills resolve and emit ONE block covering both the companions —
84
+ install the required/recommended ones (superpowers always; super-ux for UI
85
+ tasks) — **and the model decision** (`references/model-tiering.md`): recommend
86
+ the most capable model available, let the operator confirm or override, record
87
+ it. Ask once, here.
88
+ 2. **Run stage 0 (Intake grill) always, no exceptions.** Grill until shared
89
+ understanding is reached, the autonomy sweep is covered and the brief is locked
90
+ (`references/stages.md` → 0). Do not touch stage 1 before the brief is
91
+ committed and confirmed. **Entered from super-ux?**
75
92
  (a validated `docs/ux/` chain and/or a `docs/ux/plans/…` fix plan already
76
93
  exists — super-ux's `/ux` hands off here) → don't re-grill or rebuild the UX
77
94
  chain: just check it's OK (`/ux-lint` green), confirm scope in one line, and
78
95
  skip ahead to the first stage with real work (see `references/stages.md` → 0).
79
- 3. Walk stages 1→9. Before each: **model check** (see `references/model-tiering.md`)
80
- if recommended current, emit the reminder block and wait for the operator to `/model`.
96
+ 3. Walk stages 1→9 on the model confirmed at preflight. **Don't re-ask about the
97
+ model at every boundary** only when the operator recorded a per-stage override
98
+ map and the next stage's entry differs (`references/model-tiering.md`).
81
99
  4. Do **not** advance until the stage **gate** passes (`references/stages.md`).
82
100
  Honor the gate **type**: for `auto`, verify the gate's `check` yourself and
83
101
  stop/return on fail; for `manual`, present the result and **wait for the
84
102
  operator's explicit "continue"/go** — an auto gate never substitutes for a
85
103
  required manual approval.
86
- 5. Cross-cutting, every stage: task tracker + conventional commits per host
87
- conventions; worktree isolation for the build; honest degradation (never claim a
88
- failed/skipped step succeeded); outward/irreversible actions (deploy, publish,
89
- repo create) need explicit operator go.
104
+ 5. Cross-cutting, every stage: **answer from the brief's autonomy section rather
105
+ than asking again** it was grilled precisely so you wouldn't have to; task
106
+ tracker + conventional commits per host conventions; worktree isolation for the
107
+ build; honest degradation (never claim a failed/skipped step succeeded);
108
+ outward/irreversible actions (deploy, publish, repo create) need explicit
109
+ operator go — or a **specific** standing authorization recorded in the brief
110
+ (named target + preconditions; a vague "do everything" is not one).
90
111
 
91
112
  ## Stages (detail in `references/stages.md`)
92
113
 
93
- | # | Stage | Model | Invoke | Gate | Type |
94
- |---|---|---|---|---|---|
95
- | 0 | Intake grill | Fable | `grill-me` / `grilling` if present, else built-in grill loop | shared understanding reached; brief locked + confirmed | manual |
96
- | 1 | Docs study | Fable | `context7` (resolve-library-id → get-library-docs) / `context7-docs` | contracts grounded on fetched docs | auto |
97
- | 2 | Brainstorm | Fable | `superpowers:brainstorming` + **UI detection** | design approved; UI verdict recorded | manual |
98
- | 3 | Spec | Fable | **UI → super-ux chain first** (`/ux` `ux-foundation` CJM → `ux-flows` screens → `ux-scenarios` → `/ux-lint`), then spec `docs/superpowers/specs/…-design.md` | committed + reviewed; UI: chain validated, linter green, scenarios/`SCR-` traced | manual |
99
- | 4 | Plan | Fable | `superpowers:writing-plans` → `docs/superpowers/plans/…md` | parallel-ready, DoD per task | auto |
100
- | 5 | Dev | **Opus** | `superpowers:using-git-worktrees` + `superpowers:subagent-driven-development` (TDD) | tasks DONE, TDD green per task | auto |
101
- | 6 | Tests | **Opus** | host test runner + `superpowers:test-driven-development` | full suite green; new/changed code covered | auto |
102
- | 7 | Lint + deploy | host | host lint deploy per host convention | lint clean + suite green before deploy; deploy needs go | manual |
103
- | 8 | Post-deploy | host | tail deploy logs / health-check | clean boot or honest degradation report | auto |
104
- | 9 | Docs + wiki | host | host module docs/runbook rules → `wiki-update` | docs synced, wiki synced | auto |
105
-
106
- ## Model reminder (emit at a boundary when recommended current)
107
-
108
- > ⏸ **Stage N (`<stage>`) recommends `<model>` (`<id>`).** You're on `<current>`.
109
- > Switch: `/model <id>` then say "continue". *(Reminder only — override if you
110
- > don't have that model.)*
114
+ All stages run on the **one model confirmed at preflight** (default: the most
115
+ capable available — see `references/model-tiering.md`).
116
+
117
+ | # | Stage | Invoke | Gate | Type |
118
+ |---|---|---|---|---|
119
+ | 0 | Intake grill **mandatory** | built in: [`references/grill.md`](references/grill.md) | shared understanding reached; autonomy sweep covered; brief locked + confirmed | manual |
120
+ | 1 | Docs study | `context7` (resolve-library-id get-library-docs) / `context7-docs` | contracts grounded on fetched docs | auto |
121
+ | 2 | Brainstorm | `superpowers:brainstorming` + **UI detection** | design approved; UI verdict recorded | manual |
122
+ | 3 | Spec | **UI → super-ux chain first** (`/ux` `ux-foundation` CJM `ux-flows` screens → `ux-scenarios` → `/ux-lint`), then spec `docs/superpowers/specs/…-design.md` | committed + reviewed; UI: chain validated, linter green, scenarios/`SCR-` traced | manual |
123
+ | 4 | Plan | `superpowers:writing-plans``docs/superpowers/plans/…md` | parallel-ready, DoD per task | auto |
124
+ | 5 | Dev | `superpowers:using-git-worktrees` + `superpowers:subagent-driven-development` (TDD) | tasks DONE, TDD green per task | auto |
125
+ | 6 | Tests | host test runner + `superpowers:test-driven-development` | full suite green; new/changed code covered | auto |
126
+ | 7 | Lint + deploy | host lint → deploy per host convention | lint clean + suite green before deploy; deploy needs a go (or the brief's specific standing authorization) | manual |
127
+ | 8 | Post-deploy | tail deploy logs / health-check | clean boot or honest degradation report | auto |
128
+ | 9 | Docs + wiki | host module docs/runbook rules → `wiki-update` | docs synced, wiki synced | auto |
129
+
130
+ ## Modelask once, at preflight
131
+
132
+ Default recommendation: **the most capable reasoning model the environment
133
+ offers** (currently the latest Opus generation — read that as a tier, not a
134
+ string). **Never hardcode a model id**: generations ship, tiers get renamed, and
135
+ the operator may be on another provider entirely — resolve the top tier available
136
+ at runtime. Stage configs use provider-agnostic tokens (`default` / `inherit`).
137
+
138
+ > 🧠 **Model for this run:** recommended **`<top tier available>`**. You're on
139
+ > `<current>`. `/model <id>` to switch, or "keep current", or name per-stage
140
+ > overrides. *(Reminder only — if that tier isn't available, say which one you're
141
+ > using and continue.)*
142
+
143
+ Record the answer in the brief; don't re-ask per stage. Stage-5 subagents are
144
+ pinned to the confirmed model automatically. Detail: `references/model-tiering.md`.
111
145
 
112
146
  ## Bring your own skills
113
147
 
@@ -124,6 +158,7 @@ automation is on — `pipeline.schema.json` is the only contract.
124
158
 
125
159
  - `pipeline.schema.json` — the universal pipeline config contract (stages + release)
126
160
  - `pipeline.example.json` — this plugin's default flow (stage 0 + 1→9) + release, as config
161
+ - `references/grill.md` — the built-in stage-0 grill: loop, domain awareness, autonomy sweep
127
162
  - `references/stages.md` — per-stage detail + exact gate criteria + gate types
128
163
  - `references/model-tiering.md` — model map, ids, the `/model` reminder mechanic, override
129
164
  - `references/conventions.md` — how stages 6–9 read the host project's CLAUDE.md
@@ -1,25 +1,30 @@
1
1
  {
2
2
  "$schema": "./pipeline.schema.json",
3
3
  "version": 1,
4
- "_note": "EXAMPLE ONLY — copy this file, rename to pipeline.json in your project, and rewrite it. This particular example encodes the plugin's own default flow (an up-front intake grill + superpowers + a super-ux UX track for user-facing tasks); it is NOT a fixed contract. Your project defines its own stages (any count), each executed by your own skills/agents, with your own gate types. The universal contract is pipeline.schema.json; test/validate.py checks this example against it. gate.type: auto = orchestrator verifies the check itself (pass/fail); manual = wait for an explicit operator go. Which stages are manual vs auto is the operator's decision, not the plugin's.",
4
+ "_note": "EXAMPLE ONLY — copy this file, rename to pipeline.json in your project, and rewrite it. This particular example encodes the plugin's own default flow (an up-front intake grill + superpowers + a super-ux UX track for user-facing tasks); it is NOT a fixed contract. Your project defines its own stages (any count), each executed by your own skills/agents, with your own gate types. Stage models use provider-agnostic tokens ('default' = the model confirmed for the run, 'inherit' = whatever the operator is on) — never hardcode a vendor model id, it goes stale. The universal contract is pipeline.schema.json; test/validate.py checks this example against it. gate.type: auto = orchestrator verifies the check itself (pass/fail); manual = wait for an explicit operator go. Which stages are manual vs auto is the operator's decision, not the plugin's.",
5
5
  "stages": [
6
6
  {
7
7
  "id": 0,
8
8
  "state": "intake",
9
9
  "name": "Intake grill",
10
- "model": "claude-fable-5",
11
- "skills": ["grill-me", "grilling"],
10
+ "model": "default",
11
+ "skills": [
12
+ "task-pipeline:grill"
13
+ ],
12
14
  "gate": {
13
15
  "type": "manual",
14
- "check": "grill the operator one question at a time (recommended answer per question; explore codebase/docs before asking) until shared understanding is reached — every decision branch has a recorded answer or explicit deferral, no open contradictions; UI verdict recorded (arms super-ux); decisions locked into a committed task brief the operator confirms before stage 1"
16
+ "check": "MANDATORY stage — never skipped (only sanctioned bypass: the entry-from-super-ux short-circuit). The grill is built into the skill (references/grill.md) — no companion to install. Per its contract: one question at a time, a recommended answer with each, explore the codebase/docs before asking, depth-first, contradictions reconciled; domain awareness applied (terms challenged against CONTEXT.md, ADRs recorded for hard-to-reverse calls). The autonomy sweep is covered — every stage 1-9 has its blockers pre-resolved (docs sources, branch/tracker policy, test + lint commands, deploy target and authorization, log/health locations, docs+wiki targets) or is explicitly marked 'stop and ask here'. UI verdict recorded (arms super-ux); model decision recorded. All of it locked into a committed task brief the operator confirms before stage 1."
15
17
  }
16
18
  },
17
19
  {
18
20
  "id": 1,
19
21
  "state": "docs-study",
20
22
  "name": "Docs study",
21
- "model": "claude-fable-5",
22
- "skills": ["context7", "context7-docs"],
23
+ "model": "default",
24
+ "skills": [
25
+ "context7",
26
+ "context7-docs"
27
+ ],
23
28
  "gate": {
24
29
  "type": "auto",
25
30
  "check": "every contract the design will lock is grounded in fetched docs, not recall; unresolvable libraries are flagged in the spec"
@@ -29,8 +34,10 @@
29
34
  "id": 2,
30
35
  "state": "brainstorm",
31
36
  "name": "Brainstorm",
32
- "model": "claude-fable-5",
33
- "skills": ["superpowers:brainstorming"],
37
+ "model": "default",
38
+ "skills": [
39
+ "superpowers:brainstorming"
40
+ ],
34
41
  "gate": {
35
42
  "type": "manual",
36
43
  "check": "the user approves the design AND the UI verdict is recorded (does the task touch a user-facing surface — web/mobile/CLI/TUI? this arms the stage-3 UX track)"
@@ -40,30 +47,40 @@
40
47
  "id": 3,
41
48
  "state": "spec",
42
49
  "name": "Spec",
43
- "model": "claude-fable-5",
44
- "skills": ["super-ux:ux-foundation", "super-ux:ux-scenarios", "superpowers:brainstorming"],
50
+ "model": "default",
51
+ "skills": [
52
+ "super-ux:ux-foundation",
53
+ "super-ux:ux-flows",
54
+ "super-ux:ux-scenarios",
55
+ "superpowers:brainstorming"
56
+ ],
45
57
  "gate": {
46
58
  "type": "manual",
47
- "check": "spec committed and user-reviewed with all shared contracts locked; for UI tasks additionally: UX track ran FIRST (/ux -> ux-foundation CJM -> ux-scenarios), scenarios validated in docs/ux/scenarios.md, CJM/foundation coverage present, and every user-facing spec requirement traces to a scenario ID — scenarios come BEFORE interface"
59
+ "check": "UX track ran FIRST for user-facing tasks (/ux -> ux-foundation CJM -> ux-flows screens -> ux-scenarios -> /ux-lint green); spec committed and user-reviewed; every user-facing requirement traces to a scenario ID"
48
60
  }
49
61
  },
50
62
  {
51
63
  "id": 4,
52
64
  "state": "plan",
53
65
  "name": "Plan",
54
- "model": "claude-fable-5",
55
- "skills": ["superpowers:writing-plans"],
66
+ "model": "default",
67
+ "skills": [
68
+ "superpowers:writing-plans"
69
+ ],
56
70
  "gate": {
57
71
  "type": "auto",
58
- "check": "every spec requirement maps to a task; no placeholders; parallel-group tasks share no files; for UI tasks each user-facing task names the scenario ID(s) it implements and its DoD includes satisfying them"
72
+ "check": "every spec requirement maps to a task; no placeholders; parallel-group tasks share no files; UI tasks name the scenario ID(s) and SCR- screen(s) they implement in their DoD"
59
73
  }
60
74
  },
61
75
  {
62
76
  "id": 5,
63
77
  "state": "dev",
64
78
  "name": "Dev",
65
- "model": "claude-opus-4-8",
66
- "skills": ["superpowers:using-git-worktrees", "superpowers:subagent-driven-development"],
79
+ "model": "default",
80
+ "skills": [
81
+ "superpowers:using-git-worktrees",
82
+ "superpowers:subagent-driven-development"
83
+ ],
67
84
  "gate": {
68
85
  "type": "auto",
69
86
  "check": "all plan tasks DONE (two-stage review: spec compliance, then code quality); full test suite green"
@@ -73,8 +90,10 @@
73
90
  "id": 6,
74
91
  "state": "tests",
75
92
  "name": "Tests",
76
- "model": "claude-opus-4-8",
77
- "skills": ["superpowers:test-driven-development"],
93
+ "model": "default",
94
+ "skills": [
95
+ "superpowers:test-driven-development"
96
+ ],
78
97
  "gate": {
79
98
  "type": "auto",
80
99
  "check": "full suite green (not just new tests); new/changed code covered; no skip/xfail smuggling a red suite past the gate"
@@ -84,19 +103,24 @@
84
103
  "id": 7,
85
104
  "state": "lint-deploy",
86
105
  "name": "Lint + deploy",
87
- "model": "inherit",
88
- "skills": ["host:lint", "host:deploy"],
106
+ "model": "default",
107
+ "skills": [
108
+ "host:lint",
109
+ "host:deploy"
110
+ ],
89
111
  "gate": {
90
112
  "type": "manual",
91
- "check": "lint clean and full suite green before deploy; deploy is outward and needs explicit operator go"
113
+ "check": "lint clean and full suite green before deploy; deploy is outward and needs explicit operator go — or the specific standing authorization recorded in the stage-0 brief (named target + named preconditions; a vague 'do everything' is not one)"
92
114
  }
93
115
  },
94
116
  {
95
117
  "id": 8,
96
118
  "state": "post-deploy",
97
119
  "name": "Post-deploy",
98
- "model": "inherit",
99
- "skills": ["host:health-check"],
120
+ "model": "default",
121
+ "skills": [
122
+ "host:health-check"
123
+ ],
100
124
  "gate": {
101
125
  "type": "auto",
102
126
  "check": "clean boot confirmed (no error spike, live subsystems healthy), or an honest degradation report with next steps"
@@ -106,8 +130,11 @@
106
130
  "id": 9,
107
131
  "state": "docs-wiki",
108
132
  "name": "Docs + wiki",
109
- "model": "inherit",
110
- "skills": ["host:module-docs", "wiki-update"],
133
+ "model": "default",
134
+ "skills": [
135
+ "host:module-docs",
136
+ "wiki-update"
137
+ ],
111
138
  "gate": {
112
139
  "type": "auto",
113
140
  "check": "docs in sync with code in the same change; wiki synced; dangling links fixed"
@@ -45,7 +45,7 @@
45
45
  "id": { "type": "integer", "description": "Optional ordinal." },
46
46
  "state": { "type": "string", "minLength": 1, "description": "Unique stable key for the stage." },
47
47
  "name": { "type": "string", "description": "Optional human label." },
48
- "model": { "type": "string", "description": "Optional recommended model id for the stage." },
48
+ "model": { "type": "string", "description": "Optional model for the stage. Prefer a provider-agnostic token over a vendor id, which goes stale as generations ship and may not exist on the operator's provider at all: 'default' = the model confirmed for this run (recommended: the most capable reasoning model the environment offers), 'inherit' = whatever the operator is currently on. A literal id is allowed but treated as an example, not a contract." },
49
49
  "skills": {
50
50
  "type": "array",
51
51
  "minItems": 1,
@@ -8,7 +8,10 @@ shape.
8
8
  ## In the host project
9
9
 
10
10
  ```
11
+ CONTEXT.md # stage 0 — domain glossary, written inline as terms resolve
11
12
  docs/
13
+ adr/
14
+ NNNN-<slug>.md # stage 0 — ADRs for hard-to-reverse decisions
12
15
  superpowers/
13
16
  specs/
14
17
  YYYY-MM-DD-<topic>-brief.md # stage 0 — locked intake brief (grill output)
@@ -33,7 +36,8 @@ design → plan is traceable at a glance.
33
36
 
34
37
  | Stage | Writes | Consumed by |
35
38
  |---|---|---|
36
- | 0 Intake | `specs/<topic>-brief.md` (seed from `templates/brief.md`) | stages 2–4 |
39
+ | 0 Intake | `specs/<topic>-brief.md` (seed from the skill's `templates/brief.md`) | stages 2–4 |
40
+ | 0 Grill (domain) | `CONTEXT.md`, `docs/adr/NNNN-<slug>.md` — created **lazily**, only when a term resolves or a decision qualifies | stages 2–4 + the repo |
37
41
  | 3 Spec | `specs/<topic>-design.md` (+ links `docs/ux/*` for UI) | stage 4 |
38
42
  | 4 Plan | `plans/<topic>.md` | stage 5 |
39
43
  | 3 UX track | `docs/ux/{foundation,flows,screens,scenarios}.md` | stages 4–9 + `/ux-lint` |
@@ -51,9 +55,9 @@ plugins/task-pipeline/
51
55
  SKILL.md
52
56
  pipeline.schema.json # generic pipeline contract
53
57
  pipeline.example.json # this plugin's own flow, as config
54
- references/{stages,model-tiering,conventions,artifacts,companion-skills}.md
58
+ references/{grill,stages,model-tiering,conventions,artifacts,companion-skills}.md
55
59
  cursor/rules/task-pipeline.mdc # Cursor channel (self-contained rule)
56
- templates/brief.md # skeleton seeded at stage 0
60
+ plugins/task-pipeline/skills/task-pipeline/templates/{brief,context,adr}.md # stage-0 skeletons (ship on every channel)
57
61
  bin/task-pipeline.js # npx installer (package task-pipeline-skill)
58
62
  package.json
59
63
  install.sh # POSIX installer
@@ -5,20 +5,25 @@ skills. Preflight-detect each one; if a needed skill doesn't resolve, **give the
5
5
  operator the install line immediately** and (for required ones) stop until it's
6
6
  installed. Never silently degrade a required capability.
7
7
 
8
+ **Stage 0 is the exception: the grill is part of this skill**
9
+ (`references/grill.md`), so it has no companion, no install line and no failure
10
+ mode where it can't run.
11
+
8
12
  ## The matrix
9
13
 
10
14
  | Skill / tool | Needed for | Required? | Install |
11
15
  |---|---|---|---|
12
16
  | **superpowers** (`brainstorming`, `writing-plans`, `subagent-driven-development`, `using-git-worktrees`, `test-driven-development`) | stages 2, 4, 5, 6 | **Required** (always) | `/plugin marketplace add obra/superpowers` → `/plugin install superpowers@superpowers` |
13
17
  | **super-ux** (`ux-foundation`, `ux-flows`, `ux-scenarios`, `ux-audit`, `/ux`, `/ux-lint`) | stage 3 UX track | **Required for any user-facing task** | `/plugin marketplace add ssheleg/super-ux` → `/plugin install super-ux@super-ux` (or `npx skills add ssheleg/super-ux`) |
14
- | **grill-me** / **grilling** | stage 0 intake grill | Optional (built-in grill loop is the fallback) | `npx skills add mattpocock/skills`, or the engineering-advanced-skills marketplace |
18
+ | ~~grill-me / grilling~~ | | **Not a dependency.** The stage-0 grill is **built into this skill** (`references/grill.md`) nothing to install, nothing to resolve, no fallback path | — |
15
19
  | **context7** (MCP) | stage 1 docs study | Recommended (web-search fallback) | connect the context7 MCP server |
16
20
  | **wiki-update** | stage 9 wiki sync | Optional (skip wiki if absent) | user's wiki skill set |
17
21
 
18
- ## Preflight recommendation (emit before stage 0)
22
+ ## Preflight (emit before stage 0)
19
23
 
20
- At the very start, detect which of the above resolve and print ONE recommendation
21
- block so the operator can arm the full flow before work begins. Example:
24
+ At the very start, detect which of the above resolve and print ONE block —
25
+ companions **plus the model decision** (`model-tiering.md`), so the operator arms
26
+ the whole run in a single exchange. Example:
22
27
 
23
28
  ```
24
29
  Pipeline companions:
@@ -27,17 +32,32 @@ Pipeline companions:
27
32
  /plugin marketplace add ssheleg/super-ux
28
33
  /plugin install super-ux@super-ux
29
34
  ✓ context7 — ready
30
- ✗ grill-me — optional; falling back to the built-in grill loop
31
35
  ✓ wiki-update — ready
32
- Recommend installing the items marked recommended, then say "continue".
36
+ intake grill — built in, no install needed
37
+
38
+ 🧠 Model for this run: recommended <top tier available>. You're on <current>.
39
+ /model <id> to switch, or "keep current", or name per-stage overrides.
40
+
41
+ Install the ✗ items you want, answer the model line, then say "continue".
33
42
  ```
34
43
 
35
44
  Rules:
36
45
  - Only flag **super-ux** as recommended when the task implies a UI (the stage-0
37
46
  grill decides this; when unsure, flag it — a false positive costs one install).
38
47
  - **superpowers** missing → stop; it's required for the core stages.
48
+ - **Never gate stage 0 on an install.** The grill ships with this skill; there is
49
+ no external grill dependency to detect, recommend, or fall back from.
39
50
  - Optional tools missing → state the fallback, don't block.
40
51
  - Re-detect after the operator installs; don't assume.
52
+ - The model answer goes into the brief. Don't ask again per stage
53
+ (`model-tiering.md` → *Mechanic*).
54
+
55
+ ## Credit
56
+
57
+ The built-in grill is adapted from Matt Pocock's `grilling` / `grill-with-docs`
58
+ skills (MIT, https://github.com/mattpocock/skills) — see the repo `LICENSE` →
59
+ *Third-party*. It is **ported, not depended on**: no install, no resolution, no
60
+ version skew.
41
61
 
42
62
  ## Hand-off the other direction
43
63
 
@@ -0,0 +1,131 @@
1
+ # The grill — stage 0, built in
2
+
3
+ The intake grill is **part of this skill**. No companion skill to install, no
4
+ provider to resolve, nothing to fall back to: this file *is* the implementation.
5
+
6
+ Its job is not to design. It is to take a one-line request ("make me feature X")
7
+ and interview it into a brief complete enough that stages 1→9 finish without
8
+ coming back to the operator.
9
+
10
+ > Adapted, with thanks, from Matt Pocock's `grilling` / `grill-with-docs` skills
11
+ > (MIT — see this repo's `LICENSE` → *Third-party*). The domain-awareness
12
+ > half — glossary challenges, `CONTEXT.md`, ADR discipline — comes from there; the
13
+ > autonomy sweep and the brief are this pipeline's.
14
+
15
+ ## The loop
16
+
17
+ Interview the operator relentlessly about every aspect of the task until you reach
18
+ a **shared understanding**. Walk down each branch of the decision tree, resolving
19
+ dependencies between decisions one by one.
20
+
21
+ 1. **One question per turn.** Never bundle. Wait for the answer before the next.
22
+ 2. **Recommend an answer with every question** (+ a one-line rationale). "What do
23
+ you think?" is lazy — you have the codebase in front of you, they don't.
24
+ 3. **If the codebase can answer it, go read the codebase.** Spending the
25
+ operator's turn on something `grep`/`Read`/context7 would have told you is the
26
+ most common way to waste a grill.
27
+ 4. **Depth-first.** Finish a branch before opening another; ask prerequisite
28
+ decisions first, so later answers don't invalidate earlier ones.
29
+ 5. **Reconcile contradictions immediately**, and chase dodges: "we'll decide
30
+ later" → "what's the latest you can decide and still ship?"
31
+ 6. **Cover the autonomy sweep** (below). An unasked question is not neutral — it
32
+ is a scheduled interruption at stage 6.
33
+
34
+ **Stop** when a re-scan surfaces no new branches. Don't grill past diminishing
35
+ returns: genuinely reversible calls can be deferred with a note.
36
+
37
+ ## Domain awareness
38
+
39
+ While exploring the codebase, also look for what the project already says about
40
+ itself — and hold the operator to it.
41
+
42
+ ### Find the existing docs
43
+
44
+ Most repos have a single context:
45
+
46
+ ```
47
+ /
48
+ ├── CONTEXT.md
49
+ ├── docs/adr/
50
+ │ ├── 0001-event-sourced-orders.md
51
+ │ └── 0002-postgres-for-write-model.md
52
+ └── src/
53
+ ```
54
+
55
+ A `CONTEXT-MAP.md` at the root means multiple contexts, and points at where each
56
+ one lives (`src/ordering/CONTEXT.md`, `src/billing/CONTEXT.md`, …), each with its
57
+ own `docs/adr/` alongside the system-wide one. Infer which context the task
58
+ belongs to; if it's genuinely unclear, ask.
59
+
60
+ Create these files **lazily** — only when you have something real to write.
61
+
62
+ ### Techniques during the session
63
+
64
+ - **Challenge against the glossary.** When a term conflicts with `CONTEXT.md`, say
65
+ so on the spot: *"Your glossary defines 'cancellation' as X, but you seem to mean
66
+ Y — which is it?"*
67
+ - **Sharpen fuzzy language.** Vague or overloaded terms get a proposed canonical
68
+ one: *"You're saying 'account' — do you mean the Customer or the User? Those are
69
+ different things."*
70
+ - **Stress-test with concrete scenarios.** Invent specific cases that probe edge
71
+ conditions and force precision about the boundaries between concepts.
72
+ - **Cross-reference with the code.** When the operator states how something works,
73
+ check whether the code agrees, and surface contradictions: *"Your code cancels
74
+ entire Orders, but you just said partial cancellation is possible — which is
75
+ right?"*
76
+ - **Update `CONTEXT.md` inline.** Resolve a term → write it down right then, not in
77
+ a batch at the end. Format: [`templates/context.md`](../templates/context.md).
78
+ Keep it free of implementation detail — only terms a domain expert would
79
+ recognize.
80
+
81
+ ### Offer an ADR sparingly
82
+
83
+ Only when **all three** are true:
84
+
85
+ 1. **Hard to reverse** — changing your mind later carries real cost.
86
+ 2. **Surprising without context** — a future reader will ask "why on earth this
87
+ way?"
88
+ 3. **A real trade-off** — genuine alternatives existed and one was chosen for
89
+ specific reasons.
90
+
91
+ Any one missing → skip it. Format and what qualifies:
92
+ [`templates/adr.md`](../templates/adr.md). ADRs land in `docs/adr/` with sequential
93
+ numbering (scan for the highest number, increment).
94
+
95
+ ## The autonomy sweep
96
+
97
+ Resolving the *task* is not enough. The grill must also pre-resolve everything that
98
+ would otherwise stop stages 1→9 mid-flight. Every row gets an answer **or** an
99
+ explicit "stop and ask me here":
100
+
101
+ | Stage | What to settle up front |
102
+ |---|---|
103
+ | run-wide | the model decision ([`model-tiering.md`](model-tiering.md)); what to decide autonomously vs escalate |
104
+ | 1 Docs | external libs/APIs/SDKs in play; any private ones context7 can't resolve → where their docs live |
105
+ | 2–3 Spec | UI verdict (arms super-ux); any scenario-tracing waiver |
106
+ | 4–5 Dev | base branch; worktree/branch policy; is `main` off-limits; commit convention; task tracker |
107
+ | 6 Tests | the test command; what "green" means here; known-red baseline; coverage expectation |
108
+ | 7 Lint+deploy | lint command; deploy target and path; release automation on/off; deploy-from-main rule; **deploy authorization** |
109
+ | 8 Post-deploy | where logs / health live (app name, endpoint, workflow) |
110
+ | 9 Docs+wiki | which module docs / runbooks this change updates; wiki sync yes/no |
111
+
112
+ **Deploy authorization has a hard floor.** Deploy and publish are outward and
113
+ irreversible, so a vague "just do everything" authorizes nothing. A standing
114
+ authorization counts only when it is **specific** — named target, named
115
+ preconditions ("staging once lint and the full suite are green; production always
116
+ asks"). Specific and recorded → it satisfies the stage-7 manual gate. Broader,
117
+ absent or ambiguous → stage 7 stops and asks.
118
+
119
+ ## Output
120
+
121
+ Everything resolved goes into the **task brief**, seeded from
122
+ [`templates/brief.md`](../templates/brief.md) and committed to
123
+ `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` — scope, users, UI verdict,
124
+ constraints, locked decisions, the autonomy table, done-criteria, open
125
+ assumptions. Seed the template only when the file is absent; never overwrite an
126
+ existing brief.
127
+
128
+ Plus, where the session produced them: an updated `CONTEXT.md` and any ADRs, each
129
+ written as the decision landed.
130
+
131
+ The operator confirms the brief. Only then does stage 1 begin.