task-pipeline

Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, or /tickets commands.

215 stars

Best use case

task-pipeline is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, or /tickets commands.

Teams using task-pipeline should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/task-pipeline/SKILL.md --create-dirs "https://raw.githubusercontent.com/megalithic/dotfiles/main/home/common/programs/ai/pi-coding-agent/skills/task-pipeline/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/task-pipeline/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How task-pipeline Compares

Feature / Agenttask-pipelineStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Structured workflow for research → plan → tickets → work. Use when starting or continuing a task with /task, /plan, or /tickets commands.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Task pipeline

A phased workflow for complex tasks. State lives in files, not session memory. Any session can pick up where the last one left off by reading the docs.

## File structure

All work happens in a worktree at `<repo>/.worktrees/<branch>/`. Docs go in `plans/`:

```
plans/
  task.md     # research findings (fixed filename)
  plan.md     # implementation plan (fixed filename)
```

Fixed filenames because worktrees already isolate tasks — no need for unique slugs. Overwrite if exists.

## Phase 1: Research

**Entry:** `/task <description>` or `/task` (to continue existing research)

Any text after `/task` is the research context — the problem to investigate, requirements, constraints, etc. The agent passes this directly to the researcher subagent.

This phase runs in an **isolated subagent** (`researcher`) that physically cannot modify files. The main agent's only jobs are: invoking the subagent and saving output.

1. If `plans/task.md` exists: main agent reads it and passes contents as context to the researcher subagent
2. Main agent invokes the subagent tool: `{ agent: "researcher", task: "<research task with context>" }`
3. The researcher subagent runs in isolation — it can read, search, and run read-only commands, but **cannot edit, write, or modify anything**
4. Main agent saves the subagent output to `plans/task.md`

### Research doc format

```markdown
# <task description>

## Findings

- Finding 1 with evidence
- Finding 2 with source references
- ...

## Open questions

- Question that couldn't be answered
- ...

## Sources

- file paths, URLs, session references
```

Keep writing until you can't find more. The user will tell you when to move on.

## Phase 2: Plan

**Entry:** `/plan` or `/plan <context>`

This phase runs in an **isolated subagent** (`planner`) that physically cannot modify files.

1. Main agent reads `plans/task.md` — the research findings
2. If `plans/task.md` doesn't exist: tell the user to run `/task` first
3. If the user passed inline context (`/plan <context>`), prepend it to the research findings before passing to the planner
4. Main agent invokes the subagent tool: `{ agent: "planner", task: "<user context + research findings>" }`
5. The planner subagent runs in isolation — it can read files but **cannot edit or write anything**
6. Main agent saves the subagent output to `plans/plan.md`

### Plan doc format

```markdown
# Plan: <task description>

Research: `plans/task.md`

## Steps

### Step 1: <title>

- **What:** description
- **Files:** paths to change
- **Verify:** how to confirm it works

### Step 2: <title>

- **What:** description
- **Files:** paths to change
- **Verify:** how to confirm it works

## Notes

- Design decisions, trade-offs, things to watch out for
```

Each step maps 1:1 to a ticket. Steps are ordered by dependency.

The user reviews and iterates. Do not proceed to tickets until the user explicitly says to.

## Phase 3: Tickets

**Entry:** `/tickets`

1. Read `plans/plan.md`
2. Explore the codebase for file hints and verification commands
3. Seed `plans/.ticket-context.md` if it doesn't exist (see context seeding in ticket-creator skill)
4. Create one ticket per plan step using ticket-creator skill Mode 3
5. **Self-validate** (mandatory, every time):
   - `tk list` — check all tickets are open
   - For each ticket: `tk show <id>` — verify description has file hints, acceptance criteria are numbered and independently verifiable
   - Refine any weak tickets immediately
   - `tk dep cycle` — no cycles allowed
   - `tk ready -T ready-for-development` — at least one ticket must be unblocked
6. Report what was created

## Phase transitions

| From     | To       | Trigger                        |
| -------- | -------- | ------------------------------ |
| —        | Research | `/task <description>`          |
| Research | Research | `/task` (continue)             |
| Research | Plan     | `/plan` or `/plan <context>`   |
| Plan     | Plan     | `/plan <context>` (iterate)    |
| Plan     | Tickets  | `/tickets`                     |
| Tickets  | Work     | `work-tickets` in the worktree |

You can go back: run `/plan` after tickets exist to revise, then `/tickets` to recreate. Clean up old tickets first (`tk close` or recreate with new deps).

## Rules

- Always work in the worktree, not main checkout
- Always read existing files before writing — pick up where you left off
- Research and plan docs are living documents — update, don't replace with alternatives
- Plan steps must be small enough for one agent session (~30 min of work)
- Never skip self-validation when creating tickets

Related Skills

task-completion

215
from megalithic/dotfiles

Guidelines for summarizing completed work with proper format, context, and follow-up items. Use when finishing tasks to ensure clear handoff.

writing-clearly-and-concisely

215
from megalithic/dotfiles

Apply Strunk's timeless writing rules to ANY prose humans will read - documentation, commit messages, error messages, explanations, reports, or UI text. Makes your writing clearer, stronger, and more professional.

web-search

215
from megalithic/dotfiles

Web search using DuckDuckGo (free, unlimited). Falls back to pi-web-access extension for content extraction.

web-browser

215
from megalithic/dotfiles

Interact with web pages using agent-browser CLI. MUST run 'browser connect 9222' FIRST to use existing browser with authenticated sessions.

tmux

215
from megalithic/dotfiles

Remote control tmux sessions for interactive CLIs (python, gdb, etc.) by sending keystrokes and scraping pane output.

ticket-worker

215
from megalithic/dotfiles

Work on a single tk ticket end-to-end. Use when the user says 'work on ticket X' or when spawned by work-tickets.sh.

ticket-creator

215
from megalithic/dotfiles

Create and refine tickets for the tk ticket system. Use when the user says 'create tickets for X', 'refine ticket X', 'break this into tickets', 'seed tickets from plan', or anything about creating or refining tk tickets.

tell

215
from megalithic/dotfiles

Delegate tasks to other agents - pi sessions or external agents (claude, opencode, aider). Non-blocking with task tracking and completion notifications.

preview

215
from megalithic/dotfiles

Display code, diffs, images, and other content in a tmux pane or popup. Auto-detects nvim/megaterm for floating popups.

mcpctl

215
from megalithic/dotfiles

Manage MCP server configurations — add, remove, list, inspect, troubleshoot. Use when asked to "add mcp server", "remove mcp", "list mcp servers", "mcp status", "configure mcp", "troubleshoot mcp", or any MCP server management task.

handoff

215
from megalithic/dotfiles

Save session state for later pickup. Use /handoff when context is degrading, /pickup to resume in a new session.

github

215
from megalithic/dotfiles

Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.