task-pipeline-skill 1.10.0 → 1.10.2
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 +57 -0
- package/CONTRIBUTING.md +34 -0
- package/README.md +3 -0
- package/SKILL-CARD.md +3 -3
- package/cursor/rules/task-pipeline.mdc +42 -0
- package/evals/RESULTS.md +2 -2
- package/package.json +1 -1
- package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/portability.md +12 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +12 -0
- package/plugins/task-pipeline/skills/task-pipeline/templates/docmap.md +11 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.10.2 — 2026-08-03
|
|
4
|
+
|
|
5
|
+
### Fixed — the list of invariants was eight guards behind, and now checks itself
|
|
6
|
+
|
|
7
|
+
A fifth audit pass, on two axes never used before: **the consumer's view** (unpack the
|
|
8
|
+
published package and run its installer in an isolated HOME — clean install works, the
|
|
9
|
+
refuse-on-plugin path fires, all 58 files present) and **one class swept end to end**:
|
|
10
|
+
every claim of enforcement against the guard that supposedly makes it true.
|
|
11
|
+
|
|
12
|
+
The doc map's six *Checked by* cells all resolved. `CONTRIBUTING.md` did not.
|
|
13
|
+
It states plainly that its invariants are *"what the validator enforces"*, and it had
|
|
14
|
+
sixteen while the validator enforced eight more concepts it had never heard of —
|
|
15
|
+
adoption, the exclusion clause, the opt-out, the input map, portability, the routing
|
|
16
|
+
template, the README-reach rule and the seeded-template Contents rule.
|
|
17
|
+
|
|
18
|
+
**The previous round fixed this class in one instance and not as a class.** The reach
|
|
19
|
+
guard shipped last release covers *references → README and manifest*; nothing covered
|
|
20
|
+
*guard → CONTRIBUTING*. `references/learned.md` rule 6 — sweep the class, not the
|
|
21
|
+
finding — applied to the sweep itself.
|
|
22
|
+
|
|
23
|
+
So the list is now **self-verifying**: invariants 17–24 name the new guards, and every
|
|
24
|
+
invariant that cites a guard cites a **literal this validator actually prints**. A
|
|
25
|
+
claim of enforcement is checked like any other claim. One discovered constraint is
|
|
26
|
+
stated with it: a cited literal must lie inside a *single* string in `test/validate.py`,
|
|
27
|
+
because the check reads that file as text — a quote straddling a line-continuation is
|
|
28
|
+
a citation nothing can find, which is how the first three citations failed.
|
|
29
|
+
|
|
30
|
+
## v1.10.1 — 2026-08-03
|
|
31
|
+
|
|
32
|
+
### Fixed — four surfaces that never heard about the last two releases
|
|
33
|
+
|
|
34
|
+
A fourth audit pass, on a fourth axis: **the claims of the last three releases,
|
|
35
|
+
checked against the tree.** All four findings are the same shape — a file shipped and
|
|
36
|
+
the surfaces that tell a reader it exists were never walked. Reachability from
|
|
37
|
+
`SKILL.md` was green throughout, because that check proves an agent can *find* a file,
|
|
38
|
+
not that anybody was *told* about it.
|
|
39
|
+
|
|
40
|
+
- **The Cursor rule was two releases behind** — and it is the surface that travels,
|
|
41
|
+
copied into foreign projects and required to be self-contained. It knew the
|
|
42
|
+
documentation track and nothing about adoption, the entry audit, portability, the
|
|
43
|
+
routing boundary or the opt-out phrase: an agent reading it in another repository
|
|
44
|
+
had no idea when the pipeline applies. Measured `0` for each. Now current.
|
|
45
|
+
- **The README's documentation map** listed `adoption.md` and named neither
|
|
46
|
+
`setup.md` nor `portability.md` — and had never named `learned.md` at all.
|
|
47
|
+
- **The portability manifest covered 14 of 26 references.** It claims *every workflow
|
|
48
|
+
decision*, and the twelve stage doctrines — spec, build, planning, review,
|
|
49
|
+
acceptance, brainstorm, decomposition, tdd, conventions, companion-skills,
|
|
50
|
+
knowledge-graph, model-tiering — had no row. The guard could not see it: it checked
|
|
51
|
+
that every listed path resolves, which is the direction that cannot find an absence.
|
|
52
|
+
- **Two seeded templates over 100 lines had no `## Contents`** — the doc map (eight
|
|
53
|
+
sections) and the brief (nine). The rule was scoped to `references/` while the files
|
|
54
|
+
a host project actually reads were outside it.
|
|
55
|
+
|
|
56
|
+
**Two new guards, and they are the point.** Every reference must appear in the README
|
|
57
|
+
map *and* in the manifest; every seeded template over 100 lines carries its own
|
|
58
|
+
Contents. Both check the direction that finds absences, and both were watched failing.
|
|
59
|
+
|
|
3
60
|
## v1.10.0 — 2026-08-03
|
|
4
61
|
|
|
5
62
|
### Added — the entry audit, and a boundary that keeps the workflow portable
|
package/CONTRIBUTING.md
CHANGED
|
@@ -142,6 +142,40 @@ omitted row reads as "does not apply".
|
|
|
142
142
|
**16. The evaluation suite covers all five dimensions** and `evals/run.py` accepts
|
|
143
143
|
it. Running it is a human step; the suite existing is not.
|
|
144
144
|
|
|
145
|
+
**17. Both adoption walkthroughs ship, with the ratchet-baseline step.** Greenfield
|
|
146
|
+
is the easy half and the one that gets written; brownfield is where a repository
|
|
147
|
+
actually is. *(guard: `adoption without it is a tutorial for the repository nobody has`)*
|
|
148
|
+
|
|
149
|
+
**18. The description states its exclusions, and the opt-out is exercised by an eval.**
|
|
150
|
+
Default-on without a release valve is a trap, and an escape hatch nobody tests is not
|
|
151
|
+
one. *(guard: `no eval exercises the opt-out phrase`)*
|
|
152
|
+
|
|
153
|
+
**19. The stage/artifact relation is mapped in both directions.** What each stage
|
|
154
|
+
writes, and what it reads and from where. *(guard: `must be mapped in BOTH directions`)*
|
|
155
|
+
|
|
156
|
+
**20. Every workflow decision has a home inside the bundle.** The manifest in
|
|
157
|
+
`references/portability.md` names it, and no row may point outside.
|
|
158
|
+
*(guard: `manifest names`)*
|
|
159
|
+
|
|
160
|
+
**21. The routing default ships as a file.** It is a workflow decision, so it travels
|
|
161
|
+
with the bundle instead of being hand-installed into an operator's config.
|
|
162
|
+
*(guard: `must ship as a file rather than be hand-installed`)*
|
|
163
|
+
|
|
164
|
+
**22. Every reference reaches the README map and the manifest.** Reachability from
|
|
165
|
+
`SKILL.md` proves an agent can *find* a file, not that a reader was *told* about it.
|
|
166
|
+
*(guard: `is named nowhere in README.md`)*
|
|
167
|
+
|
|
168
|
+
**23. A seeded template over 100 lines carries its own Contents.** A host project
|
|
169
|
+
reads those files, and a partial read shows whichever sections come first.
|
|
170
|
+
*(guard: `needs the same partial-read protection references get`)*
|
|
171
|
+
|
|
172
|
+
**24. Every invariant above names the guard that enforces it, and that guard exists.**
|
|
173
|
+
This list claims to be *what the validator enforces*; it was eight guards behind when
|
|
174
|
+
an audit measured it. A claim of enforcement is now checked like any other claim.
|
|
175
|
+
*(guard: `whose message does not appear in`)* — and a cited literal must lie inside
|
|
176
|
+
a **single** string in `test/validate.py`: the check reads that file as text, so a
|
|
177
|
+
quote straddling a line-continuation is a citation nothing can find.
|
|
178
|
+
|
|
145
179
|
## Adding or changing doctrine
|
|
146
180
|
|
|
147
181
|
- **Change one idea per PR.** These files are read by agents under load; a PR that
|
package/README.md
CHANGED
|
@@ -777,6 +777,9 @@ recommendation, so you arm the whole run in one exchange. Detail:
|
|
|
777
777
|
| [`references/model-tiering.md`](plugins/task-pipeline/skills/task-pipeline/references/model-tiering.md) | model policy, the `/model` reminder, overrides |
|
|
778
778
|
| [`templates/`](plugins/task-pipeline/skills/task-pipeline/templates/README.md) | brief, carry-over ledger, `CONTEXT.md` and ADR skeletons, the doc map, both registers, the retro and its archive, the seeded `docgate.sh`, a worked hook |
|
|
779
779
|
| [`references/adoption.md`](plugins/task-pipeline/skills/task-pipeline/references/adoption.md) | the first run in a project: greenfield seeding, and the brownfield walkthrough |
|
|
780
|
+
| [`references/setup.md`](plugins/task-pipeline/skills/task-pipeline/references/setup.md) | the entry audit: seven passes over the docs a project already has, offered once, output as a fix plan |
|
|
781
|
+
| [`references/portability.md`](plugins/task-pipeline/skills/task-pipeline/references/portability.md) | the manifest of workflow decisions and their homes in the bundle, and the boundary against a project's own answers |
|
|
782
|
+
| [`references/learned.md`](plugins/task-pipeline/skills/task-pipeline/references/learned.md) | fifteen rules earned by failure on a real multi-repository build, each with its incident, its check and its exit criterion |
|
|
780
783
|
| [`SKILL-CARD.md`](SKILL-CARD.md) | the registry entry and risk-tier disclosure a reviewer needs before deploying it |
|
|
781
784
|
| [`evals/`](evals/RESULTS.md) | the behavioural evaluation suite, its protocol, and what has actually been observed |
|
|
782
785
|
| [`CHANGELOG.md`](CHANGELOG.md) | every release, with the reasoning behind it |
|
package/SKILL-CARD.md
CHANGED
|
@@ -12,7 +12,7 @@ harmless.
|
|
|
12
12
|
|---|---|
|
|
13
13
|
| **Purpose** | Runs a substantial task through ten gated delivery stages — intake grill, docs study, brainstorm, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs+registers, acceptance — refusing to advance until each gate passes |
|
|
14
14
|
| **Owner** | ssheleg ([github.com/ssheleg/task-pipeline](https://github.com/ssheleg/task-pipeline)) |
|
|
15
|
-
| **Version** | 1.10.
|
|
15
|
+
| **Version** | 1.10.2 |
|
|
16
16
|
| **Surface** | Claude Code (filesystem skill + plugin) and the vercel `skills` CLI. **Not** uploaded to the Skills API; custom Skills do not sync across surfaces |
|
|
17
17
|
| **Dependencies** | None required. Optional: `context7` (MCP), `figma` (MCP), super-ux, agent-sync, graphify, obsidian-wiki. Every stage's doctrine ships in-repo; the one conditional requirement is super-ux for the stage-3 UX track on a user-facing task |
|
|
18
18
|
| **Evaluation status** | Suite authored (15 evals, 5 categories). **Never executed** — see [`evals/RESULTS.md`](evals/RESULTS.md) |
|
|
@@ -38,7 +38,7 @@ apply.
|
|
|
38
38
|
instruction surface, and every one is linked directly from `SKILL.md`.
|
|
39
39
|
2. Read `templates/docgate.sh` before seeding it; it is the only shipped script a
|
|
40
40
|
host project will run on its own repository.
|
|
41
|
-
3. Run `npm run test:all` —
|
|
41
|
+
3. Run `npm run test:all` — 62 guards, each with a negative self-test that plants a
|
|
42
42
|
defect and requires rejection.
|
|
43
43
|
4. Run `python3 evals/run.py` for the behavioural protocol, and read
|
|
44
44
|
`evals/RESULTS.md` for what has actually been observed.
|
|
@@ -54,7 +54,7 @@ apply.
|
|
|
54
54
|
- **Versions are pinned by git tag** and mirrored into `sshlg-skills`'s catalogue.
|
|
55
55
|
Rollback is `git checkout v<previous>` or pinning the previous plugin version;
|
|
56
56
|
the previous version is never deleted.
|
|
57
|
-
- **Behavioural evidence is missing, not merely thin.**
|
|
57
|
+
- **Behavioural evidence is missing, not merely thin.** 62 structural guards prove
|
|
58
58
|
the skill is well-formed. Until `evals/RESULTS.md` carries a dated run, nothing in
|
|
59
59
|
this repository proves it *behaves* — triggers correctly, stays quiet on a
|
|
60
60
|
question, or performs the steps it documents.
|
|
@@ -423,3 +423,45 @@ JTBD, customer journey maps, user stories) → flows + screens → scenarios (th
|
|
|
423
423
|
source of truth) → run its linter. Otherwise still design that chain, get it
|
|
424
424
|
approved, and trace every user-facing requirement to a scenario before building.
|
|
425
425
|
Install (Cursor/Claude/others): `npx skills add ssheleg/super-ux`.
|
|
426
|
+
|
|
427
|
+
## Routing — when this applies at all
|
|
428
|
+
|
|
429
|
+
**Work that CHANGES THE REPOSITORY goes through the pipeline** — a feature, fix,
|
|
430
|
+
refactor, migration, integration, rewrite, adoption or hardening pass, in any
|
|
431
|
+
phrasing. **Not** for a question, an explanation, reading code, a typo or a one-line
|
|
432
|
+
edit. The operator opts out of a qualifying task by saying "без пайплайна" or
|
|
433
|
+
"quick"; when they do, say out loud that the cycle was skipped at their request.
|
|
434
|
+
|
|
435
|
+
A borderline case is named, not silently chosen: state which route you are taking and
|
|
436
|
+
why, in one line.
|
|
437
|
+
|
|
438
|
+
**Escalation while running.** Decide alone while the cost of being wrong stays inside
|
|
439
|
+
the repository and is reversible. Escalate a price, a legal posture, a promise to
|
|
440
|
+
somebody outside the team, anything spending money or reputation, and any irreversible
|
|
441
|
+
outward act. The tell is the cost of being wrong, not the size of the change.
|
|
442
|
+
|
|
443
|
+
## The first run in a project
|
|
444
|
+
|
|
445
|
+
Two entry conditions, and they are different problems.
|
|
446
|
+
|
|
447
|
+
**A new project:** stage 0 seeds the doc map, the registers and the documentation
|
|
448
|
+
gate before the first interview question. The gate is green on day one because
|
|
449
|
+
sections with nothing to check yet print `dormant`.
|
|
450
|
+
|
|
451
|
+
**An existing project:** offer the **entry audit** once — seven passes over the
|
|
452
|
+
documentation that already exists, *before* building on it: one decision home,
|
|
453
|
+
register integrity, propagation, the matrix's checked-by column, declared terms, the
|
|
454
|
+
UX chain, and the gate itself proven against a planted defect. Findings carry
|
|
455
|
+
`file:line`, the minimal fix and the **seam**, ordered by seam rather than by file.
|
|
456
|
+
It ends in a fix plan and **fixes nothing while reading**.
|
|
457
|
+
|
|
458
|
+
The step that decides whether adoption survives is **baselining the ratchets at
|
|
459
|
+
today**: the propagation floor to the next free id, the residue floor to the measured
|
|
460
|
+
count. A gate that is red on adoption day is switched off on day two. History is
|
|
461
|
+
**not** back-filled — an old decision enters the register the day somebody is about to
|
|
462
|
+
contradict it.
|
|
463
|
+
|
|
464
|
+
**Portability.** A decision about how the pipeline behaves belongs in the skill; a
|
|
465
|
+
decision about what this project decided belongs in the project. The test for a rule
|
|
466
|
+
you are about to write down: does it name a path, a command or a person? If not, it is
|
|
467
|
+
the pipeline's, and leaving it in one repository is a fork nobody named.
|
package/evals/RESULTS.md
CHANGED
|
@@ -37,9 +37,9 @@ or it belongs in a check.
|
|
|
37
37
|
| Dated runs recorded | **0** | 2026-08-03 |
|
|
38
38
|
|
|
39
39
|
The bottom two numbers are the honest state of this skill's behavioural evidence.
|
|
40
|
-
Everything else in this repository is proven by
|
|
40
|
+
Everything else in this repository is proven by 62 structural guards that check the
|
|
41
41
|
*form*; these are the only checks that would speak to the *behaviour*, and they have
|
|
42
|
-
not been run yet. Printed here so "
|
|
42
|
+
not been run yet. Printed here so "62 of 62 green" is never read as "the skill is
|
|
43
43
|
known to work".
|
|
44
44
|
|
|
45
45
|
## Runs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"description": "Full-cycle delivery pipeline for coding agents: a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine ships inside the skill — no companion plugin required. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"task-pipeline": "bin/task-pipeline.js"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "task-pipeline",
|
|
3
3
|
"displayName": "Task Pipeline",
|
|
4
4
|
"description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill — no companion plugin required — with typed auto/manual gates, a frozen requirement spine that must close with evidence, a loop guard that breaks churn, one provider-agnostic model confirmed up front, and an optional super-ux UX track for user-facing work.",
|
|
5
|
-
"version": "1.10.
|
|
5
|
+
"version": "1.10.2",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ssheleg",
|
|
8
8
|
"url": "https://x.com/sshlg93"
|
|
@@ -56,6 +56,18 @@ a row pointing outside the bundle is the defect this file exists to catch.
|
|
|
56
56
|
| **The routing default and its boundary** | `templates/routing-rule.md` |
|
|
57
57
|
| The seeded doc map, registers and gate | `templates/docmap.md`, `templates/decisions.md`, `templates/open-questions.md`, `templates/docgate.sh` |
|
|
58
58
|
| What a stage reads, and which host files bind it | `references/artifacts.md` |
|
|
59
|
+
| The design conversation, its hard gate, UI detection, user paths | `references/brainstorm.md` |
|
|
60
|
+
| Cutting a platform into modules, brick criteria, build order | `references/decomposition.md` |
|
|
61
|
+
| What a spec must lock, the UX-track order, the module dossier | `references/spec.md` |
|
|
62
|
+
| The zero-context plan format, parallel groups, set equality | `references/planning.md` |
|
|
63
|
+
| Workspace isolation, the subagent loop, who may write the register | `references/build.md` |
|
|
64
|
+
| The review rubric, diff packages, the three verdicts | `references/review.md` |
|
|
65
|
+
| The TDD iron law and the suite gate | `references/tdd.md` |
|
|
66
|
+
| The REQ coverage table, evidence rules, the closing question | `references/acceptance.md` |
|
|
67
|
+
| How the host project's own conventions are read | `references/conventions.md` |
|
|
68
|
+
| Which companions exist, what is required, self-currency | `references/companion-skills.md` |
|
|
69
|
+
| The code graph: queries, refresh, the graph↔docs divergence | `references/knowledge-graph.md` |
|
|
70
|
+
| Model policy — tier not id, ask once at preflight | `references/model-tiering.md` |
|
|
59
71
|
| This boundary | `references/portability.md` |
|
|
60
72
|
|
|
61
73
|
**The routing rule is the row worth watching.** A skill's `description` raises the
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
- **UI verdict:** yes / no — does this touch a user-facing surface (web/mobile/CLI/TUI)?
|
|
10
10
|
If yes, the stage-3 super-ux UX track is armed.
|
|
11
11
|
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
- Knowledge sources (the phase-1 harvest — written BEFORE the first question)
|
|
15
|
+
- Documentation (the phase-1b inventory — the four questions)
|
|
16
|
+
- Scope
|
|
17
|
+
- Requirements (the REQ spine — every later stage traces to these IDs)
|
|
18
|
+
- Users & context
|
|
19
|
+
- Decisions locked (the grill's output)
|
|
20
|
+
- Autonomy (the sweep — stages 1→10 read this instead of asking)
|
|
21
|
+
- Done-criteria
|
|
22
|
+
- Open assumptions / risks
|
|
23
|
+
|
|
12
24
|
## Knowledge sources (the phase-1 harvest — written BEFORE the first question)
|
|
13
25
|
|
|
14
26
|
What the project already knew about this task, and where it said so. One row per
|
|
@@ -10,6 +10,17 @@ elsewhere — where another file already says it, this one holds a **pointer lin
|
|
|
10
10
|
not a copy. A doc map that duplicates `AGENTS.md` is the first violation of the
|
|
11
11
|
rule it publishes.
|
|
12
12
|
|
|
13
|
+
## Contents
|
|
14
|
+
|
|
15
|
+
- Regime
|
|
16
|
+
- Registers
|
|
17
|
+
- Single source of truth
|
|
18
|
+
- Propagation matrix
|
|
19
|
+
- Gates
|
|
20
|
+
- Ratchets
|
|
21
|
+
- Terms
|
|
22
|
+
- Navigation
|
|
23
|
+
|
|
13
24
|
## Regime
|
|
14
25
|
|
|
15
26
|
`governed` — established <YYYY-MM-DD> by run `<topic>`, recorded as `DEC-0001`.
|