Add Wave general-purpose pipelines
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>
This commit is contained in:
137
.wave/pipelines/changelog.yaml
Normal file
137
.wave/pipelines/changelog.yaml
Normal file
@@ -0,0 +1,137 @@
|
||||
kind: WavePipeline
|
||||
metadata:
|
||||
name: changelog
|
||||
description: "Generate structured changelog from git history"
|
||||
release: true
|
||||
|
||||
input:
|
||||
source: cli
|
||||
example: "generate changelog from v0.1.0 to HEAD"
|
||||
|
||||
steps:
|
||||
- id: analyze-commits
|
||||
persona: navigator
|
||||
workspace:
|
||||
type: worktree
|
||||
branch: "{{ pipeline_id }}"
|
||||
exec:
|
||||
type: prompt
|
||||
source: |
|
||||
Analyze git history for changelog generation: {{ input }}
|
||||
|
||||
## Process
|
||||
|
||||
1. **Determine range**: Parse input to identify the commit range.
|
||||
If tags mentioned, use them. If time period, calculate dates.
|
||||
If unclear, use last tag to HEAD (or last 50 commits).
|
||||
|
||||
2. **Extract commits**: Use `git log --format` to get hash, author,
|
||||
date, subject, and body for each commit.
|
||||
|
||||
3. **Parse conventional commits**: Categorize by prefix:
|
||||
feat → Features, fix → Fixes, docs → Documentation,
|
||||
refactor → Refactoring, test → Testing, chore → Maintenance,
|
||||
perf → Performance, ci → CI/CD, no prefix → Other
|
||||
|
||||
4. **Identify breaking changes**: Look for `BREAKING CHANGE:` in body,
|
||||
`!` after prefix, API removals in body.
|
||||
|
||||
5. **Extract scope**: Parse from prefix (e.g., `fix(pipeline):` → "pipeline")
|
||||
output_artifacts:
|
||||
- name: commits
|
||||
path: .wave/output/commit-analysis.json
|
||||
type: json
|
||||
handover:
|
||||
contract:
|
||||
type: json_schema
|
||||
source: .wave/output/commit-analysis.json
|
||||
schema_path: .wave/contracts/commit-analysis.schema.json
|
||||
on_failure: retry
|
||||
max_retries: 2
|
||||
|
||||
- id: categorize
|
||||
persona: planner
|
||||
dependencies: [analyze-commits]
|
||||
memory:
|
||||
inject_artifacts:
|
||||
- step: analyze-commits
|
||||
artifact: commits
|
||||
as: raw_commits
|
||||
workspace:
|
||||
type: worktree
|
||||
branch: "{{ pipeline_id }}"
|
||||
exec:
|
||||
type: prompt
|
||||
source: |
|
||||
Categorize and describe changes for a changelog using the injected commit analysis.
|
||||
|
||||
## Rules
|
||||
|
||||
1. **Group by type** into sections
|
||||
2. **Write user-facing descriptions**: Rewrite technical messages into
|
||||
clear descriptions focused on what changed and why it matters.
|
||||
3. **Highlight breaking changes** first with migration notes
|
||||
4. **Deduplicate**: Combine commits for the same logical change
|
||||
5. **Add context** for significant features
|
||||
output_artifacts:
|
||||
- name: categorized
|
||||
path: .wave/output/categorized-changes.json
|
||||
type: json
|
||||
handover:
|
||||
contract:
|
||||
type: json_schema
|
||||
source: .wave/output/categorized-changes.json
|
||||
schema_path: .wave/contracts/categorized-changes.schema.json
|
||||
on_failure: retry
|
||||
max_retries: 2
|
||||
|
||||
- id: format
|
||||
persona: philosopher
|
||||
dependencies: [categorize]
|
||||
memory:
|
||||
inject_artifacts:
|
||||
- step: analyze-commits
|
||||
artifact: commits
|
||||
as: raw_commits
|
||||
- step: categorize
|
||||
artifact: categorized
|
||||
as: changes
|
||||
workspace:
|
||||
type: worktree
|
||||
branch: "{{ pipeline_id }}"
|
||||
exec:
|
||||
type: prompt
|
||||
source: |
|
||||
Format the injected commit analysis and categorized changes into a polished changelog.
|
||||
|
||||
Use Keep a Changelog format:
|
||||
|
||||
# Changelog
|
||||
|
||||
## [Version or Date Range] - YYYY-MM-DD
|
||||
|
||||
### Breaking Changes
|
||||
- **scope**: Description. Migration: what to do
|
||||
|
||||
### Added
|
||||
- **scope**: Feature description
|
||||
|
||||
### Fixed
|
||||
- **scope**: Bug fix description
|
||||
|
||||
### Changed
|
||||
- **scope**: Change description
|
||||
|
||||
### Security
|
||||
- **scope**: Security fix description
|
||||
|
||||
Rules:
|
||||
- Only include sections with entries
|
||||
- Bold scope if present
|
||||
- Most notable entries first per section
|
||||
- One line per entry, concise
|
||||
- Contributors list at bottom
|
||||
output_artifacts:
|
||||
- name: changelog
|
||||
path: .wave/output/CHANGELOG.md
|
||||
type: markdown
|
||||
Reference in New Issue
Block a user