Skip to content

Pipelines Guide ​

Pipelines are DAGs (Directed Acyclic Graphs) that orchestrate multi-step agent workflows. Each step executes one persona in an isolated workspace, passing artifacts to dependent steps.

Built-in Pipelines ​

Wave ships with 51 pipelines organized by use case:

Development ​

PipelineStepsUse Case
impl-speckitspecify → clarify → plan → tasks → checklist → analyze → implement → create-prFeature development
impl-featureexplore → plan → implement → publishFeature planning and implementation
impl-hotfixinvestigate → fix → verifyProduction bugs
impl-refactoranalyze → test-baseline → refactor → verifySafe refactoring
impl-prototypespec → docs → dummy → implement → pr-create → ops-pr-review → pr-respond → pr-fix → pr-mergePrototype-driven development
impl-improveassess → implement → verifyTargeted code improvements

Quality & Debugging ​

PipelineStepsUse Case
ops-pr-reviewdiff-analysis → security-review + quality-review → summary → publishPR reviews
test-genanalyze-coverage → generate-tests → verify-coverageTest coverage
ops-debugreproduce → hypothesize → investigate → fixRoot cause analysis
audit-securityscan → deep-dive → reportSecurity vulnerability audit
audit-dead-codescan → clean → verify → create-prDead code removal
ops-supervisegather → evaluate → verdictWork and process quality review
test-smokeanalyze → summarizeConfiguration validation

Planning & Documentation ​

PipelineStepsUse Case
plan-taskexplore → breakdown → reviewTask planning
audit-docscan-changes → analyze-consistency → compose-report → publishDocumentation consistency gate
doc-fixscan-changes → analyze → fix-docs → create-prDocumentation fix and commit
doc-explainexplore → analyze → documentCode explanation deep-dive
plan-adrexplore-context → analyze-options → draft-record → publishArchitecture Decision Records
doc-changeloganalyze-commits → categorize → formatChangelog generation
doc-onboardsurvey → guideNew contributor onboarding

Issue Automation ​

PipelineStepsUse Case
impl-issuefetch-assess → plan → implement → create-prImplement GitHub issue end-to-end
ops-implement-epicfetch-scope → implement-subissues → reportImplement all subissues from an epic
plan-researchfetch-issue → analyze-topics → research-topics → synthesize-report → post-commentResearch and report on issues
ops-rewritescan-and-score → apply-enhancementsRewrite poorly documented issues
ops-refreshgather-context → draft-update → apply-updateRefresh stale issues
plan-scopefetch-epic → scope-and-create → verify-reportDecompose epics into child issues

Code Quality & Analysis ​

PipelineStepsUse Case
audit-consolidatescanDetect redundant implementations and architectural drift
audit-dead-code-issuescan → compose-report → create-issueScan for dead code and create a GitHub issue
audit-dead-code-reviewscan → compose → publishScan PR-changed files for dead code and post a review comment
audit-dualquality-scan + quality-detail, audit-security + security-detail → mergeParallel code-quality and security analysis
audit-dxauditEvaluate developer experience for contributors and integrators
audit-junk-codescanIdentify accidental complexity, conceptual misalignment, and technical debt
audit-quality-loopquality-checkSupervise work, loop improvements until quality passes
audit-uxauditEvaluate user experience across CLI, TUI, docs, or workflows

Multi-Pipeline Orchestration ​

PipelineStepsUse Case
ops-epic-runnerscope → implement-allScope an epic, implement each child issue sequentially
ops-release-hardenscan → triage → gateSecurity scan, branch on severity, apply hotfixes, generate changelog
impl-researchresearch → implement → reviewResearch a GitHub issue, implement the solution, then review the PR

Wave Self-Evolution (wave-*) ​

PipelineStepsUse Case
wave-auditcollect-inventory → audit-items → compose-triage → publishZero-trust implementation fidelity audit
wave-bugfixinvestigate → fixInvestigate and fix a bug in Wave
wave-evolveanalyze → evolve → verifyEvolve Wave pipelines, personas, and prompts based on execution analysis
wave-reviewreviewCode review of Wave changes
wave-security-auditthreat-model → verifySecurity audit of Wave's own codebase
wave-test-hardeninganalyze-coverage → hardenHarden Wave's test suite — find gaps, add edge cases

Utility ​

PipelineStepsUse Case
ops-hello-worldgreet → verifySmoke test / example
wave-landcommit → shipBranch, commit, push, PR, merge
impl-recinqgather → diverge → converge → probe → distill → simplify → report → publishDouble Diamond code simplification

Running Pipelines ​

bash
# Run with input
wave run impl-speckit "add user authentication"

# Preview execution plan
wave run impl-hotfix --dry-run

# Start from specific step
wave run impl-speckit --from-step implement

# Custom timeout
wave run migrate --timeout 120

Pipeline Structure ​

yaml
kind: WavePipeline
metadata:
  name: my-pipeline
  description: "What this pipeline does"

steps:
  - id: first-step
    persona: navigator
    memory:
      strategy: fresh
    exec:
      type: prompt
      source: "Analyze: {{ input }}"
    output_artifacts:
      - name: analysis
        path: .agents/output/analysis.json
        type: json

  - id: second-step
    persona: craftsman
    dependencies: [first-step]
    memory:
      strategy: fresh
      inject_artifacts:
        - step: first-step
          artifact: analysis
          as: context
    exec:
      type: prompt
      source: "Implement based on the analysis."

Step Configuration ​

FieldRequiredDescription
idyesUnique step identifier
personayesReferences persona in wave.yaml
memory.strategyyesAlways fresh (clean context)
exec.typeyesprompt or command
exec.sourceyesPrompt template or shell command
dependenciesnoStep IDs that must complete first
output_artifactsnoFiles produced by this step
handover.contractnoValidation for step output

Dependencies and DAG ​

Steps execute in dependency order. Independent steps run in parallel:

yaml
steps:
  - id: navigate        # Runs first
  - id: specify
    dependencies: [navigate]
  - id: implement
    dependencies: [specify]
  - id: test            # Parallel with review
    dependencies: [implement]
  - id: review          # Parallel with test
    dependencies: [implement]

Artifacts ​

Declaring Output ​

yaml
output_artifacts:
  - name: analysis
    path: .agents/output/analysis.json
    type: json

Injecting into Steps ​

yaml
memory:
  strategy: fresh
  inject_artifacts:
    - step: navigate
      artifact: analysis
      as: codebase_analysis

Contracts ​

Validate step output before proceeding:

yaml
handover:
  contract:
    type: json_schema
    schema_path: .agents/contracts/analysis.schema.json
    source: .agents/output/analysis.json
    on_failure: retry
    max_retries: 2

Contract types:

  • json_schema — Validate against JSON Schema
  • typescript_interface — Validate against TypeScript interface
  • test_suite — Run test command, must pass
  • markdown_spec — Validate Markdown structure

Template Variables ​

VariableDescription
{{ input }}Pipeline input from --input flag
{{ task }}Current task in matrix strategy

Workspace Configuration ​

Each step gets an isolated workspace:

yaml
workspace:
  mount:
    - source: ./
      target: /src
      mode: readonly    # or readwrite

Default structure:

.agents/workspaces/<pipeline-id>/<step-id>/
├── src/               # Mounted source
├── .agents/artifacts/   # Injected from dependencies
└── .agents/output/      # Step output

Matrix Strategy (Parallel Fan-Out) ​

Spawn parallel instances from a task list:

yaml
- id: plan
  output_artifacts:
    - name: tasks
      path: .agents/output/tasks.json

- id: execute
  dependencies: [plan]
  strategy:
    type: matrix
    items_source: plan/tasks.json
    item_key: task
    max_concurrency: 4
  exec:
    type: prompt
    source: "Execute: {{ task }}"

Pipeline Examples ​

impl-speckit ​

Full feature development workflow (8 steps):

yaml
steps:
  - id: specify
    persona: implementer
    exec:
      source: "Create specification for: {{ input }}"

  - id: clarify
    persona: implementer
    dependencies: [specify]
    exec:
      source: "Clarify specification details"

  - id: plan
    persona: implementer
    dependencies: [clarify]
    exec:
      source: "Create implementation plan"

  - id: tasks
    persona: implementer
    dependencies: [plan]
    exec:
      source: "Break down into tasks"

  - id: checklist
    persona: implementer
    dependencies: [tasks]
    exec:
      source: "Create implementation checklist"

  - id: analyze
    persona: implementer
    dependencies: [checklist]
    exec:
      source: "Analyze codebase for implementation"

  - id: implement
    persona: craftsman
    dependencies: [analyze]
    exec:
      source: "Implement according to plan"

  - id: create-pr
    persona: craftsman
    dependencies: [implement]
    exec:
      source: "Create pull request"

impl-hotfix ​

Fast-track bug fix:

yaml
steps:
  - id: investigate
    persona: navigator
    exec:
      source: "Investigate: {{ input }}"

  - id: fix
    persona: craftsman
    dependencies: [investigate]
    exec:
      source: "Fix the issue with regression test"

  - id: verify
    persona: reviewer
    dependencies: [fix]
    exec:
      source: "Verify fix is safe for production"

ops-debug ​

Systematic debugging:

yaml
steps:
  - id: reproduce
    persona: debugger
    exec:
      source: "Reproduce: {{ input }}"

  - id: hypothesize
    persona: debugger
    dependencies: [reproduce]
    exec:
      source: "Form hypotheses about root cause"

  - id: investigate
    persona: debugger
    dependencies: [hypothesize]
    exec:
      source: "Test each hypothesis"

  - id: fix
    persona: craftsman
    dependencies: [investigate]
    exec:
      source: "Implement fix with regression test"

Ad-Hoc Execution ​

For quick tasks without pipeline files:

bash
wave do "fix the bug" --persona craftsman

Generates a 2-step pipeline (navigate → execute) automatically.

Released under the MIT License.