with one click
task-pipeline
// Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, /tickets, /retrieve, or /continue commands.
// Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, /tickets, /retrieve, or /continue commands.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | task-pipeline |
| description | Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, /tickets, /retrieve, or /continue commands. |
Phased workflow for complex tasks. State lives in files, not session memory. Any session can pick up where the last one left off.
~/.local/share/pi/plans/$(basename $PWD)/
{slug}_TASK.md # research findings
{slug}_PLAN.md # implementation plan
{slug}.ticket-context.md # ticket-context (created by /tickets)
{slug} = ${TICKET_ID}-<kebab> if a tk ticket is in progress, else <kebab> derived from the user's prompt (3–5 words).
When a slug isn't passed explicitly:
/plan my-slug → use directly, skip other steps$TICKET_ID is set, or exactly one tk ticket is in_progress, derive slug from it*_TASK.md with no matching *_PLAN.md:
*_TASK.md and *_PLAN.md, group by slug, sort by mtime. Phase per slug:
researchplanning-completetickets-seeded/task <description><slug> [<phase>] <mtime>, ask userAnnounce resolved slug so user knows which files are in play.
VCS-agnostic. Use jj if available, fall back to git. All VCS references below apply to both.
Detection: command -v jj >/dev/null && echo jj || echo git
Each ticket from a plan maps to exactly one VCS commit. The commit boundary is the ticket boundary.
type(scope): descriptionjj describe -m "title" or jj describe -m "title" -m "detailed description"git commit -m "title" -m "detailed description"Before and after each ticket, check VCS status:
jj status + jj log -n 3git status + git log --oneline -3Entry: /task <description> or /task (continue)
Runs in an isolated subagent (researcher) — read-only, cannot modify files.
{slug}_TASK.md exists, read and pass as context{ agent: "researcher", task: "<research task + context>" }{slug}_TASK.md# <task description>
## Findings
- Finding with evidence (file paths, line numbers)
## Current state
How things work now. Relevant code snippets.
## Open questions
- Unanswered questions needing user input
## Sources
- file paths, URLs, VCS commits
Entry: /plan or /plan <slug>
Runs in an isolated subagent (planner) — read-only.
{slug}_TASK.md (required — run /task first if missing){ agent: "planner", task: "<research findings + context>" }{slug}_PLAN.md# Plan: <task description>
Research: `~/.local/share/pi/plans/$(basename $PWD)/{slug}_TASK.md`
## Steps
### Step 1: <title>
- **What:** description
- **Files:** paths to change
- **Verify:** how to confirm it works
- **Commit:** `type(scope): suggested title`
### Step 2: <title>
...
## Notes
- Design decisions, trade-offs
Each step maps 1:1 to a ticket and a commit. Steps ordered by dependency.
Entry: /tickets or /tickets <slug>
{slug}_PLAN.md{slug}.ticket-context.md if missing (see ticket-creator skill)tk list — all tickets opentk show <id> each — file hints, numbered acceptance criteriatk dep cycle — no cyclestk ready -T ready-for-development — at least one unblocked/retrieve/retrieve <slug> — show phase summary + next command/retrieve (no args) — list all slugs with phase + mtime (0/1/2-3/>3 cases)/continue (alias: /cont)Detects next phase from file existence, emits equivalent command — does NOT auto-invoke.
| Files present | Next step |
|---|---|
| No TASK | "Start with: /task <description>" |
| TASK only | "/plan {slug}" |
| TASK + PLAN | "/tickets {slug}" |
| TASK + PLAN + context | "work-tickets" |
| From | To | Trigger |
|---|---|---|
| — | Research | /task <description> |
| Research | Plan | /plan |
| Plan | Tickets | /tickets |
| Tickets | Work | work-tickets |
| Any | Any | /continue — next-step hint |
| Any | Lookup | /retrieve |
Can go back: /plan after tickets to revise, then /tickets to recreate.
home/common/programs/pi-coding-agent/extensions/task-pipeline.ts