ADR, changelog, code-review, debug, doc-sync, explain, feature, hotfix, improve, onboard, plan, prototype, refactor, security-scan, smoke-test, speckit-flow, supervise, test-gen, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
235 lines
5.8 KiB
YAML
235 lines
5.8 KiB
YAML
kind: WavePipeline
|
|
metadata:
|
|
name: speckit-flow
|
|
description: "Specification-driven feature development using the full speckit workflow"
|
|
release: true
|
|
|
|
requires:
|
|
skills:
|
|
- speckit
|
|
tools:
|
|
- git
|
|
- gh
|
|
|
|
input:
|
|
source: cli
|
|
example: "add user authentication with JWT tokens"
|
|
schema:
|
|
type: string
|
|
description: "Natural language feature description to specify and implement"
|
|
|
|
steps:
|
|
- id: specify
|
|
persona: implementer
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
base: main
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/specify.md
|
|
output_artifacts:
|
|
- name: spec-status
|
|
path: .wave/output/specify-status.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/specify-status.json
|
|
schema_path: .wave/contracts/specify-status.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: clarify
|
|
persona: implementer
|
|
dependencies: [specify]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/clarify.md
|
|
output_artifacts:
|
|
- name: clarify-status
|
|
path: .wave/output/clarify-status.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/clarify-status.json
|
|
schema_path: .wave/contracts/clarify-status.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: plan
|
|
persona: implementer
|
|
dependencies: [clarify]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/plan.md
|
|
output_artifacts:
|
|
- name: plan-status
|
|
path: .wave/output/plan-status.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/plan-status.json
|
|
schema_path: .wave/contracts/plan-status.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: tasks
|
|
persona: implementer
|
|
dependencies: [plan]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/tasks.md
|
|
output_artifacts:
|
|
- name: tasks-status
|
|
path: .wave/output/tasks-status.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/tasks-status.json
|
|
schema_path: .wave/contracts/tasks-status.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: checklist
|
|
persona: implementer
|
|
dependencies: [tasks]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/checklist.md
|
|
output_artifacts:
|
|
- name: checklist-status
|
|
path: .wave/output/checklist-status.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/checklist-status.json
|
|
schema_path: .wave/contracts/checklist-status.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: analyze
|
|
persona: implementer
|
|
dependencies: [checklist]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/analyze.md
|
|
output_artifacts:
|
|
- name: analysis-report
|
|
path: .wave/output/analysis-report.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/analysis-report.json
|
|
schema_path: .wave/contracts/analysis-report.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
|
|
- id: implement
|
|
persona: craftsman
|
|
dependencies: [analyze]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/implement.md
|
|
handover:
|
|
contract:
|
|
type: test_suite
|
|
command: "{{ project.test_command }}"
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 3
|
|
compaction:
|
|
trigger: "token_limit_80%"
|
|
persona: summarizer
|
|
|
|
- id: create-pr
|
|
persona: craftsman
|
|
dependencies: [implement]
|
|
memory:
|
|
inject_artifacts:
|
|
- step: specify
|
|
artifact: spec-status
|
|
as: spec_info
|
|
workspace:
|
|
type: worktree
|
|
branch: "{{ pipeline_id }}"
|
|
exec:
|
|
type: prompt
|
|
source_path: .wave/prompts/speckit-flow/create-pr.md
|
|
output_artifacts:
|
|
- name: pr-result
|
|
path: .wave/output/pr-result.json
|
|
type: json
|
|
handover:
|
|
contract:
|
|
type: json_schema
|
|
source: .wave/output/pr-result.json
|
|
schema_path: .wave/contracts/pr-result.schema.json
|
|
must_pass: true
|
|
on_failure: retry
|
|
max_retries: 2
|
|
outcomes:
|
|
- type: pr
|
|
extract_from: .wave/output/pr-result.json
|
|
json_path: .pr_url
|
|
label: "Pull Request"
|