Skip to content

task-pipelineFreeze a Claude Code chat into one Markdown plan file any session can implement.

Talk it through, grill the plan, capture it at the depth you pick. Any later session reads the file and runs it. A free plugin — no server, no hooks, no MCP.

task-pipeline
MIT-licensed · built by SpaiR · a Claude Code plugin

A plan file is only as good as the argument that produced it

claude-code
# 1. talk the task through in chat — an HTTP retry system with backoff…
# 2. grill the plan first (optional) — one question at a time
/task:grill
→ Retry the 429s too, or only 5xx and timeouts? [recommended: 429s too]
decision ledger → route to /task:to-plan
# 3. freeze the discussion into a file
/task:to-plan
→ wrote .task/task/http-retry-backoff.md
## Description + ## Plan (Goal / Touches / Logic steps)
# 4. hand the file to any session — this one, or a fresh one tomorrow
implement .task/task/http-retry-backoff.md
→ follows the file's ## Execution block — the steps that
tell any session what to do next:
implement · commit · task:code-reviewer reviews, fixes, amends
Here's the actual file it writes

This is an example of what /task:to-plan produces for the run above — a plain Markdown file under .task/, not a screenshot. Header, ---, ## Description, a step-by-step ## Plan, and the stamped ## Execution block that tells any session what to do next.

markdown
# HTTP retry with backoff
---
## Description

### Problem
Outbound calls to the payments API fail intermittently under load, and a single
timeout currently drops the whole request.

### Outcome
Transient failures (timeouts, 5xx, 429) retry with exponential backoff and
jitter, capped at 5 attempts. A request that exhausts every attempt lands in a
dead-letter queue for later inspection instead of being silently lost.

## Plan

### Step 1: Wrap the payments client in a retry policy
**Goal:** Every outbound payments call retries transient failures with
exponential backoff plus jitter, giving up after 5 attempts.
**Touches:** `src/payments/client.ts` `src/payments/retry.ts`
**Logic:** Classify the error — timeout / 5xx / 429 are retryable, other 4xx
fail fast. Sleep `base * 2 ** attempt` plus random jitter between tries; surface
the last error once the cap is hit.

### Step 2: Route exhausted retries to a dead-letter queue
**Goal:** A call that fails all 5 attempts is written to the DLQ with its payload
and last error, instead of surfacing as an unhandled failure.
**Touches:** `src/payments/client.ts` `src/payments/dead-letter.ts`
**Logic:** After the retry cap, enqueue `{ request, lastError, attempts }` and
return a typed `RetriesExhausted` result the caller can branch on.

## Execution
> If `Spec:` headers are present, read each `.task/spec/<slug>.md` first and honor its
> decisions as fixed. `.task/` is pipeline-internal and invisible to the repo: never name
> `.task/` paths, spec/roadmap/task slugs, or `§` numbers in code, comments, commits, or PR
> text. Implement the Plan above (or the Description if none) with the tools in
> `.task/config/config.md` → Code Navigation / Code Editing, then commit per
> `.task/config/config.md` → Commit Format. Then spawn the `task:code-reviewer` agent on this
> file: it proves each finding, fixes confirmed defects within **Touches** plus regressions
> this diff introduced outside them, runs Build and Tests, and amends the commit; with no
> `## Plan`, scope fixes to what you changed. If `Roadmap:` + `Source item:` are present,
> tick item #N's checkbox in `.task/roadmap/<slug>.md` once the review returns OK.

Install in two commands

text
/plugin marketplace add https://github.com/SpaiR/task-pipeline.git
/plugin install task@task-pipeline

That's the whole setup. The first capture in a new project writes .task/config/config.md for you — there's no separate setup step. See Getting started for the first run end to end.

Small on purpose

task-pipeline is not an orchestration engine. No hooks, no execution loop of its own, and exactly one subagent — the review pass, whose entire prompt is a Markdown file you can read — plus one file per task and your project's own checks running against the diff. The neighbors sell breadth — dozens of skills, a full SDLC in a box. This one sells the opposite: the least structure that still makes a plan outlive its session.

Is it for you?

task-pipeline is for tasks longer than one session — work that needs a plan you can hand-edit, or that should leave a record. A two-file, twenty-minute fix doesn't need this; default Claude Code (plan mode + TodoWrite) is the better tool there.

Reach for it when the plan deserves an argument and a record: real forks to interrogate, decisions a colleague — or tomorrow-you — will reread, work that spans several tasks. And when it should outlast a /clear. Descriptions are written in your language; only the format's fixed strings (section headers, commit trailers, the Execution block) stay English. The comparison page lays out where it fits against six references — default Claude Code, superpowers, Matt Pocock's skills, OpenSpec, spec-kit, and claude-task-master.

If this is the shape of tool you've wanted, star it on GitHub — it's how you'll find it again.

Released under the MIT License.