task-pipeline-skill 1.7.2 → 1.8.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/CODE_OF_CONDUCT.md +38 -0
  3. package/CONTRIBUTING.md +215 -0
  4. package/README.md +29 -1
  5. package/SECURITY.md +67 -0
  6. package/SKILL-CARD.md +60 -0
  7. package/bin/task-pipeline.js +23 -0
  8. package/evals/RESULTS.md +47 -0
  9. package/evals/__pycache__/run.cpython-314.pyc +0 -0
  10. package/evals/run.py +130 -0
  11. package/evals/task-pipeline.evals.json +166 -0
  12. package/package.json +7 -2
  13. package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
  14. package/plugins/task-pipeline/skills/task-pipeline/SKILL.md +1 -1
  15. package/plugins/task-pipeline/skills/task-pipeline/references/acceptance.md +13 -0
  16. package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +6 -0
  17. package/plugins/task-pipeline/skills/task-pipeline/references/audit.md +11 -0
  18. package/plugins/task-pipeline/skills/task-pipeline/references/brainstorm.md +12 -0
  19. package/plugins/task-pipeline/skills/task-pipeline/references/build.md +12 -1
  20. package/plugins/task-pipeline/skills/task-pipeline/references/companion-skills.md +10 -1
  21. package/plugins/task-pipeline/skills/task-pipeline/references/decomposition.md +9 -0
  22. package/plugins/task-pipeline/skills/task-pipeline/references/documentation.md +15 -1
  23. package/plugins/task-pipeline/skills/task-pipeline/references/gates.md +63 -0
  24. package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +10 -0
  25. package/plugins/task-pipeline/skills/task-pipeline/references/hooks.md +16 -0
  26. package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-graph.md +8 -0
  27. package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +13 -0
  28. package/plugins/task-pipeline/skills/task-pipeline/references/learned.md +8 -0
  29. package/plugins/task-pipeline/skills/task-pipeline/references/loop-guard.md +8 -0
  30. package/plugins/task-pipeline/skills/task-pipeline/references/planning.md +12 -0
  31. package/plugins/task-pipeline/skills/task-pipeline/references/retrospective.md +12 -1
  32. package/plugins/task-pipeline/skills/task-pipeline/references/review.md +11 -1
  33. package/plugins/task-pipeline/skills/task-pipeline/references/spec.md +10 -0
  34. package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +57 -2
  35. package/plugins/task-pipeline/skills/task-pipeline/references/tdd.md +10 -0
  36. package/plugins/task-pipeline/skills/task-pipeline/templates/docgate.sh +3 -1
@@ -8,6 +8,19 @@ The same source list closes the loop at **stage 9**: what was read at the start
8
8
  what gets updated at the end. A source good enough to answer a question is a source
9
9
  that goes stale when the answer changes.
10
10
 
11
+ ## Contents
12
+
13
+ - Why this is a phase and not "explore a bit first"
14
+ - The sources, in the order to try them
15
+ - The retro's standing instructions — an instruction source, not background
16
+ - The code graph — recommended
17
+ - The knowledge wiki — recommended
18
+ - How to harvest — retrieval, not reading
19
+ - Record it — the source ledger
20
+ - Phase 2 — validate the answers against the harvest
21
+ - Close the loop — stage 9 updates what stage 0 read
22
+ - Rationalizations
23
+
11
24
  ## Why this is a phase and not "explore a bit first"
12
25
 
13
26
  An agent that starts asking without harvesting spends the operator's turns on
@@ -13,6 +13,14 @@ to be enforced and is not is the same failure as a gate that prints `FAIL` and e
13
13
 
14
14
  ---
15
15
 
16
+ ## Contents
17
+
18
+ - The table — trigger · check · exit criterion
19
+ - The incidents, so the rules are not abstract
20
+ - The two that are not in the table, and why
21
+ - The one instruction that would have prevented the most
22
+ - Where these bind in the pipeline
23
+
16
24
  ## The table — trigger · check · exit criterion
17
25
 
18
26
  | # | Rule | Trigger | The check | Exit criterion |
@@ -18,6 +18,14 @@ axis, don't push harder): [`audit.md`](audit.md) → *Every pass changes the axi
18
18
  Both can bind one run. Use this file's trips for edits, that file's crossover for
19
19
  searches.
20
20
 
21
+ ## Contents
22
+
23
+ - Bookkeeping — the thing that makes detection mechanical
24
+ - Detection — any one of these trips the guard
25
+ - The break protocol
26
+ - When to stop and hand back
27
+ - Rationalizations
28
+
21
29
  ## Bookkeeping — the thing that makes detection mechanical
22
30
 
23
31
  You cannot detect churn from memory, especially after compaction. Every repeating
@@ -9,6 +9,18 @@ Built into this skill; nothing to install.
9
9
  > *Third-party*), extended with the dependency graph, parallel groups and
10
10
  > file-ownership rules this pipeline's stage-5 subagent build depends on.
11
11
 
12
+ ## Contents
13
+
14
+ - Audience
15
+ - Before writing tasks
16
+ - Task right-sizing
17
+ - Plan header — required
18
+ - Task structure — required
19
+ - No placeholders
20
+ - Self-review — before handing off
21
+ - This stage settles nothing — and that is a rule, not an omission
22
+ - GATE (auto)
23
+
12
24
  ## Audience
13
25
 
14
26
  Assume a skilled developer who knows nothing about this codebase, this domain or
@@ -20,6 +20,17 @@ Every run writes a **stamp** and runs the **prune**. Only a run that *diverged*
20
20
  writes an entry. A retro that is empty after a messy run is the exact failure this
21
21
  file exists to stop.
22
22
 
23
+ ## Contents
24
+
25
+ - Write the entry only for a divergence — and name the layer that owned it
26
+ - Every lesson carries its commit
27
+ - Rotation — the archive is how pruning stops losing things
28
+ - Three grades of fix — take the highest one that can work
29
+ - The prune — mandatory, and it runs BEFORE the new entry is written
30
+ - The loop closes at stage 0
31
+ - Where a lesson goes when it is not about this project
32
+ - Rationalizations
33
+
23
34
  ## Write the entry only for a divergence — and name the layer that owned it
24
35
 
25
36
  An entry is owed when the run did not go as planned: a gate reopened, a stage was
@@ -114,7 +125,7 @@ and the commit. Silent deletion is forbidden: the record is what survives, the
114
125
  instruction is what leaves.
115
126
 
116
127
  **Print the counts beside the gate verdict**, the same way the carry-over ledger
117
- does ([`audit.md`](audit.md) → *ratchet, never TODO*):
128
+ does ([`audit.md`](audit.md) → *What can't be fixed now becomes a ratchet, never a TODO*):
118
129
 
119
130
  ```
120
131
  GATE 10 acceptance: PASS — 14/14 REQ verified
@@ -10,6 +10,16 @@ install.
10
10
  > external helper scripts replaced by plain git commands so the doctrine works on
11
11
  > any agent.
12
12
 
13
+ ## Contents
14
+
15
+ - The diff package
16
+ - Reviewer inputs
17
+ - Controller rules
18
+ - The rubric
19
+ - Prompt — task review
20
+ - Prompt — scoped re-review
21
+ - Prompt — final whole-branch review
22
+
13
23
  ## The diff package
14
24
 
15
25
  A reviewer never re-derives the diff with a dozen git calls, and the diff never
@@ -172,7 +182,7 @@ exactly the sentence a future reader will hit in the code and re-litigate, so a
172
182
  ruling that outlives the run goes through the **Doc Loop**
173
183
  ([`documentation.md`](documentation.md)) — via the report and the ledger, written by
174
184
  the orchestrator after integration, never by a subagent
175
- ([`build.md`](build.md) → 4.1a*).
185
+ ([`build.md`](build.md) → *4.1a Decisions settled inside a task*).
176
186
 
177
187
  Run the final review on the **run's confirmed model** like everything else
178
188
  ([`model-tiering.md`](model-tiering.md)). It is the one review that sees the whole
@@ -9,6 +9,16 @@ Writing the approved design down so a zero-context implementer — human or suba
9
9
  > *Third-party*), extended here with the UX track and the Global Constraints block
10
10
  > that stages 4–5 depend on.
11
11
 
12
+ ## Contents
13
+
14
+ - Order of operations
15
+ - UX track (user-facing tasks only)
16
+ - Write the spec
17
+ - Module dossier — when the run is one brick of a platform
18
+ - Self-review — before showing it
19
+ - Locked contracts are decisions — the register, not only the spec
20
+ - GATE (manual)
21
+
12
22
  ## Order of operations
13
23
 
14
24
  For a **user-facing task** (stage-2 UI verdict = yes) the UX chain runs **first** —
@@ -8,7 +8,52 @@ operator's explicit go). These stages (0 intake + 1→10) 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
+ ## The run checklist — copy it, tick it
12
+
13
+ Complex workflows lose steps silently. Copy this into your response at the start of
14
+ a run and check items off as they close; it is the cheapest guard against the one
15
+ failure this pipeline keeps paying for — a stage that *looks* done because nothing
16
+ printed.
17
+
18
+ ```
19
+ Pipeline progress
20
+ - [ ] 0 Intake — harvest + doc inventory + reconcile, grill, REQ table, brief locked
21
+ - [ ] 1 Docs study — every contract grounded on fetched docs, not recall
22
+ - [ ] 2 Brainstorm — design approved, UI verdict recorded, every REQ answered
23
+ - [ ] 3 Spec — committed, reviewed, every section covers: REQ-…
24
+ - [ ] 4 Plan — REQ set equality holds, no placeholders, groups share no files
25
+ - [ ] 5 Dev — tasks DONE, three verdicts each, suite green, branch integrated
26
+ - [ ] 6 Tests — full suite green, new checks probed both ways
27
+ - [ ] 7 Lint + deploy — clean, and the deploy authorization is specific
28
+ - [ ] 8 Post-deploy — clean boot, or an honest degradation report
29
+ - [ ] 9 Docs — matrix walked, registers written, docs gate green with ratchets printed
30
+ - [ ] 10 Acceptance — ladder walk first, every REQ with evidence, retro written last
31
+ ```
32
+
33
+ Each line is a **gate**, not a task: an unchecked box means the gate did not pass,
34
+ never that the work was skipped quietly.
35
+
36
+ ## Contents
37
+
38
+ - The run checklist — copy it, tick it
39
+ - 0 — Intake grill — MANDATORY
40
+ - 1 — Docs study
41
+ - 2 — Brainstorm + decompose
42
+ - 3 — Spec — with UX track for user-facing tasks
43
+ - 4 — Plan
44
+ - 5 — Dev
45
+ - 6 — Tests
46
+ - 7 — Lint + deploy
47
+ - 8 — Post-deploy
48
+ - 9 — Docs + wiki
49
+ - 10 — Acceptance
50
+ - The program loop — a platform, one brick at a time
51
+ - Cross-cutting — the Doc Loop
52
+ - Cross-cutting — the loop guard
53
+ - Cross-cutting — the audit
54
+
11
55
  ## 0 — Intake grill — MANDATORY
56
+ - **Freedom: medium** — the interview adapts to the answers; its two phases and their order do not ([`gates.md`](gates.md) → *Axis C*).
12
57
  - **Stage 0 is not optional and not skippable.** There is no "small enough task"
13
58
  exemption, no "the request was already clear" exemption, no starting stage 1
14
59
  "while the operator thinks". The only sanctioned bypass is the
@@ -109,15 +154,17 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
109
154
  reversible calls can be deferred with a note). Only then start stage 1.
110
155
 
111
156
  ## 1 — Docs study
157
+ - **Freedom: medium** — which sources to fetch is judgement; grounding contracts on fetched docs is not ([`gates.md`](gates.md) → *Axis C*).
112
158
  - **What:** ground every external library / API / SDK the task touches on the
113
159
  *current* docs, before locking any contract.
114
- - **Invoke:** `context7` MCP (`resolve-library-id` → `get-library-docs`, scope by
115
- `topic`) or the `context7-docs` skill. Web-search fallback for libs context7
160
+ - **Invoke:** the `context7` MCP `context7:resolve-library-id` → `context7:query-docs`,
161
+ scoped by topic or the `context7-docs` skill. Web-search fallback for libs context7
116
162
  can't resolve.
117
163
  - **GATE (auto):** every contract the design will lock is grounded in fetched docs,
118
164
  not recall. Unresolvable libraries are flagged in the spec.
119
165
 
120
166
  ## 2 — Brainstorm + decompose
167
+ - **Freedom: high** — many designs are valid — this is the open field, and the only fixed thing is the gate ([`gates.md`](gates.md) → *Axis C*).
121
168
  - **How it runs: [`brainstorm.md`](brainstorm.md)** — built into this skill. Read
122
169
  the brief first (stage 0 already answered scope/constraints/done-criteria), then
123
170
  explore the codebase, scope-check for decomposition, one question at a time, 2–3
@@ -147,6 +194,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
147
194
  contracts named with their owner.
148
195
 
149
196
  ## 3 — Spec — with UX track for user-facing tasks
197
+ - **Freedom: medium** — what the contract says is judgement; which contracts must be locked is a list ([`gates.md`](gates.md) → *Axis C*).
150
198
  - **How it runs: [`spec.md`](spec.md)** — built into this skill: the UX-track order,
151
199
  what the spec must lock (types, schemas, signatures, file layout, the **Global
152
200
  Constraints** block stages 4–5 depend on), the self-review pass and the operator
@@ -202,6 +250,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
202
250
  starts before this — the chain comes BEFORE interface.
203
251
 
204
252
  ## 4 — Plan
253
+ - **Freedom: low** — the task format is prescribed and the REQ set-comparison is mechanical ([`gates.md`](gates.md) → *Axis C*).
205
254
  - **How it runs: [`planning.md`](planning.md)** — built into this skill →
206
255
  `docs/superpowers/plans/YYYY-MM-DD-<topic>.md` (same slug as the brief and the
207
256
  spec). Zero-context tasks, exact
@@ -220,6 +269,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
220
269
  same change (super-ux *same-change* rule).
221
270
 
222
271
  ## 5 — Dev
272
+ - **Freedom: low** — TDD order, worktree isolation and 'a subagent never writes the register' are the narrow bridge ([`gates.md`](gates.md) → *Axis C*).
223
273
  - **How it runs: [`build.md`](build.md)** — built into this skill: isolate the
224
274
  workspace (native worktree tool first, git fallback, baseline tests), keep a
225
275
  ledger under `.task-pipeline/build/<plan>/` so a compacted context can resume,
@@ -241,6 +291,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
241
291
  "leave it" recorded).
242
292
 
243
293
  ## 6 — Tests
294
+ - **Freedom: low** — green means the full suite, and no skip smuggles a red one past ([`gates.md`](gates.md) → *Axis C*).
244
295
  - **What:** consolidate test coverage for the change: confirm new functionality
245
296
  has tests (written test-first in stage 5), update/repair existing tests the
246
297
  change touched, and add edge-case + failure-path tests per DoD.
@@ -254,6 +305,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
254
305
  ([`audit.md`](audit.md)).
255
306
 
256
307
  ## 7 — Lint + deploy
308
+ - **Freedom: low** — outward and irreversible — the authorization floor is exact or the stage stops ([`gates.md`](gates.md) → *Axis C*).
257
309
  - Read host conventions (`conventions.md`): run the linter; fix failures. The suite
258
310
  is already green from stage 6 — re-run it if code changed since. For UI projects,
259
311
  the **super-ux linter** (`python3 docs/ux/lint.py` / `/ux-lint`) is part of lint —
@@ -268,12 +320,14 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
268
320
  operator go. Respect deploy-from-main rules if the project mandates them.
269
321
 
270
322
  ## 8 — Post-deploy
323
+ - **Freedom: medium** — where the logs live varies; 'clean boot or an honest degradation report' does not ([`gates.md`](gates.md) → *Axis C*).
271
324
  - Tail deploy logs / health-check per conventions. Confirm clean boot, no error
272
325
  spike, live subsystems healthy.
273
326
  - **GATE (auto):** clean boot confirmed, or an **honest degradation report** with next
274
327
  steps — never silent success.
275
328
 
276
329
  ## 9 — Docs + wiki
330
+ - **Freedom: low** — the matrix walk and the gate are mechanical; what a doc says is not this stage's call ([`gates.md`](gates.md) → *Axis C*).
277
331
  - **The propagation sweep runs first** ([`documentation.md`](documentation.md)).
278
332
  The ledger below names the documents you **read**; the matrix in `docs/DOCMAP.md`
279
333
  names the documents you **owe**. They are not the same list, and the gap between
@@ -327,6 +381,7 @@ stages/agents/types (see SKILL.md → *Bring your own skills*).
327
381
  carry-over count printed beside this verdict**.
328
382
 
329
383
  ## 10 — Acceptance
384
+ - **Freedom: medium** — the walk and the evidence rule are fixed; whether it is what was asked for is the operator's ([`gates.md`](gates.md) → *Axis C*).
330
385
  - **What:** the closing stage — go back to the brief and account for **every**
331
386
  requirement. Doctrine: [`acceptance.md`](acceptance.md). Every earlier gate asks
332
387
  "is this artifact good?"; none asks "does this still contain everything that was
@@ -7,6 +7,16 @@ into this skill; nothing to install.
7
7
  > [obra/superpowers](https://github.com/obra/superpowers) (MIT — see `LICENSE` →
8
8
  > *Third-party*), with the stage-6 suite gate added.
9
9
 
10
+ ## Contents
11
+
12
+ - The iron law
13
+ - Red → green → refactor
14
+ - Tests that stay honest
15
+ - Stage 6 — consolidation and the suite gate
16
+ - When stuck
17
+ - Rationalizations
18
+ - Red flags — stop and start over
19
+
10
20
  ## The iron law
11
21
 
12
22
  ```
@@ -82,7 +82,9 @@ find . -maxdepth 1 -type f -name '*.md' 2>/dev/null | sort >> "$TMP/files" || tr
82
82
  FILE_COUNT=$(wc -l < "$TMP/files" | tr -d ' ')
83
83
 
84
84
  if [ "$FILE_COUNT" = "0" ]; then
85
- echo "FAIL: documentation gate — no markdown found under $DOCS_DIR"
85
+ echo "FAIL: documentation gate — no markdown found in $DOCS_DIR/ or the repository root."
86
+ echo " Seed the doc map and the registers first (task-pipeline stage 0, phase 1b),"
87
+ echo " or point DOCS_DIR at wherever this project keeps its documentation."
86
88
  exit 1
87
89
  fi
88
90