task-pipeline-skill 0.5.0 → 0.9.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 +124 -0
- package/README.md +120 -41
- package/cursor/rules/task-pipeline.mdc +56 -0
- package/package.json +4 -2
- package/plugins/task-pipeline/.claude-plugin/plugin.json +2 -2
- package/plugins/task-pipeline/commands/task-pipeline.md +12 -8
- package/plugins/task-pipeline/skills/task-pipeline/SKILL.md +92 -23
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +130 -0
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json +71 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +64 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/companion-skills.md +46 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/conventions.md +10 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/model-tiering.md +3 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +108 -34
- package/templates/README.md +12 -0
- package/templates/brief.md +35 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,129 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.9.0 — 2026-07-23
|
|
4
|
+
|
|
5
|
+
Full structural parity with the sibling `super-ux` per the ssheleg skill canon
|
|
6
|
+
(make-skill): the Cursor channel and a templates dir were the last gaps.
|
|
7
|
+
|
|
8
|
+
- **Cursor channel.** New `cursor/rules/task-pipeline.mdc` — a self-contained,
|
|
9
|
+
agent-requested rule (`alwaysApply: false` + a trigger `description`, no external
|
|
10
|
+
links so it survives being copied into any project) that carries the full
|
|
11
|
+
intake-grill + 9-stage discipline and the super-ux recommendation. Install
|
|
12
|
+
globally via `npx skills add ssheleg/task-pipeline --agent cursor --global`, or
|
|
13
|
+
copy per project into `.cursor/rules/`.
|
|
14
|
+
- **Templates dir.** New `templates/brief.md` — the stage-0 intake-brief skeleton
|
|
15
|
+
this plugin seeds into `docs/superpowers/specs/…-brief.md` (create-if-absent,
|
|
16
|
+
never overwrite), plus `templates/README.md` mapping template → destination →
|
|
17
|
+
stage. Spec/plan and `docs/ux/*` skeletons remain owned by superpowers / super-ux.
|
|
18
|
+
- **Validator + packaging.** The validator now checks every `cursor/rules/*.mdc`
|
|
19
|
+
has `description` + `alwaysApply` frontmatter and that `templates/brief.md`
|
|
20
|
+
exists; `package.json` `files` ships `cursor` and `templates`. All prior gates
|
|
21
|
+
(four-way version sync, config conformance, gate types, release shape, links)
|
|
22
|
+
retained.
|
|
23
|
+
- **Docs.** README gains a Cursor install block and an "Updating everywhere" table
|
|
24
|
+
(one channel per agent — the plugin+plain duplicate caveat spelled out);
|
|
25
|
+
`references/artifacts.md` and stage 0 reference the brief template.
|
|
26
|
+
|
|
27
|
+
## v0.8.1 — 2026-07-23
|
|
28
|
+
|
|
29
|
+
- Docs consistency: the SKILL.md super-ux intro now lists the full current chain
|
|
30
|
+
(`/ux`, `ux-foundation`, `ux-flows`, `ux-scenarios`, `/ux-lint`) instead of the
|
|
31
|
+
pre-flows subset, matching the stage-3 table and `companion-skills.md`. Wiki
|
|
32
|
+
synced to the current architecture.
|
|
33
|
+
|
|
34
|
+
## v0.8.0 — 2026-07-23
|
|
35
|
+
|
|
36
|
+
Project-configurable release automation, super-ux embedding refreshed to its
|
|
37
|
+
current chain, a locked artifact structure, a companion-skills preflight, and a
|
|
38
|
+
full contradiction sweep.
|
|
39
|
+
|
|
40
|
+
- **Release automation — project-configurable & individually toggleable.** New
|
|
41
|
+
optional `release` block in `pipeline.schema.json` (master `enabled` toggle,
|
|
42
|
+
`trigger`, project-defined `steps`, `verify` smoke-checks) with the repo's own
|
|
43
|
+
config in `pipeline.example.json`. Reference implementation
|
|
44
|
+
`.github/workflows/release.yml` is **off unless armed** per repo via the
|
|
45
|
+
`RELEASE_ENABLED` variable; when on it validates the tag ↔ manifest version,
|
|
46
|
+
cuts a GitHub release from the CHANGELOG, and smoke-tests `npx` from a clean
|
|
47
|
+
checkout — closing the previously-manual post-deploy gap. Validator shape-checks
|
|
48
|
+
the block and enforces that `enabled:true` ships the workflow.
|
|
49
|
+
- **super-ux embedding updated to super-ux's current chain.** The stage-3 UX
|
|
50
|
+
track now walks `/ux` → `ux-foundation` (WHY) → `ux-flows` (flows + `screens.md`,
|
|
51
|
+
Figma frames) → `ux-scenarios` (WHAT) → **`/ux-lint`** (`docs/ux/lint.py`, must
|
|
52
|
+
pass), reflecting super-ux ≥0.17 (flows/screens layers, linter, Figma). The
|
|
53
|
+
linter is wired into stage 7 (lint) and stage 9 (same-change), and stage-4 DoD
|
|
54
|
+
now carries `SCR-` screens alongside scenario IDs.
|
|
55
|
+
- **Entry-from-super-ux short-circuit.** When launched *from* super-ux (its `/ux`
|
|
56
|
+
hand-off, UX chain already built), stage 0 detects the existing validated
|
|
57
|
+
chain/plan and **skips the grill + UX rebuild** — it verifies (`/ux-lint`
|
|
58
|
+
green), confirms scope in one line, and resumes at the first stage with real
|
|
59
|
+
work. super-ux skills are treated as idempotent (reuse, never rebuild).
|
|
60
|
+
- **Companion-skills preflight.** New `references/companion-skills.md`: a matrix
|
|
61
|
+
of what powers each stage (superpowers, super-ux, grill-me, context7,
|
|
62
|
+
wiki-update) with install lines and a preflight recommendation block emitted
|
|
63
|
+
before stage 0, so the operator can arm the full flow up front. super-ux install
|
|
64
|
+
lines are surfaced the moment a UI task is detected.
|
|
65
|
+
- **Locked artifact structure.** New `references/artifacts.md` fixes the canonical
|
|
66
|
+
`docs/superpowers/{specs,plans}` + `docs/ux/*` layout, the stage→artifact map,
|
|
67
|
+
and this repo's own structure — so every stage writes to the same place.
|
|
68
|
+
- **Contradiction sweep.** Manifest descriptions (marketplace/plugin/package) and
|
|
69
|
+
the "9 stages" wording in README + SKILL.md now account for stage 0; the v0.1.0
|
|
70
|
+
spec/plan carry *historical snapshot* banners; model tiering marks 0–4 Fable;
|
|
71
|
+
`conventions.md` covers the super-ux linter and the release block.
|
|
72
|
+
|
|
73
|
+
## v0.7.0 — 2026-07-23
|
|
74
|
+
|
|
75
|
+
Front-loaded **intake grill** (stage 0) + super-ux promoted to a recommended,
|
|
76
|
+
auto-detected workflow for any user-facing task.
|
|
77
|
+
|
|
78
|
+
- **New stage 0 — Intake grill (Fable, manual gate).** Before any technical work,
|
|
79
|
+
the pipeline interviews the operator relentlessly — one question per turn, a
|
|
80
|
+
recommended answer with each, exploring the codebase/docs before asking — until
|
|
81
|
+
every decision branch is resolved and locked into a committed **task brief**
|
|
82
|
+
(`docs/superpowers/specs/…-brief.md`). This expands a one-line request into a
|
|
83
|
+
complete input so stages 1→9 run autonomously (only the built-in gates pause).
|
|
84
|
+
Inspired by [Matt Pocock's grill-me](https://github.com/mattpocock/skills);
|
|
85
|
+
uses the `grill-me` / `grilling` skill if it resolves, else a built-in grill
|
|
86
|
+
loop (no hard dependency). The 5 grill rules + stopping condition are embedded
|
|
87
|
+
in `references/stages.md`.
|
|
88
|
+
- **super-ux recommended for ANY user-facing task.** The stage-0 grill detects a
|
|
89
|
+
UI surface (web/mobile/CLI/TUI) early and surfaces super-ux immediately: **use
|
|
90
|
+
it if installed**, otherwise print the install line on the spot
|
|
91
|
+
(`/plugin marketplace add ssheleg/super-ux` → `/plugin install super-ux@super-ux`,
|
|
92
|
+
or `npx skills add ssheleg/super-ux`). The stage-3 UX track (`/ux` →
|
|
93
|
+
`ux-foundation` CJM → `ux-scenarios`) is unchanged; the spec gate still requires
|
|
94
|
+
it for UI tasks.
|
|
95
|
+
- **Docs synced:** SKILL.md gains the intake overview, a strengthened super-ux
|
|
96
|
+
block (recommended / use-if-installed / install-now) and an optional grill-me
|
|
97
|
+
note; stages table + `pipeline.example.json` gain stage 0; model tiering marks
|
|
98
|
+
0–4 as Fable; the `/task-pipeline` command and README (EN + RU) describe the
|
|
99
|
+
grill-first flow.
|
|
100
|
+
|
|
101
|
+
## v0.6.0 — 2026-07-23
|
|
102
|
+
|
|
103
|
+
Typed gates + generic pipeline contract (merged the good ideas from the `os`
|
|
104
|
+
branch onto main, **keeping** the v0.5.0 UX track, the npm installer, and CI).
|
|
105
|
+
|
|
106
|
+
- **Typed gates:** every gate is now tagged `auto` (the orchestrator verifies the
|
|
107
|
+
check itself, pass/fail) or `manual` (wait for the operator's explicit go).
|
|
108
|
+
SKILL.md gained a **Type** column; `stages.md` tags each gate; SKILL.md's
|
|
109
|
+
*How to run* spells out honoring the type (an auto gate never substitutes for a
|
|
110
|
+
required manual approval). Default assignment: 2/3/7 manual, the rest auto.
|
|
111
|
+
- **Generic config contract:** new **`pipeline.schema.json`** (universal contract —
|
|
112
|
+
ordered `stages[]`, each with `skills[]` + `gate{type,check}`; no fixed stage
|
|
113
|
+
count, no baked-in skills) and **`pipeline.example.json`** (this plugin's own
|
|
114
|
+
9-stage flow as config, UX track included). New *Bring your own skills* section:
|
|
115
|
+
a host project copies the example to `pipeline.json` and rewrites it with its
|
|
116
|
+
own stages/agents/gate-types.
|
|
117
|
+
- **Validator:** checks the schema is well-formed and the example conforms — a
|
|
118
|
+
dependency-free shape check (states unique, `skills[]` non-empty, `gate.type` in
|
|
119
|
+
{auto,manual}, `gate.check` present) plus a full `jsonschema` pass when the
|
|
120
|
+
library is available. All prior checks (four-way version sync, command
|
|
121
|
+
frontmatter, relative links, npm bin) retained.
|
|
122
|
+
- **Retained from main (not regressed by the merge):** the super-ux UX track
|
|
123
|
+
(stage-2 UI detection, stage-3 `/ux`→`ux-foundation` CJM→`ux-scenarios`,
|
|
124
|
+
scenario IDs in stage-4 DoD), `bin/task-pipeline.js` + `package.json`, and the
|
|
125
|
+
CI workflow with its negative self-test.
|
|
126
|
+
|
|
3
127
|
## v0.5.0 — 2026-07-20
|
|
4
128
|
|
|
5
129
|
UX track: scenario-first design for user-facing tasks, built on
|
package/README.md
CHANGED
|
@@ -1,37 +1,63 @@
|
|
|
1
1
|
# task-pipeline
|
|
2
2
|
|
|
3
3
|
Full-cycle task delivery pipeline orchestrator for **Claude Code**. One skill that
|
|
4
|
-
runs any substantial task through **9 gated stages** —
|
|
5
|
-
[superpowers](https://github.com/obra/superpowers) skills.
|
|
4
|
+
runs any substantial task through an up-front **intake grill** + **9 gated stages** —
|
|
5
|
+
built on the [superpowers](https://github.com/obra/superpowers) skills.
|
|
6
6
|
|
|
7
7
|
## What it does
|
|
8
8
|
|
|
9
|
-
`docs study → brainstorm → spec → plan → subagent build → tests →
|
|
10
|
-
post-deploy log check → docs/wiki sync`
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
`intake grill → docs study → brainstorm → spec → plan → subagent build → tests →
|
|
10
|
+
lint/deploy → post-deploy log check → docs/wiki sync`
|
|
11
|
+
|
|
12
|
+
It **grills you first**: a one-line task ("make me feature X") is expanded, one
|
|
13
|
+
question at a time, into a locked brief — so the remaining stages run to the end
|
|
14
|
+
without mid-flight questions. Each stage gates the next; each names the model to
|
|
15
|
+
use. Every gate is typed — **auto** (the orchestrator verifies it, pass/fail) or
|
|
16
|
+
**manual** (waits for your go).
|
|
17
|
+
|
|
18
|
+
| # | Stage | Model | Gate | Type |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| 0 | Intake grill | Fable | shared understanding reached; brief locked | manual |
|
|
21
|
+
| 1 | Docs study | Fable | contracts grounded on current docs | auto |
|
|
22
|
+
| 2 | Brainstorm | Fable | design approved; UI verdict recorded | manual |
|
|
23
|
+
| 3 | Spec | Fable | committed + reviewed; UI: scenarios + CJM traced | manual |
|
|
24
|
+
| 4 | Plan | Fable | parallel-ready, DoD per task | auto |
|
|
25
|
+
| 5 | Dev | Opus | tasks DONE, TDD green per task | auto |
|
|
26
|
+
| 6 | Tests | Opus | full suite green, new code covered | auto |
|
|
27
|
+
| 7 | Lint + deploy | host | lint clean + suite green before deploy | manual |
|
|
28
|
+
| 8 | Post-deploy | host | clean boot / honest degradation | auto |
|
|
29
|
+
| 9 | Docs + wiki | host | docs + wiki synced | auto |
|
|
30
|
+
|
|
31
|
+
These stages (0 intake + 1→9) are the plugin's **example** flow. It's a machine-readable config
|
|
32
|
+
([`pipeline.example.json`](plugins/task-pipeline/skills/task-pipeline/pipeline.example.json))
|
|
33
|
+
against a universal contract
|
|
34
|
+
([`pipeline.schema.json`](plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json)):
|
|
35
|
+
a host project copies the example to `pipeline.json` and rewrites it with its own
|
|
36
|
+
stages (any count), its own `skills[]`, and its own `auto`/`manual` gate types —
|
|
37
|
+
"bring your own skills". The framework bakes in no fixed stages.
|
|
38
|
+
|
|
39
|
+
## Intake grill (stage 0)
|
|
40
|
+
|
|
41
|
+
Inspired by [Matt Pocock's grill-me](https://github.com/mattpocock/skills). Before
|
|
42
|
+
any technical work, task-pipeline interviews you relentlessly — one question per
|
|
43
|
+
turn, each with a recommended answer, exploring the codebase before asking — until
|
|
44
|
+
every decision branch is resolved and locked into a **task brief**. That front-loads
|
|
45
|
+
all the human input so stages 1→9 run autonomously (only the built-in gates pause).
|
|
46
|
+
Uses the `grill-me` / `grilling` skill if installed; otherwise runs a built-in grill
|
|
47
|
+
loop (no hard dependency).
|
|
48
|
+
|
|
49
|
+
## UX track (user-facing tasks) — super-ux recommended
|
|
50
|
+
|
|
51
|
+
The moment a task touches any user-facing surface (web / mobile / CLI / TUI — a
|
|
52
|
+
screen, command, or visible behavior), [super-ux](https://github.com/ssheleg/super-ux)
|
|
53
|
+
is the **recommended** workflow, detected early in the stage-0 grill. If it's
|
|
54
|
+
installed, task-pipeline uses it; if not, it gives you the install line on the spot.
|
|
55
|
+
The spec stage runs it **before any plan is written**: `/ux` (setup check) →
|
|
56
|
+
`ux-foundation` (personas, JTBD, **customer journey maps**, user stories) →
|
|
57
|
+
`ux-scenarios` (usage scenarios validated against the base, ux-contract v2). The
|
|
58
|
+
spec then embeds the UX layer — scenario IDs, CJM stages served, applicable UX
|
|
59
|
+
patterns — and the plan's UI tasks carry scenario IDs in their DoD. Scenarios come
|
|
60
|
+
before interface.
|
|
35
61
|
|
|
36
62
|
## Prerequisites
|
|
37
63
|
|
|
@@ -71,6 +97,15 @@ npx task-pipeline-skill # from the npm registry
|
|
|
71
97
|
on npm; installs the same skill + `/task-pipeline` command into `~/.claude`,
|
|
72
98
|
idempotent, `--force` to overwrite)
|
|
73
99
|
|
|
100
|
+
**Cursor:**
|
|
101
|
+
```
|
|
102
|
+
npx skills add ssheleg/task-pipeline --agent cursor --global # global, or…
|
|
103
|
+
```
|
|
104
|
+
…or per project, copy `cursor/rules/task-pipeline.mdc` into the repo's
|
|
105
|
+
`.cursor/rules/`. Cursor has no global rules directory — use the skills CLI for a
|
|
106
|
+
global install, the `.mdc` for per-project, or paste it into Cursor Settings →
|
|
107
|
+
Rules. The rule is self-contained (no external links), so it works copied anywhere.
|
|
108
|
+
|
|
74
109
|
**Plain skill:**
|
|
75
110
|
```
|
|
76
111
|
git clone https://github.com/ssheleg/task-pipeline
|
|
@@ -80,6 +115,19 @@ cd task-pipeline && ./install.sh
|
|
|
80
115
|
command into `~/.claude/commands/`; idempotent — rerun skips existing installs,
|
|
81
116
|
`./install.sh --force` overwrites)
|
|
82
117
|
|
|
118
|
+
## Updating everywhere
|
|
119
|
+
|
|
120
|
+
Pick **one** channel per agent (running the plugin and the plain/skills-CLI copy
|
|
121
|
+
on the same Claude Code install yields a duplicate skill).
|
|
122
|
+
|
|
123
|
+
| Agent / channel | Update |
|
|
124
|
+
|---|---|
|
|
125
|
+
| Claude Code (plugin) | `claude plugin marketplace update task-pipeline` → `claude plugin update task-pipeline@task-pipeline` → restart |
|
|
126
|
+
| Any agent (skills CLI) | `npx skills add ssheleg/task-pipeline --agent <name> --global` (re-run overwrites); `--agent '*'` for all |
|
|
127
|
+
| Cursor | skills CLI (above) with `--agent cursor`, or re-copy the `.mdc` per project |
|
|
128
|
+
| npm | `npx task-pipeline-skill@latest` / `npx github:ssheleg/task-pipeline` (ephemeral — always latest) |
|
|
129
|
+
| Plain skill | `git pull && ./install.sh --force` |
|
|
130
|
+
|
|
83
131
|
## Use
|
|
84
132
|
|
|
85
133
|
Say *"run this through the pipeline"* / *"полный цикл"* / *"прогони по конвейеру"*,
|
|
@@ -87,31 +135,62 @@ or `/task-pipeline`. The skill creates a per-stage TaskList and walks the gates.
|
|
|
87
135
|
|
|
88
136
|
## Model tiering
|
|
89
137
|
|
|
90
|
-
Stages
|
|
138
|
+
Stages 0–4 → Fable, stages 5–6 → Opus, 7–9 → inherit. **Reminders only** — a skill
|
|
91
139
|
can't switch the main-loop model; `/model` is the operator's. Stage-5 subagents are
|
|
92
140
|
pinned to Opus automatically.
|
|
93
141
|
|
|
142
|
+
## Release automation (project-configurable, toggleable)
|
|
143
|
+
|
|
144
|
+
A pipeline config may declare an optional `release` block (see
|
|
145
|
+
[`pipeline.schema.json`](plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json)):
|
|
146
|
+
a master `enabled` toggle, a `trigger`, project-defined `steps`, and `verify`
|
|
147
|
+
smoke-checks. It's **off unless a project turns it on**, and every project
|
|
148
|
+
configures its own. This repo's own instance is
|
|
149
|
+
[`.github/workflows/release.yml`](.github/workflows/release.yml) — armed per repo
|
|
150
|
+
by the `RELEASE_ENABLED` variable (unset = off), it validates the tag against the
|
|
151
|
+
manifests, cuts a GitHub release from the CHANGELOG, and smoke-tests `npx` from a
|
|
152
|
+
clean checkout. Copy and adapt it per project; nothing is hardcoded.
|
|
153
|
+
|
|
154
|
+
## Companion skills
|
|
155
|
+
|
|
156
|
+
`references/companion-skills.md` lists what powers each stage and how to install
|
|
157
|
+
it: **superpowers** (required), **super-ux** (required for user-facing tasks —
|
|
158
|
+
install line surfaced on the spot), **grill-me** (optional, enhances the stage-0
|
|
159
|
+
grill), **context7** (docs stage), **wiki-update** (stage 9). A preflight prints
|
|
160
|
+
which are ready and which to install so you can arm the full flow before work.
|
|
161
|
+
|
|
94
162
|
## Portability
|
|
95
163
|
|
|
96
164
|
Stages 6–9 read the host project's `CLAUDE.md` conventions (tests / lint / deploy /
|
|
97
|
-
docs / wiki) with detection fallbacks, so the skill works in any repo.
|
|
165
|
+
docs / wiki) with detection fallbacks, so the skill works in any repo. The
|
|
166
|
+
canonical artifact layout each stage writes to is fixed in
|
|
167
|
+
[`references/artifacts.md`](plugins/task-pipeline/skills/task-pipeline/references/artifacts.md).
|
|
98
168
|
|
|
99
169
|
## По-русски
|
|
100
170
|
|
|
101
171
|
**task-pipeline** — оркестратор полного цикла доставки задачи для Claude Code:
|
|
102
|
-
один скилл проводит любую существенную задачу через
|
|
103
|
-
(изучение доков → брейншторм → спека → план → сборка сабагентами →
|
|
104
|
-
линт/деплой → пост-деплой проверка логов → синк доков/вики), построенных
|
|
105
|
-
скиллах [superpowers](https://github.com/obra/superpowers).
|
|
106
|
-
|
|
172
|
+
один скилл проводит любую существенную задачу через **интейк-грил + 9 гейтованных
|
|
173
|
+
стадий** (изучение доков → брейншторм → спека → план → сборка сабагентами →
|
|
174
|
+
тесты → линт/деплой → пост-деплой проверка логов → синк доков/вики), построенных
|
|
175
|
+
на скиллах [superpowers](https://github.com/obra/superpowers).
|
|
176
|
+
|
|
177
|
+
- **Грил на входе (стадия 0):** одна строка задачи («сделай фичу X») недостаточна
|
|
178
|
+
для автономной работы. Пайплайн сначала «допрашивает» оператора — по одному
|
|
179
|
+
вопросу за ход, с рекомендованным ответом, изучив код до вопроса — пока все
|
|
180
|
+
ветки решений не закрыты и не зафиксированы в брифе. Это выносит весь ввод
|
|
181
|
+
человека вперёд, дальше стадии 1→9 идут автономно. Идея взята из
|
|
182
|
+
[grill-me Мэтта Покока](https://github.com/mattpocock/skills); использует скилл
|
|
183
|
+
`grill-me`/`grilling` если установлен, иначе — встроенный грил-цикл.
|
|
107
184
|
- Ни одна стадия не стартует, пока не пройден гейт предыдущей; деплой требует
|
|
108
185
|
зелёного полного прогона тестов и явного «go» оператора.
|
|
109
|
-
- **UX
|
|
110
|
-
[super-ux](https://github.com/ssheleg/super-ux)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
186
|
+
- **UX-трек (super-ux рекомендуется):** как только задача трогает интерфейс
|
|
187
|
+
(web/mobile/CLI/TUI), [super-ux](https://github.com/ssheleg/super-ux) —
|
|
188
|
+
рекомендуемый воркфлоу, детектится ещё на гриле; если установлен — используется,
|
|
189
|
+
если нет — сразу даётся строка установки. Стадия спеки гоняет `/ux` →
|
|
190
|
+
`ux-foundation` (персоны, JTBD, CJM) → `ux-scenarios` (сценарии по ux-contract
|
|
191
|
+
v2) до написания плана; спека включает ID сценариев, стадии CJM и UX-паттерны.
|
|
192
|
+
Сценарии — до интерфейса.
|
|
193
|
+
- Каждая стадия напоминает, какую модель включить (`/model`): 0–4 — Fable,
|
|
115
194
|
5–6 — Opus, 7–9 — наследуется. Это только напоминание — модель переключает
|
|
116
195
|
оператор.
|
|
117
196
|
- Стадии 6–9 читают конвенции хост-проекта из `CLAUDE.md` (тесты / линт /
|
|
@@ -0,0 +1,56 @@
|
|
|
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 a task through the pipeline, the full cycle / полный цикл / прогони по конвейеру, or starts any substantial feature/fix/build."
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# task-pipeline — gated delivery cycle (Cursor)
|
|
7
|
+
|
|
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 gated stages**. No
|
|
10
|
+
stage advances until its **gate** passes. Each gate is `auto` (verify it yourself,
|
|
11
|
+
pass/fail) or `manual` (wait for the user's explicit go).
|
|
12
|
+
|
|
13
|
+
## Stage 0 — intake grill (do this FIRST)
|
|
14
|
+
|
|
15
|
+
A one-line task ("build feature X") is not enough to finish autonomously. Grill the
|
|
16
|
+
user up front, then run the rest without mid-flight questions:
|
|
17
|
+
1. One question per turn — never bundle.
|
|
18
|
+
2. Give a recommended answer with every question (+ one-line rationale).
|
|
19
|
+
3. Explore the codebase before asking — if a search/read answers it, do that.
|
|
20
|
+
4. Walk the decision tree depth-first; ask prerequisite decisions first.
|
|
21
|
+
5. Reconcile contradictions; chase dodges ("decide later" → "latest you can decide
|
|
22
|
+
and still ship?").
|
|
23
|
+
Stop when shared understanding is reached (every branch answered or explicitly
|
|
24
|
+
deferred) and lock the answers into a short brief the user confirms. Only then start.
|
|
25
|
+
|
|
26
|
+
## Stages 1→9
|
|
27
|
+
|
|
28
|
+
1. **Docs study** (auto) — ground every external lib/API on current docs, not recall.
|
|
29
|
+
2. **Brainstorm** (manual) — 2–3 approaches + a recommendation; design approved.
|
|
30
|
+
Record whether the task touches a user-facing surface (UI verdict).
|
|
31
|
+
3. **Spec** (manual) — write and commit the design; lock shared contracts. For UI
|
|
32
|
+
tasks, run the UX chain FIRST (see super-ux below) and embed it.
|
|
33
|
+
4. **Plan** (auto) — zero-context tasks, exact paths, TDD steps, DoD each,
|
|
34
|
+
dependency graph + parallel groups, non-overlapping file ownership.
|
|
35
|
+
5. **Dev** (auto) — isolate (worktree), TDD per task (failing test → minimal impl →
|
|
36
|
+
green → commit); two-stage review (spec compliance, then code quality).
|
|
37
|
+
6. **Tests** (auto) — full suite green (not just new tests); new/changed code
|
|
38
|
+
covered; no skip/xfail hiding red.
|
|
39
|
+
7. **Lint + deploy** (manual) — lint clean AND suite green before deploy; deploy is
|
|
40
|
+
outward → explicit user go.
|
|
41
|
+
8. **Post-deploy** (auto) — tail logs / health-check; clean boot or an honest
|
|
42
|
+
degradation report (never silent success).
|
|
43
|
+
9. **Docs** (auto) — update module docs/runbooks in the SAME change.
|
|
44
|
+
|
|
45
|
+
Cross-cutting: track tasks, conventional commits, honest degradation (never claim a
|
|
46
|
+
failed/skipped step succeeded), and get explicit go before any outward/irreversible
|
|
47
|
+
action (deploy, publish, repo create).
|
|
48
|
+
|
|
49
|
+
## super-ux for user-facing tasks (recommended)
|
|
50
|
+
|
|
51
|
+
If the task touches any UI (web/mobile/CLI/TUI), the WHY→UI→scenario chain comes
|
|
52
|
+
BEFORE interface code. If super-ux is available, use it: foundation (personas,
|
|
53
|
+
JTBD, customer journey maps, user stories) → flows + screens → scenarios (the
|
|
54
|
+
source of truth) → run its linter. Otherwise still design that chain, get it
|
|
55
|
+
approved, and trace every user-facing requirement to a scenario before building.
|
|
56
|
+
Install (Cursor/Claude/others): `npx skills add ssheleg/super-ux`.
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Full-cycle task delivery pipeline orchestrator skill for Claude Code — 9 gated stages (docs, brainstorm, spec, plan, build, tests, deploy, post-deploy, docs/wiki) built on the superpowers skills. This package is the installer CLI.",
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Full-cycle task delivery pipeline orchestrator skill for Claude Code — an intake grill + 9 gated stages (docs, brainstorm, spec, plan, build, tests, deploy, post-deploy, docs/wiki) built on the superpowers skills, with a super-ux UX track for user-facing tasks and toggleable release automation. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"task-pipeline": "bin/task-pipeline.js"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
9
|
"bin",
|
|
10
10
|
"plugins",
|
|
11
|
+
"cursor",
|
|
12
|
+
"templates",
|
|
11
13
|
"README.md",
|
|
12
14
|
"LICENSE",
|
|
13
15
|
"CHANGELOG.md"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline",
|
|
3
|
-
"description": "Thin orchestrator
|
|
4
|
-
"version": "0.
|
|
3
|
+
"description": "Thin orchestrator: an intake grill expands the task, then docs study, brainstorm, spec, plan, subagent build, tests, lint/deploy, post-deploy log check, docs/wiki sync — typed auto/manual gates, per-stage model reminders, a super-ux UX track for user-facing tasks, and toggleable project-configurable release automation. Built on the superpowers skills; generic-portable.",
|
|
4
|
+
"version": "0.9.0",
|
|
5
5
|
"author": { "name": "ssheleg" },
|
|
6
6
|
"homepage": "https://github.com/ssheleg/task-pipeline",
|
|
7
7
|
"repository": "https://github.com/ssheleg/task-pipeline",
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Run a task through the
|
|
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.
|
|
3
3
|
argument-hint: <one-line task description>
|
|
4
4
|
---
|
|
5
|
-
Use the `task-pipeline` skill to run the task below through all
|
|
6
|
-
|
|
7
|
-
lint/deploy → post-deploy → docs/wiki.
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
Use the `task-pipeline` skill to run the task below through all gated stages —
|
|
6
|
+
**stage 0 intake grill** → docs study → brainstorm → spec → plan → subagent
|
|
7
|
+
build → tests → lint/deploy → post-deploy → docs/wiki. Start with the **intake
|
|
8
|
+
grill**: interview the operator one question at a time (with a recommended answer
|
|
9
|
+
each, exploring the codebase before asking) until every decision branch is
|
|
10
|
+
resolved and the brief is locked — so the rest runs autonomously. For any
|
|
11
|
+
user-facing task, recommend/use **super-ux**. Honor every stage gate by its type
|
|
12
|
+
(`auto` = verify yourself; `manual` = wait for explicit go) and emit the
|
|
13
|
+
per-stage model reminder when the recommended model differs from the current one.
|
|
10
14
|
|
|
11
15
|
Task: $ARGUMENTS
|
|
12
16
|
|
|
13
17
|
Idempotent entry — inspect state first, never restart blindly:
|
|
14
18
|
- If a pipeline TaskList from a previous run already exists for this task,
|
|
15
19
|
**resume** from the first incomplete stage instead of starting over.
|
|
16
|
-
- Otherwise,
|
|
17
|
-
|
|
20
|
+
- Otherwise, begin at stage 0 (intake grill). If no task is given above, the
|
|
21
|
+
grill's first question asks the operator for the task in one line.
|
|
@@ -1,14 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: task-pipeline
|
|
3
|
-
description: "Orchestrates a task through the full end-to-end delivery pipeline — docs study, brainstorm, spec, plan, subagent-driven build, test suite, lint/deploy, post-deploy log check, and docs/wiki sync — as
|
|
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."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# task-pipeline
|
|
7
7
|
|
|
8
|
-
Thin orchestrator. Runs a task through **
|
|
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
10
|
gate passes; each stage names the model to use.
|
|
11
11
|
|
|
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.
|
|
18
|
+
|
|
19
|
+
**Config contract: [`pipeline.schema.json`](pipeline.schema.json).** A pipeline is
|
|
20
|
+
a machine-readable config — an ordered list of stages, each with `skills[]` (the
|
|
21
|
+
skills/agents that run it) and a `gate {type, check}`. The schema is the universal
|
|
22
|
+
contract; it imposes **no** specific stages, skills, or gate assignments.
|
|
23
|
+
[`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→9 stages
|
|
25
|
+
tabled below) and an optional, toggleable `release` block. Any project replaces it
|
|
26
|
+
wholesale — any number of stages, run by its own skills/agents, with its own gate
|
|
27
|
+
types (see *Bring your own skills*). Each gate has a **type**: `auto` (the
|
|
28
|
+
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
|
+
|
|
12
31
|
## Prerequisite
|
|
13
32
|
|
|
14
33
|
Requires the **superpowers** skills. Preflight: confirm `superpowers:brainstorming`,
|
|
@@ -18,36 +37,71 @@ If missing → tell the operator to install from **https://github.com/obra/super
|
|
|
18
37
|
(`/plugin marketplace add obra/superpowers` → `/plugin install superpowers@superpowers`)
|
|
19
38
|
and stop.
|
|
20
39
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
40
|
+
**super-ux — recommended for ANY user-facing task.** The moment a task implies a
|
|
41
|
+
user interface (web / mobile / CLI / TUI — a screen, a command, a visible
|
|
42
|
+
behavior; the stage-0 grill detects this early), super-ux is the recommended
|
|
43
|
+
workflow for the WHY→UI→scenario chain (`/ux`, `ux-foundation`, `ux-flows`,
|
|
44
|
+
`ux-scenarios`, `/ux-lint`).
|
|
45
|
+
- **Already installed?** (does `/ux` or `super-ux:ux-foundation` resolve) → **use
|
|
46
|
+
it**: `/ux` at intake, then the stage-3 UX track walks its traced chain —
|
|
47
|
+
`ux-foundation` (personas, JTBD, CJM, stories) → `ux-flows` (user flows +
|
|
48
|
+
`screens.md`, Figma frames when on) → `ux-scenarios` (traced scenarios) → the
|
|
49
|
+
`/ux-lint` linter (`docs/ux/lint.py`) must pass. Wire that linter into the host
|
|
50
|
+
CI/pre-commit so UX drift can't merge.
|
|
51
|
+
- **Not installed?** → recommend it and give the install line right away:
|
|
52
|
+
```
|
|
53
|
+
/plugin marketplace add ssheleg/super-ux
|
|
54
|
+
/plugin install super-ux@super-ux
|
|
55
|
+
```
|
|
56
|
+
(or `npx skills add ssheleg/super-ux`). For UI tasks the spec gate **requires**
|
|
57
|
+
it — install before stage 3, otherwise stop and ask the operator to install.
|
|
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.
|
|
25
63
|
|
|
26
64
|
## How to run
|
|
27
65
|
|
|
28
|
-
1. Restate the task in one line. Create a **TaskList: one task per stage
|
|
29
|
-
context loss; lets you resume).
|
|
30
|
-
|
|
66
|
+
1. Restate the task in one line. Create a **TaskList: one task per stage, starting
|
|
67
|
+
with stage 0** (survives context loss; lets you resume). Then run the
|
|
68
|
+
**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?**
|
|
75
|
+
(a validated `docs/ux/` chain and/or a `docs/ux/plans/…` fix plan already
|
|
76
|
+
exists — super-ux's `/ux` hands off here) → don't re-grill or rebuild the UX
|
|
77
|
+
chain: just check it's OK (`/ux-lint` green), confirm scope in one line, and
|
|
78
|
+
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`) —
|
|
31
80
|
if recommended ≠ current, emit the reminder block and wait for the operator to `/model`.
|
|
32
|
-
|
|
33
|
-
|
|
81
|
+
4. Do **not** advance until the stage **gate** passes (`references/stages.md`).
|
|
82
|
+
Honor the gate **type**: for `auto`, verify the gate's `check` yourself and
|
|
83
|
+
stop/return on fail; for `manual`, present the result and **wait for the
|
|
84
|
+
operator's explicit "continue"/go** — an auto gate never substitutes for a
|
|
85
|
+
required manual approval.
|
|
86
|
+
5. Cross-cutting, every stage: task tracker + conventional commits per host
|
|
34
87
|
conventions; worktree isolation for the build; honest degradation (never claim a
|
|
35
88
|
failed/skipped step succeeded); outward/irreversible actions (deploy, publish,
|
|
36
89
|
repo create) need explicit operator go.
|
|
37
90
|
|
|
38
91
|
## Stages (detail in `references/stages.md`)
|
|
39
92
|
|
|
40
|
-
| # | Stage | Model | Invoke | Gate |
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
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 |
|
|
51
105
|
|
|
52
106
|
## Model reminder (emit at a boundary when recommended ≠ current)
|
|
53
107
|
|
|
@@ -55,8 +109,23 @@ missing then → tell the operator to install and stop.
|
|
|
55
109
|
> Switch: `/model <id>` — then say "continue". *(Reminder only — override if you
|
|
56
110
|
> don't have that model.)*
|
|
57
111
|
|
|
112
|
+
## Bring your own skills
|
|
113
|
+
|
|
114
|
+
The stages above (stage 0 intake + 1→9) are the **example** flow (grill +
|
|
115
|
+
superpowers + a super-ux UX track for user-facing tasks + host conventions). A
|
|
116
|
+
host project owns its pipeline: copy `pipeline.example.json` → `pipeline.json`,
|
|
117
|
+
then define its **own** stages (any count), point each stage's `skills[]` at the
|
|
118
|
+
skills/agents its environment resolves, set each `gate.type` (`auto`/`manual`) to
|
|
119
|
+
fit its process, and configure/toggle its own `release` block. The framework ships
|
|
120
|
+
no fixed stage count and no opinion on which gates are manual or whether release
|
|
121
|
+
automation is on — `pipeline.schema.json` is the only contract.
|
|
122
|
+
|
|
58
123
|
## References
|
|
59
124
|
|
|
60
|
-
- `
|
|
125
|
+
- `pipeline.schema.json` — the universal pipeline config contract (stages + release)
|
|
126
|
+
- `pipeline.example.json` — this plugin's default flow (stage 0 + 1→9) + release, as config
|
|
127
|
+
- `references/stages.md` — per-stage detail + exact gate criteria + gate types
|
|
61
128
|
- `references/model-tiering.md` — model map, ids, the `/model` reminder mechanic, override
|
|
62
129
|
- `references/conventions.md` — how stages 6–9 read the host project's CLAUDE.md
|
|
130
|
+
- `references/companion-skills.md` — companion skills, install lines, preflight recommendation
|
|
131
|
+
- `references/artifacts.md` — the canonical document/artifact layout per stage
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./pipeline.schema.json",
|
|
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.",
|
|
5
|
+
"stages": [
|
|
6
|
+
{
|
|
7
|
+
"id": 0,
|
|
8
|
+
"state": "intake",
|
|
9
|
+
"name": "Intake grill",
|
|
10
|
+
"model": "claude-fable-5",
|
|
11
|
+
"skills": ["grill-me", "grilling"],
|
|
12
|
+
"gate": {
|
|
13
|
+
"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"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": 1,
|
|
19
|
+
"state": "docs-study",
|
|
20
|
+
"name": "Docs study",
|
|
21
|
+
"model": "claude-fable-5",
|
|
22
|
+
"skills": ["context7", "context7-docs"],
|
|
23
|
+
"gate": {
|
|
24
|
+
"type": "auto",
|
|
25
|
+
"check": "every contract the design will lock is grounded in fetched docs, not recall; unresolvable libraries are flagged in the spec"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": 2,
|
|
30
|
+
"state": "brainstorm",
|
|
31
|
+
"name": "Brainstorm",
|
|
32
|
+
"model": "claude-fable-5",
|
|
33
|
+
"skills": ["superpowers:brainstorming"],
|
|
34
|
+
"gate": {
|
|
35
|
+
"type": "manual",
|
|
36
|
+
"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)"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": 3,
|
|
41
|
+
"state": "spec",
|
|
42
|
+
"name": "Spec",
|
|
43
|
+
"model": "claude-fable-5",
|
|
44
|
+
"skills": ["super-ux:ux-foundation", "super-ux:ux-scenarios", "superpowers:brainstorming"],
|
|
45
|
+
"gate": {
|
|
46
|
+
"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"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": 4,
|
|
52
|
+
"state": "plan",
|
|
53
|
+
"name": "Plan",
|
|
54
|
+
"model": "claude-fable-5",
|
|
55
|
+
"skills": ["superpowers:writing-plans"],
|
|
56
|
+
"gate": {
|
|
57
|
+
"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"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": 5,
|
|
63
|
+
"state": "dev",
|
|
64
|
+
"name": "Dev",
|
|
65
|
+
"model": "claude-opus-4-8",
|
|
66
|
+
"skills": ["superpowers:using-git-worktrees", "superpowers:subagent-driven-development"],
|
|
67
|
+
"gate": {
|
|
68
|
+
"type": "auto",
|
|
69
|
+
"check": "all plan tasks DONE (two-stage review: spec compliance, then code quality); full test suite green"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": 6,
|
|
74
|
+
"state": "tests",
|
|
75
|
+
"name": "Tests",
|
|
76
|
+
"model": "claude-opus-4-8",
|
|
77
|
+
"skills": ["superpowers:test-driven-development"],
|
|
78
|
+
"gate": {
|
|
79
|
+
"type": "auto",
|
|
80
|
+
"check": "full suite green (not just new tests); new/changed code covered; no skip/xfail smuggling a red suite past the gate"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": 7,
|
|
85
|
+
"state": "lint-deploy",
|
|
86
|
+
"name": "Lint + deploy",
|
|
87
|
+
"model": "inherit",
|
|
88
|
+
"skills": ["host:lint", "host:deploy"],
|
|
89
|
+
"gate": {
|
|
90
|
+
"type": "manual",
|
|
91
|
+
"check": "lint clean and full suite green before deploy; deploy is outward and needs explicit operator go"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": 8,
|
|
96
|
+
"state": "post-deploy",
|
|
97
|
+
"name": "Post-deploy",
|
|
98
|
+
"model": "inherit",
|
|
99
|
+
"skills": ["host:health-check"],
|
|
100
|
+
"gate": {
|
|
101
|
+
"type": "auto",
|
|
102
|
+
"check": "clean boot confirmed (no error spike, live subsystems healthy), or an honest degradation report with next steps"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": 9,
|
|
107
|
+
"state": "docs-wiki",
|
|
108
|
+
"name": "Docs + wiki",
|
|
109
|
+
"model": "inherit",
|
|
110
|
+
"skills": ["host:module-docs", "wiki-update"],
|
|
111
|
+
"gate": {
|
|
112
|
+
"type": "auto",
|
|
113
|
+
"check": "docs in sync with code in the same change; wiki synced; dangling links fixed"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
],
|
|
117
|
+
"release": {
|
|
118
|
+
"enabled": true,
|
|
119
|
+
"trigger": "tag",
|
|
120
|
+
"steps": [
|
|
121
|
+
"create a GitHub release from the matching CHANGELOG section",
|
|
122
|
+
"npm publish (task-pipeline-skill) — human 2FA step, not automated"
|
|
123
|
+
],
|
|
124
|
+
"verify": [
|
|
125
|
+
"CI green on the tagged commit",
|
|
126
|
+
"npx github:ssheleg/task-pipeline#<tag> from a clean cwd installs the skill + command",
|
|
127
|
+
"after npm publish: npm view task-pipeline-skill version == <tag>"
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://github.com/ssheleg/task-pipeline/pipeline.schema.json",
|
|
4
|
+
"title": "task-pipeline config",
|
|
5
|
+
"description": "Generic contract for a pipeline config. An ordered list of stages; each stage is run by the host project's own skills/agents and guarded by a typed gate. The framework imposes no specific stages, skills, or gate assignments — those are entirely the host project's config. Copy pipeline.example.json and rewrite it to match your project.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["stages"],
|
|
8
|
+
"additionalProperties": true,
|
|
9
|
+
"properties": {
|
|
10
|
+
"version": { "type": "integer", "minimum": 1 },
|
|
11
|
+
"stages": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"minItems": 1,
|
|
14
|
+
"description": "The pipeline stages, in order. Any number, any names — your project's real stages.",
|
|
15
|
+
"items": { "$ref": "#/definitions/stage" }
|
|
16
|
+
},
|
|
17
|
+
"release": { "$ref": "#/definitions/release" }
|
|
18
|
+
},
|
|
19
|
+
"definitions": {
|
|
20
|
+
"release": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"additionalProperties": true,
|
|
23
|
+
"description": "Optional release automation, entirely project-defined and INDIVIDUALLY TOGGLEABLE. Omit the whole object, or set enabled:false, to turn release automation off for this project. The framework ships an example workflow (.github/workflows/release.yml) whose job is gated on a repo variable so each project arms it on its own; this block is the declarative counterpart the orchestrator reads.",
|
|
24
|
+
"required": ["enabled"],
|
|
25
|
+
"properties": {
|
|
26
|
+
"enabled": { "type": "boolean", "description": "Master on/off toggle. false (or the object omitted) = no release automation for this project." },
|
|
27
|
+
"trigger": { "enum": ["tag", "manual", "push", "none"], "description": "What kicks off a release (e.g. a pushed vX.Y.Z tag, manual dispatch)." },
|
|
28
|
+
"steps": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": { "type": "string", "minLength": 1 },
|
|
31
|
+
"description": "Ordered release actions, in prose — project-specific (e.g. create a GitHub release, npm publish). Human-only steps (2FA publish) are named as such."
|
|
32
|
+
},
|
|
33
|
+
"verify": {
|
|
34
|
+
"type": "array",
|
|
35
|
+
"items": { "type": "string", "minLength": 1 },
|
|
36
|
+
"description": "Post-release smoke checks that must pass after a release — this is the release's own post-deploy gate (stage 8 applied to shipping the package itself)."
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"stage": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"required": ["state", "skills", "gate"],
|
|
43
|
+
"additionalProperties": true,
|
|
44
|
+
"properties": {
|
|
45
|
+
"id": { "type": "integer", "description": "Optional ordinal." },
|
|
46
|
+
"state": { "type": "string", "minLength": 1, "description": "Unique stable key for the stage." },
|
|
47
|
+
"name": { "type": "string", "description": "Optional human label." },
|
|
48
|
+
"model": { "type": "string", "description": "Optional recommended model id for the stage." },
|
|
49
|
+
"skills": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"minItems": 1,
|
|
52
|
+
"description": "The skill(s)/agent(s) that execute this stage. Any names your environment resolves — this is where you plug in your OWN skills.",
|
|
53
|
+
"items": { "type": "string", "minLength": 1 }
|
|
54
|
+
},
|
|
55
|
+
"gate": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"required": ["type", "check"],
|
|
58
|
+
"additionalProperties": true,
|
|
59
|
+
"description": "Condition that must pass before advancing to the next stage.",
|
|
60
|
+
"properties": {
|
|
61
|
+
"type": {
|
|
62
|
+
"enum": ["auto", "manual"],
|
|
63
|
+
"description": "auto = the orchestrator verifies `check` itself (pass/fail); manual = wait for the operator's explicit go."
|
|
64
|
+
},
|
|
65
|
+
"check": { "type": "string", "minLength": 1, "description": "The gate condition, in prose." }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Artifact structure — the canonical layout
|
|
2
|
+
|
|
3
|
+
Every stage that produces a durable artifact writes it to the **same** place, so
|
|
4
|
+
a resumed or handed-off run always knows where to look. This is the recommended
|
|
5
|
+
structure; a host project may relocate roots via its `CLAUDE.md`, but keep the
|
|
6
|
+
shape.
|
|
7
|
+
|
|
8
|
+
## In the host project
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
docs/
|
|
12
|
+
superpowers/
|
|
13
|
+
specs/
|
|
14
|
+
YYYY-MM-DD-<topic>-brief.md # stage 0 — locked intake brief (grill output)
|
|
15
|
+
YYYY-MM-DD-<topic>-design.md # stage 3 — the spec (locks shared contracts)
|
|
16
|
+
plans/
|
|
17
|
+
YYYY-MM-DD-<topic>.md # stage 4 — the implementation plan
|
|
18
|
+
ux/ # super-ux, UI tasks only (see companion-skills.md)
|
|
19
|
+
foundation.md # WHY: personas, JTBD, CJM, stories
|
|
20
|
+
flows.md # HOW: task analysis + user-flow diagrams
|
|
21
|
+
screens.md # UI map: screens + states, wireframes, Figma frames
|
|
22
|
+
scenarios.md # WHAT: scenarios (source of truth for behavior)
|
|
23
|
+
audits/YYYY-MM-DD-<scope>.md # ux-audit reports
|
|
24
|
+
plans/YYYY-MM-DD-<scope>.md # super-ux fix plans (may hand off to this pipeline)
|
|
25
|
+
lint.py, README.md # seeded by super-ux
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Naming: date-prefixed `YYYY-MM-DD-<topic>` slugs, one topic per file, kebab-case.
|
|
29
|
+
The three superpowers artifacts share the **same `<topic>` slug** so brief →
|
|
30
|
+
design → plan is traceable at a glance.
|
|
31
|
+
|
|
32
|
+
## Stage → artifact map
|
|
33
|
+
|
|
34
|
+
| Stage | Writes | Consumed by |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| 0 Intake | `specs/<topic>-brief.md` (seed from `templates/brief.md`) | stages 2–4 |
|
|
37
|
+
| 3 Spec | `specs/<topic>-design.md` (+ links `docs/ux/*` for UI) | stage 4 |
|
|
38
|
+
| 4 Plan | `plans/<topic>.md` | stage 5 |
|
|
39
|
+
| 3 UX track | `docs/ux/{foundation,flows,screens,scenarios}.md` | stages 4–9 + `/ux-lint` |
|
|
40
|
+
| 8 Post-deploy | log/health notes (in the run, not a committed file) | stage 9 |
|
|
41
|
+
| 9 Docs+wiki | host module docs + wiki pages | — |
|
|
42
|
+
|
|
43
|
+
## This repo (task-pipeline itself), for reference
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
.claude-plugin/marketplace.json # marketplace manifest
|
|
47
|
+
plugins/task-pipeline/
|
|
48
|
+
.claude-plugin/plugin.json
|
|
49
|
+
commands/task-pipeline.md # /task-pipeline
|
|
50
|
+
skills/task-pipeline/
|
|
51
|
+
SKILL.md
|
|
52
|
+
pipeline.schema.json # generic pipeline contract
|
|
53
|
+
pipeline.example.json # this plugin's own flow, as config
|
|
54
|
+
references/{stages,model-tiering,conventions,artifacts,companion-skills}.md
|
|
55
|
+
cursor/rules/task-pipeline.mdc # Cursor channel (self-contained rule)
|
|
56
|
+
templates/brief.md # skeleton seeded at stage 0
|
|
57
|
+
bin/task-pipeline.js # npx installer (package task-pipeline-skill)
|
|
58
|
+
package.json
|
|
59
|
+
install.sh # POSIX installer
|
|
60
|
+
test/validate.py # structural validator
|
|
61
|
+
.github/workflows/{validate,release}.yml # CI + toggleable release
|
|
62
|
+
README.md CHANGELOG.md LICENSE
|
|
63
|
+
docs/superpowers/{specs,plans}/ # this repo's own design history
|
|
64
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Companion skills — what powers each stage, how to install, what to run
|
|
2
|
+
|
|
3
|
+
task-pipeline is a thin orchestrator; the actual work is done by companion
|
|
4
|
+
skills. Preflight-detect each one; if a needed skill doesn't resolve, **give the
|
|
5
|
+
operator the install line immediately** and (for required ones) stop until it's
|
|
6
|
+
installed. Never silently degrade a required capability.
|
|
7
|
+
|
|
8
|
+
## The matrix
|
|
9
|
+
|
|
10
|
+
| Skill / tool | Needed for | Required? | Install |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| **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
|
+
| **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 |
|
|
15
|
+
| **context7** (MCP) | stage 1 docs study | Recommended (web-search fallback) | connect the context7 MCP server |
|
|
16
|
+
| **wiki-update** | stage 9 wiki sync | Optional (skip wiki if absent) | user's wiki skill set |
|
|
17
|
+
|
|
18
|
+
## Preflight recommendation (emit before stage 0)
|
|
19
|
+
|
|
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:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Pipeline companions:
|
|
25
|
+
✓ superpowers — ready
|
|
26
|
+
✗ super-ux — this task looks user-facing; recommended. Install:
|
|
27
|
+
/plugin marketplace add ssheleg/super-ux
|
|
28
|
+
/plugin install super-ux@super-ux
|
|
29
|
+
✓ context7 — ready
|
|
30
|
+
✗ grill-me — optional; falling back to the built-in grill loop
|
|
31
|
+
✓ wiki-update — ready
|
|
32
|
+
Recommend installing the ✗ items marked recommended, then say "continue".
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Rules:
|
|
36
|
+
- Only flag **super-ux** as recommended when the task implies a UI (the stage-0
|
|
37
|
+
grill decides this; when unsure, flag it — a false positive costs one install).
|
|
38
|
+
- **superpowers** missing → stop; it's required for the core stages.
|
|
39
|
+
- Optional tools missing → state the fallback, don't block.
|
|
40
|
+
- Re-detect after the operator installs; don't assume.
|
|
41
|
+
|
|
42
|
+
## Hand-off the other direction
|
|
43
|
+
|
|
44
|
+
super-ux's `/ux` menu can hand off *to* this pipeline (its "execute
|
|
45
|
+
autonomously" action). When entered that way the UX chain already exists — see
|
|
46
|
+
`stages.md` → 0 *Entry-from-super-ux short-circuit*: verify, don't rebuild.
|
|
@@ -9,12 +9,21 @@ found, surface it and **ask** rather than guessing.
|
|
|
9
9
|
- `CLAUDE.md` usually names the commands. Else detect: `package.json` scripts
|
|
10
10
|
(`npm test` / `npm run lint`), `pyproject.toml` / `ruff` (`ruff check`), `pytest`,
|
|
11
11
|
`Makefile` targets, `.golangci.yml`, `cargo test`.
|
|
12
|
+
- **UI projects:** the super-ux linter (`python3 docs/ux/lint.py` / `/ux-lint`) is
|
|
13
|
+
part of lint — run it too; it must pass (no UX drift).
|
|
12
14
|
|
|
13
|
-
## Deploy
|
|
15
|
+
## Deploy / release
|
|
14
16
|
- `CLAUDE.md` deploy section (e.g. deploy-from-main rule, Heroku auto-deploy on
|
|
15
17
|
push, `Procfile`). Else detect: `Procfile` / heroku remote, `Dockerfile`,
|
|
16
18
|
`.github/workflows/*.yml`, Vercel / Netlify config. **Never invent a deploy
|
|
17
19
|
path** — if none is discoverable, ask.
|
|
20
|
+
- **Release automation is project-configurable and individually toggleable.** If
|
|
21
|
+
the project declares a `release` block (see `pipeline.schema.json`; this repo's
|
|
22
|
+
own is in `pipeline.example.json`) with `enabled: true`, that block's `steps`
|
|
23
|
+
are the deploy, and its `verify` list is the stage-8 post-deploy check. Off (or
|
|
24
|
+
omitted) → no release automation; deploy by the host convention above. This
|
|
25
|
+
repo's reference implementation is `.github/workflows/release.yml`, armed per
|
|
26
|
+
repo via the `RELEASE_ENABLED` variable — copy and adapt it, don't assume it.
|
|
18
27
|
|
|
19
28
|
## Post-deploy logs
|
|
20
29
|
- Heroku: `heroku logs -a <app>`. Docker / k8s: `docker logs` / `kubectl logs`.
|
|
@@ -5,7 +5,7 @@ lack one, keep your current model; the pipeline still runs.
|
|
|
5
5
|
|
|
6
6
|
| Stages | Recommended | id |
|
|
7
7
|
|---|---|---|
|
|
8
|
-
|
|
|
8
|
+
| 0–4 (intake grill, docs, brainstorm, spec, plan) | Fable 5 | `claude-fable-5` |
|
|
9
9
|
| 5–6 (subagent dev, tests) | Opus 4.8 | `claude-opus-4-8` |
|
|
10
10
|
| 7–9 (lint/deploy, logs, docs) | inherit current | — |
|
|
11
11
|
|
|
@@ -20,7 +20,8 @@ At each stage boundary compare recommended vs current. If they differ, emit:
|
|
|
20
20
|
|
|
21
21
|
A skill runs inside the current context; it **cannot change the main-loop model**.
|
|
22
22
|
Only the operator can, via `/model` (or `/fast`). The stages that most benefit from
|
|
23
|
-
Fable (
|
|
23
|
+
Fable (0–4) are interactive anyway (stage 0 is a live grill), so the operator is
|
|
24
|
+
present to switch.
|
|
24
25
|
|
|
25
26
|
Stage 5 spawns subagents; those **are** pinned to Opus by the orchestrator via the
|
|
26
27
|
`Agent` / `Workflow` model override — no operator action needed for subagents.
|
|
@@ -1,7 +1,58 @@
|
|
|
1
1
|
# Stages — detail & gates
|
|
2
2
|
|
|
3
3
|
For each stage: what it does, what to invoke, artifacts, and the **GATE** that
|
|
4
|
-
must pass before advancing.
|
|
4
|
+
must pass before advancing. Each gate is tagged with its **type** — `auto` (the
|
|
5
|
+
orchestrator verifies the check itself, pass/fail) or `manual` (wait for the
|
|
6
|
+
operator's explicit go). These stages (0 intake + 1→9) are the plugin's
|
|
7
|
+
**example** flow, encoded in `pipeline.example.json` against the universal contract
|
|
8
|
+
`pipeline.schema.json`; a host project replaces it with its own
|
|
9
|
+
stages/agents/types (see SKILL.md → *Bring your own skills*).
|
|
10
|
+
|
|
11
|
+
## 0 — Intake grill (Fable)
|
|
12
|
+
- **Entry-from-super-ux short-circuit (check FIRST).** task-pipeline is often
|
|
13
|
+
launched *from* super-ux — its `/ux` action menu offers "execute autonomously
|
|
14
|
+
via the task-pipeline plugin" once the UX chain (and often a
|
|
15
|
+
`docs/ux/plans/…` fix plan) is already built. Before grilling, detect that:
|
|
16
|
+
if `docs/ux/` already holds a validated chain (foundation → flows → screens →
|
|
17
|
+
scenarios) and/or a fresh fix plan, **do not re-run the grill or the stage-3
|
|
18
|
+
UX track from scratch.** Instead: (1) run a quick check — `/ux-lint`
|
|
19
|
+
(`docs/ux/lint.py`) green, chain present, plan (if any) readable; (2) confirm
|
|
20
|
+
the scope with the operator in ONE line; (3) skip to the first stage that
|
|
21
|
+
still has real work (usually stage 4 Plan if a UX fix plan already exists, or
|
|
22
|
+
stage 3 Spec to formalize it). Record what was adopted vs skipped. If the
|
|
23
|
+
check finds drift/gaps, fall back to the normal flow for the missing parts
|
|
24
|
+
only.
|
|
25
|
+
- **What (normal entry):** the operator's one-line task is almost never enough to
|
|
26
|
+
run autonomously. Before anything else, **grill the operator** to expand that
|
|
27
|
+
one line into a complete, unambiguous brief — resolve every decision branch
|
|
28
|
+
up front so stages 1→9 need no further human input beyond the manual gates.
|
|
29
|
+
This is input expansion, not design: turn "make me feature X" into locked
|
|
30
|
+
answers for scope, users, constraints, data, edge cases, done-criteria.
|
|
31
|
+
- **Invoke:** prefer the `grill-me` / `grilling` skill if it resolves; otherwise
|
|
32
|
+
run the built-in grill loop:
|
|
33
|
+
1. **One question per turn** — never bundle.
|
|
34
|
+
2. **Give a recommended answer with every question** (+ 1-line rationale);
|
|
35
|
+
"what do you think?" is lazy.
|
|
36
|
+
3. **Explore the codebase/docs before asking** — if `grep`/`Read`/context7
|
|
37
|
+
answers it, do that instead of spending a turn.
|
|
38
|
+
4. **Walk the decision tree depth-first**; finish a branch before opening
|
|
39
|
+
another; ask prerequisite decisions first.
|
|
40
|
+
5. **Reconcile contradictions** immediately; chase dodges ("we'll decide
|
|
41
|
+
later" → "what's the latest you can decide and still ship?").
|
|
42
|
+
- **UI early-detect:** one branch of the grill is always "does this touch a
|
|
43
|
+
user-facing surface (web/mobile/CLI/TUI)?". If yes → surface **super-ux**
|
|
44
|
+
now (use it if installed; otherwise give the install line — see SKILL.md
|
|
45
|
+
*Prerequisites*); this arms the stage-3 UX track.
|
|
46
|
+
- **Artifact:** lock the resolved decisions into a **task brief** committed at
|
|
47
|
+
`docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` (scope, users/UI verdict,
|
|
48
|
+
constraints, assumptions, explicitly-deferred items, done-criteria). Seed it from
|
|
49
|
+
the plugin's `templates/brief.md` skeleton — but only when absent, never
|
|
50
|
+
overwrite an existing brief. Stages 2–4 build on this brief.
|
|
51
|
+
- **GATE (manual):** shared understanding reached — every detected branch has a
|
|
52
|
+
recorded answer or an explicit deferral, no open contradictions, and the
|
|
53
|
+
operator confirms the brief. Stop when a re-scan surfaces no new branches
|
|
54
|
+
(don't grill past diminishing returns; reversible calls can be deferred with a
|
|
55
|
+
note). Only then start stage 1.
|
|
5
56
|
|
|
6
57
|
## 1 — Docs study (Fable)
|
|
7
58
|
- **What:** ground every external library / API / SDK the task touches on the
|
|
@@ -9,8 +60,8 @@ must pass before advancing.
|
|
|
9
60
|
- **Invoke:** `context7` MCP (`resolve-library-id` → `get-library-docs`, scope by
|
|
10
61
|
`topic`) or the `context7-docs` skill. Web-search fallback for libs context7
|
|
11
62
|
can't resolve.
|
|
12
|
-
- **GATE:** every contract the design will lock is grounded in fetched docs,
|
|
13
|
-
recall. Unresolvable libraries are flagged in the spec.
|
|
63
|
+
- **GATE (auto):** every contract the design will lock is grounded in fetched docs,
|
|
64
|
+
not recall. Unresolvable libraries are flagged in the spec.
|
|
14
65
|
|
|
15
66
|
## 2 — Brainstorm (Fable)
|
|
16
67
|
- **Invoke:** `superpowers:brainstorming`. One question at a time; 2–3 approaches +
|
|
@@ -19,47 +70,63 @@ must pass before advancing.
|
|
|
19
70
|
user-facing surface (web, mobile, CLI, TUI — new feature, new screen/command,
|
|
20
71
|
or a change to user-visible behavior). Record the verdict; it arms the UX
|
|
21
72
|
track in stage 3.
|
|
22
|
-
- **GATE:** the user approves the design **and** the UI verdict is recorded.
|
|
73
|
+
- **GATE (manual):** the user approves the design **and** the UI verdict is recorded.
|
|
23
74
|
|
|
24
75
|
## 3 — Spec (Fable) — with UX track for user-facing tasks
|
|
25
76
|
- **UX track (runs FIRST when stage 2 flagged UI; skip entirely otherwise).**
|
|
26
|
-
Requires the **super-ux** skills
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
77
|
+
Requires the **super-ux** skills. If missing on a UI task → give the install
|
|
78
|
+
line and stop (see SKILL.md *Prerequisites*: `/plugin marketplace add
|
|
79
|
+
ssheleg/super-ux` → `/plugin install super-ux@super-ux`, or `npx skills add
|
|
80
|
+
ssheleg/super-ux`). super-ux builds a traced chain — walk it top-down (see its
|
|
81
|
+
`system-map.md`):
|
|
82
|
+
1. `/ux` (the only super-ux entry) — reports which `docs/ux/` layers exist,
|
|
83
|
+
repairs the skeleton, records the Figma on/off choice, recommends the next
|
|
84
|
+
action. Never make the operator pick skills.
|
|
85
|
+
2. `ux-foundation` → `docs/ux/foundation.md` — the **WHY**: personas, Jobs to
|
|
86
|
+
Be Done, **customer journey maps (CJM)**, user stories (Given/When/Then).
|
|
87
|
+
3. `ux-flows` → `docs/ux/flows.md` + `docs/ux/screens.md` — the **HOW + UI
|
|
88
|
+
map**: task analysis, user-flow diagrams (branches, error paths), every
|
|
89
|
+
screen + state with wireframe and (Figma on) a Figma frame link.
|
|
90
|
+
4. `ux-scenarios` → `docs/ux/scenarios.md` — the **WHAT** (source of truth for
|
|
91
|
+
behavior): scenarios validated per the format contract (`scenario-format.md`,
|
|
92
|
+
ux-contract v2) — IDs, statuses, `Traces:` to stories/journey stages/flows,
|
|
93
|
+
edge/error states enumerated.
|
|
94
|
+
5. **Run the super-ux linter** (`/ux-lint` or `python3 docs/ux/lint.py`) — it
|
|
95
|
+
must pass: no drift, no orphans, no broken traces or stale Figma links.
|
|
96
|
+
These skills are **idempotent** — reuse and extend existing `docs/ux/` layers,
|
|
97
|
+
never rebuild from scratch. If the chain already exists and is validated (e.g.
|
|
98
|
+
the task entered from super-ux), just verify (linter green) and embed it into
|
|
99
|
+
the spec; only build the parts that are missing.
|
|
37
100
|
- **Spec:** brainstorming writes the design to
|
|
38
101
|
`docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commits it. Lock all
|
|
39
102
|
shared contracts (types, schemas, signatures, file layout). For UI tasks the
|
|
40
|
-
spec **embeds the UX layer**: links the validated scenario IDs
|
|
41
|
-
stages the feature serves, and
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
103
|
+
spec **embeds the UX layer**: links the validated scenario IDs, the flows and
|
|
104
|
+
`SCR-` screens, the CJM stages the feature serves, and the UX
|
|
105
|
+
patterns/principles from super-ux that apply (`best-practices.md`,
|
|
106
|
+
`ux-design-principles.md`, `component-guidelines.md`).
|
|
107
|
+
- **GATE (manual):** spec committed **and** user-reviewed; for UI tasks
|
|
108
|
+
additionally: the super-ux chain (foundation → flows → screens → scenarios) is
|
|
109
|
+
designed, validated and approved; scenarios validated in `docs/ux/scenarios.md`;
|
|
110
|
+
the linter passes; every user-facing spec requirement traces to a scenario ID
|
|
111
|
+
(or an explicit v1-mode/tiny-project waiver by the operator). No plan (stage 4)
|
|
112
|
+
starts before this — the chain comes BEFORE interface.
|
|
48
113
|
|
|
49
114
|
## 4 — Plan (Fable)
|
|
50
115
|
- **Invoke:** `superpowers:writing-plans` →
|
|
51
116
|
`docs/superpowers/plans/YYYY-MM-DD-<feature>.md`. Zero-context tasks, exact
|
|
52
117
|
paths, TDD steps, DoD each, dependency graph + parallel groups, non-overlapping
|
|
53
118
|
file ownership.
|
|
54
|
-
- **GATE:** every spec requirement maps to a task; no placeholders; parallel-group
|
|
119
|
+
- **GATE (auto):** every spec requirement maps to a task; no placeholders; parallel-group
|
|
55
120
|
tasks share no files. For UI tasks: every task building user-facing behavior
|
|
56
|
-
names the scenario ID(s) it implements, and its DoD
|
|
121
|
+
names the scenario ID(s) and `SCR-` screen(s) it implements, and its DoD
|
|
122
|
+
includes satisfying them **and** updating the affected super-ux layers in the
|
|
123
|
+
same change (super-ux *same-change* rule).
|
|
57
124
|
|
|
58
125
|
## 5 — Dev (Opus)
|
|
59
126
|
- **Invoke:** `superpowers:using-git-worktrees` (isolate) →
|
|
60
127
|
`superpowers:subagent-driven-development` (or `superpowers:executing-plans`).
|
|
61
128
|
TDD per task (failing test → minimal impl → green → commit). Pin subagents to Opus.
|
|
62
|
-
- **GATE:** all plan tasks DONE (two-stage review: spec compliance, then code
|
|
129
|
+
- **GATE (auto):** all plan tasks DONE (two-stage review: spec compliance, then code
|
|
63
130
|
quality); full test suite green.
|
|
64
131
|
|
|
65
132
|
## 6 — Tests (Opus)
|
|
@@ -68,24 +135,31 @@ must pass before advancing.
|
|
|
68
135
|
change touched, and add edge-case + failure-path tests per DoD.
|
|
69
136
|
- **Invoke:** the host test runner (see `conventions.md` → *Lint + test*);
|
|
70
137
|
`superpowers:test-driven-development` for any uncovered gap.
|
|
71
|
-
- **GATE:** the **full** suite is green (not just the new tests); new/changed code
|
|
138
|
+
- **GATE (auto):** the **full** suite is green (not just the new tests); new/changed code
|
|
72
139
|
is covered; no `skip`/`xfail` smuggling a red suite past the gate. Never advance
|
|
73
140
|
to deploy on a red or partial run.
|
|
74
141
|
|
|
75
142
|
## 7 — Lint + deploy (host model)
|
|
76
143
|
- Read host conventions (`conventions.md`): run the linter; fix failures. The suite
|
|
77
|
-
is already green from stage 6 — re-run it if code changed since.
|
|
78
|
-
the
|
|
79
|
-
|
|
80
|
-
|
|
144
|
+
is already green from stage 6 — re-run it if code changed since. For UI projects,
|
|
145
|
+
the **super-ux linter** (`python3 docs/ux/lint.py` / `/ux-lint`) is part of lint —
|
|
146
|
+
it must pass too (no UX drift merges). Then deploy per the project's convention;
|
|
147
|
+
if the project defines release automation (`pipeline.json` → `release`, toggle
|
|
148
|
+
on), that is what "deploy" runs here.
|
|
149
|
+
- **GATE (manual):** lint clean (host linter **and**, for UI projects, the super-ux
|
|
150
|
+
linter) **and** suite green **before** deploy. Deploy is outward → explicit
|
|
151
|
+
operator go. Respect deploy-from-main rules if the project mandates them.
|
|
81
152
|
|
|
82
153
|
## 8 — Post-deploy (host model)
|
|
83
154
|
- Tail deploy logs / health-check per conventions. Confirm clean boot, no error
|
|
84
155
|
spike, live subsystems healthy.
|
|
85
|
-
- **GATE:** clean boot confirmed, or an **honest degradation report** with next
|
|
156
|
+
- **GATE (auto):** clean boot confirmed, or an **honest degradation report** with next
|
|
86
157
|
steps — never silent success.
|
|
87
158
|
|
|
88
159
|
## 9 — Docs + wiki (host model)
|
|
89
160
|
- Update host module docs / runbooks per the project's self-update rules, in the
|
|
90
|
-
**same change**.
|
|
91
|
-
|
|
161
|
+
**same change**. For UI tasks, confirm the super-ux layers were updated in this
|
|
162
|
+
change and the linter is green (super-ux *same-change* + *no-drift* rules). Then
|
|
163
|
+
sync knowledge to the wiki (`wiki-update` skill).
|
|
164
|
+
- **GATE (auto):** docs in sync with code; UI: super-ux layers current + linter
|
|
165
|
+
green; wiki synced; dangling links fixed.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# templates
|
|
2
|
+
|
|
3
|
+
Skeletons task-pipeline seeds into a host project. Only the **brief** is owned by
|
|
4
|
+
this plugin (it is the stage-0 intake artifact); the spec and plan skeletons come
|
|
5
|
+
from the `superpowers` skills, and the `docs/ux/*` skeletons from `super-ux`.
|
|
6
|
+
|
|
7
|
+
| Template | Seeded to | Stage |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `brief.md` | `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` | 0 — intake grill |
|
|
10
|
+
|
|
11
|
+
Seeding rule (per the ssheleg canon): create a template copy **only when the
|
|
12
|
+
target is absent**; never overwrite an existing brief.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Task brief — <topic>
|
|
2
|
+
|
|
3
|
+
> Stage-0 intake artifact. The grill fills this in and the operator confirms it
|
|
4
|
+
> before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
|
|
5
|
+
> Every field is a resolved decision or an explicit deferral — no open unknowns.
|
|
6
|
+
|
|
7
|
+
- **Date:** YYYY-MM-DD
|
|
8
|
+
- **Task (one line):** <what the operator asked for, restated>
|
|
9
|
+
- **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
|
|
10
|
+
If yes, the stage-3 super-ux UX track is armed.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
- **In scope:** …
|
|
15
|
+
- **Out of scope / explicitly deferred:** … (with the reason and, for deferrals,
|
|
16
|
+
the latest moment the decision can still be made)
|
|
17
|
+
|
|
18
|
+
## Users & context
|
|
19
|
+
|
|
20
|
+
- **Who / for what:** … (personas, the job being done)
|
|
21
|
+
- **Where it runs / constraints:** platform, runtime, data, integrations, limits
|
|
22
|
+
|
|
23
|
+
## Decisions locked (the grill's output)
|
|
24
|
+
|
|
25
|
+
| # | Decision | Chosen | Rationale |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| 1 | … | … | … |
|
|
28
|
+
|
|
29
|
+
## Done-criteria
|
|
30
|
+
|
|
31
|
+
- Observable, verifiable conditions that mean "this task is finished".
|
|
32
|
+
|
|
33
|
+
## Open assumptions / risks
|
|
34
|
+
|
|
35
|
+
- Assumption → how it's validated (or flagged risky-untested).
|