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: .wave/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: .wave/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: .wave/contracts/analysis.schema.json
    source: .wave/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:

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

Matrix Strategy (Parallel Fan-Out)

Spawn parallel instances from a task list:

yaml
- id: plan
  output_artifacts:
    - name: tasks
      path: .wave/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.