task-pipeline-skill 0.12.0 → 1.0.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 +477 -0
- package/LICENSE +47 -0
- package/README.md +369 -171
- package/cursor/rules/task-pipeline.mdc +125 -20
- package/package.json +8 -4
- package/plugins/task-pipeline/.claude-plugin/plugin.json +15 -4
- package/plugins/task-pipeline/commands/task-pipeline.md +20 -8
- package/plugins/task-pipeline/skills/task-pipeline/SKILL.md +112 -39
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +35 -16
- package/plugins/task-pipeline/skills/task-pipeline/references/acceptance.md +119 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +47 -14
- package/plugins/task-pipeline/skills/task-pipeline/references/brainstorm.md +108 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/build.md +365 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/companion-skills.md +72 -31
- package/plugins/task-pipeline/skills/task-pipeline/references/conventions.md +27 -3
- package/plugins/task-pipeline/skills/task-pipeline/references/decomposition.md +139 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +78 -7
- package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +159 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/loop-guard.md +100 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/planning.md +195 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/review.md +174 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/spec.md +144 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +190 -35
- package/plugins/task-pipeline/skills/task-pipeline/references/tdd.md +110 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/README.md +5 -3
- package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +50 -2
- package/plugins/task-pipeline/skills/task-pipeline/templates/carryover.md +36 -0
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "task-pipeline: run a substantial task through a disciplined, gated delivery cycle — an intake grill that expands the request, then docs→brainstorm→spec→plan→build→tests→lint/deploy→post-deploy→docs. Apply when the user asks to run
|
|
2
|
+
description: "task-pipeline: run a substantial task through a disciplined, gated delivery cycle — an intake grill that expands the request into a checkable requirement list, then docs→brainstorm→spec→plan→build→tests→lint/deploy→post-deploy→docs/wiki→acceptance. Apply when the user asks to 'run this through the pipeline' / 'прогони по конвейеру', asks for 'the full cycle' / 'полный цикл', or starts any substantial feature/fix/build."
|
|
3
3
|
alwaysApply: false
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# task-pipeline — gated delivery cycle (Cursor)
|
|
7
7
|
|
|
8
8
|
Self-contained rule (Cursor copies this file into projects — no external links).
|
|
9
|
-
Run a substantial task through an up-front **intake grill +
|
|
9
|
+
Run a substantial task through an up-front **intake grill + 10 gated stages**. No
|
|
10
10
|
stage advances until its **gate** passes. Each gate is `auto` (verify it yourself,
|
|
11
11
|
pass/fail) or `manual` (wait for the user's explicit go).
|
|
12
12
|
|
|
13
|
+
**No companion skill is required.** Every rule below is the doctrine itself — the
|
|
14
|
+
grill, the design gate, the plan format, the build loop and TDD. Nothing to
|
|
15
|
+
install, nothing to resolve, nothing that breaks when a plugin is missing.
|
|
16
|
+
|
|
13
17
|
## Model — decide once, before you start
|
|
14
18
|
|
|
15
19
|
Recommended: **the most capable reasoning model the environment offers** (at time
|
|
@@ -24,16 +28,42 @@ recommended tier isn't available, say which one you're using and continue.
|
|
|
24
28
|
|
|
25
29
|
Never skipped, and nothing to install — the grill is part of this rule. No "the
|
|
26
30
|
task was already clear" exemption, no starting stage 1 while the user thinks. A
|
|
27
|
-
one-line task ("build feature X") is not enough to finish autonomously.
|
|
28
|
-
|
|
31
|
+
one-line task ("build feature X") is not enough to finish autonomously.
|
|
32
|
+
|
|
33
|
+
**Phase 1 — harvest the sources BEFORE the first question.** Find what the project
|
|
34
|
+
already knows about this task and read it: the code; `CLAUDE.md` / `AGENTS.md`;
|
|
35
|
+
`CONTEXT.md` (or `CONTEXT-MAP.md`) and `docs/adr/`; `docs/` and `docs/ux/`; past
|
|
36
|
+
briefs/plans and their carry-over ledgers; **the knowledge wiki if one is
|
|
37
|
+
installed** — [obsidian-wiki](https://github.com/ar9av/obsidian-wiki), detect
|
|
38
|
+
`~/.obsidian-wiki/config` or a resolving `wiki-query`; and **any other repository
|
|
39
|
+
or hosted doc system the project names as its docs** (read-only, and never a source
|
|
40
|
+
you invented — it counts because the project names it). Query each by *this task's*
|
|
41
|
+
nouns; it is retrieval, not a full read; stop when the terms return nothing new.
|
|
42
|
+
Write a short **source ledger** into the brief — source, what it says about this
|
|
43
|
+
task, how fresh, and whether this run makes it stale. `none found` is a valid row.
|
|
44
|
+
If no wiki is installed, recommend it once and continue:
|
|
45
|
+
`pip install obsidian-wiki` → `obsidian-wiki setup --vault <path>`. It is never a
|
|
46
|
+
gate.
|
|
47
|
+
|
|
48
|
+
**Phase 2 — grill the user against that harvest**, then run the rest without
|
|
49
|
+
mid-flight questions:
|
|
29
50
|
1. One question per turn — never bundle.
|
|
30
51
|
2. Give a recommended answer with every question (+ one-line rationale).
|
|
31
52
|
3. Explore the codebase before asking — if a search/read answers it, do that.
|
|
32
|
-
4.
|
|
33
|
-
|
|
53
|
+
4. **Validate every answer against the harvest.** When what the user says
|
|
54
|
+
contradicts a doc you read, quote the doc and ask which governs: *"the March ADR
|
|
55
|
+
says X, you just described Y — has it changed?"* The user **outranks every
|
|
56
|
+
document, but only out loud** — an override quoted against its source is a
|
|
57
|
+
recorded decision; an unquoted one is an undetected divergence that every later
|
|
58
|
+
gate will pass over. When two sources disagree: code > host docs/ADRs > wiki >
|
|
59
|
+
memory. Whichever side loses, if it's written down somewhere, log it for the
|
|
60
|
+
stage-9 doc update.
|
|
61
|
+
5. Walk the decision tree depth-first; ask prerequisite decisions first.
|
|
62
|
+
6. Reconcile contradictions; chase dodges ("decide later" → "latest you can decide
|
|
34
63
|
and still ship?").
|
|
35
|
-
|
|
36
|
-
external libs and where their docs live;
|
|
64
|
+
7. Run the **autonomy sweep** — resolve now whatever would stop stages 1→10 later:
|
|
65
|
+
external libs and where their docs live; **which doc sources beyond this repo are
|
|
66
|
+
in play and whether stage 9 may write to them**; UI verdict; base branch, branch policy,
|
|
37
67
|
commit convention, task tracker; the test command and what "green" means; the
|
|
38
68
|
lint command; the deploy target, release toggle and **deploy authorization**;
|
|
39
69
|
where logs/health live; which docs and runbooks this change updates. Each item
|
|
@@ -55,6 +85,19 @@ Offer an ADR (`docs/adr/NNNN-slug.md`, 1–3 sentences is a complete ADR) only w
|
|
|
55
85
|
all three hold: hard to reverse, surprising without context, and the result of a
|
|
56
86
|
real trade-off. Any one missing → skip it.
|
|
57
87
|
|
|
88
|
+
**Write the REQ spine before the brief is confirmed.** Turn the request into an
|
|
89
|
+
addressable list — one row per independently verifiable deliverable (not one per
|
|
90
|
+
sentence), each naming **how it is verified**: a test name, a `file:line`, a command
|
|
91
|
+
and its expected output, or a scenario id. *A requirement you can't say how to
|
|
92
|
+
verify is a badly-stated requirement* — split it here. Then freeze the list:
|
|
93
|
+
adding later is free, **removing or narrowing needs the user's explicit
|
|
94
|
+
agreement**. Quietly restating the task in smaller terms is the subtlest way to
|
|
95
|
+
lose it — every later gate then passes honestly on a task that shrank.
|
|
96
|
+
|
|
97
|
+
Seed a **carry-over ledger** next to the brief, append-only. Anything deferred,
|
|
98
|
+
dropped, or left half-done goes in the moment it's said — including implementer
|
|
99
|
+
concerns and non-blocking review findings. **Deferred out loud is forgotten.**
|
|
100
|
+
|
|
58
101
|
Stop when shared understanding is reached (every branch answered or explicitly
|
|
59
102
|
deferred) and lock the answers into a short brief the user confirms. Only then
|
|
60
103
|
start. Later stages read that brief instead of asking again.
|
|
@@ -63,31 +106,93 @@ start. Later stages read that brief instead of asking again.
|
|
|
63
106
|
specific (named target + named preconditions). A vague "just do everything" does
|
|
64
107
|
not authorize an outward, irreversible action — stage 7 stops and asks.
|
|
65
108
|
|
|
66
|
-
## Stages 1→
|
|
109
|
+
## Stages 1→10
|
|
67
110
|
|
|
68
111
|
1. **Docs study** (auto) — ground every external lib/API on current docs, not recall.
|
|
69
|
-
2. **Brainstorm** (manual) —
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
112
|
+
2. **Brainstorm + decompose** (manual) — read the brief, explore the code, then 2–3
|
|
113
|
+
approaches with a recommendation, YAGNI applied, design presented in sections and
|
|
114
|
+
approved. **Hard gate: no code, no scaffolding before that approval** — including
|
|
115
|
+
on "obviously simple" tasks. Record whether the task touches a user-facing surface
|
|
116
|
+
(UI verdict). **If the brief is a platform, not a change** — several independent
|
|
117
|
+
capabilities or separately shippable surfaces — cut it into modules before any
|
|
118
|
+
spec: modules by capability, never by layer; a module qualifies as a brick only if
|
|
119
|
+
it is independently specifiable, buildable and testable, owns its own entities,
|
|
120
|
+
talks to others through declared contracts only, and can land while leaving the
|
|
121
|
+
system working. Commit a module map (module, delivers, entities owned, depends on,
|
|
122
|
+
contracts exposed, UI?, REQs, status) in build order — the **walking skeleton
|
|
123
|
+
first**, then topologically, no cycles (a cycle means the cut is wrong). Every REQ
|
|
124
|
+
maps to exactly one module. Then stages 3→10 run **per module**, one brick at a
|
|
125
|
+
time; stages 0–2 run once, and the map's status column is the resume point. Single
|
|
126
|
+
module → record "single module: <name>" and move on.
|
|
127
|
+
3. **Spec** (manual) — write and commit the design; lock every shared contract
|
|
128
|
+
(types, schemas, signatures, file layout) plus a **Global Constraints** block of
|
|
129
|
+
exact values every later task inherits. Self-review it for placeholders,
|
|
130
|
+
contradictions, ambiguity and scope before showing it. For UI tasks, run the UX
|
|
131
|
+
chain FIRST (see super-ux below) and embed it.
|
|
132
|
+
4. **Plan** (auto) — every task names the REQ ids it `Implements:`, and the set of those ids must **equal** the brief's REQ set — a difference is scope lost, print it and fix it. Zero-context tasks: exact paths, complete code in every step,
|
|
133
|
+
the exact command and its expected output, TDD steps, DoD each, dependency graph
|
|
134
|
+
+ parallel groups, non-overlapping file ownership. **No placeholders** — no TBD,
|
|
135
|
+
no "add error handling", no "similar to Task N", no undefined types.
|
|
136
|
+
5. **Dev** (auto) — isolate first (existing worktree? native worktree tool? else
|
|
137
|
+
`git worktree` into an ignored dir), baseline tests green, then one task at a
|
|
138
|
+
time: TDD (failing test → watch it fail → minimal impl → watch it pass →
|
|
139
|
+
commit), then a review with **all three** verdicts — spec compliance, **REQ
|
|
140
|
+
satisfied** (judged against the requirement's own statement, not the task's
|
|
141
|
+
instructions), and code quality. Findings loop back to the implementer (max 5
|
|
142
|
+
rounds, then adjudicate in writing); minor findings are recorded, never blocking. Keep a progress ledger in
|
|
143
|
+
a file so a lost context can resume instead of redoing finished work. Tasks in
|
|
144
|
+
the same parallel group run concurrently **only** if each worker has its own
|
|
145
|
+
worktree — otherwise sequential. Close the stage by integrating: sync with the
|
|
146
|
+
base branch, re-run the full suite on the result, merge (or open a PR — that's
|
|
147
|
+
outward, so ask first), remove the worktree.
|
|
77
148
|
6. **Tests** (auto) — full suite green (not just new tests); new/changed code
|
|
78
|
-
covered; no skip/xfail hiding red.
|
|
149
|
+
covered including failure paths; no skip/xfail hiding red. Tests assert real
|
|
150
|
+
behavior, never mock behavior.
|
|
79
151
|
7. **Lint + deploy** (manual) — lint clean AND suite green before deploy; deploy is
|
|
80
152
|
outward → explicit user go, or the specific standing authorization recorded in
|
|
81
153
|
the stage-0 brief.
|
|
82
154
|
8. **Post-deploy** (auto) — tail logs / health-check; clean boot or an honest
|
|
83
155
|
degradation report (never silent success).
|
|
84
|
-
9. **Docs** (auto) —
|
|
156
|
+
9. **Docs + wiki** (auto) — **the phase-1 source ledger is the work list**: every
|
|
157
|
+
source the harvest read gets updated if this run changed or disproved it. Module
|
|
158
|
+
docs and runbooks in the SAME change; the knowledge wiki via `wiki-update` when
|
|
159
|
+
[obsidian-wiki](https://github.com/ar9av/obsidian-wiki) is installed (absent →
|
|
160
|
+
recommend once, never block). Docs in **another repository** are outward:
|
|
161
|
+
propose the edit and get an explicit go, or carry it over with the exact change
|
|
162
|
+
written down. A doc that was worth reading at stage 0 and is wrong now is the
|
|
163
|
+
next run's false premise.
|
|
164
|
+
10. **Acceptance** (manual) — the closing stage: go back to the brief and account
|
|
165
|
+
for **every** REQ. One row each, status `verified` / `partial` / `deferred` /
|
|
166
|
+
`dropped`, and every `verified` carries **evidence** — a passing test name, a
|
|
167
|
+
`file:line`, a command and its output. "Done" without evidence is downgraded to
|
|
168
|
+
`partial`, never upgraded. Then ask out loud, list in hand: *here's what you
|
|
169
|
+
asked for, here's what shipped, here's what's deferred and where it lives —
|
|
170
|
+
what's missing?* Ask it even when the table is green. Gate: no REQ `unknown`,
|
|
171
|
+
no ledger row without a home, user signs off.
|
|
85
172
|
|
|
86
|
-
Cross-cutting: answer from the brief's autonomy section rather than re-asking, track
|
|
173
|
+
Cross-cutting: answer from the brief's autonomy section rather than re-asking, log every deferral in the ledger, never narrow the task silently, track
|
|
87
174
|
tasks, conventional commits, honest degradation (never claim a failed/skipped step
|
|
88
175
|
succeeded), and get explicit go before any outward/irreversible action (deploy,
|
|
89
176
|
publish, repo create).
|
|
90
177
|
|
|
178
|
+
**Loop guard — break churn instead of iterating.** Every repeating pass (a fix
|
|
179
|
+
round, a re-entered stage, the next module) logs one line per touched file: the
|
|
180
|
+
file, the pass, and the reason that forced it — a finding id or a failed gate item.
|
|
181
|
+
"Cleanup" is not a reason. **Stop immediately** when: an edit undoes what an earlier
|
|
182
|
+
pass in this run deliberately did (A→B→A); the same file is edited twice for the
|
|
183
|
+
same reason; a finding already fixed or parked comes back; a stage is entered a
|
|
184
|
+
third time for one artifact; two loops edit one file. Hard caps: 5 fix rounds per
|
|
185
|
+
task, 2 re-entries per stage, 3 passes per module. On a stop: name shape A and shape
|
|
186
|
+
B with their evidence and who asks for each; escalate to the layer that owns the
|
|
187
|
+
conflict (two findings → the review rubric; finding vs plan → the user; plan vs spec
|
|
188
|
+
→ back to planning; ambiguous spec → back to spec; two modules claiming one file →
|
|
189
|
+
back to the module map) — **never settle a higher-layer conflict inside a lower
|
|
190
|
+
loop**; then re-plan the check as an ordered checklist, one owner and one
|
|
191
|
+
verification command per item, and go through it one at a time, one commit per item,
|
|
192
|
+
no opportunistic edits. Re-check the list once in the same order at the end. If it
|
|
193
|
+
trips again after a re-planned pass, stop and hand back with both shapes, the
|
|
194
|
+
evidence and your recommendation.
|
|
195
|
+
|
|
91
196
|
## super-ux for user-facing tasks (recommended)
|
|
92
197
|
|
|
93
198
|
If the task touches any UI (web/mobile/CLI/TUI), the WHY→UI→scenario chain comes
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Full-cycle
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Full-cycle delivery pipeline for coding agents: a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine ships inside the skill — no companion plugin required. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"task-pipeline": "bin/task-pipeline.js"
|
|
7
7
|
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"test": "python3 test/validate.py"
|
|
10
|
+
},
|
|
8
11
|
"files": [
|
|
9
12
|
"bin",
|
|
10
13
|
"plugins",
|
|
@@ -14,7 +17,8 @@
|
|
|
14
17
|
"CHANGELOG.md"
|
|
15
18
|
],
|
|
16
19
|
"repository": "github:ssheleg/task-pipeline",
|
|
17
|
-
"homepage": "https://github.com/ssheleg/task-pipeline",
|
|
20
|
+
"homepage": "https://github.com/ssheleg/task-pipeline#readme",
|
|
21
|
+
"bugs": "https://github.com/ssheleg/task-pipeline/issues",
|
|
18
22
|
"license": "MIT",
|
|
19
23
|
"author": "ssheleg",
|
|
20
24
|
"engines": {
|
|
@@ -23,11 +27,11 @@
|
|
|
23
27
|
"keywords": [
|
|
24
28
|
"pipeline",
|
|
25
29
|
"workflow",
|
|
26
|
-
"superpowers",
|
|
27
30
|
"orchestrator",
|
|
28
31
|
"tdd",
|
|
29
32
|
"deploy",
|
|
30
33
|
"spec-driven",
|
|
34
|
+
"self-contained",
|
|
31
35
|
"claude-code",
|
|
32
36
|
"skill"
|
|
33
37
|
]
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "0.
|
|
5
|
-
"author": {
|
|
3
|
+
"description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill — no companion plugin required — with typed auto/manual gates, a frozen requirement spine that must close with evidence, a loop guard that breaks churn, one provider-agnostic model confirmed up front, and an optional super-ux UX track for user-facing work.",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "ssheleg"
|
|
7
|
+
},
|
|
6
8
|
"homepage": "https://github.com/ssheleg/task-pipeline",
|
|
7
9
|
"repository": "https://github.com/ssheleg/task-pipeline",
|
|
8
10
|
"license": "MIT",
|
|
9
|
-
"keywords": [
|
|
11
|
+
"keywords": [
|
|
12
|
+
"pipeline",
|
|
13
|
+
"workflow",
|
|
14
|
+
"orchestrator",
|
|
15
|
+
"tdd",
|
|
16
|
+
"deploy",
|
|
17
|
+
"spec-driven",
|
|
18
|
+
"self-contained",
|
|
19
|
+
"claude-code"
|
|
20
|
+
]
|
|
10
21
|
}
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Run a task through task-pipeline — an intake grill that expands the request, then docs → brainstorm → spec → plan → build → tests → deploy → post-deploy → docs/wiki.
|
|
2
|
+
description: Run a task through task-pipeline — an intake grill that expands the request, then docs → brainstorm → spec → plan → build → tests → deploy → post-deploy → docs/wiki → acceptance.
|
|
3
3
|
argument-hint: <one-line task description>
|
|
4
4
|
---
|
|
5
5
|
Use the `task-pipeline` skill to run the task below through all gated stages —
|
|
6
6
|
**stage 0 intake grill** → docs study → brainstorm → spec → plan → subagent
|
|
7
|
-
build → tests → lint/deploy → post-deploy → docs/wiki
|
|
8
|
-
|
|
7
|
+
build → tests → lint/deploy → post-deploy → docs/wiki → **acceptance**. **Every stage's doctrine is
|
|
8
|
+
built into the skill** (`references/{knowledge-sources,grill,brainstorm,decomposition,spec,planning,build,review,tdd,acceptance,loop-guard}.md`)
|
|
9
|
+
— no companion plugin is required for any of them. **Stage 0 opens with the
|
|
10
|
+
knowledge harvest, before the first question** (`references/knowledge-sources.md`):
|
|
11
|
+
pull what the project already knows about this task from the code, `CLAUDE.md`,
|
|
12
|
+
`CONTEXT.md`/ADRs, `docs/` + `docs/ux/`, past pipeline briefs, the **knowledge wiki**
|
|
13
|
+
if one is installed ([obsidian-wiki](https://github.com/ar9av/obsidian-wiki) —
|
|
14
|
+
recommended, never required; detect `~/.obsidian-wiki/config`) and any **other repo
|
|
15
|
+
or hosted doc system the project names as its docs**, then write the **source
|
|
16
|
+
ledger** into the brief. The **intake grill is
|
|
17
|
+
mandatory** (`references/grill.md`): interview the
|
|
9
18
|
operator one question at a time (with a recommended answer each, exploring the
|
|
10
|
-
codebase before asking) until every decision branch is resolved,
|
|
19
|
+
codebase before asking) until every decision branch is resolved, **validating every
|
|
20
|
+
answer against the harvested sources** — the operator outranks any document, but
|
|
21
|
+
only out loud, and a doc the run proves stale is logged for the stage-9 update —
|
|
22
|
+
applying the
|
|
11
23
|
grill's **domain awareness** (challenge terms against `CONTEXT.md`, sharpen fuzzy
|
|
12
24
|
language, ADRs for hard-to-reverse calls) and covering the **autonomy sweep** (what
|
|
13
|
-
would otherwise stop stages 1→
|
|
14
|
-
commands, deploy target and authorization, log locations, docs/wiki targets) —
|
|
15
|
-
until the brief is locked
|
|
16
|
-
**super-ux**. Honor every stage gate by its type (`auto` = verify yourself;
|
|
25
|
+
would otherwise stop stages 1→10: docs sources incl. doc repos and the wiki, branch/tracker
|
|
26
|
+
policy, test and lint commands, deploy target and authorization, log locations, docs/wiki targets) —
|
|
27
|
+
until the brief is locked — including the **REQ table**, the request as an addressable list where every row names how it is verified — so the rest runs autonomously and the final stage can account for all of it. The list is frozen: adding is free, removing needs the operator's agreement. Anything deferred goes into the carry-over ledger the moment it's said. For any user-facing task, recommend/use
|
|
28
|
+
**super-ux**. **If the brief describes a platform rather than a change**, stage 2 also cuts it into modules (`references/decomposition.md`) — module map committed, walking skeleton first, every REQ in exactly one module — and stages 3→10 then run per module, one brick at a time. **If any loop starts undoing an earlier pass** (same file edited twice for the same reason, a closed finding returning, a third entry into one stage), stop and run the loop guard (`references/loop-guard.md`): name both shapes, escalate to the layer that owns the conflict, re-plan the check as an ordered list, then go item by item. Honor every stage gate by its type (`auto` = verify yourself;
|
|
17
29
|
`manual` = wait for explicit go). Confirm the **model once at preflight** —
|
|
18
30
|
recommend the most capable one the environment offers, never a hardcoded id — then
|
|
19
31
|
run the whole pipeline on it without re-asking.
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-pipeline
|
|
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,
|
|
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, tests, lint/deploy, post-deploy log check, docs/wiki sync and acceptance — as gated stages whose doctrine is built entirely into this skill (no required companion skills). Triggers - 'run this through the pipeline' / 'прогони по конвейеру', 'the full cycle' / 'полный цикл', /task-pipeline, or 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→10 run without mid-flight questions; recommends super-ux for user-facing work; 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
|
-
|
|
9
|
-
|
|
10
|
-
gate passes; the whole run uses one model,
|
|
8
|
+
Self-contained orchestrator. Runs a task through **gated stages**, each carrying its
|
|
9
|
+
own built-in doctrine — no companion plugin required. Keeps the main thread
|
|
10
|
+
disciplined: no stage advances until its gate passes; the whole run uses one model,
|
|
11
|
+
confirmed before it starts.
|
|
11
12
|
|
|
12
13
|
**Grill first, then run autonomously.** A one-line task ("make me feature X") is
|
|
13
14
|
never enough to finish without a human in the loop. Stage 0 is **mandatory**: a
|
|
14
15
|
relentless, one-question-at-a-time interview that resolves every decision branch
|
|
15
|
-
*and* sweeps stages 1→
|
|
16
|
+
*and* sweeps stages 1→10 for anything that would stop the run later — then locks
|
|
16
17
|
the answers into a brief. Autonomy is bought there or not at all; every question
|
|
17
18
|
skipped at stage 0 comes back as an interruption at stage 6.
|
|
18
19
|
|
|
@@ -21,21 +22,43 @@ a machine-readable config — an ordered list of stages, each with `skills[]` (t
|
|
|
21
22
|
skills/agents that run it) and a `gate {type, check}`. The schema is the universal
|
|
22
23
|
contract; it imposes **no** specific stages, skills, or gate assignments.
|
|
23
24
|
[`pipeline.example.json`](pipeline.example.json) is a **copy-and-rewrite example**
|
|
24
|
-
that encodes this plugin's own default flow (stage 0 intake + the 1→
|
|
25
|
+
that encodes this plugin's own default flow (stage 0 intake + the 1→10 stages
|
|
25
26
|
tabled below) and an optional, toggleable `release` block. Any project replaces it
|
|
26
27
|
wholesale — any number of stages, run by its own skills/agents, with its own gate
|
|
27
28
|
types (see *Bring your own skills*). Each gate has a **type**: `auto` (the
|
|
28
29
|
orchestrator verifies the `check` itself, pass/fail) or `manual` (wait for an
|
|
29
|
-
explicit operator go); which stages are manual is the operator's call.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
explicit operator go); which stages are manual is the operator's call. In the
|
|
31
|
+
example's `skills[]`, `task-pipeline:<name>` denotes this skill's own built-in
|
|
32
|
+
doctrine (`references/<name>.md`) and `host:<name>` denotes the host project's own
|
|
33
|
+
command for that job (`references/conventions.md`); everything else is a real skill
|
|
34
|
+
the environment resolves.
|
|
35
|
+
|
|
36
|
+
## Prerequisites — none required
|
|
37
|
+
|
|
38
|
+
**Every stage's doctrine ships inside this skill.** There is no required companion
|
|
39
|
+
plugin, nothing to resolve at preflight, no version skew with someone else's repo,
|
|
40
|
+
and no stage that can fail because a dependency is missing:
|
|
41
|
+
|
|
42
|
+
| Stage | Built-in doctrine |
|
|
43
|
+
|---|---|
|
|
44
|
+
| 0 Knowledge harvest (pre-grill) | [`references/knowledge-sources.md`](references/knowledge-sources.md) |
|
|
45
|
+
| 0 Intake grill | [`references/grill.md`](references/grill.md) |
|
|
46
|
+
| 2 Brainstorm | [`references/brainstorm.md`](references/brainstorm.md) |
|
|
47
|
+
| 2 Decompose (platforms only) | [`references/decomposition.md`](references/decomposition.md) |
|
|
48
|
+
| 3 Spec | [`references/spec.md`](references/spec.md) |
|
|
49
|
+
| 4 Plan | [`references/planning.md`](references/planning.md) |
|
|
50
|
+
| 5 Build (worktree, subagents, fix loop) | [`references/build.md`](references/build.md) + [`references/review.md`](references/review.md) |
|
|
51
|
+
| 5–6 TDD + suite gate | [`references/tdd.md`](references/tdd.md) |
|
|
52
|
+
| 10 Acceptance (REQ close-out) | [`references/acceptance.md`](references/acceptance.md) |
|
|
53
|
+
| any repeating loop | [`references/loop-guard.md`](references/loop-guard.md) |
|
|
54
|
+
|
|
55
|
+
**Optional bridge.** If the operator already runs an equivalent skill set (e.g.
|
|
56
|
+
`superpowers:brainstorming` / `writing-plans` / `subagent-driven-development` /
|
|
57
|
+
`using-git-worktrees` / `test-driven-development`), it can be mapped onto stages
|
|
58
|
+
2/4/5/6 in `pipeline.json` → `skills[]`. That is a **substitution, never a
|
|
59
|
+
requirement**: the built-in doctrine is normative, the gates in
|
|
60
|
+
`references/stages.md` still govern, and nothing detects, recommends or waits for
|
|
61
|
+
an external provider.
|
|
39
62
|
|
|
40
63
|
**super-ux — recommended for ANY user-facing task.** The moment a task implies a
|
|
41
64
|
user interface (web / mobile / CLI / TUI — a screen, a command, a visible
|
|
@@ -63,14 +86,31 @@ no "clear enough task" exemption, no starting stage 1 without a committed,
|
|
|
63
86
|
operator-confirmed brief. The one sanctioned bypass is the entry-from-super-ux
|
|
64
87
|
short-circuit, and even that demands a scope confirmation.
|
|
65
88
|
|
|
66
|
-
|
|
89
|
+
It also produces the **REQ spine**: the request as an addressable list of
|
|
90
|
+
requirements, each naming how it will be verified. Stages 3–5 trace to those ids,
|
|
91
|
+
stage 4's gate is a mechanical set-comparison against them, and **stage 10 accounts
|
|
92
|
+
for every one** — which is what turns the pipeline from a funnel into a circle.
|
|
93
|
+
|
|
94
|
+
**Harvest before you ask.** Stage 0 opens with a **knowledge harvest**
|
|
95
|
+
([`references/knowledge-sources.md`](references/knowledge-sources.md)), not a
|
|
96
|
+
question: pull what the project already knows about this task from the code,
|
|
97
|
+
`CLAUDE.md`, `CONTEXT.md`/ADRs, `docs/` + `docs/ux/`, past pipeline briefs, the
|
|
98
|
+
**knowledge wiki** if one is installed
|
|
99
|
+
([obsidian-wiki](https://github.com/ar9av/obsidian-wiki) — recommended, never
|
|
100
|
+
required) and any **other repo or hosted doc system the project names as its
|
|
101
|
+
docs**. Write the source ledger into the brief, then interview *against* it: every
|
|
102
|
+
answer that touches a source is checked against that source, and the operator
|
|
103
|
+
outranks any document — but only out loud, so an override is a recorded decision
|
|
104
|
+
instead of an undetected divergence. The same ledger is stage 9's work list.
|
|
105
|
+
|
|
106
|
+
Three things the grill does beyond clarifying the request:
|
|
67
107
|
- **Domain awareness.** It reads the project's own `CONTEXT.md` / `docs/adr/` and
|
|
68
108
|
holds the operator to them — challenging terms that conflict with the glossary,
|
|
69
109
|
sharpening overloaded words, stress-testing with concrete scenarios, and
|
|
70
110
|
flagging where the code contradicts what was just said. Resolved terms are
|
|
71
111
|
written to `CONTEXT.md` as they land; genuinely hard-to-reverse decisions get an
|
|
72
112
|
ADR.
|
|
73
|
-
- **The autonomy sweep.** It pre-resolves what would otherwise stop stages 1→
|
|
113
|
+
- **The autonomy sweep.** It pre-resolves what would otherwise stop stages 1→10
|
|
74
114
|
mid-flight (test/lint/deploy commands, branch policy, log locations, docs
|
|
75
115
|
targets, the model decision, deploy authorization). Autonomy is bought here or
|
|
76
116
|
not at all — an unasked question is a scheduled interruption.
|
|
@@ -79,33 +119,54 @@ Two things the grill does beyond clarifying the request:
|
|
|
79
119
|
|
|
80
120
|
1. Restate the task in one line. Create a **TaskList: one task per stage, starting
|
|
81
121
|
with stage 0** (survives context loss; lets you resume). Then run the
|
|
82
|
-
**companion preflight** (`references/companion-skills.md`):
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
122
|
+
**companion preflight** (`references/companion-skills.md`): the stage doctrine
|
|
123
|
+
is built in, so this only checks the *optional* companions (super-ux for UI
|
|
124
|
+
tasks, context7, wiki-update) and emits ONE block covering them
|
|
125
|
+
**and the model decision** (`references/model-tiering.md`): recommend
|
|
86
126
|
the most capable model available, let the operator confirm or override, record
|
|
87
127
|
it. Ask once, here.
|
|
88
|
-
2. **Run stage 0
|
|
89
|
-
|
|
128
|
+
2. **Run stage 0 — always, no exceptions.** It opens with the **knowledge harvest**
|
|
129
|
+
(`references/knowledge-sources.md`): query the project's own sources — repo docs,
|
|
130
|
+
ADRs, `docs/ux/`, past briefs, the wiki if installed, any doc repo the project
|
|
131
|
+
names — for this task's terms, and write the **source ledger** into the brief
|
|
132
|
+
before question one. Then grill until shared
|
|
133
|
+
understanding is reached, **each answer checked against the harvest**, the
|
|
134
|
+
autonomy sweep is covered, **the REQ table is
|
|
135
|
+
written (one row per independently verifiable deliverable, each naming its
|
|
136
|
+
check)** and the brief is locked
|
|
90
137
|
(`references/stages.md` → 0). Do not touch stage 1 before the brief is
|
|
91
138
|
committed and confirmed. **Entered from super-ux?**
|
|
92
139
|
(a validated `docs/ux/` chain and/or a `docs/ux/plans/…` fix plan already
|
|
93
140
|
exists — super-ux's `/ux` hands off here) → don't re-grill or rebuild the UX
|
|
94
141
|
chain: just check it's OK (`/ux-lint` green), confirm scope in one line, and
|
|
95
142
|
skip ahead to the first stage with real work (see `references/stages.md` → 0).
|
|
96
|
-
3. Walk stages 1→
|
|
143
|
+
3. Walk stages 1→10 on the model confirmed at preflight. **Don't re-ask about the
|
|
97
144
|
model at every boundary** — only when the operator recorded a per-stage override
|
|
98
145
|
map and the next stage's entry differs (`references/model-tiering.md`).
|
|
146
|
+
**Is the brief a platform rather than a change?** Then stage 2 also cuts it into
|
|
147
|
+
modules (`references/decomposition.md`) and stages 3→10 run **per module** in
|
|
148
|
+
build order, one brick at a time — stages 0–2 run once, and the module map's
|
|
149
|
+
status column is the resume point (`references/stages.md` → *The program loop*).
|
|
99
150
|
4. Do **not** advance until the stage **gate** passes (`references/stages.md`).
|
|
100
151
|
Honor the gate **type**: for `auto`, verify the gate's `check` yourself and
|
|
101
152
|
stop/return on fail; for `manual`, present the result and **wait for the
|
|
102
153
|
operator's explicit "continue"/go** — an auto gate never substitutes for a
|
|
103
154
|
required manual approval.
|
|
104
155
|
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;
|
|
156
|
+
than asking again** — it was grilled precisely so you wouldn't have to;
|
|
157
|
+
**anything deferred, dropped or left half-done goes into the carry-over ledger
|
|
158
|
+
the moment it's said** — deferred out loud is forgotten; **never narrow the task
|
|
159
|
+
silently** — the REQ list is frozen, adding is free, removing needs the
|
|
160
|
+
operator's explicit agreement; **when a loop starts undoing an earlier pass —
|
|
161
|
+
the same file edited twice for the same reason, a closed finding coming back, a
|
|
162
|
+
third entry into one stage — stop and run the loop guard**
|
|
163
|
+
(`references/loop-guard.md`): name the two shapes, escalate to the layer that
|
|
164
|
+
owns the conflict, re-plan the check as an ordered list, then go through it one
|
|
165
|
+
item at a time; task
|
|
106
166
|
tracker + conventional commits per host conventions; worktree isolation for the
|
|
107
|
-
build
|
|
108
|
-
|
|
167
|
+
build, integrated back per the brief's branch policy before stage 7; honest
|
|
168
|
+
degradation (never claim a failed/skipped step succeeded);
|
|
169
|
+
outward/irreversible actions (deploy, publish, repo create, opening a PR) need explicit
|
|
109
170
|
operator go — or a **specific** standing authorization recorded in the brief
|
|
110
171
|
(named target + preconditions; a vague "do everything" is not one).
|
|
111
172
|
|
|
@@ -116,16 +177,17 @@ capable available — see `references/model-tiering.md`).
|
|
|
116
177
|
|
|
117
178
|
| # | Stage | Invoke | Gate | Type |
|
|
118
179
|
|---|---|---|---|---|
|
|
119
|
-
| 0 | Intake grill — **mandatory** | built in: [`references/grill.md`](references/grill.md) | shared understanding reached; autonomy sweep covered; brief locked + confirmed | manual |
|
|
180
|
+
| 0 | Intake grill — **mandatory** | built in: [`references/knowledge-sources.md`](references/knowledge-sources.md) (harvest) → [`references/grill.md`](references/grill.md) (interview) | source ledger written; shared understanding reached; autonomy sweep covered; brief locked + confirmed | manual |
|
|
120
181
|
| 1 | Docs study | `context7` (resolve-library-id → get-library-docs) / `context7-docs` | contracts grounded on fetched docs | auto |
|
|
121
|
-
| 2 | Brainstorm |
|
|
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 |
|
|
124
|
-
| 5 | Dev |
|
|
125
|
-
| 6 | Tests | host test runner +
|
|
182
|
+
| 2 | Brainstorm + decompose | built in: [`references/brainstorm.md`](references/brainstorm.md) + **UI detection** + [`references/decomposition.md`](references/decomposition.md) for platforms | design approved; UI verdict recorded; every REQ answered; platform: module map approved | manual |
|
|
183
|
+
| 3 | Spec | built in: [`references/spec.md`](references/spec.md) — **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 |
|
|
184
|
+
| 4 | Plan | built in: [`references/planning.md`](references/planning.md) → `docs/superpowers/plans/…md` | parallel-ready, DoD per task | auto |
|
|
185
|
+
| 5 | Dev | built in: [`references/build.md`](references/build.md) (worktree → subagent per task → review loop → integrate) + [`references/tdd.md`](references/tdd.md) | tasks DONE, TDD green per task, branch integrated per the brief | auto |
|
|
186
|
+
| 6 | Tests | host test runner + built-in [`references/tdd.md`](references/tdd.md) | full suite green; new/changed code covered | auto |
|
|
126
187
|
| 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
188
|
| 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
|
|
189
|
+
| 9 | Docs + wiki | host module docs/runbook rules → `wiki-update` ([obsidian-wiki](https://github.com/ar9av/obsidian-wiki), recommended) | every stale row of the stage-0 source ledger updated; docs synced; wiki synced | auto |
|
|
190
|
+
| 10 | **Acceptance** | built in: [`references/acceptance.md`](references/acceptance.md) | every REQ accounted for with evidence; ledger has no unresolved row; operator signs off | manual |
|
|
129
191
|
|
|
130
192
|
## Model — ask once, at preflight
|
|
131
193
|
|
|
@@ -145,8 +207,8 @@ pinned to the confirmed model automatically. Detail: `references/model-tiering.m
|
|
|
145
207
|
|
|
146
208
|
## Bring your own skills
|
|
147
209
|
|
|
148
|
-
The stages above (stage 0 intake + 1→
|
|
149
|
-
|
|
210
|
+
The stages above (stage 0 intake + 1→10) are the **example** flow (this skill's
|
|
211
|
+
built-in doctrine + a super-ux UX track for user-facing tasks + host conventions). A
|
|
150
212
|
host project owns its pipeline: copy `pipeline.example.json` → `pipeline.json`,
|
|
151
213
|
then define its **own** stages (any count), point each stage's `skills[]` at the
|
|
152
214
|
skills/agents its environment resolves, set each `gate.type` (`auto`/`manual`) to
|
|
@@ -157,10 +219,21 @@ automation is on — `pipeline.schema.json` is the only contract.
|
|
|
157
219
|
## References
|
|
158
220
|
|
|
159
221
|
- `pipeline.schema.json` — the universal pipeline config contract (stages + release)
|
|
160
|
-
- `pipeline.example.json` — this plugin's default flow (stage 0 + 1→
|
|
222
|
+
- `pipeline.example.json` — this plugin's default flow (stage 0 + 1→10) + release, as config
|
|
223
|
+
- `references/knowledge-sources.md` — stage-0 phase 1: the source list, the wiki, the ledger, the stage-9 loop-back
|
|
161
224
|
- `references/grill.md` — the built-in stage-0 grill: loop, domain awareness, autonomy sweep
|
|
225
|
+
- `references/acceptance.md` — the built-in stage-10 close-out: REQ coverage, evidence, sign-off
|
|
226
|
+
- `references/brainstorm.md` — stage 2: design dialogue, approaches, UI detection, hard gate
|
|
227
|
+
- `references/spec.md` — stage 3: UX track order, the spec contract, self-review, review gate
|
|
228
|
+
- `references/planning.md` — stage 4: zero-context plan format, parallel groups, no placeholders
|
|
229
|
+
- `references/build.md` — stage 5: isolation, ledger, subagent task loop, fix loop, final review
|
|
230
|
+
- `references/review.md` — the review rubric, diff packages and the three reviewer prompts
|
|
231
|
+
- `references/tdd.md` — stages 5–6: the iron law, red/green/refactor, the suite gate
|
|
162
232
|
- `references/stages.md` — per-stage detail + exact gate criteria + gate types
|
|
163
233
|
- `references/model-tiering.md` — model map, ids, the `/model` reminder mechanic, override
|
|
164
|
-
- `references/conventions.md` — how stages 6–
|
|
234
|
+
- `references/conventions.md` — how stages 6–10 read the host project's CLAUDE.md
|
|
165
235
|
- `references/companion-skills.md` — companion skills, install lines, preflight recommendation
|
|
166
236
|
- `references/artifacts.md` — the canonical document/artifact layout per stage
|
|
237
|
+
- `templates/` — skeletons seeded into the host project: `brief.md` (stage 0),
|
|
238
|
+
`carryover.md` (seeded at 0, appended by every stage, read in full at 10),
|
|
239
|
+
`context.md` and `adr.md` (format references the grill writes lazily)
|