You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Wave currently maintains separate pipelines for each Git hosting platform (GitHub, GitLab, Gitea, Bitbucket) across 7 pipeline families — 25 files total. This leads to:
Duplicated pipeline definitions with only minor platform-specific differences
Platform-specific API instructions embedded directly in persona prompts (e.g., raw curl commands for Bitbucket REST API)
Maintenance burden: every pipeline change must be replicated across all platform variants
Copy-paste bugs and inconsistencies accumulating across variants
As a developer, I typically use only one hosting platform, so having all variants is unnecessary.
Affected Pipeline Families
Family
Duplicated Files
Platform-Agnostic Steps
Platform-Specific Steps
implement-epic
gh-, gl-, gt-, bb- (4)
Most of the DAG
CLI commands in fetch/create steps
implement
gh-, gl-, gt-, bb- (4)
Steps 2-3 (plan, implement)
Steps 1, 4 (fetch-assess, create-pr)
scope
gh-, gl-, gt-, bb- (4)
Step 2 (scope-and-create logic)
Steps 1, 3 (fetch-epic, verify-report)
research
gh-, gl-, gt-, bb- (4)
Steps 2-4 (100% identical)
Steps 1, 5 (fetch-issue, post-comment)
rewrite
gh-, gl-, gt-, bb- (4)
Scoring/enhancement logic
CLI commands in both steps
refresh
gh-, gl-, gt-, bb- (4)
Step 2 (100% identical)
Steps 1, 3 (gather-context, apply-update)
pr-review
gh- only (1)
Steps 1-4 (diff, security, quality, summary)
Step 5 only (publish comment)
Total: 25 pipeline files → 7 unified pipelines
Existing Bugs from Duplication
The copy-paste approach has already introduced inconsistencies:
Bug
Family
Details
Hardcoded test command
implement
gl/gt hardcode go test -race ./... instead of {{ project.test_command }}
bb-scope verify-report says "post a summary comment" then says "Do NOT post comments"
Missing prompt sections
implement
bb-implement is missing Agent Usage, Tool Usage, and Error Handling sections
GitHub-named schemas for all platforms
rewrite
All 4 variants reference github-enhancement-plan.schema.json
Different plan structure
implement
bb-implement plan step has completely different structure (4 steps vs 5, no spec/plan/tasks)
Proposed Solution
Consolidate all platform-specific pipelines into single configurable pipelines that:
Platform configuration in wave.yaml: Add an option to specify the target Git hosting platform (e.g., platform: github)
Skill-based flavoring: Replace inline platform-specific prompts with proper skills (/bitbucket, /github, /gitlab, /gitea) that encapsulate all platform knowledge
Programmatic API interactions: Replace raw curl + jq instructions in prompts with actual Go code that handles API calls — LLMs should not be executing raw REST API commands
Example of what gets eliminated
Platform-specific prompt blocks like:
Step 2: Fetch issues via the Bitbucket REST API.
- Single issue:
curl -s -H "Authorization: Bearer $BB_TOKEN" \
"https://api.bitbucket.org/2.0/repositories/WORKSPACE/REPO/issues/NUM" \
| jq '{id, title, content: .content.raw, kind, url: .links.html.href}'
…would be replaced by a /bitbucket skill that provides the persona with the necessary context and tooling.
Bitbucket as the worst offender
Every bb-* pipeline embeds raw curl + jq REST API calls with $BB_TOKEN referenced directly in prompt text. The other three platforms use dedicated CLIs (gh, glab, tea) which handle authentication internally. This means:
Bearer tokens appear in prompt text sent to the LLM
Hardcoded API URLs and JSON payload construction in prompts
Significantly more verbose and fragile prompts
Acceptance Criteria
A single implement-epic pipeline replaces gh-implement-epic, gl-implement-epic, gt-implement-epic, and bb-implement-epic
A single implement pipeline replaces gh-implement, gl-implement, gt-implement, and bb-implement
A single scope pipeline replaces gh-scope, gl-scope, gt-scope, and bb-scope
A single research pipeline replaces gh-research, gl-research, gt-research, and bb-research
A single rewrite pipeline replaces gh-rewrite, gl-rewrite, gt-rewrite, and bb-rewrite
A single refresh pipeline replaces gh-refresh, gl-refresh, gt-refresh, and bb-refresh
pr-review pipeline supports all four platforms (currently GitHub-only)
Platform selection is configurable via wave.yaml or pipeline parameter
Platform-specific knowledge is encapsulated in skills (e.g., /github, /bitbucket)
Raw API call instructions are removed from persona prompts
Existing functionality for all four platforms is preserved
Tests cover each unified pipeline with each platform flavor
Existing duplication bugs (see table above) are fixed during consolidation
Out of Scope
Adding support for new hosting platforms (that can follow as separate issues)
Problem
Wave currently maintains separate pipelines for each Git hosting platform (GitHub, GitLab, Gitea, Bitbucket) across 7 pipeline families — 25 files total. This leads to:
curlcommands for Bitbucket REST API)As a developer, I typically use only one hosting platform, so having all variants is unnecessary.
Affected Pipeline Families
implement-epicimplementscoperesearchrewriterefreshpr-reviewTotal: 25 pipeline files → 7 unified pipelines
Existing Bugs from Duplication
The copy-paste approach has already introduced inconsistencies:
implementgo test -race ./...instead of{{ project.test_command }}refresh--repoflagrefresh--repoin apply-update commandsscopeimplementrewritegithub-enhancement-plan.schema.jsonimplementProposed Solution
Consolidate all platform-specific pipelines into single configurable pipelines that:
wave.yaml: Add an option to specify the target Git hosting platform (e.g.,platform: github)/bitbucket,/github,/gitlab,/gitea) that encapsulate all platform knowledgecurl+jqinstructions in prompts with actual Go code that handles API calls — LLMs should not be executing raw REST API commandsExample of what gets eliminated
Platform-specific prompt blocks like:
…would be replaced by a
/bitbucketskill that provides the persona with the necessary context and tooling.Bitbucket as the worst offender
Every
bb-*pipeline embeds rawcurl+jqREST API calls with$BB_TOKENreferenced directly in prompt text. The other three platforms use dedicated CLIs (gh,glab,tea) which handle authentication internally. This means:Acceptance Criteria
implement-epicpipeline replacesgh-implement-epic,gl-implement-epic,gt-implement-epic, andbb-implement-epicimplementpipeline replacesgh-implement,gl-implement,gt-implement, andbb-implementscopepipeline replacesgh-scope,gl-scope,gt-scope, andbb-scoperesearchpipeline replacesgh-research,gl-research,gt-research, andbb-researchrewritepipeline replacesgh-rewrite,gl-rewrite,gt-rewrite, andbb-rewriterefreshpipeline replacesgh-refresh,gl-refresh,gt-refresh, andbb-refreshpr-reviewpipeline supports all four platforms (currently GitHub-only)wave.yamlor pipeline parameter/github,/bitbucket)Out of Scope