fix(ci): correct image digest separator
This commit is contained in:
256
.wave/pipelines/impl-speckit.yaml
Normal file
256
.wave/pipelines/impl-speckit.yaml
Normal file
@@ -0,0 +1,256 @@
|
||||
kind: WavePipeline
|
||||
metadata:
|
||||
name: impl-speckit
|
||||
description: "Specification-driven implementation: specify → clarify → plan → tasks → implement → PR"
|
||||
release: true
|
||||
|
||||
requires:
|
||||
skills:
|
||||
speckit:
|
||||
check: specify check
|
||||
install: uv tool install --force specify-cli --from git+https://github.com/github/spec-kit.git
|
||||
init: specify init
|
||||
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
|
||||
model: claude-haiku
|
||||
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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- id: clarify
|
||||
persona: implementer
|
||||
model: claude-haiku
|
||||
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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- 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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- 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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- 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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- id: analyze
|
||||
persona: implementer
|
||||
model: claude-haiku
|
||||
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
|
||||
retry:
|
||||
policy: patient
|
||||
max_attempts: 2
|
||||
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
|
||||
|
||||
- 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
|
||||
retry:
|
||||
policy: standard
|
||||
max_attempts: 3
|
||||
handover:
|
||||
contract:
|
||||
type: test_suite
|
||||
command: "{{ project.test_command }}"
|
||||
must_pass: true
|
||||
on_failure: retry
|
||||
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
|
||||
retry:
|
||||
policy: aggressive
|
||||
max_attempts: 2
|
||||
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
|
||||
outcomes:
|
||||
- type: pr
|
||||
extract_from: .wave/output/pr-result.json
|
||||
json_path: .pr_url
|
||||
label: "Pull Request"
|
||||
Reference in New Issue
Block a user