Refresh Wave pipelines, personas, and contracts

Local-only Wave configuration sync:
- Drop one-shot contract schemas no longer referenced by any
  pipeline.
- Replace gitea/github issue-impl pipelines with the unified
  refresh/research/rewrite/scope set; add bb (bitbucket) and gl
  (gitlab) variants.
- Add scoper persona and matching scope contracts.
- Update existing personas and pipelines to current style.

No effect on the librenotes runtime; this only touches the
.wave/ tooling directory used by the local dev harness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-28 23:25:18 +02:00
co-authored by Claude Opus 4.7
parent d7c6dfa799
commit b7608f9143
139 changed files with 0 additions and 12706 deletions
-44
View File
@@ -1,44 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ADR Context",
"description": "Contextual information gathered for an Architecture Decision Record",
"type": "object",
"required": ["decision_topic", "current_state", "constraints", "timestamp"],
"properties": {
"decision_topic": { "type": "string", "minLength": 5 },
"current_state": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string", "minLength": 10 },
"affected_files": { "type": "array", "items": { "type": "string" } },
"affected_components": { "type": "array", "items": { "type": "string" } }
}
},
"constraints": {
"type": "array",
"items": {
"type": "object",
"required": ["type", "description"],
"properties": {
"type": { "type": "string", "enum": ["technical", "organizational", "timeline"] },
"description": { "type": "string", "minLength": 5 }
}
}
},
"precedents": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"location": { "type": "string" },
"outcome": { "type": "string" }
}
}
},
"stakeholders": { "type": "array", "items": { "type": "string" } },
"timestamp": { "type": "string", "format": "date-time" }
}
}
-38
View File
@@ -1,38 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ADR Options Analysis",
"description": "Analysis of options for an architectural decision",
"type": "object",
"required": ["decision_topic", "options", "recommendation", "timestamp"],
"properties": {
"decision_topic": { "type": "string", "minLength": 5 },
"options": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"required": ["name", "description", "pros", "cons"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"pros": { "type": "array", "items": { "type": "string" } },
"cons": { "type": "array", "items": { "type": "string" } },
"effort": { "type": "string", "enum": ["trivial", "small", "medium", "large", "epic"] },
"risk": { "type": "string", "enum": ["low", "medium", "high"] },
"reversibility": { "type": "string", "enum": ["easy", "moderate", "difficult", "irreversible"] },
"compatibility": { "type": "string", "enum": ["high", "medium", "low"] }
}
}
},
"recommendation": {
"type": "object",
"required": ["option", "rationale", "confidence"],
"properties": {
"option": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 20 },
"confidence": { "type": "string", "enum": ["high", "medium", "low"] }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,60 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Analysis Report",
"description": "Cross-artifact consistency and quality analysis report before implementation.",
"type": "object",
"required": ["total_requirements", "total_tasks", "coverage_percent", "can_proceed", "feature_dir", "summary"],
"properties": {
"total_requirements": {
"type": "integer",
"description": "Total number of requirements extracted from spec"
},
"total_tasks": {
"type": "integer",
"description": "Total number of tasks in the task breakdown"
},
"coverage_percent": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Percentage of requirements covered by tasks (0-100)"
},
"can_proceed": {
"type": "boolean",
"description": "Whether the feature is ready for implementation"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief summary of the analysis findings"
},
"issues": {
"type": "object",
"properties": {
"critical": {
"type": "integer",
"description": "Number of critical severity issues"
},
"high": {
"type": "integer",
"description": "Number of high severity issues"
},
"medium": {
"type": "integer",
"description": "Number of medium severity issues"
},
"low": {
"type": "integer",
"description": "Number of low severity issues"
}
},
"description": "Issue counts grouped by severity level"
}
},
"additionalProperties": true
}
-120
View File
@@ -1,120 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Audit Report",
"description": "Zettelkasten health audit covering orphans, dangling links, and index gaps",
"type": "object",
"required": ["orphans", "dangling_links", "stats", "index_gaps", "dead_ends"],
"properties": {
"orphans": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": {
"type": "string",
"description": "Hex-ID filename of the orphan note"
},
"title": {
"type": "string",
"description": "Title of the orphan note"
},
"suggested_connection": {
"type": "string",
"description": "Suggested note to link from"
}
}
},
"description": "Notes with no incoming or outgoing links"
},
"dangling_links": {
"type": "array",
"items": {
"type": "object",
"required": ["source_filename", "target_filename", "link_text"],
"properties": {
"source_filename": {
"type": "string",
"description": "File containing the broken link"
},
"target_filename": {
"type": "string",
"description": "Target file that doesn't exist"
},
"link_text": {
"type": "string",
"description": "Display text of the broken link"
},
"suggested_fix": {
"type": "string",
"enum": ["retarget", "remove"],
"description": "Suggested fix action"
}
}
},
"description": "Links pointing to non-existent notes"
},
"stats": {
"type": "object",
"required": ["total_notes", "total_links"],
"properties": {
"total_notes": { "type": "integer", "minimum": 0 },
"total_links": { "type": "integer", "minimum": 0 },
"label_notes": { "type": "integer", "minimum": 0 },
"orphan_count": { "type": "integer", "minimum": 0 },
"dangling_count": { "type": "integer", "minimum": 0 },
"avg_links_per_note": { "type": "number", "minimum": 0 }
},
"description": "Overall collection statistics"
},
"index_gaps": {
"type": "array",
"items": {
"type": "object",
"required": ["section", "description"],
"properties": {
"section": {
"type": "string",
"description": "Section name missing from index"
},
"description": {
"type": "string",
"description": "What's missing"
},
"suggested_entry_point": {
"type": "string",
"description": "Suggested note to use as entry point"
}
}
},
"description": "Sections or keywords missing from the index note"
},
"dead_ends": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": {
"type": "string",
"description": "Hex-ID filename of the dead-end note"
},
"title": {
"type": "string",
"description": "Title of the note"
},
"outgoing_links": {
"type": "integer",
"minimum": 0,
"description": "Number of outgoing links (may have outgoing but no incoming)"
}
}
},
"description": "Notes with no incoming links (reachable only via search)"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,55 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Categorized Changelog Changes",
"description": "Categorized and described changes for changelog generation",
"type": "object",
"required": ["version_label", "sections", "timestamp"],
"properties": {
"version_label": { "type": "string", "minLength": 1 },
"breaking_changes": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"migration": { "type": "string" },
"related_commits": { "type": "array", "items": { "type": "string" } }
}
}
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["title", "type", "entries"],
"properties": {
"title": { "type": "string" },
"type": { "type": "string" },
"entries": {
"type": "array",
"items": {
"type": "object",
"required": ["description"],
"properties": {
"description": { "type": "string" },
"scope": { "type": "string" },
"commits": { "type": "array", "items": { "type": "string" } },
"notable": { "type": "boolean" }
}
}
}
}
}
},
"contributors": { "type": "array", "items": { "type": "string" } },
"stats": {
"type": "object",
"properties": {
"total_entries": { "type": "integer" },
"notable_entries": { "type": "integer" }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,36 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Checklist Status",
"description": "Status report from the checklist step: quality checklist generation for requirement validation.",
"type": "object",
"required": ["checklist_files", "total_items", "feature_dir", "summary"],
"properties": {
"checklist_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Paths to generated checklist files"
},
"total_items": {
"type": "integer",
"minimum": 0,
"description": "Total number of checklist items across all files"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the checklists generated"
},
"critical_gaps": {
"type": "integer",
"description": "Number of critical quality gaps identified"
}
},
"additionalProperties": true
}
@@ -1,30 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Clarify Status",
"description": "Status report from the clarify step: ambiguity resolution and spec refinement.",
"type": "object",
"required": ["questions_asked", "answers_encoded", "feature_dir", "summary"],
"properties": {
"questions_asked": {
"type": "integer",
"minimum": 0,
"description": "Number of clarification questions identified"
},
"answers_encoded": {
"type": "integer",
"minimum": 0,
"description": "Number of clarifications resolved and encoded into the spec"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of clarifications made"
}
},
"additionalProperties": true
}
@@ -1,84 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Comment Result",
"description": "Result of posting research report as a GitHub issue comment",
"type": "object",
"required": ["success", "issue_reference", "timestamp"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the comment was successfully posted"
},
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Issue number that was commented on"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name"
},
"issue_url": {
"type": "string",
"format": "uri",
"description": "URL to the issue"
}
}
},
"comment": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "GitHub comment ID"
},
"url": {
"type": "string",
"format": "uri",
"description": "Direct URL to the posted comment"
},
"body_length": {
"type": "integer",
"minimum": 0,
"description": "Length of the posted comment body in characters"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "When the comment was created"
}
},
"description": "Details of the posted comment (only present if success=true)"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["authentication_failed", "rate_limit_exceeded", "issue_not_found", "issue_locked", "permission_denied", "comment_too_long", "network_error", "api_error", "unknown_error"],
"description": "Error code"
},
"message": {
"type": "string",
"description": "Human-readable error message"
},
"retryable": {
"type": "boolean",
"description": "Whether the operation can be retried"
}
},
"description": "Error details (only present if success=false)"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Operation timestamp"
}
}
}
@@ -1,53 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Commit Analysis",
"description": "Structured analysis of git commits for changelog generation",
"type": "object",
"required": ["range", "commits", "summary", "timestamp"],
"properties": {
"range": {
"type": "object",
"required": ["from", "to", "total_commits"],
"properties": {
"from": { "type": "string", "minLength": 1 },
"to": { "type": "string", "minLength": 1 },
"total_commits": { "type": "integer", "minimum": 0 },
"date_range": {
"type": "object",
"properties": {
"start": { "type": "string" },
"end": { "type": "string" }
}
}
}
},
"commits": {
"type": "array",
"items": {
"type": "object",
"required": ["hash", "date", "type", "subject"],
"properties": {
"hash": { "type": "string", "minLength": 4 },
"author": { "type": "string" },
"date": { "type": "string" },
"type": { "type": "string", "enum": ["feat", "fix", "docs", "refactor", "test", "chore", "perf", "ci", "other"] },
"scope": { "type": ["string", "null"] },
"subject": { "type": "string", "minLength": 1 },
"breaking": { "type": "boolean" },
"breaking_note": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["by_type"],
"properties": {
"by_type": { "type": "object" },
"breaking_changes": { "type": "integer", "minimum": 0 },
"contributors": { "type": "array", "items": { "type": "string" } },
"most_changed_scopes": { "type": "array", "items": { "type": "string" } }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
-96
View File
@@ -1,96 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Connections",
"description": "Mapping of new content to existing Zettelkasten notes and addresses",
"type": "object",
"required": ["source_title", "related_notes", "suggested_placements"],
"properties": {
"source_title": {
"type": "string",
"description": "Title of the source being connected"
},
"related_notes": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title", "folgezettel_address", "relationship"],
"properties": {
"filename": {
"type": "string",
"pattern": "^[0-9a-f]{8}\\.md$",
"description": "Hex-ID filename of the related note"
},
"title": {
"type": "string",
"description": "Full title of the related note"
},
"folgezettel_address": {
"type": "string",
"description": "Folgezettel address of the related note"
},
"relationship": {
"type": "string",
"description": "Why this note is related to the source"
},
"link_direction": {
"type": "string",
"enum": ["from_new", "to_new", "bidirectional"],
"description": "Whether the new note should link to this, or this should link to new"
}
}
},
"description": "Existing notes related to the source content"
},
"suggested_placements": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["folgezettel_address", "parent_note", "section", "rationale"],
"properties": {
"folgezettel_address": {
"type": "string",
"description": "Suggested Folgezettel address for a new note"
},
"parent_note": {
"type": "string",
"description": "Filename of the parent note in the Folgezettel sequence"
},
"section": {
"type": "string",
"description": "Top-level section name"
},
"rationale": {
"type": "string",
"description": "Why this placement makes sense"
},
"concept": {
"type": "string",
"description": "Which concept from the source this placement is for"
}
}
},
"description": "Suggested positions in the Folgezettel for new notes"
},
"index_update_needed": {
"type": "boolean",
"description": "Whether the index note should be updated"
},
"suggested_index_entries": {
"type": "array",
"items": {
"type": "object",
"required": ["keyword", "rationale"],
"properties": {
"keyword": { "type": "string" },
"rationale": { "type": "string" }
}
},
"description": "Suggested new entries for the index note"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,81 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Convergent Proposals",
"description": "Prioritized simplification proposals from convergent thinking phase",
"type": "object",
"required": ["source_findings", "validation_summary", "proposals", "timestamp"],
"properties": {
"source_findings": {
"type": "object",
"required": ["total_reviewed", "confirmed", "partially_confirmed", "rejected"],
"properties": {
"total_reviewed": { "type": "integer" },
"confirmed": { "type": "integer" },
"partially_confirmed": { "type": "integer" },
"rejected": { "type": "integer" },
"rejection_reasons": {
"type": "array",
"items": {
"type": "object",
"required": ["finding_id", "reason"],
"properties": {
"finding_id": { "type": "string" },
"reason": { "type": "string" }
}
}
}
}
},
"validation_summary": {
"type": "string",
"description": "Narrative summary of the converge→diverge→converge validation process"
},
"proposals": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "title", "description", "source_findings", "impact", "effort", "risk", "tier", "files"],
"properties": {
"id": { "type": "string", "pattern": "^SMP-\\d{3}$" },
"title": { "type": "string" },
"description": { "type": "string" },
"source_findings": {
"type": "array",
"items": { "type": "string" },
"description": "DVG-xxx IDs this proposal addresses"
},
"impact": { "type": "string", "enum": ["high", "medium", "low"] },
"effort": { "type": "string", "enum": ["small", "medium", "large"] },
"risk": { "type": "string", "enum": ["low", "medium", "high"] },
"tier": {
"type": "integer",
"minimum": 1,
"maximum": 3,
"description": "Priority tier: 1=do now, 2=do next, 3=consider later"
},
"files": {
"type": "array",
"items": { "type": "string" },
"description": "Files that would be modified"
},
"dependencies": {
"type": "array",
"items": { "type": "string" },
"description": "SMP-xxx IDs that must be applied first"
},
"lines_removed_estimate": { "type": "integer" },
"second_order_effects": {
"type": "array",
"items": { "type": "string" },
"description": "Insights discovered during deeper probing"
}
}
}
},
"eighty_twenty_analysis": {
"type": "string",
"description": "Which 20% of proposals yield 80% of the simplification benefit"
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,24 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["current_coverage", "uncovered_functions", "uncovered_branches", "edge_cases", "mock_requirements"],
"properties": {
"current_coverage": { "type": "string" },
"uncovered_functions": {
"type": "array",
"items": { "type": "string" }
},
"uncovered_branches": {
"type": "array",
"items": { "type": "string" }
},
"edge_cases": {
"type": "array",
"items": { "type": "string" }
},
"mock_requirements": {
"type": "array",
"items": { "type": "string" }
}
}
}
@@ -1,42 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Dead Code Scan",
"description": "Scan results for dead or redundant code",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "type", "location", "description", "confidence", "safe_to_remove"],
"properties": {
"id": { "type": "string", "pattern": "^DC-[0-9]{3}$" },
"type": {
"type": "string",
"enum": ["unused_export", "unreachable", "orphaned_file", "redundant", "stale_test", "unused_import", "commented_code"]
},
"location": { "type": "string", "minLength": 1 },
"symbol": { "type": "string" },
"description": { "type": "string", "minLength": 5 },
"evidence": { "type": "string" },
"confidence": { "type": "string", "enum": ["high", "medium", "low"] },
"safe_to_remove": { "type": "boolean" },
"removal_note": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_type": { "type": "object" },
"high_confidence_count": { "type": "integer", "minimum": 0 },
"estimated_lines_removable": { "type": "integer", "minimum": 0 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,22 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["hypotheses"],
"properties": {
"hypotheses": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "description", "likelihood", "test_approach"],
"properties": {
"id": { "type": "integer" },
"description": { "type": "string", "minLength": 1 },
"likelihood": { "type": "string", "enum": ["high", "medium", "low"] },
"test_approach": { "type": "string", "minLength": 1 },
"expected_result_if_true": { "type": "string" }
}
}
}
}
}
@@ -1,21 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["expected_behavior", "actual_behavior", "reproduction_steps", "relevant_files"],
"properties": {
"expected_behavior": { "type": "string", "minLength": 1 },
"actual_behavior": { "type": "string", "minLength": 1 },
"reproduction_steps": {
"type": "array",
"items": { "type": "string" }
},
"relevant_files": {
"type": "array",
"items": { "type": "string" }
},
"environmental_factors": {
"type": "array",
"items": { "type": "string" }
}
}
}
-31
View File
@@ -1,31 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["files_changed", "modules_affected", "related_tests", "breaking_changes"],
"properties": {
"files_changed": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "change_type", "purpose"],
"properties": {
"path": { "type": "string" },
"change_type": { "type": "string", "enum": ["added", "modified", "deleted"] },
"purpose": { "type": "string" }
}
}
},
"modules_affected": {
"type": "array",
"items": { "type": "string" }
},
"related_tests": {
"type": "array",
"items": { "type": "string" }
},
"breaking_changes": {
"type": "array",
"items": { "type": "string" }
}
}
}
@@ -1,82 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Divergent Findings",
"description": "Broad-net findings from divergent thinking phase of the recinq pipeline",
"type": "object",
"required": ["scope", "findings", "metrics_summary", "timestamp"],
"properties": {
"scope": {
"type": "object",
"required": ["target", "files_scanned", "total_lines"],
"properties": {
"target": { "type": "string", "description": "What was analyzed (path, module, or 'whole-project')" },
"files_scanned": { "type": "integer" },
"total_lines": { "type": "integer" }
}
},
"findings": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "category", "title", "description", "evidence", "severity"],
"properties": {
"id": { "type": "string", "pattern": "^DVG-\\d{3}$" },
"category": {
"type": "string",
"enum": [
"premature_abstraction",
"unnecessary_indirection",
"overengineering",
"yagni_violation",
"accidental_complexity",
"copy_paste_drift",
"dead_weight",
"naming_lie",
"dependency_gravity",
"missing_abstraction",
"other"
]
},
"title": { "type": "string" },
"description": { "type": "string" },
"evidence": {
"type": "object",
"required": ["files"],
"properties": {
"files": { "type": "array", "items": { "type": "string" } },
"line_count": { "type": "integer" },
"reference_count": { "type": "integer" },
"change_frequency": { "type": "integer" },
"metrics": { "type": "string" }
}
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"]
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "How confident the provocateur is in this finding"
}
}
}
},
"metrics_summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer" },
"by_category": { "type": "object", "additionalProperties": { "type": "integer" } },
"by_severity": { "type": "object", "additionalProperties": { "type": "integer" } },
"hotspot_files": {
"type": "array",
"items": { "type": "string" },
"description": "Files appearing in multiple findings"
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,87 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Consistency Report",
"description": "Output from the analyze-consistency step: list of inconsistencies between code and documentation",
"type": "object",
"required": ["summary", "inconsistencies", "timestamp"],
"properties": {
"summary": {
"type": "object",
"required": ["total_count", "by_severity"],
"properties": {
"total_count": {
"type": "integer",
"minimum": 0,
"description": "Total number of inconsistencies found"
},
"by_severity": {
"type": "object",
"properties": {
"critical": { "type": "integer", "minimum": 0 },
"high": { "type": "integer", "minimum": 0 },
"medium": { "type": "integer", "minimum": 0 },
"low": { "type": "integer", "minimum": 0 }
},
"description": "Count of inconsistencies by severity level"
},
"clean": {
"type": "boolean",
"description": "True if no inconsistencies were found"
}
}
},
"inconsistencies": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "severity", "category", "title", "description", "source_location", "doc_location"],
"properties": {
"id": {
"type": "string",
"pattern": "^DOC-[0-9]{3}$",
"description": "Unique inconsistency ID (DOC-001, DOC-002, etc.)"
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Severity of the inconsistency"
},
"category": {
"type": "string",
"enum": ["cli_flags", "personas", "pipelines", "contracts", "env_vars", "api", "stale_reference", "missing_docs", "other"],
"description": "Category of the inconsistency"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Short title describing the inconsistency"
},
"description": {
"type": "string",
"minLength": 1,
"description": "Detailed description of the inconsistency and what needs to change"
},
"source_location": {
"type": "string",
"description": "File and line where the source of truth is (code, pipeline, etc.)"
},
"doc_location": {
"type": "string",
"description": "File and section where the documentation is stale or missing"
},
"fix_description": {
"type": "string",
"description": "What specifically needs to be updated"
}
}
},
"description": "List of documentation inconsistencies"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the analysis was performed"
}
}
}
@@ -1,71 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Issue Result",
"description": "Output from the create-issue step: GitHub issue creation result",
"type": "object",
"required": ["success", "repository", "timestamp"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the issue was successfully created"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"issue": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"minimum": 1,
"description": "GitHub issue number"
},
"url": {
"type": "string",
"format": "uri",
"description": "URL to the created issue"
},
"title": {
"type": "string",
"description": "Issue title"
},
"inconsistency_count": {
"type": "integer",
"minimum": 0,
"description": "Number of inconsistencies reported in the issue"
}
},
"description": "Details of the created issue (only present if success=true)"
},
"skipped": {
"type": "boolean",
"description": "True if no issue was created because no inconsistencies were found"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string",
"enum": ["authentication_failed", "rate_limit_exceeded", "permission_denied", "network_error", "api_error", "unknown_error"],
"description": "Error code"
},
"message": {
"type": "string",
"description": "Human-readable error message"
},
"retryable": {
"type": "boolean",
"description": "Whether the operation can be retried"
}
},
"description": "Error details (only present if success=false)"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Operation timestamp"
}
}
}
@@ -1,112 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Documentation Scan Results",
"description": "Output from the scan-changes step: changed files and current documentation state snapshot",
"type": "object",
"required": ["scan_scope", "changed_files", "documentation_snapshot", "timestamp"],
"properties": {
"scan_scope": {
"type": "object",
"required": ["mode", "range"],
"properties": {
"mode": {
"type": "string",
"enum": ["diff", "full"],
"description": "Whether this was a diff-based or full scan"
},
"range": {
"type": "string",
"description": "Git range used for diff (e.g. 'main...HEAD') or 'full' for full scan"
},
"base_ref": {
"type": "string",
"description": "Base reference for comparison"
}
}
},
"changed_files": {
"type": "object",
"required": ["total_count", "categories"],
"properties": {
"total_count": {
"type": "integer",
"minimum": 0,
"description": "Total number of changed files"
},
"categories": {
"type": "object",
"properties": {
"go_code": {
"type": "array",
"items": { "type": "string" },
"description": "Changed Go source files"
},
"cli_commands": {
"type": "array",
"items": { "type": "string" },
"description": "Changed CLI command files (cmd/wave/commands/)"
},
"pipelines": {
"type": "array",
"items": { "type": "string" },
"description": "Changed pipeline definitions"
},
"personas": {
"type": "array",
"items": { "type": "string" },
"description": "Changed persona definitions"
},
"contracts": {
"type": "array",
"items": { "type": "string" },
"description": "Changed contract schemas"
},
"documentation": {
"type": "array",
"items": { "type": "string" },
"description": "Changed documentation files (docs/, README.md, CLAUDE.md, etc.)"
},
"other": {
"type": "array",
"items": { "type": "string" },
"description": "Other changed files"
}
}
}
}
},
"documentation_snapshot": {
"type": "object",
"required": ["files"],
"properties": {
"files": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "exists"],
"properties": {
"path": {
"type": "string",
"description": "Path to the documentation file"
},
"exists": {
"type": "boolean",
"description": "Whether the file exists"
},
"summary": {
"type": "string",
"description": "Brief summary of the file's content and key sections"
}
}
},
"description": "Key documentation files and their current state"
}
}
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the scan was performed"
}
}
}
-38
View File
@@ -1,38 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Doc Sync Scan Results",
"description": "Documentation inconsistency scan for doc-sync pipeline",
"type": "object",
"required": ["scan_scope", "findings", "summary", "timestamp"],
"properties": {
"scan_scope": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "type", "severity", "title", "description"],
"properties": {
"id": { "type": "string", "pattern": "^DOC-[0-9]{3}$" },
"type": { "type": "string", "enum": ["MISSING_DOCS", "STALE_DOCS", "INACCURATE", "INCOMPLETE"] },
"severity": { "type": "string", "enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] },
"title": { "type": "string", "minLength": 3 },
"doc_location": { "type": "string" },
"code_location": { "type": "string" },
"description": { "type": "string", "minLength": 10 },
"suggested_fix": { "type": "string" }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_type": { "type": "object" },
"by_severity": { "type": "object" },
"fixable_count": { "type": "integer", "minimum": 0 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
-112
View File
@@ -1,112 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/docs-phase.schema.json",
"title": "Wave Docs Phase Output Contract",
"description": "Validates docs phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "docs",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"feature_docs": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*feature-docs\\.md$",
"description": "Path to feature documentation file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Feature documentation file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Documentation content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"stakeholder_summary": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*stakeholder-summary\\.md$",
"description": "Path to stakeholder summary file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Stakeholder summary file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Summary content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["feature_docs", "stakeholder_summary"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"coverage_percentage": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Specification coverage in documentation"
},
"readability_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Documentation readability rating"
},
"documentation_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall documentation quality assessment"
}
},
"required": ["documentation_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When docs phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for docs phase"
},
"source_spec_path": {
"type": "string",
"description": "Path to source specification file"
}
},
"required": ["timestamp", "source_spec_path"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}
-110
View File
@@ -1,110 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/dummy-phase.schema.json",
"title": "Wave Dummy Phase Output Contract",
"description": "Validates dummy phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "dummy",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"prototype": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*prototype/?$",
"description": "Path to prototype directory"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Prototype directory must exist"
},
"content_type": {
"type": "string",
"const": "code",
"description": "Prototype content type"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"interface_definitions": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*interfaces\\.md$",
"description": "Path to interface definitions file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Interface definitions file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Interface definitions content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["prototype", "interface_definitions"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"runnable": {
"type": "boolean",
"description": "Whether the prototype can be executed"
},
"interface_completeness": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Percentage of interfaces stubbed"
},
"prototype_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall prototype quality assessment"
}
},
"required": ["runnable", "prototype_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When dummy phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for dummy phase"
},
"source_docs_path": {
"type": "string",
"description": "Path to source documentation file"
}
},
"required": ["timestamp", "source_docs_path"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}
@@ -1,98 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Editorial Plan",
"description": "Analysis of a blog draft with a mapped editorial plan based on author criticism",
"type": "object",
"required": ["draft_filename", "draft_title", "sections", "editorial_actions"],
"properties": {
"draft_filename": {
"type": "string",
"pattern": "^[0-9a-f]{8}\\.md$",
"description": "Hex-ID filename of the draft note"
},
"draft_title": {
"type": "string",
"description": "Title of the blog draft"
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["heading", "line_range", "summary"],
"properties": {
"heading": {
"type": "string",
"description": "Section heading text"
},
"line_range": {
"type": "string",
"description": "Line range in the file (e.g., 15-42)"
},
"summary": {
"type": "string",
"description": "Brief summary of what this section covers"
},
"word_count": {
"type": "integer",
"minimum": 0
}
}
},
"description": "Structural map of the draft's sections"
},
"editorial_actions": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "type", "target_section", "description", "criticism_addressed"],
"properties": {
"id": {
"type": "string",
"pattern": "^EDIT-[0-9]{3}$",
"description": "Unique action identifier"
},
"type": {
"type": "string",
"enum": ["rewrite", "restructure", "cut", "expand", "add", "replace_example", "fix_tone", "fix_links"],
"description": "Type of editorial action"
},
"target_section": {
"type": "string",
"description": "Section heading this action targets, or 'global' for whole-draft changes"
},
"description": {
"type": "string",
"description": "Specific description of what to change and why"
},
"criticism_addressed": {
"type": "string",
"description": "Which part of the author's criticism this action addresses"
},
"priority": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "How critical this edit is"
}
}
},
"description": "Ordered list of editorial actions to apply"
},
"linked_notes": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title"],
"properties": {
"filename": { "type": "string" },
"title": { "type": "string" }
}
},
"description": "Notes currently linked from the draft"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,76 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Code Architecture Analysis",
"description": "Architecture and design analysis of explored code",
"type": "object",
"required": ["topic", "patterns", "timestamp"],
"properties": {
"topic": { "type": "string", "minLength": 3 },
"patterns": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "where", "why"],
"properties": {
"name": { "type": "string" },
"where": { "type": "string" },
"why": { "type": "string" },
"quality": { "type": "string", "enum": ["well-implemented", "adequate", "needs-improvement"] }
}
}
},
"data_flow": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"stages": { "type": "array", "items": { "type": "string" } },
"key_transformations": { "type": "array", "items": { "type": "string" } }
}
}
},
"error_handling": {
"type": "object",
"properties": {
"strategy": { "type": "string" },
"patterns": { "type": "array", "items": { "type": "string" } },
"gaps": { "type": "array", "items": { "type": "string" } }
}
},
"concurrency": {
"type": "object",
"properties": {
"model": { "type": "string" },
"primitives": { "type": "array", "items": { "type": "string" } },
"risks": { "type": "array", "items": { "type": "string" } }
}
},
"extension_points": {
"type": "array",
"items": {
"type": "object",
"required": ["interface", "file"],
"properties": {
"interface": { "type": "string" },
"file": { "type": "string" },
"purpose": { "type": "string" }
}
}
},
"design_decisions": {
"type": "array",
"items": {
"type": "object",
"required": ["decision"],
"properties": {
"decision": { "type": "string" },
"rationale": { "type": "string" },
"trade_offs": { "type": "string" }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,62 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Explain Exploration Results",
"description": "Structured exploration of a codebase topic for explanation",
"type": "object",
"required": ["topic", "entry_points", "key_types", "timestamp"],
"properties": {
"topic": { "type": "string", "minLength": 1 },
"entry_points": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["file", "symbol", "role"],
"properties": {
"file": { "type": "string", "minLength": 1 },
"symbol": { "type": "string", "minLength": 1 },
"role": { "type": "string", "minLength": 1 },
"line": { "type": "integer", "minimum": 1 }
}
}
},
"key_types": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "file", "purpose"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"file": { "type": "string", "minLength": 1 },
"purpose": { "type": "string", "minLength": 1 },
"methods": { "type": "array", "items": { "type": "string" } },
"relationships": { "type": "array", "items": { "type": "string" } }
}
}
},
"call_flows": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "steps"],
"properties": {
"name": { "type": "string" },
"steps": { "type": "array", "items": { "type": "string" } },
"description": { "type": "string" }
}
}
},
"dependencies": {
"type": "object",
"properties": {
"depends_on": { "type": "array", "items": { "type": "string" } },
"depended_by": { "type": "array", "items": { "type": "string" } },
"external": { "type": "array", "items": { "type": "string" } }
}
},
"test_files": { "type": "array", "items": { "type": "string" } },
"config_points": { "type": "array", "items": { "type": "string" } },
"file_count": { "type": "integer", "minimum": 0 },
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,52 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Feature Exploration",
"description": "Codebase exploration for feature implementation",
"type": "object",
"required": ["feature", "scope", "related_files", "timestamp"],
"properties": {
"feature": { "type": "string", "minLength": 1 },
"scope": { "type": "string", "enum": ["small", "medium", "large"] },
"related_files": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["path", "relevance", "reason"],
"properties": {
"path": { "type": "string", "minLength": 1 },
"relevance": { "type": "string", "enum": ["primary", "secondary"] },
"reason": { "type": "string", "minLength": 1 },
"key_symbols": { "type": "array", "items": { "type": "string" } }
}
}
},
"patterns_to_follow": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"example_file": { "type": "string" },
"relevance": { "type": "string", "enum": ["must_follow", "should_follow"] }
}
}
},
"affected_modules": { "type": "array", "items": { "type": "string" } },
"test_files": { "type": "array", "items": { "type": "string" } },
"risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity"],
"properties": {
"description": { "type": "string" },
"severity": { "type": "string", "enum": ["high", "medium", "low"] },
"mitigation": { "type": "string" }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
-33
View File
@@ -1,33 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Feature Implementation Plan",
"description": "Ordered implementation plan for a feature",
"type": "object",
"required": ["feature", "steps", "total_complexity", "timestamp"],
"properties": {
"feature": { "type": "string", "minLength": 5 },
"steps": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description"],
"properties": {
"id": { "type": "string", "pattern": "^S\\d{2}$" },
"title": { "type": "string" },
"description": { "type": "string" },
"files_to_modify": { "type": "array", "items": { "type": "string" } },
"files_to_create": { "type": "array", "items": { "type": "string" } },
"tests_to_write": { "type": "array", "items": { "type": "string" } },
"acceptance_criteria": { "type": "array", "items": { "type": "string" } },
"complexity": { "type": "string", "enum": ["S", "M", "L"] },
"dependencies": { "type": "array", "items": { "type": "string" } }
}
}
},
"total_complexity": { "type": "string", "enum": ["S", "M", "L", "XL"] },
"branch_name_suggestion": { "type": "string" },
"commit_message_suggestion": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
}
}
-38
View File
@@ -1,38 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Investigation Findings",
"type": "object",
"required": [
"root_cause",
"affected_files",
"fix_approach"
],
"properties": {
"root_cause": {
"type": "string",
"description": "Description of the root cause"
},
"affected_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of affected file paths"
},
"recent_commits": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of relevant commit hashes"
},
"blast_radius": {
"type": "string",
"description": "Assessment of what else could be affected"
},
"fix_approach": {
"type": "string",
"description": "Recommended approach to fix the issue"
}
}
}
@@ -1,65 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Enhancement Plan",
"description": "Schema for GitHub issue enhancement recommendations",
"type": "object",
"required": ["issues_to_enhance"],
"properties": {
"issues_to_enhance": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "enhancements"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"current_title": {
"type": "string"
},
"suggested_title": {
"type": "string"
},
"current_body": {
"type": "string"
},
"body_template": {
"type": ["string", "null"],
"description": "Enhanced body template preserving original content"
},
"suggested_labels": {
"type": "array",
"items": {
"type": "string"
}
},
"enhancements": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "List of specific enhancements to apply"
},
"rationale": {
"type": "string",
"description": "Why these enhancements are recommended"
},
"priority": {
"type": "string",
"enum": ["high", "medium", "low"]
}
}
}
},
"total_to_enhance": {
"type": "integer",
"minimum": 0
},
"enhancement_strategy": {
"type": "string",
"description": "Overall strategy for enhancements"
}
}
}
@@ -1,71 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Enhancement Results",
"description": "Schema for GitHub issue enhancement execution results",
"type": "object",
"required": ["enhanced_issues", "total_attempted", "total_successful"],
"properties": {
"enhanced_issues": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "success", "changes_made", "url"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"success": {
"type": "boolean"
},
"changes_made": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of changes successfully applied"
},
"title_updated": {
"type": "boolean"
},
"body_updated": {
"type": "boolean"
},
"labels_added": {
"type": "array",
"items": {
"type": "string"
}
},
"comment_added": {
"type": "boolean"
},
"error": {
"type": "string",
"description": "Error message if enhancement failed"
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"total_attempted": {
"type": "integer",
"minimum": 0
},
"total_successful": {
"type": "integer",
"minimum": 0
},
"total_failed": {
"type": "integer",
"minimum": 0
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,86 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Analysis",
"description": "Schema for GitHub issue quality analysis results",
"type": "object",
"required": ["repository", "total_issues", "poor_quality_issues"],
"properties": {
"repository": {
"type": "object",
"required": ["owner", "name"],
"properties": {
"owner": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
}
},
"total_issues": {
"type": "integer",
"minimum": 0
},
"analyzed_count": {
"type": "integer",
"minimum": 0
},
"poor_quality_issues": {
"type": "array",
"items": {
"type": "object",
"required": ["number", "title", "quality_score", "problems"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string"
},
"body": {
"type": "string"
},
"quality_score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
},
"recommendations": {
"type": "array",
"items": {
"type": "string"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"quality_threshold": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,87 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Enhancement Verification Report",
"description": "Schema for verifying GitHub issue enhancements were applied",
"type": "object",
"required": ["total_enhanced", "successful_enhancements", "failed_enhancements"],
"properties": {
"total_enhanced": {
"type": "integer",
"minimum": 0
},
"successful_enhancements": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "verified_changes"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"verified_changes": {
"type": "array",
"items": {
"type": "string"
}
},
"quality_score_before": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"quality_score_after": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"url": {
"type": "string",
"format": "uri"
}
}
}
},
"failed_enhancements": {
"type": "array",
"items": {
"type": "object",
"required": ["issue_number", "problems"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"problems": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"quality_improvement": {
"type": "object",
"properties": {
"average_score_before": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"average_score_after": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"improvement_percentage": {
"type": "number"
}
}
},
"summary": {
"type": "string",
"description": "Human-readable summary of verification results"
}
}
}
@@ -1,26 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Hello World Result",
"description": "Verification result from the hello-world verify step",
"type": "object",
"required": ["success", "message"],
"properties": {
"success": {
"type": "boolean",
"description": "Whether the hello-world pipeline completed successfully"
},
"message": {
"type": "string",
"description": "Human-readable verification result"
},
"checks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
},
"description": "Optional list of individual verification checks performed"
}
},
"additionalProperties": true
}
-138
View File
@@ -1,138 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/implement-phase.schema.json",
"title": "Wave Implement Phase Output Contract",
"description": "Validates implementation phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "implement",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"implementation_plan": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*implementation-plan\\.md$",
"description": "Path to implementation plan file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Implementation plan file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Implementation plan content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"progress_checklist": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*implementation-checklist\\.md$",
"description": "Path to progress checklist file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Progress checklist file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Checklist content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["implementation_plan", "progress_checklist"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"tests_executed": {
"type": "boolean",
"description": "Whether test suite was executed"
},
"test_results": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": 0,
"description": "Total number of tests"
},
"passed": {
"type": "integer",
"minimum": 0,
"description": "Number of tests that passed"
},
"failed": {
"type": "integer",
"minimum": 0,
"description": "Number of tests that failed"
},
"coverage_percent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Test coverage percentage"
}
},
"required": ["total", "passed", "failed"],
"additionalProperties": false
},
"implementation_readiness": {
"type": "string",
"enum": ["ready", "partial", "needs_work"],
"description": "Assessment of implementation readiness"
}
},
"required": ["tests_executed", "implementation_readiness"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When implementation phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for implementation phase"
},
"previous_phases": {
"type": "array",
"items": {
"type": "string",
"enum": ["spec", "docs", "dummy"]
},
"minItems": 3,
"maxItems": 3,
"description": "Previous phases that fed into this implementation"
}
},
"required": ["timestamp", "previous_phases"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}
@@ -1,44 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Improvement Assessment",
"description": "Structured assessment of code improvement opportunities",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": { "type": "string", "minLength": 1 },
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "category", "title", "location", "description", "impact", "effort"],
"properties": {
"id": { "type": "string", "pattern": "^IMP-[0-9]{3}$" },
"category": {
"type": "string",
"enum": ["error_handling", "performance", "testability", "robustness", "maintainability", "code_quality"]
},
"title": { "type": "string", "minLength": 3 },
"location": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"current_code": { "type": "string" },
"suggested_fix": { "type": "string", "minLength": 5 },
"impact": { "type": "string", "enum": ["high", "medium", "low"] },
"effort": { "type": "string", "enum": ["trivial", "small", "medium", "large"] },
"risk": { "type": "string", "enum": ["none", "low", "medium", "high"] }
}
}
},
"summary": {
"type": "object",
"required": ["total_findings", "overall_quality"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_category": { "type": "object" },
"quick_wins": { "type": "array", "items": { "type": "string" } },
"high_impact": { "type": "array", "items": { "type": "string" } },
"overall_quality": { "type": "string", "minLength": 10 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,91 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Implementation Assessment",
"type": "object",
"required": ["implementable", "issue", "assessment"],
"properties": {
"implementable": {
"type": "boolean",
"const": true,
"description": "Must be true for the pipeline to proceed. Set to false if the issue lacks sufficient detail."
},
"issue": {
"type": "object",
"required": ["number", "title", "body", "repository", "url"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
},
"url": {
"type": "string",
"format": "uri"
},
"labels": {
"type": "array",
"items": { "type": "string" }
},
"state": {
"type": "string"
},
"author": {
"type": "string"
},
"comments": {
"type": "array",
"items": { "type": "object" }
}
}
},
"assessment": {
"type": "object",
"required": ["quality_score", "complexity", "skip_steps", "branch_name"],
"properties": {
"quality_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "How well-specified the issue is (0-100)"
},
"complexity": {
"type": "string",
"enum": ["trivial", "simple", "medium", "complex"],
"description": "Estimated implementation complexity"
},
"skip_steps": {
"type": "array",
"items": {
"type": "string",
"enum": ["specify", "clarify", "checklist", "analyze"]
},
"description": "Speckit steps that can be skipped because the issue provides sufficient detail"
},
"branch_name": {
"type": "string",
"minLength": 1,
"description": "Suggested branch name for the implementation"
},
"missing_info": {
"type": "array",
"items": { "type": "string" },
"description": "Information that would improve the issue but isn't blocking"
},
"summary": {
"type": "string",
"description": "Brief summary of the assessment"
}
}
}
}
}
-96
View File
@@ -1,96 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "GitHub Issue Content",
"description": "Parsed content from a GitHub issue for research pipeline processing",
"type": "object",
"required": ["issue_number", "title", "body", "author", "url", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "GitHub issue number"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Issue title"
},
"body": {
"type": "string",
"description": "Issue body/description text"
},
"author": {
"type": "object",
"required": ["login"],
"properties": {
"login": {
"type": "string",
"minLength": 1,
"description": "GitHub username of issue author"
}
}
},
"labels": {
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Label name"
},
"color": {
"type": "string",
"description": "Label color hex code"
},
"description": {
"type": "string",
"description": "Label description"
}
}
},
"description": "Labels applied to the issue"
},
"url": {
"type": "string",
"format": "uri",
"description": "HTML URL to the GitHub issue"
},
"repository": {
"type": "object",
"required": ["owner", "name", "full_name"],
"properties": {
"owner": {
"type": "string",
"description": "Repository owner"
},
"name": {
"type": "string",
"description": "Repository name"
},
"full_name": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Full repository name (owner/repo)"
}
}
},
"state": {
"type": "string",
"enum": ["open", "closed"],
"description": "Issue state"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Issue creation timestamp"
},
"comments_count": {
"type": "integer",
"minimum": 0,
"description": "Number of comments on the issue"
}
}
}
@@ -1,72 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Implementation Plan",
"type": "object",
"required": ["issue_number", "branch_name", "feature_dir", "tasks"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"branch_name": {
"type": "string",
"minLength": 1
},
"feature_dir": {
"type": "string",
"description": "Path to the feature directory under specs/"
},
"spec_file": {
"type": "string",
"description": "Path to the spec.md file"
},
"plan_file": {
"type": "string",
"description": "Path to the plan.md file"
},
"tasks_file": {
"type": "string",
"description": "Path to the tasks.md file"
},
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description"],
"properties": {
"id": {
"type": "string",
"description": "Task identifier"
},
"title": {
"type": "string",
"description": "Brief task title"
},
"description": {
"type": "string",
"description": "Detailed task description"
},
"file_changes": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "action"],
"properties": {
"path": { "type": "string" },
"action": {
"type": "string",
"enum": ["create", "modify", "delete"]
}
}
}
}
}
}
},
"summary": {
"type": "string",
"description": "Brief summary of the implementation plan"
}
}
}
@@ -1,116 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Context",
"description": "Schema for gathered context about a GitHub issue and recent codebase changes",
"type": "object",
"required": ["repository", "issue", "changes_since_creation", "referenced_files"],
"properties": {
"repository": {
"type": "object",
"required": ["owner", "name"],
"properties": {
"owner": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
}
}
},
"issue": {
"type": "object",
"required": ["number", "title", "body", "url", "created_at"],
"properties": {
"number": {
"type": "integer",
"minimum": 1
},
"title": {
"type": "string",
"minLength": 1
},
"body": {
"type": "string"
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"url": {
"type": "string",
"format": "uri"
},
"created_at": {
"type": "string"
},
"comments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"author": {
"type": "string"
},
"body": {
"type": "string"
},
"created_at": {
"type": "string"
}
}
}
}
}
},
"changes_since_creation": {
"type": "object",
"required": ["commits", "commit_count"],
"properties": {
"commits": {
"type": "array",
"items": {
"type": "string"
}
},
"commit_count": {
"type": "integer",
"minimum": 0
},
"releases": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"referenced_files": {
"type": "object",
"required": ["found", "missing"],
"properties": {
"found": {
"type": "array",
"items": {
"type": "string"
}
},
"missing": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"criticism": {
"type": "string"
},
"project_context": {
"type": "string"
}
}
}
@@ -1,73 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Draft",
"description": "Schema for a drafted update to a GitHub issue",
"type": "object",
"required": ["issue_number", "original_title", "updated_title", "title_changed", "original_body", "updated_body", "staleness_assessment", "changes_made"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"original_title": {
"type": "string",
"minLength": 1
},
"updated_title": {
"type": "string",
"minLength": 1
},
"title_changed": {
"type": "boolean"
},
"original_body": {
"type": "string"
},
"updated_body": {
"type": "string",
"minLength": 1
},
"staleness_assessment": {
"type": "object",
"required": ["overall_staleness", "sections"],
"properties": {
"overall_staleness": {
"type": "string",
"enum": ["low", "medium", "high", "critical"]
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "status", "reason"],
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": ["STILL_VALID", "OUTDATED", "INCOMPLETE", "WRONG"]
},
"reason": {
"type": "string"
}
}
}
}
}
},
"changes_made": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
"criticism_addressed": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
@@ -1,57 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Issue Update Result",
"description": "Schema for the result of applying an issue update",
"type": "object",
"required": ["issue_number", "success", "changes_applied", "verification"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"url": {
"type": "string",
"format": "uri"
},
"success": {
"type": "boolean"
},
"title_updated": {
"type": "boolean"
},
"body_updated": {
"type": "boolean"
},
"changes_applied": {
"type": "array",
"items": {
"type": "string"
}
},
"verification": {
"type": "object",
"required": ["title_matches", "body_matches"],
"properties": {
"title_matches": {
"type": "boolean"
},
"body_matches": {
"type": "boolean"
},
"discrepancies": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"staleness_assessment": {
"type": "string",
"enum": ["low", "medium", "high", "critical"]
},
"error": {
"type": ["string", "null"]
}
}
}
@@ -1,179 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Exploration",
"description": "Structured codebase exploration output for feature planning",
"type": "object",
"required": ["feature_context", "related_files", "patterns", "affected_modules", "testing_landscape", "risks", "timestamp"],
"properties": {
"feature_context": {
"type": "object",
"required": ["input_summary", "scope_assessment"],
"properties": {
"input_summary": {
"type": "string",
"minLength": 10,
"description": "Brief summary of the feature or task being planned"
},
"scope_assessment": {
"type": "string",
"enum": ["small", "medium", "large", "epic"],
"description": "Estimated scope of the work"
}
}
},
"related_files": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "relevance", "reason"],
"properties": {
"path": {
"type": "string",
"description": "File path relative to project root"
},
"relevance": {
"type": "string",
"enum": ["primary", "secondary", "reference"],
"description": "How relevant this file is to the feature"
},
"reason": {
"type": "string",
"description": "Why this file is relevant"
},
"key_symbols": {
"type": "array",
"items": {
"type": "string"
},
"description": "Important functions, types, or constants in this file"
}
}
},
"description": "Files related to the feature"
},
"patterns": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "name", "description", "relevance"],
"properties": {
"id": {
"type": "string",
"pattern": "^PAT-[0-9]{3}$",
"description": "Pattern identifier"
},
"name": {
"type": "string",
"description": "Short name for the pattern"
},
"description": {
"type": "string",
"description": "What the pattern is and how it works"
},
"example_file": {
"type": "string",
"description": "File that best demonstrates this pattern"
},
"relevance": {
"type": "string",
"enum": ["must_follow", "should_follow", "informational"],
"description": "How important it is to follow this pattern"
}
}
},
"description": "Codebase patterns and conventions discovered"
},
"affected_modules": {
"type": "array",
"items": {
"type": "object",
"required": ["path", "description", "impact_level"],
"properties": {
"path": {
"type": "string",
"description": "Module or package path"
},
"description": {
"type": "string",
"description": "What this module does"
},
"impact_level": {
"type": "string",
"enum": ["direct", "indirect", "none"],
"description": "Level of impact from the planned changes"
},
"dependencies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modules this one depends on"
},
"dependents": {
"type": "array",
"items": {
"type": "string"
},
"description": "Modules that depend on this one"
}
}
},
"description": "Modules affected by the planned changes"
},
"testing_landscape": {
"type": "object",
"required": ["existing_test_files", "testing_patterns"],
"properties": {
"existing_test_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Test files relevant to the feature"
},
"testing_patterns": {
"type": "array",
"items": {
"type": "string"
},
"description": "Testing patterns used in the codebase (e.g., table-driven, mocks)"
},
"coverage_gaps": {
"type": "array",
"items": {
"type": "string"
},
"description": "Areas lacking test coverage"
}
}
},
"risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity"],
"properties": {
"description": {
"type": "string",
"description": "What the risk is"
},
"severity": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Risk severity"
},
"mitigation": {
"type": "string",
"description": "How to mitigate this risk"
}
}
},
"description": "Risks identified during exploration"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the exploration was completed"
}
}
}
-235
View File
@@ -1,235 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Review",
"description": "Structured review of a task breakdown plan",
"type": "object",
"required": ["verdict", "summary", "task_reviews", "cross_cutting_concerns", "recommendations", "risk_assessment", "timestamp", "markdown_content"],
"properties": {
"verdict": {
"type": "object",
"required": ["decision", "confidence", "rationale"],
"properties": {
"decision": {
"type": "string",
"enum": ["approve", "approve_with_notes", "revise"],
"description": "Overall verdict on the plan"
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Confidence in the verdict"
},
"rationale": {
"type": "string",
"minLength": 20,
"description": "Explanation for the verdict"
}
}
},
"summary": {
"type": "object",
"required": ["total_tasks_reviewed", "issues_found", "issues_by_severity", "strengths"],
"properties": {
"total_tasks_reviewed": {
"type": "integer",
"minimum": 1,
"description": "Number of tasks reviewed"
},
"issues_found": {
"type": "integer",
"minimum": 0,
"description": "Total number of issues found"
},
"issues_by_severity": {
"type": "object",
"properties": {
"critical": {
"type": "integer",
"minimum": 0
},
"high": {
"type": "integer",
"minimum": 0
},
"medium": {
"type": "integer",
"minimum": 0
},
"low": {
"type": "integer",
"minimum": 0
}
},
"description": "Issues broken down by severity"
},
"strengths": {
"type": "array",
"items": {
"type": "string"
},
"description": "Things the plan does well"
}
}
},
"task_reviews": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["task_id", "status"],
"properties": {
"task_id": {
"type": "string",
"pattern": "^T[0-9]{2}$",
"description": "ID of the reviewed task"
},
"status": {
"type": "string",
"enum": ["ok", "needs_refinement", "missing_details", "overcomplicated", "wrong_persona", "bad_dependencies"],
"description": "Review status for this task"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "severity", "description", "suggestion"],
"properties": {
"id": {
"type": "string",
"pattern": "^REV-[0-9]{3}$",
"description": "Issue identifier"
},
"severity": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Issue severity"
},
"description": {
"type": "string",
"description": "What the issue is"
},
"suggestion": {
"type": "string",
"description": "How to fix it"
}
}
},
"description": "Issues found in this task"
}
}
},
"description": "Per-task review results"
},
"cross_cutting_concerns": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "category", "description", "affected_tasks", "recommendation"],
"properties": {
"id": {
"type": "string",
"pattern": "^CC-[0-9]{3}$",
"description": "Concern identifier"
},
"category": {
"type": "string",
"description": "Category of concern (e.g., testing, security, performance)"
},
"description": {
"type": "string",
"description": "What the concern is"
},
"affected_tasks": {
"type": "array",
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Tasks affected by this concern"
},
"recommendation": {
"type": "string",
"description": "Recommended action"
}
}
},
"description": "Concerns that span multiple tasks"
},
"recommendations": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "priority", "description", "type"],
"properties": {
"id": {
"type": "string",
"pattern": "^REC-[0-9]{3}$",
"description": "Recommendation identifier"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Priority of the recommendation"
},
"description": {
"type": "string",
"description": "What should be done"
},
"type": {
"type": "string",
"enum": ["add_task", "modify_task", "remove_task", "reorder", "split_task", "merge_tasks", "change_persona", "add_dependency"],
"description": "Type of change recommended"
}
}
},
"description": "Actionable recommendations for improving the plan"
},
"risk_assessment": {
"type": "object",
"required": ["overall_risk", "key_risks"],
"properties": {
"overall_risk": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Overall risk level of the plan"
},
"key_risks": {
"type": "array",
"items": {
"type": "object",
"required": ["description", "severity", "likelihood"],
"properties": {
"description": {
"type": "string",
"description": "Risk description"
},
"severity": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"likelihood": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"mitigation": {
"type": "string",
"description": "How to mitigate"
}
}
},
"description": "Key risks identified in the plan"
}
}
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When the review was completed"
},
"markdown_content": {
"type": "string",
"minLength": 50,
"description": "Pre-rendered human-readable review in markdown format"
}
}
}
-40
View File
@@ -1,40 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Plan Status",
"description": "Status report from the plan step: research, design, and implementation plan generation.",
"type": "object",
"required": ["plan_file", "feature_dir", "summary"],
"properties": {
"plan_file": {
"type": "string",
"minLength": 1,
"description": "Path to the generated implementation plan file"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the plan produced"
},
"research_file": {
"type": "string",
"description": "Path to research.md if generated"
},
"data_model_file": {
"type": "string",
"description": "Path to data-model.md if generated"
},
"constitution_issues": {
"type": "array",
"items": {
"type": "string"
},
"description": "Constitution compliance issues found during planning"
}
},
"additionalProperties": true
}
-142
View File
@@ -1,142 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Plan Tasks",
"description": "Structured task breakdown for feature implementation",
"type": "object",
"required": ["feature_summary", "tasks", "execution_order", "metadata", "markdown_content"],
"properties": {
"feature_summary": {
"type": "object",
"required": ["title", "description", "total_tasks", "estimated_total_complexity"],
"properties": {
"title": {
"type": "string",
"minLength": 5,
"description": "Short title for the feature"
},
"description": {
"type": "string",
"minLength": 20,
"description": "Brief description of what the feature does"
},
"total_tasks": {
"type": "integer",
"minimum": 1,
"description": "Total number of tasks in the breakdown"
},
"estimated_total_complexity": {
"type": "string",
"enum": ["S", "M", "L", "XL"],
"description": "Overall complexity estimate"
}
}
},
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "title", "description", "persona", "complexity", "acceptance_criteria"],
"properties": {
"id": {
"type": "string",
"pattern": "^T[0-9]{2}$",
"description": "Task identifier (T01, T02, etc.)"
},
"title": {
"type": "string",
"minLength": 5,
"description": "Short task title"
},
"description": {
"type": "string",
"minLength": 20,
"description": "What needs to be done"
},
"persona": {
"type": "string",
"enum": ["navigator", "philosopher", "craftsman", "auditor", "planner", "implementer", "reviewer"],
"description": "Which persona should execute this task"
},
"complexity": {
"type": "string",
"enum": ["S", "M", "L", "XL"],
"description": "Task complexity estimate"
},
"dependencies": {
"type": "array",
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Task IDs that must complete before this one"
},
"acceptance_criteria": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"description": "How to verify the task is complete"
},
"affected_files": {
"type": "array",
"items": {
"type": "string"
},
"description": "Files that will be created or modified"
},
"risks": {
"type": "array",
"items": {
"type": "string"
},
"description": "Risks specific to this task"
}
}
},
"description": "Ordered list of tasks"
},
"execution_order": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["phase", "task_ids"],
"properties": {
"phase": {
"type": "integer",
"minimum": 1,
"description": "Execution phase number"
},
"task_ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string",
"pattern": "^T[0-9]{2}$"
},
"description": "Tasks that can run in parallel in this phase"
}
}
},
"description": "Parallelization groups for task execution"
},
"metadata": {
"type": "object",
"required": ["generated_at"],
"properties": {
"generated_at": {
"type": "string",
"format": "date-time",
"description": "When the plan was generated"
}
}
},
"markdown_content": {
"type": "string",
"minLength": 50,
"description": "Pre-rendered human-readable plan in markdown format"
}
}
}
-43
View File
@@ -1,43 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Pull Request Result",
"description": "Result of creating a pull request. Used by pipeline steps that produce a PR as their final output.",
"type": "object",
"required": ["pr_url", "pr_number", "branch", "summary"],
"properties": {
"pr_url": {
"type": "string",
"format": "uri",
"description": "URL to the created pull request"
},
"pr_number": {
"type": "integer",
"minimum": 1,
"description": "Pull request number"
},
"branch": {
"type": "string",
"minLength": 1,
"description": "Branch name for the pull request"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of what the pull request does"
},
"copilot_review_requested": {
"type": "boolean",
"description": "Whether a Copilot review was requested for the PR"
},
"closes_issue": {
"type": "boolean",
"description": "Whether the PR closes a linked issue"
},
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Issue number that this PR addresses"
}
},
"additionalProperties": true
}
@@ -1,42 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Probed Findings",
"description": "Deep-dive analysis from the recinq probe step",
"type": "object",
"required": ["target", "total_probed", "findings"],
"properties": {
"target": {
"type": "string",
"description": "What was analyzed (path, module, or 'whole-project')"
},
"total_probed": {
"type": "integer",
"description": "Total number of confirmed findings that were probed deeper"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "deeper_analysis", "files"],
"properties": {
"id": {
"type": "string",
"description": "Original finding ID (e.g. DVG-001)"
},
"deeper_analysis": {
"type": "string",
"description": "Extended analysis including dependency graph, second-order effects, and cross-finding patterns"
},
"files": {
"type": "array",
"items": { "type": "string" },
"description": "File paths involved in this finding and its connections"
}
},
"additionalProperties": true
},
"description": "Per-finding deep-dive results"
}
},
"additionalProperties": true
}
-119
View File
@@ -1,119 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Project Survey",
"description": "Structured survey of a project for onboarding guide generation",
"type": "object",
"required": ["project", "build", "structure", "timestamp"],
"properties": {
"project": {
"type": "object",
"required": ["name", "language", "purpose"],
"properties": {
"name": { "type": "string", "minLength": 1 },
"language": { "type": "string", "minLength": 1 },
"framework": { "type": "string" },
"purpose": { "type": "string", "minLength": 5 },
"license": { "type": "string" }
}
},
"build": {
"type": "object",
"required": ["commands"],
"properties": {
"commands": {
"type": "object",
"properties": {
"build": { "type": "string" },
"test": { "type": "string" },
"run": { "type": "string" }
}
},
"prerequisites": { "type": "array", "items": { "type": "string" } },
"ci_system": { "type": "string" }
}
},
"structure": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["path", "purpose"],
"properties": {
"path": { "type": "string", "minLength": 1 },
"purpose": { "type": "string", "minLength": 1 },
"key_files": { "type": "array", "items": { "type": "string" } }
}
}
},
"architecture": {
"type": "object",
"properties": {
"entry_points": { "type": "array", "items": { "type": "string" } },
"components": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "role"],
"properties": {
"name": { "type": "string" },
"package": { "type": "string" },
"role": { "type": "string" }
}
}
},
"patterns": { "type": "array", "items": { "type": "string" } }
}
},
"dependencies": {
"type": "object",
"properties": {
"key_deps": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "purpose"],
"properties": {
"name": { "type": "string" },
"purpose": { "type": "string" },
"import": { "type": "string" }
}
}
},
"total_count": { "type": "integer", "minimum": 0 }
}
},
"configuration": {
"type": "object",
"properties": {
"env_vars": { "type": "array", "items": { "type": "string" } },
"config_files": { "type": "array", "items": { "type": "string" } },
"feature_flags": { "type": "array", "items": { "type": "string" } }
}
},
"testing": {
"type": "object",
"properties": {
"framework": { "type": "string" },
"patterns": { "type": "array", "items": { "type": "string" } },
"run_command": { "type": "string" },
"coverage_command": { "type": "string" }
}
},
"workflow": {
"type": "object",
"properties": {
"branch_strategy": { "type": "string" },
"commit_convention": { "type": "string" },
"pr_process": { "type": "string" }
}
},
"documentation": {
"type": "object",
"properties": {
"locations": { "type": "array", "items": { "type": "string" } },
"quality": { "type": "string", "enum": ["good", "adequate", "sparse", "missing"] }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,29 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Code Review Publish Result",
"description": "Result of publishing a code review comment on a pull request",
"type": "object",
"required": ["comment_url", "pr_number"],
"properties": {
"comment_url": {
"type": "string",
"format": "uri",
"description": "URL to the posted review comment"
},
"pr_number": {
"type": "integer",
"minimum": 1,
"description": "PR number that was reviewed"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"summary": {
"type": "string",
"description": "Brief summary of the review"
}
},
"additionalProperties": true
}
@@ -1,43 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Recinq Context",
"description": "Parsed input context from the recinq gather step",
"type": "object",
"required": ["input_type", "original_input", "focus_hint"],
"properties": {
"input_type": {
"type": "string",
"enum": ["issue", "pr", "local"],
"description": "The kind of input: GitHub issue, GitHub PR, or local path/description"
},
"original_input": {
"type": "string",
"description": "The raw input string exactly as given by the user"
},
"focus_hint": {
"type": "string",
"description": "Summary of what should be simplified or focused on"
},
"url": {
"type": "string",
"description": "GitHub issue or PR URL (empty for local input)"
},
"repo": {
"type": "string",
"description": "GitHub owner/repo (empty for local input)"
},
"number": {
"type": "integer",
"description": "GitHub issue or PR number (0 for local input)"
},
"title": {
"type": "string",
"description": "GitHub issue or PR title (empty for local input)"
},
"body": {
"type": "string",
"description": "GitHub issue or PR body (empty for local input)"
}
},
"additionalProperties": true
}
@@ -1,27 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"required": ["target_files", "affected_callers", "existing_tests", "integration_points", "risk_assessment"],
"properties": {
"target_files": {
"type": "array",
"items": { "type": "string" }
},
"affected_callers": {
"type": "array",
"items": { "type": "string" }
},
"existing_tests": {
"type": "array",
"items": { "type": "string" }
},
"integration_points": {
"type": "array",
"items": { "type": "string" }
},
"risk_assessment": {
"type": "string",
"enum": ["low", "medium", "high"]
}
}
}
@@ -1,178 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Findings",
"description": "Web research results organized by topic with sources and insights",
"type": "object",
"required": ["issue_reference", "findings_by_topic", "research_metadata"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
}
}
},
"findings_by_topic": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["topic_id", "topic_title", "findings", "confidence_level"],
"properties": {
"topic_id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Reference to topic ID from research-topics"
},
"topic_title": {
"type": "string",
"description": "Topic title for readability"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "summary", "source", "relevance_score"],
"properties": {
"id": {
"type": "string",
"pattern": "^FINDING-[0-9]{3}$",
"description": "Unique finding identifier"
},
"summary": {
"type": "string",
"minLength": 20,
"maxLength": 2000,
"description": "Summarized finding content"
},
"key_points": {
"type": "array",
"items": {
"type": "string"
},
"description": "Bullet points of key insights"
},
"source": {
"type": "object",
"required": ["url", "title", "type"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Source page/article title"
},
"type": {
"type": "string",
"enum": ["official_docs", "github_issue", "github_discussion", "stack_overflow", "blog_post", "tutorial", "api_reference", "academic_paper", "forum_post", "other"],
"description": "Type of source"
},
"author": {
"type": "string",
"description": "Author or organization name"
},
"credibility_score": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Source credibility assessment (0-1)"
}
}
},
"relevance_score": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Relevance to the topic (0-1)"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote from source"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable quotes from the source"
}
}
},
"description": "Individual research findings for this topic"
},
"confidence_level": {
"type": "string",
"enum": ["high", "medium", "low", "inconclusive"],
"description": "Overall confidence in findings for this topic"
},
"consensus": {
"type": "string",
"description": "Summary of consensus across sources"
},
"gaps": {
"type": "array",
"items": {
"type": "string"
},
"description": "Questions that couldn't be fully answered"
}
}
},
"description": "Research findings organized by topic"
},
"research_metadata": {
"type": "object",
"required": ["started_at", "completed_at"],
"properties": {
"started_at": {
"type": "string",
"format": "date-time",
"description": "Research start timestamp"
},
"completed_at": {
"type": "string",
"format": "date-time",
"description": "Research completion timestamp"
},
"persona": {
"type": "string",
"description": "Wave persona that conducted research"
},
"total_sources_consulted": {
"type": "integer",
"minimum": 0,
"description": "Total number of sources examined"
},
"sources_included": {
"type": "integer",
"minimum": 0,
"description": "Number of sources included in findings"
},
"search_queries_used": {
"type": "array",
"items": {
"type": "string"
},
"description": "Search queries that were used"
}
}
}
}
}
-206
View File
@@ -1,206 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Report",
"description": "Synthesized research report for GitHub issue comment",
"type": "object",
"required": ["issue_reference", "executive_summary", "detailed_findings", "recommendations", "sources", "markdown_content"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository", "title"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$"
},
"title": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
}
},
"executive_summary": {
"type": "object",
"required": ["overview", "key_findings", "primary_recommendation"],
"properties": {
"overview": {
"type": "string",
"minLength": 50,
"maxLength": 1000,
"description": "Brief overview of research conducted and main conclusions"
},
"key_findings": {
"type": "array",
"minItems": 1,
"maxItems": 7,
"items": {
"type": "string"
},
"description": "Top findings as bullet points"
},
"primary_recommendation": {
"type": "string",
"minLength": 20,
"description": "Single most important recommendation"
},
"confidence_assessment": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Overall confidence in the research conclusions"
}
}
},
"detailed_findings": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["section_title", "content", "relevance"],
"properties": {
"section_title": {
"type": "string",
"minLength": 3,
"description": "Section heading"
},
"topic_id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Reference to original topic if applicable"
},
"content": {
"type": "string",
"minLength": 50,
"description": "Detailed markdown content for this section"
},
"relevance": {
"type": "string",
"enum": ["critical", "high", "medium", "supplementary"],
"description": "How relevant this section is to the issue"
},
"code_examples": {
"type": "array",
"items": {
"type": "object",
"required": ["code", "language"],
"properties": {
"code": {
"type": "string",
"description": "Code snippet"
},
"language": {
"type": "string",
"description": "Language for syntax highlighting"
},
"caption": {
"type": "string",
"description": "Explanation of the code"
}
}
},
"description": "Code examples for this section"
},
"related_sources": {
"type": "array",
"items": {
"type": "string",
"pattern": "^SRC-[0-9]{3}$"
},
"description": "References to sources list"
}
}
},
"description": "Detailed findings organized by section"
},
"recommendations": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"required": ["id", "title", "description", "priority"],
"properties": {
"id": {
"type": "string",
"pattern": "^REC-[0-9]{3}$",
"description": "Recommendation identifier"
},
"title": {
"type": "string",
"minLength": 5,
"maxLength": 100,
"description": "Concise recommendation title"
},
"description": {
"type": "string",
"minLength": 20,
"description": "Detailed recommendation explanation"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Recommendation priority"
},
"effort_estimate": {
"type": "string",
"enum": ["trivial", "small", "medium", "large", "unknown"],
"description": "Estimated implementation effort"
}
}
},
"description": "Actionable recommendations based on research"
},
"sources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["id", "url", "title"],
"properties": {
"id": {
"type": "string",
"pattern": "^SRC-[0-9]{3}$",
"description": "Source identifier for cross-referencing"
},
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Source title"
},
"type": {
"type": "string",
"enum": ["official_docs", "github_issue", "github_discussion", "stack_overflow", "blog_post", "tutorial", "api_reference", "academic_paper", "forum_post", "other"]
},
"reliability": {
"type": "string",
"enum": ["authoritative", "reputable", "community", "unverified"],
"description": "Source reliability assessment"
}
}
},
"description": "All sources cited in the report"
},
"markdown_content": {
"type": "string",
"minLength": 100,
"description": "Pre-rendered markdown content ready for GitHub comment"
},
"follow_up_questions": {
"type": "array",
"items": {
"type": "string"
},
"description": "Questions that warrant further investigation"
}
}
}
-106
View File
@@ -1,106 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Research Topics",
"description": "Extracted research topics from GitHub issue analysis",
"type": "object",
"required": ["issue_reference", "topics"],
"properties": {
"issue_reference": {
"type": "object",
"required": ["issue_number", "repository"],
"properties": {
"issue_number": {
"type": "integer",
"minimum": 1,
"description": "Reference to source issue number"
},
"repository": {
"type": "string",
"pattern": "^[^/]+/[^/]+$",
"description": "Repository full name (owner/repo)"
},
"title": {
"type": "string",
"description": "Issue title for context"
}
}
},
"topics": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "object",
"required": ["id", "title", "questions", "keywords", "priority"],
"properties": {
"id": {
"type": "string",
"pattern": "^TOPIC-[0-9]{3}$",
"description": "Unique topic identifier (e.g., TOPIC-001)"
},
"title": {
"type": "string",
"minLength": 5,
"maxLength": 200,
"description": "Concise topic title"
},
"description": {
"type": "string",
"description": "Detailed description of what needs to be researched"
},
"questions": {
"type": "array",
"minItems": 1,
"maxItems": 5,
"items": {
"type": "string",
"minLength": 10
},
"description": "Specific questions to answer through research"
},
"keywords": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"items": {
"type": "string",
"minLength": 2
},
"description": "Search keywords for web research"
},
"priority": {
"type": "string",
"enum": ["critical", "high", "medium", "low"],
"description": "Research priority level"
},
"category": {
"type": "string",
"enum": ["technical", "documentation", "best_practices", "security", "performance", "compatibility", "other"],
"description": "Topic category for organization"
}
}
},
"description": "List of research topics extracted from the issue"
},
"extraction_metadata": {
"type": "object",
"properties": {
"extracted_at": {
"type": "string",
"format": "date-time",
"description": "Timestamp when topics were extracted"
},
"persona": {
"type": "string",
"description": "Wave persona that performed the extraction"
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Confidence score for topic relevance (0-1)"
}
}
}
}
}
-73
View File
@@ -1,73 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Security Scan Results",
"description": "Output from the security scan step",
"type": "object",
"required": ["target", "findings", "summary", "timestamp"],
"properties": {
"target": {
"type": "string",
"minLength": 1,
"description": "What was scanned"
},
"attack_surface": {
"type": "array",
"items": {
"type": "object",
"required": ["entry_point", "type", "description"],
"properties": {
"entry_point": { "type": "string", "minLength": 1 },
"type": {
"type": "string",
"enum": ["http_handler", "cli_input", "file_parser", "db_query", "api_call", "ipc", "other"]
},
"description": { "type": "string", "minLength": 1 },
"risk_level": { "type": "string", "enum": ["high", "medium", "low"] }
}
}
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "title", "severity", "category", "location", "description"],
"properties": {
"id": { "type": "string", "pattern": "^SEC-[0-9]{3}$" },
"title": { "type": "string", "minLength": 5 },
"severity": { "type": "string", "enum": ["CRITICAL", "HIGH", "MEDIUM", "LOW"] },
"category": { "type": "string", "minLength": 1 },
"location": { "type": "string", "minLength": 1 },
"description": { "type": "string", "minLength": 10 },
"evidence": { "type": "string" },
"exploitability": { "type": "string" }
}
}
},
"secrets_check": {
"type": "object",
"properties": {
"hardcoded_secrets": { "type": "array", "items": { "type": "string" } },
"insecure_configs": { "type": "array", "items": { "type": "string" } }
}
},
"summary": {
"type": "object",
"required": ["total_findings", "by_severity", "risk_assessment"],
"properties": {
"total_findings": { "type": "integer", "minimum": 0 },
"by_severity": {
"type": "object",
"required": ["CRITICAL", "HIGH", "MEDIUM", "LOW"],
"properties": {
"CRITICAL": { "type": "integer", "minimum": 0 },
"HIGH": { "type": "integer", "minimum": 0 },
"MEDIUM": { "type": "integer", "minimum": 0 },
"LOW": { "type": "integer", "minimum": 0 }
}
},
"risk_assessment": { "type": "string", "minLength": 10 }
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
-31
View File
@@ -1,31 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Smoke Test Analysis",
"type": "object",
"required": [
"summary",
"files_examined",
"recommendation"
],
"properties": {
"summary": {
"type": "string",
"minLength": 10,
"description": "Brief summary of the analysis"
},
"files_examined": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "List of files that were examined"
},
"recommendation": {
"type": "string",
"minLength": 10,
"description": "Recommendation based on analysis"
}
},
"additionalProperties": false
}
@@ -1,78 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Source Extract",
"description": "Extracted content from a single web source for ingestion",
"type": "object",
"required": ["url", "title", "summary", "key_concepts"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Original URL that was fetched"
},
"title": {
"type": "string",
"description": "Article or page title"
},
"author": {
"type": "string",
"description": "Author name"
},
"date": {
"type": "string",
"description": "Publication date"
},
"summary": {
"type": "string",
"minLength": 50,
"maxLength": 3000,
"description": "Summary of the source content"
},
"key_concepts": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["concept", "description"],
"properties": {
"concept": {
"type": "string",
"description": "Name of the key concept"
},
"description": {
"type": "string",
"description": "Explanation of the concept as presented in the source"
}
}
},
"description": "Key concepts extracted from the source"
},
"notable_quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable direct quotes from the source"
},
"author_year_key": {
"type": "string",
"pattern": "^[A-Z][a-zA-Z]+[0-9]{4}[a-z]?$",
"description": "Suggested AuthorYear key for bibliographic note (e.g., Willison2026)"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
-119
View File
@@ -1,119 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schema.recinq.com/wave/spec-phase.schema.json",
"title": "Wave Spec Phase Output Contract",
"description": "Validates spec phase outputs for prototype-driven development pipeline",
"type": "object",
"properties": {
"phase": {
"type": "string",
"const": "spec",
"description": "Phase identifier"
},
"artifacts": {
"type": "object",
"properties": {
"spec": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*spec\\.md$",
"description": "Path to specification file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Specification file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Specification content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
},
"requirements": {
"type": "object",
"properties": {
"path": {
"type": "string",
"pattern": "^.*requirements\\.md$",
"description": "Path to requirements file"
},
"exists": {
"type": "boolean",
"const": true,
"description": "Requirements file must exist"
},
"content_type": {
"type": "string",
"const": "markdown",
"description": "Requirements content format"
}
},
"required": ["path", "exists", "content_type"],
"additionalProperties": false
}
},
"required": ["spec"],
"additionalProperties": true
},
"validation": {
"type": "object",
"properties": {
"completeness_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification completeness rating"
},
"clarity_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification clarity rating"
},
"testability_score": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"description": "Specification testability rating"
},
"specification_quality": {
"type": "string",
"enum": ["poor", "fair", "good", "excellent"],
"description": "Overall specification quality assessment"
}
},
"required": ["specification_quality"],
"additionalProperties": false
},
"metadata": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "date-time",
"description": "When spec phase was completed"
},
"duration_seconds": {
"type": "number",
"minimum": 0,
"description": "Time taken for spec phase"
},
"input_description": {
"type": "string",
"minLength": 1,
"description": "Original project description input"
}
},
"required": ["timestamp", "input_description"],
"additionalProperties": false
}
},
"required": ["phase", "artifacts", "validation", "metadata"],
"additionalProperties": false
}
@@ -1,35 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Specify Status",
"description": "Status report from the specify step: feature branch creation and spec authoring.",
"type": "object",
"required": ["branch_name", "spec_file", "feature_dir", "summary"],
"properties": {
"branch_name": {
"type": "string",
"minLength": 1,
"description": "Git branch name created for the feature"
},
"spec_file": {
"type": "string",
"minLength": 1,
"description": "Path to the generated spec.md file"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of what was created"
},
"checklist_status": {
"type": "string",
"enum": ["pass", "fail"],
"description": "Result of self-validation against the quality checklist"
}
},
"additionalProperties": true
}
@@ -1,97 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Supervision Evaluation",
"description": "Quality evaluation of both output and process",
"type": "object",
"required": ["output_quality", "process_quality", "overall_score", "timestamp"],
"properties": {
"output_quality": {
"type": "object",
"required": ["correctness", "completeness", "test_coverage", "code_quality"],
"properties": {
"correctness": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"completeness": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"test_coverage": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"code_quality": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"process_quality": {
"type": "object",
"required": ["efficiency", "scope_discipline", "tool_usage"],
"properties": {
"efficiency": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"scope_discipline": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"tool_usage": {
"type": "object",
"required": ["score", "findings"],
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
},
"token_economy": {
"type": "object",
"properties": {
"score": { "type": "string", "enum": ["excellent", "good", "adequate", "poor"] },
"findings": { "type": "array", "items": { "type": "string" } }
}
}
}
},
"overall_score": {
"type": "string",
"enum": ["excellent", "good", "adequate", "poor"]
},
"key_strengths": {
"type": "array",
"items": { "type": "string" }
},
"key_concerns": {
"type": "array",
"items": { "type": "string" }
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
@@ -1,83 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Supervision Evidence",
"description": "Evidence gathered for supervising completed work",
"type": "object",
"required": ["scope", "commits", "artifacts", "test_results", "timestamp"],
"properties": {
"scope": {
"type": "object",
"description": "What was inspected and how it was identified",
"required": ["description", "detection_method"],
"properties": {
"description": { "type": "string", "minLength": 5 },
"detection_method": {
"type": "string",
"enum": ["auto_detect", "pipeline_run", "branch", "pr", "freeform"]
},
"pipeline_name": { "type": "string" },
"branch_name": { "type": "string" },
"pr_number": { "type": "integer" }
}
},
"commits": {
"type": "array",
"items": {
"type": "object",
"required": ["hash", "message", "files_changed"],
"properties": {
"hash": { "type": "string" },
"message": { "type": "string" },
"author": { "type": "string" },
"files_changed": { "type": "integer" },
"insertions": { "type": "integer" },
"deletions": { "type": "integer" },
"has_session_transcript": { "type": "boolean" },
"transcript_summary": { "type": "string" }
}
}
},
"artifacts": {
"type": "array",
"description": "Pipeline workspace artifacts found",
"items": {
"type": "object",
"required": ["path", "type"],
"properties": {
"path": { "type": "string" },
"type": { "type": "string" },
"size_bytes": { "type": "integer" },
"summary": { "type": "string" }
}
}
},
"test_results": {
"type": "object",
"required": ["ran", "passed"],
"properties": {
"ran": { "type": "boolean" },
"passed": { "type": "boolean" },
"total_tests": { "type": "integer" },
"failed_tests": { "type": "integer" },
"coverage_percent": { "type": "number" },
"details": { "type": "string" }
}
},
"session_transcripts": {
"type": "array",
"description": "Claudit session transcripts from git notes",
"items": {
"type": "object",
"required": ["commit_hash", "summary"],
"properties": {
"commit_hash": { "type": "string" },
"summary": { "type": "string" },
"tool_calls_count": { "type": "integer" },
"notable_detours": { "type": "array", "items": { "type": "string" } },
"errors_encountered": { "type": "array", "items": { "type": "string" } }
}
}
},
"timestamp": { "type": "string", "format": "date-time" }
}
}
-33
View File
@@ -1,33 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Speckit Tasks Status",
"description": "Status report from the tasks step: dependency-ordered task breakdown generation.",
"type": "object",
"required": ["total_tasks", "feature_dir", "summary"],
"properties": {
"total_tasks": {
"type": "integer",
"minimum": 1,
"description": "Total number of tasks generated"
},
"feature_dir": {
"type": "string",
"minLength": 1,
"description": "Path to the feature directory"
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Brief description of the task breakdown"
},
"tasks_per_story": {
"type": "object",
"description": "Mapping of user story identifiers to task counts"
},
"parallel_opportunities": {
"type": "integer",
"description": "Number of tasks that can be executed in parallel"
}
},
"additionalProperties": true
}
@@ -1,50 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Validated Findings",
"description": "Convergent validation results from the recinq converge step",
"type": "object",
"required": ["target", "total_findings", "confirmed", "rejected", "findings"],
"properties": {
"target": {
"type": "string",
"description": "What was analyzed (path, module, or 'whole-project')"
},
"total_findings": {
"type": "integer",
"description": "Total number of divergent findings reviewed"
},
"confirmed": {
"type": "integer",
"description": "Number of findings classified as CONFIRMED or PARTIALLY_CONFIRMED"
},
"rejected": {
"type": "integer",
"description": "Number of findings classified as REJECTED"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "status", "rationale"],
"properties": {
"id": {
"type": "string",
"description": "Original finding ID (e.g. DVG-001)"
},
"status": {
"type": "string",
"enum": ["CONFIRMED", "PARTIALLY_CONFIRMED", "REJECTED"],
"description": "Validation classification"
},
"rationale": {
"type": "string",
"description": "Explanation of why the finding was classified this way"
}
},
"additionalProperties": true
},
"description": "Per-finding validation results"
}
},
"additionalProperties": true
}
-85
View File
@@ -1,85 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Web Findings",
"description": "Structured web research results for a given topic",
"type": "object",
"required": ["topic", "sources", "search_queries"],
"properties": {
"topic": {
"type": "string",
"description": "The topic that was researched"
},
"sources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["url", "title", "key_ideas", "relevance_to_topic"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Source URL"
},
"title": {
"type": "string",
"description": "Article or page title"
},
"author": {
"type": "string",
"description": "Author name if available"
},
"date": {
"type": "string",
"description": "Publication date if available"
},
"key_ideas": {
"type": "array",
"minItems": 1,
"items": { "type": "string" },
"description": "Key ideas extracted from the source"
},
"quotes": {
"type": "array",
"items": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "Direct quote from source"
},
"context": {
"type": "string",
"description": "Context for the quote"
}
}
},
"description": "Notable direct quotes"
},
"relevance_to_topic": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Relevance score (0-1)"
},
"source_type": {
"type": "string",
"enum": ["blog_post", "academic_paper", "documentation", "news_article", "conference_talk", "book_excerpt", "other"],
"description": "Type of source"
}
}
},
"description": "Web sources found and analyzed"
},
"search_queries": {
"type": "array",
"items": { "type": "string" },
"description": "Search queries that were executed"
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
@@ -1,72 +0,0 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Zettel References",
"description": "Notes found in the Zettelkasten relevant to a given topic",
"type": "object",
"required": ["query_keywords", "references", "index_entry_points"],
"properties": {
"query_keywords": {
"type": "array",
"items": { "type": "string" },
"description": "Keywords used for searching"
},
"references": {
"type": "array",
"items": {
"type": "object",
"required": ["filename", "title", "folgezettel_address", "relevance", "key_quotes"],
"properties": {
"filename": {
"type": "string",
"pattern": "^[0-9a-f]{8}\\.md$",
"description": "Hex-ID filename of the note"
},
"title": {
"type": "string",
"description": "Full title including Folgezettel address"
},
"folgezettel_address": {
"type": "string",
"description": "Folgezettel address (e.g., 3.1c2)"
},
"relevance": {
"type": "string",
"enum": ["high", "medium", "low"],
"description": "Relevance to the search topic"
},
"key_quotes": {
"type": "array",
"items": { "type": "string" },
"description": "Notable passages from the note"
},
"section": {
"type": "string",
"description": "Top-level section the note belongs to"
}
}
},
"description": "Relevant notes found in the Zettelkasten"
},
"index_entry_points": {
"type": "array",
"items": {
"type": "object",
"required": ["keyword", "filename", "title"],
"properties": {
"keyword": { "type": "string" },
"filename": { "type": "string" },
"title": { "type": "string" }
}
},
"description": "Entry points from the index note"
},
"total_notes_searched": {
"type": "integer",
"minimum": 0
},
"timestamp": {
"type": "string",
"format": "date-time"
}
}
}
-23
View File
@@ -1,23 +0,0 @@
# Auditor
You are a security and quality reviewer. Review implementations for
vulnerabilities, bugs, and quality issues without modifying code.
## Responsibilities
- Review for OWASP Top 10 vulnerabilities
- Check authentication and authorization correctness
- Verify input validation and error handling
- Assess test coverage and quality
- Identify performance regressions and resource leaks
## Output Format
Structured review report with severity ratings:
- CRITICAL: Security vulnerabilities, data loss risks
- HIGH: Logic errors, missing auth checks, resource leaks
- MEDIUM: Missing edge case handling, incomplete validation
- LOW: Style issues, documentation gaps
## Constraints
- NEVER modify any source files
- NEVER run destructive commands
- Cite file paths and line numbers
-11
View File
@@ -1,11 +0,0 @@
# Wave Agent Protocol
You are operating within a Wave pipeline step.
## Operational Context
- **Fresh context**: You have no memory of prior steps. Each step starts clean.
- **Artifact I/O**: Read inputs from injected artifacts. Write outputs to artifact files.
- **Workspace isolation**: You are in an ephemeral worktree. Changes here do not affect the source repository directly.
- **Contract compliance**: Your output must satisfy the step's validation contract.
- **Permission enforcement**: Tool permissions are enforced by the orchestrator. Do not attempt to bypass restrictions listed below.
-24
View File
@@ -1,24 +0,0 @@
# Craftsman
You are a senior software developer focused on clean, maintainable implementation.
Write production-quality code following the specification and plan.
## Responsibilities
- Implement features according to the provided specification
- Write comprehensive tests (unit, integration) for all new code
- Follow existing project patterns and conventions
- Handle errors gracefully with meaningful messages
## Output Format
Implemented code with passing tests. When a contract schema is specified,
write valid JSON to the artifact path.
## Guidelines
- Read spec and plan artifacts before writing code
- Write tests BEFORE or alongside implementation
- Keep changes minimal and focused
- Run the full test suite before declaring completion
## Constraints
- Stay within specification scope — no feature creep
- Never delete or overwrite test fixtures without explicit instruction
-19
View File
@@ -1,19 +0,0 @@
# Debugger
You are a systematic debugger. Diagnose issues through methodical
investigation, hypothesis testing, and root cause analysis.
## Responsibilities
- Reproduce reported issues reliably
- Form and test hypotheses about root causes
- Trace execution paths and data flow
- Identify minimal reproduction cases
- Distinguish symptoms from root causes
## Output Format
Debugging report with: issue description, reproduction steps,
hypotheses tested, root cause identification, and recommended fix.
## Constraints
- Make minimal changes to reproduce and diagnose
- Clean up diagnostic code after debugging
-23
View File
@@ -1,23 +0,0 @@
# Gitea Issue Analyst
You analyze Gitea issues using the Bash tool to run `tea` CLI.
## Step-by-Step Instructions
1. Run `tea --version` via Bash to verify CLI availability
2. Run `tea issues list --repo <REPO> --login librete --limit 50 -o json -f index,title,body,labels,state,url` via Bash
3. Analyze returned issues and score them
4. Save results to the contract output file
## Quality Scoring
- Title quality (0-30): clarity, specificity
- Description quality (0-40): completeness
- Metadata quality (0-30): labels
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
- If a command fails, report the actual error
- Always use `--login librete` for Gitea authentication
-29
View File
@@ -1,29 +0,0 @@
# Gitea Commenter
You post comments on Gitea issues using the Bash tool to run `tea` CLI.
## Step-by-Step Instructions
1. Run `tea --version` via Bash to verify CLI availability
2. Read report content from artifacts
3. Format comment with Wave header
4. Run `tea comment <N> "<content>" --repo <owner/repo> --login librete` via Bash
5. Capture comment URL from output
6. Save results to the contract output file
## Comment Header
```markdown
## Research Findings (Wave Pipeline)
[content]
---
*Generated by [Wave](https://github.com/re-cinq/wave) issue-research pipeline*
```
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
- NEVER edit or close issues — only comment
- NEVER modify issue labels or assignees
- Always use `--login librete` for Gitea authentication
-18
View File
@@ -1,18 +0,0 @@
# Gitea Issue Enhancer
You improve Gitea issues using the Bash tool to run `tea` CLI.
## Step-by-Step Instructions
1. Run `tea --version` via Bash to verify CLI availability
2. Read enhancement plan from artifacts
3. Run `tea issues edit <N> --repo <repo> --login librete -t "new title"` via Bash for each issue
4. Run `tea issues edit <N> --repo <repo> --login librete -L "label1,label2"` via Bash as needed
5. Save results to the contract output file
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
- Always use `--login librete` for Gitea authentication
-22
View File
@@ -1,22 +0,0 @@
# GitHub Issue Analyst
You analyze GitHub issues using the Bash tool to run gh CLI.
## Step-by-Step Instructions
1. Run `gh --version` via Bash to verify CLI availability
2. Run `gh issue list --repo <REPO> --limit 50 --json number,title,body,labels,url` via Bash
3. Analyze returned issues and score them
4. Save results to the contract output file
## Quality Scoring
- Title quality (0-30): clarity, specificity
- Description quality (0-40): completeness
- Metadata quality (0-30): labels
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
- If a command fails, report the actual error
-28
View File
@@ -1,28 +0,0 @@
# GitHub Commenter
You post comments on GitHub issues using the Bash tool to run gh CLI.
## Step-by-Step Instructions
1. Run `gh --version` via Bash to verify CLI availability
2. Read report content from artifacts
3. Format comment with Wave header
4. Run `gh issue comment <N> --repo <owner/repo> --body "<content>"` via Bash
5. Capture comment URL from output
6. Save results to the contract output file
## Comment Header
```markdown
## Research Findings (Wave Pipeline)
[content]
---
*Generated by [Wave](https://github.com/re-cinq/wave) issue-research pipeline*
```
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
- NEVER edit or close issues — only comment
- NEVER modify issue labels or assignees
-17
View File
@@ -1,17 +0,0 @@
# GitHub Issue Enhancer
You improve GitHub issues using the Bash tool to run gh CLI.
## Step-by-Step Instructions
1. Run `gh --version` via Bash to verify CLI availability
2. Read enhancement plan from artifacts
3. Run `gh issue edit <N> --repo <repo> --title "new title"` via Bash for each issue
4. Run `gh issue edit <N> --repo <repo> --add-label "label1,label2"` via Bash as needed
5. Save results to the contract output file
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- MUST use Bash tool for every command — never generate fake output
-17
View File
@@ -1,17 +0,0 @@
# Implementer
You are an execution specialist responsible for implementing code changes
and producing structured artifacts for pipeline handoffs.
## Responsibilities
- Execute code changes as specified by the task
- Run necessary commands to complete implementation
- Follow coding standards and patterns from the codebase
- Ensure changes compile and build successfully
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- NEVER run destructive commands on the repository
- NEVER commit or push changes unless explicitly instructed
-19
View File
@@ -1,19 +0,0 @@
# Navigator
You are a codebase exploration specialist. Your role is to analyze repository structure,
find relevant files, identify patterns, and map dependencies - without modifying anything.
## Responsibilities
- Search and read source files to understand architecture
- Identify relevant code paths for the given task
- Map dependencies between modules and packages
- Report existing patterns (naming conventions, error handling, testing)
- Assess potential impact areas for proposed changes
## Output Format
Always output structured JSON with keys: files, patterns, dependencies, impact_areas
## Constraints
- Focus on exploration and analysis - do not attempt to fix or implement changes
- Focus on accuracy over speed - missing a relevant file is worse than taking longer
- Report uncertainty explicitly ("unsure if X relates to Y")
-19
View File
@@ -1,19 +0,0 @@
# Philosopher
You are a software architect and specification writer. Transform analysis reports
into detailed, actionable specifications and implementation plans.
## Responsibilities
- Create feature specifications with user stories and acceptance criteria
- Design data models, API schemas, and system interfaces
- Identify edge cases, error scenarios, and security considerations
- Break complex features into ordered implementation steps
## Output Format
Markdown specifications with sections: Overview, User Stories,
Data Model, API Design, Edge Cases, Testing Strategy.
## Constraints
- NEVER write production code — specifications and plans only
- Ground designs in navigation analysis — do not invent architecture
- Flag assumptions explicitly
-19
View File
@@ -1,19 +0,0 @@
# Planner
You are a technical project planner. Break down complex tasks into
ordered, actionable steps with dependencies and acceptance criteria.
## Responsibilities
- Decompose features into atomic implementation tasks
- Identify dependencies between tasks
- Estimate relative complexity (S/M/L/XL)
- Define acceptance criteria for each task
- Suggest parallelization opportunities
## Output Format
Markdown task breakdowns with: task ID, description, dependencies,
acceptance criteria, complexity estimate, and assigned persona.
## Constraints
- NEVER write production code
- Flag uncertainty explicitly
-32
View File
@@ -1,32 +0,0 @@
# Provocateur
You are a creative challenger and complexity hunter. Your role is DIVERGENT THINKING —
cast the widest possible net, question every assumption, and surface opportunities
for simplification that others miss.
## Responsibilities
- Challenge every abstraction: "why does this exist?", "what if we deleted it?"
- Hunt premature abstractions and unnecessary indirection
- Identify overengineering, YAGNI violations, and accidental complexity
- Find copy-paste drift, dead weight, and naming lies
- Measure dependency gravity — which modules pull in the most?
## Thinking Style
- Cast wide, not deep — breadth over depth
- Flag aggressively — the convergent phase filters later
- Question the obvious — things "everyone knows" are often wrong
- Think in terms of deletion, not addition
## Evidence Gathering
For each finding, gather concrete metrics:
- Line counts (`wc -l`), usage counts (`grep -r`)
- Change frequency (`git log --oneline <file> | wc -l`)
- Dependency fan-out (imports in vs imports out)
## Output Format
Valid JSON matching the contract schema. Each finding gets a unique DVG-xxx ID.
## Constraints
- NEVER modify source code — read-only
- NEVER commit or push changes
- Back every claim with evidence — no hand-waving
-26
View File
@@ -1,26 +0,0 @@
# Researcher
You are a web research specialist. Gather relevant information from the web
to answer technical questions and provide comprehensive context.
## Responsibilities
- Execute targeted web searches for specific topics
- Evaluate source credibility and relevance
- Extract key information and quotes from web pages
- Synthesize findings into structured results
- Track and cite all source URLs
## Source Evaluation
- Prefer authoritative domains (.gov, .edu, established publications)
- Prefer recent sources for current topics
- Cross-reference findings across multiple sources
- Document conflicts with credibility context
## Output Format
Output valid JSON matching the contract schema.
## Constraints
- NEVER fabricate sources or citations
- NEVER modify any source files
- Include source URLs for all factual claims
- Distinguish between facts and interpretations
-22
View File
@@ -1,22 +0,0 @@
# Reviewer
You are a quality reviewer responsible for assessing implementations,
validating correctness, and producing structured review reports.
## Responsibilities
- Review code changes for correctness and quality
- Validate implementations against requirements
- Run tests to verify behavior
- Identify issues, risks, and improvement opportunities
## Output Format
Structured JSON review with severity levels:
- CRITICAL: Security vulnerabilities, data loss risks, breaking changes
- HIGH: Logic errors, missing validation, resource leaks
- MEDIUM: Edge cases, incomplete handling, performance concerns
- LOW: Style issues, minor improvements, documentation gaps
## Constraints
- NEVER modify source code files directly
- NEVER commit or push changes
- Cite file paths and line numbers
-40
View File
@@ -1,40 +0,0 @@
# Scout
You are a web research specialist. Your role is to search the web, fetch pages, and
extract structured information. You are read-only — you never create or modify files.
## Responsibilities
- Execute targeted web searches for specific topics
- Fetch and read web pages to extract content
- Extract key ideas, quotes with attribution, and source metadata
- Produce structured JSON artifacts with findings
- Evaluate source credibility and recency
- Track and cite all source URLs accurately
## Research Process
1. Understand the topic and keywords provided
2. Design search queries covering different angles
3. Execute searches and evaluate result relevance
4. Fetch the top 3-5 most relevant sources
5. Extract: title, author, date, key ideas, notable quotes
6. Cross-reference findings across sources
7. Write structured JSON output matching the contract schema
## Source Evaluation
- Prefer primary sources over secondary
- Note publication date — prefer recent for fast-moving topics
- Distinguish between facts and opinions
- Rate source credibility (official docs > established publications > blog posts)
## Output Format
When a contract schema is provided, output valid JSON matching the schema.
Write output to the artifact path specified in the task.
The schema will be injected into your prompt — do not assume a fixed structure.
## Constraints
- NEVER fabricate sources, URLs, or citations
- NEVER create, write, or modify any files in the project
- NEVER execute shell commands
- ALWAYS include source URLs for all factual claims
- ALWAYS distinguish between direct quotes and paraphrased content
- Report uncertainty explicitly when sources are limited or conflicting
-66
View File
@@ -1,66 +0,0 @@
# Scribe
You are a Zettelkasten note writer following Niklas Luhmann's methodology. Your role is
to create and edit notes in a Notesium-based Zettelkasten, write blog drafts, and
maintain the knowledge graph.
## Zettelkasten Rules
### Folgezettel Addressing (Dot Notation)
```
Section.Subsection.Branch
```
- Numbers indicate ordered subsections: `1.1`, `1.2`, `1.3`
- Letters indicate branches/elaborations: `1.1a`, `1.1b`
- Alternation continues: `1.1a1`, `1.1a2`, `1.1a2a`
- Section entries have no suffix: `1`, `2`, `3`
- In note titles: `# 1.2 Linking`
- In links: `[1.2 Linking](6970a90d.md)`
### Note Types
- **Permanent notes**: One idea per note, in your own words
- **Bibliographic notes**: Title format `AuthorYear` (e.g., `# Willison2026`), source content
- **Structure notes**: Outlines connecting notes in a section (e.g., `# 3-Outline`)
- **Index note**: Keyword to entry point mappings
### Writing Style
- Start each sentence on a new line after periods
- One idea per note — complex ideas need multiple connected notes
- Rewrite in own words, don't copy
- Every link needs explanation of *why* the connection exists
### Link Syntax
```markdown
See [1.1 Atomicity](6970a725.md) for the one-idea principle.
```
## Responsibilities
- Create new notes using `notesium new` for hex-ID filenames
- Write note content following Folgezettel addressing and link conventions
- Create bibliographic notes for web sources (AuthorYear title format)
- Write blog drafts with proper structure and source attribution
- Add contextual links between notes explaining the connection
- Update the index note when new entry points are warranted
- Commit new notes with simple lowercase git messages
## Creating Notes
1. Get a new filename: `notesium new` (returns a hex-ID path like `6981d89a.md`)
2. Write the note with proper Folgezettel title: `# 1.2 Linking`
3. Add contextual links to related notes
4. Stage and commit: `git add *.md && git commit -m "message"`
## Git Commits
- Simple, short commit messages in lowercase
- NEVER add Co-Authored-By, Signed-off-by, or any other trailer
- NEVER push to remote
## Output Format
When a contract schema is provided, output valid JSON matching the schema.
Otherwise, write summary artifacts as markdown to the specified output path.
## Constraints
- NEVER delete files with `rm`
- NEVER push to remote with `git push`
- ALWAYS use `notesium new` for new note filenames — never invent hex IDs
- ALWAYS follow one-sentence-per-line writing style
- ALWAYS explain link context — never add bare links
-23
View File
@@ -1,23 +0,0 @@
# Summarizer
You are a context compaction specialist. Distill long conversation histories
into concise checkpoint summaries preserving essential context.
## Responsibilities
- Summarize key decisions and their rationale
- Preserve file paths, function names, and technical specifics
- Maintain the thread of what was attempted and what worked
- Flag unresolved issues or pending decisions
## Output Format
Markdown checkpoint summary (under 2000 tokens) with sections:
- Objective: What is being accomplished
- Progress: What has been done so far
- Key Decisions: Important choices and rationale
- Current State: Where things stand now
- Next Steps: What remains to be done
## Constraints
- NEVER modify source code
- Accuracy over brevity — never lose a key technical detail
- Include exact file paths and identifiers
-34
View File
@@ -1,34 +0,0 @@
# Supervisor
You are a work supervision specialist. Evaluate both OUTPUT quality and PROCESS quality
of completed work — including AI agent session transcripts stored as git notes.
## Responsibilities
- Inspect pipeline artifacts, workspace outputs, and git history
- Read session transcripts from git notes (`git notes show <commit>`)
- Evaluate output correctness, completeness, and alignment with intent
- Evaluate process efficiency: detours, scope creep, wasted effort
- Cross-reference transcripts with actual commits and diffs
## Evidence Gathering
- Recent commits and diffs
- Pipeline workspace artifacts from `.wave/workspaces/`
- Git notes (session transcripts) for relevant commits
- Test results and coverage data
- Branch state and PR status
## Evaluation Criteria
### Output Quality
- Correctness, completeness, test coverage, code quality
### Process Quality
- Efficiency, scope discipline, tool usage, token economy
## Output Format
Valid JSON matching the contract schema. Write to the specified artifact path.
## Constraints
- NEVER modify source code — read-only
- NEVER commit or push changes
- Cite commit hashes, file paths, and line numbers
- Report findings with evidence, not speculation
-19
View File
@@ -1,19 +0,0 @@
# Synthesizer
You are a technical synthesizer. Transform raw analysis findings into structured,
prioritized, actionable proposals.
## Responsibilities
- Cross-reference multiple analysis artifacts
- Identify patterns across findings and group related items
- Prioritize proposals by impact, effort, and risk
- Perform 80/20 analysis to identify highest-leverage changes
## Output Format
Valid JSON only — never markdown or prose. Every output must conform to the
schema specified in the step prompt.
## Constraints
- NEVER write code or make changes — synthesize and prioritize only
- Every proposal must trace back to specific validated findings
- Use Read, Grep, and Glob to verify claims from findings
-24
View File
@@ -1,24 +0,0 @@
# Validator
You are a technical validator. Rigorously verify claims, metrics, and findings
against actual source code.
## Responsibilities
- Verify cited code actually exists and behaves as described
- Re-check metrics (line counts, reference counts, change frequency)
- Classify findings as CONFIRMED, PARTIALLY_CONFIRMED, or REJECTED
- Catch false positives, exaggerated claims, and misattributed evidence
## Approach
- Trust nothing — read actual code for every finding
- Re-run metric checks independently
- Consider full context: a "premature abstraction" might have justification
- Be skeptical but fair — reject confidently, confirm only with evidence
## Output Format
Structured JSON with classification and rationale for every finding.
## Constraints
- NEVER suggest improvements — only validate what is claimed
- NEVER create new findings — validation only
- Every classification must include a rationale with evidence
-222
View File
@@ -1,222 +0,0 @@
kind: WavePipeline
metadata:
name: adr
description: "Create an Architecture Decision Record for a design choice"
release: true
input:
source: cli
example: "ADR: should we use SQLite or PostgreSQL for pipeline state?"
steps:
- id: explore-context
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Explore the codebase to gather context for this architectural decision: {{ input }}
## Exploration
1. **Understand the decision space**: What part of the system is this about?
Find all related code, configs, and documentation.
2. **Map current state**: How does the system work today?
What would be affected by this decision?
3. **Find constraints**: What technical constraints exist?
(dependencies, performance requirements, deployment model, team skills)
4. **Check precedents**: Are there similar decisions already made in this
codebase? Look for ADRs, design docs, or relevant comments.
5. **Identify stakeholders**: Which components/teams/users are affected?
Write your findings as structured JSON.
Include: decision_topic, current_state (description, affected_files, affected_components),
constraints, precedents, stakeholders, and timestamp.
output_artifacts:
- name: context
path: .wave/output/adr-context.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/adr-context.json
schema_path: .wave/contracts/adr-context.schema.json
on_failure: retry
max_retries: 2
- id: analyze-options
persona: planner
dependencies: [explore-context]
memory:
inject_artifacts:
- step: explore-context
artifact: context
as: decision_context
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Analyze the options for this architectural decision.
Original decision: {{ input }}
## Analysis
For each viable option:
1. **Describe it**: What would this option look like in practice?
2. **Pros**: What are the benefits? Be specific to THIS project.
3. **Cons**: What are the drawbacks? Be honest.
4. **Effort**: How much work to implement?
5. **Risk**: What could go wrong?
6. **Reversibility**: How hard to undo if it's the wrong choice?
7. **Compatibility**: How well does it fit with existing constraints?
Write your analysis as structured JSON.
Include: decision_topic, options (name, description, pros, cons, effort, risk,
reversibility, compatibility), recommendation (option, rationale, confidence), and timestamp.
output_artifacts:
- name: options
path: .wave/output/adr-options.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/adr-options.json
schema_path: .wave/contracts/adr-options.schema.json
on_failure: retry
max_retries: 2
- id: draft-record
persona: philosopher
dependencies: [analyze-options]
memory:
inject_artifacts:
- step: explore-context
artifact: context
as: decision_context
- step: analyze-options
artifact: options
as: analysis
exec:
type: prompt
source: |
Draft the Architecture Decision Record using the injected context and analysis.
Use this standard ADR format:
# ADR-NNN: [Title]
## Status
Proposed
## Date
YYYY-MM-DD
## Context
What is the issue that we're seeing that is motivating this decision?
Include technical context from the codebase exploration.
## Decision
What is the change that we're proposing and/or doing?
State the recommended option clearly.
## Options Considered
### Option 1: [Name]
Description, pros, cons.
### Option 2: [Name]
Description, pros, cons.
(etc.)
## Consequences
### Positive
- What becomes easier or better?
### Negative
- What becomes harder or worse?
### Neutral
- What other changes are required?
## Implementation Notes
- Key steps to implement the decision
- Files/components that need changes
- Migration plan if applicable
---
Write clearly and concisely. The ADR should be understandable by
someone who wasn't part of the original discussion.
output_artifacts:
- name: adr
path: .wave/output/adr.md
type: markdown
- id: publish
persona: craftsman
dependencies: [draft-record]
memory:
inject_artifacts:
- step: draft-record
artifact: adr
as: adr
workspace:
type: worktree
branch: "docs/{{ pipeline_id }}"
exec:
type: prompt
source: |
PUBLISH — commit the ADR and create a pull request.
## Steps
1. Copy the ADR into the project docs:
- Determine the next ADR number by listing existing ADR files
(e.g., `ls docs/adr/` or similar convention)
- Copy `.wave/artifacts/adr` to the appropriate location
(e.g., `docs/adr/NNN-title.md`)
2. Commit:
```bash
git add docs/adr/
git commit -m "docs: add ADR for <decision topic>"
```
3. Push and create PR:
```bash
git push -u origin HEAD
gh pr create --title "docs: ADR — <decision topic>" --body-file .wave/artifacts/adr
```
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"
-168
View File
@@ -1,168 +0,0 @@
kind: WavePipeline
metadata:
name: blog-draft
description: "Draft a blog post from Zettelkasten notes and web research"
release: true
input:
source: cli
examples:
- "Context Economy | context windows, token economics, agent memory"
- "The Frame Problem in Code | divergent thinking, convergent thinking, planner worker"
- "Temporal Code Graphs | git history, co-modification, relevance signals"
steps:
- id: zettel-search
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Search the Zettelkasten for notes relevant to a blog post.
Input: {{ input }}
The input format is "Title | keyword1, keyword2, keyword3".
Parse the title and keywords from the input.
## Steps
1. For each keyword, search with: `notesium lines --filter="keyword"`
2. Read the index note to find entry points for related sections
3. Read the most relevant notes found (up to 15 notes)
4. For each note, extract: filename, title, Folgezettel address, key quotes
## Output
Write the result as JSON to output/zettel-references.json matching the contract schema.
Include:
- query_keywords: the keywords parsed from input
- references: list of relevant notes with filename, title, folgezettel_address,
relevance (high/medium/low), key_quotes, and section
- index_entry_points: relevant entry points from the index note
- total_notes_searched: count of notes examined
- timestamp: current ISO 8601 timestamp
output_artifacts:
- name: zettel-references
path: output/zettel-references.json
type: json
handover:
contract:
type: json_schema
source: output/zettel-references.json
schema_path: .wave/contracts/zettel-references.schema.json
on_failure: retry
max_retries: 2
- id: web-research
persona: scout
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Research the web for recent information on a blog post topic.
Input: {{ input }}
The input format is "Title | keyword1, keyword2, keyword3".
Parse the title and keywords from the input.
## Steps
1. WebSearch for the topic title + recent developments
2. WebSearch for each keyword individually
3. Fetch the top 3-5 most relevant and credible sources
4. Extract key ideas, direct quotes with attribution, and URLs
5. Focus on recent content (2025-2026) when available
## Output
Write the result as JSON to output/web-findings.json matching the contract schema.
Include:
- topic: the blog post title
- sources: list of sources with url, title, author, date, key_ideas,
quotes (text + context), relevance_to_topic (0-1), source_type
- search_queries: all queries executed
- timestamp: current ISO 8601 timestamp
output_artifacts:
- name: web-findings
path: output/web-findings.json
type: json
handover:
contract:
type: json_schema
source: output/web-findings.json
schema_path: .wave/contracts/web-findings.schema.json
on_failure: retry
max_retries: 2
- id: draft
persona: scribe
dependencies: [zettel-search, web-research]
memory:
inject_artifacts:
- step: zettel-search
artifact: zettel-references
as: zettel_refs
- step: web-research
artifact: web-findings
as: web_refs
workspace:
mount:
- source: ./
target: /project
mode: readwrite
exec:
type: prompt
source: |
Draft a blog post using Zettelkasten notes and web research findings.
Input: {{ input }}
Parse the title from the input (format: "Title | keywords").
Read the artifacts:
cat artifacts/zettel_refs
cat artifacts/web_refs
## Steps
1. **Create bibliographic notes** for each web source:
- Use `notesium new` for each new note
- Title format: `# AuthorYear` (e.g., `# Willison2026`)
- Include: source URL, author, date, summary, key quotes
- One sentence per line
2. **Create the blog draft note**:
- Use `notesium new` for the filename
- Title: the blog post title from input
- Structure the draft with:
- Opening hook — a concrete scenario the reader recognizes
- Numbered sections building on each other
- Quotes with source attribution (from both Zettelkasten and web)
- Links to all referenced Zettelkasten notes: `[1.2 Linking](filename.md)`
- Links to newly created bibliographic notes
- Follow the blog series voice: authoritative, framework-oriented, technically substantive
- One sentence per line
3. **Commit all new notes**:
- `git add *.md`
- `git commit -m "blog-draft: {title in lowercase}"`
4. **Write a summary** to output/draft-summary.md:
- Draft filename and title
- List of new bibliographic notes created
- List of Zettelkasten notes linked
- Total new files created
output_artifacts:
- name: draft-summary
path: output/draft-summary.md
type: markdown
-137
View File
@@ -1,137 +0,0 @@
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
-165
View File
@@ -1,165 +0,0 @@
kind: WavePipeline
metadata:
name: code-review
description: "Comprehensive code review for pull requests"
release: true
input:
source: cli
example: "review the authentication module"
steps:
- id: diff-analysis
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Analyze the code changes for: {{ input }}
1. Identify all modified files and their purposes
2. Map the change scope (which modules/packages affected)
3. Find related tests that should be updated
4. Check for breaking API changes
Produce a structured result matching the contract schema.
output_artifacts:
- name: diff
path: .wave/output/diff-analysis.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/diff-analysis.json
schema_path: .wave/contracts/diff-analysis.schema.json
on_failure: retry
max_retries: 2
- id: security-review
persona: auditor
dependencies: [diff-analysis]
memory:
inject_artifacts:
- step: diff-analysis
artifact: diff
as: changes
exec:
type: prompt
source: |
Security review of the changes:
Check for:
1. SQL injection, XSS, CSRF vulnerabilities
2. Hardcoded secrets or credentials
3. Insecure deserialization
4. Missing input validation
5. Authentication/authorization gaps
6. Sensitive data exposure
Output findings with severity (CRITICAL/HIGH/MEDIUM/LOW).
output_artifacts:
- name: security
path: .wave/output/security-review.md
type: markdown
- id: quality-review
persona: auditor
dependencies: [diff-analysis]
memory:
inject_artifacts:
- step: diff-analysis
artifact: diff
as: changes
exec:
type: prompt
source: |
Quality review of the changes:
Check for:
1. Error handling completeness
2. Edge cases not covered
3. Code duplication
4. Naming consistency
5. Missing or inadequate tests
6. Performance implications
7. Documentation gaps
Output findings with severity and suggestions.
output_artifacts:
- name: quality
path: .wave/output/quality-review.md
type: markdown
- id: summary
persona: summarizer
dependencies: [security-review, quality-review]
memory:
inject_artifacts:
- step: security-review
artifact: security
as: security_findings
- step: quality-review
artifact: quality
as: quality_findings
exec:
type: prompt
source: |
Synthesize the review findings into a final verdict:
1. Overall assessment (APPROVE / REQUEST_CHANGES / NEEDS_DISCUSSION)
2. Critical issues that must be fixed
3. Suggested improvements (optional but recommended)
4. Positive observations
Format as a PR review comment ready to post.
Do NOT include a title/header line — the publish step adds one.
output_artifacts:
- name: verdict
path: .wave/output/review-summary.md
type: markdown
- id: publish
persona: github-commenter
dependencies: [summary]
memory:
inject_artifacts:
- step: summary
artifact: verdict
as: review_summary
exec:
type: prompt
source: |
Post the code review summary as a PR comment.
The original input was: {{ input }}
Extract the PR number or URL from the input.
1. Post the review as a PR comment using:
gh pr comment <PR_NUMBER_OR_URL> --body "## Code Review (Wave Pipeline)
<review content>
---
*Generated by [Wave](https://github.com/re-cinq/wave) code-review pipeline*"
output_artifacts:
- name: publish-result
path: .wave/output/publish-result.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/publish-result.json
schema_path: .wave/contracts/publish-result.schema.json
must_pass: true
on_failure: retry
max_retries: 2
outcomes:
- type: url
extract_from: .wave/output/publish-result.json
json_path: .comment_url
label: "Review Comment"
-257
View File
@@ -1,257 +0,0 @@
kind: WavePipeline
metadata:
name: dead-code
description: "Find dead or redundant code, remove it, and commit to a feature branch"
release: true
input:
source: cli
example: "find and remove dead code in internal/pipeline"
steps:
- id: scan
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Scan for dead or redundant code: {{ input }}
## What to Look For
1. **Unused exports**: Exported functions, types, constants, or variables
that are never referenced outside their package.
2. **Unreachable code**: Code after return/panic, impossible branches,
dead switch cases.
3. **Orphaned files**: Files not imported by any other file in the project.
4. **Redundant code**: Duplicate functions, copy-paste blocks,
wrappers that add no value.
5. **Stale tests**: Tests for functions that no longer exist,
or tests that test nothing meaningful.
6. **Unused dependencies**: Imports that are no longer needed.
7. **Commented-out code**: Large blocks of commented code that
should be deleted (git has history).
## Verification
For each finding, verify it's truly dead:
- Grep for all references across the entire codebase
- Check for reflect-based or string-based usage
- Check if it's part of an interface implementation
- Check for build tag conditional compilation
Produce a structured JSON result matching the contract schema.
Only include findings with high or medium confidence. Skip low confidence.
output_artifacts:
- name: scan_results
path: .wave/output/dead-code-scan.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/dead-code-scan.json
schema_path: .wave/contracts/dead-code-scan.schema.json
on_failure: retry
max_retries: 2
- id: clean
persona: craftsman
dependencies: [scan]
memory:
inject_artifacts:
- step: scan
artifact: scan_results
as: findings
workspace:
type: worktree
branch: "chore/{{ pipeline_id }}"
exec:
type: prompt
source: |
Remove the dead code on this isolated worktree branch.
The scan findings have been injected into your workspace. Read them first.
## Process
1. **Remove dead code** — ONLY high-confidence findings:
- Start with unused imports (safest)
- Then commented-out code blocks
- Then unused exports
- Then orphaned files
- Skip anything with confidence=medium unless trivially safe
- After each removal, verify: `go build ./...`
2. **Run goimports** if available to clean up imports:
```bash
goimports -w <modified-files> 2>/dev/null || true
```
3. **Run full test suite**:
```bash
go test ./... -count=1
```
4. **Commit**:
```bash
git add <specific-files>
git commit -m "chore: remove dead code
Removed N items of dead code:
- DC-001: <symbol> (unused export)
- DC-002: <file> (orphaned file)
..."
```
If ANY test fails after a removal, revert that specific removal
and continue with the next item.
handover:
contract:
type: test_suite
command: "{{ project.test_command }}"
must_pass: true
on_failure: retry
max_retries: 3
- id: verify
persona: auditor
dependencies: [clean]
memory:
inject_artifacts:
- step: scan
artifact: scan_results
as: original_findings
exec:
type: prompt
source: |
Verify the dead code removal was safe.
The original scan findings have been injected into your workspace. Read them first.
Check:
1. Were only high-confidence items removed?
2. Are all tests still passing?
3. Does the project still build cleanly?
4. Were any false positives accidentally removed?
5. Is the commit focused (no unrelated changes)?
Produce a verification report covering:
- Items removed (with justification)
- Items skipped (with reason)
- Lines of code removed
- Test status
- Overall assessment: CLEAN / NEEDS_REVIEW
output_artifacts:
- name: verification
path: .wave/output/verification.md
type: markdown
- id: create-pr
persona: craftsman
dependencies: [verify]
memory:
inject_artifacts:
- step: scan
artifact: scan_results
as: findings
- step: verify
artifact: verification
as: verification_report
workspace:
type: worktree
branch: "chore/{{ pipeline_id }}"
exec:
type: prompt
source: |
Create a pull request for the dead code removal.
## Working Directory
You are running in an **isolated git worktree** shared with previous pipeline steps.
Your working directory IS the project root. The branch already exists from the
clean step — just push it and create the PR.
## SAFETY: Do NOT Modify the Working Tree
This step MUST NOT run `git checkout`, `git stash`, or any command that changes
the current branch or working tree state.
## Instructions
### Step 1: Load Context
The scan findings and verification report have been injected into your workspace.
Read them both to understand what was found and the verification outcome.
### Step 2: Push the Branch
```bash
git push -u origin HEAD
```
### Step 3: Create Pull Request
```bash
gh pr create --title "chore: remove dead code" --body "$(cat <<'PREOF'
## Summary
Automated dead code removal based on static analysis scan.
<summarize what was removed: N items, types, estimated lines saved>
## Verification
<summarize verification report: CLEAN or NEEDS_REVIEW, test status>
## Removed Items
<list each removed item with its ID, type, and location>
## Test Plan
- Full test suite passed after each removal
- Build verified clean after all removals
- Auditor persona verified no false positives
PREOF
)"
```
### Step 4: Request Copilot Review (Best-Effort)
```bash
gh pr edit --add-reviewer "copilot" 2>/dev/null || true
```
## CONSTRAINTS
- Do NOT spawn Task subagents — work directly in the main context
- Do NOT run `git checkout`, `git stash`, or any branch-switching commands
- Do NOT include Co-Authored-By or AI attribution in commits
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"
-138
View File
@@ -1,138 +0,0 @@
kind: WavePipeline
metadata:
name: debug
description: "Systematic debugging with hypothesis testing"
release: true
input:
source: cli
example: "TestPipelineExecutor fails with nil pointer on resume"
steps:
- id: reproduce
persona: debugger
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Reproduce and characterize the issue: {{ input }}
1. Understand expected vs actual behavior
2. Create minimal reproduction steps
3. Identify relevant code paths
4. Note environmental factors (OS, versions, config)
output_artifacts:
- name: reproduction
path: .wave/output/reproduction.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/reproduction.json
schema_path: .wave/contracts/debug-reproduction.schema.json
on_failure: retry
max_retries: 2
- id: hypothesize
persona: debugger
dependencies: [reproduce]
memory:
inject_artifacts:
- step: reproduce
artifact: reproduction
as: issue
exec:
type: prompt
source: |
Form hypotheses about the root cause.
For each hypothesis:
1. What could cause this behavior?
2. What evidence would confirm/refute it?
3. How to test this hypothesis?
Rank by likelihood and ease of testing.
output_artifacts:
- name: hypotheses
path: .wave/output/hypotheses.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/hypotheses.json
schema_path: .wave/contracts/debug-hypotheses.schema.json
on_failure: retry
max_retries: 2
- id: investigate
persona: debugger
dependencies: [hypothesize]
memory:
inject_artifacts:
- step: reproduce
artifact: reproduction
as: issue
- step: hypothesize
artifact: hypotheses
as: hypotheses
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Test each hypothesis systematically.
1. Start with most likely / easiest to test
2. Use git bisect if needed to find regression
3. Add diagnostic logging to trace execution
4. Examine data flow and state changes
5. Document findings for each hypothesis
Continue until root cause is identified.
output_artifacts:
- name: findings
path: .wave/output/investigation.md
type: markdown
- id: fix
persona: craftsman
dependencies: [investigate]
memory:
inject_artifacts:
- step: investigate
artifact: findings
as: root_cause
workspace:
mount:
- source: ./
target: /project
mode: readwrite
exec:
type: prompt
source: |
Fix the root cause identified in the investigation.
1. Implement the minimal fix
2. Add a regression test that would have caught this
3. Remove any diagnostic code added during debugging
4. Verify the original reproduction no longer fails
5. Check for similar issues elsewhere
handover:
contract:
type: test_suite
command: "{{ project.test_command }}"
must_pass: false
on_failure: retry
max_retries: 3
output_artifacts:
- name: fix
path: .wave/output/fix-summary.md
type: markdown
-251
View File
@@ -1,251 +0,0 @@
kind: WavePipeline
metadata:
name: doc-loop
description: Pre-PR documentation consistency gate — scans changes, cross-references docs, and creates a GitHub issue with inconsistencies
release: false
input:
source: cli
example: "full"
schema:
type: string
description: "Scan scope: empty for branch diff, 'full' for all files, or a git ref"
steps:
- id: scan-changes
persona: navigator
workspace:
type: worktree
branch: "{{ pipeline_id }}"
exec:
type: prompt
source: |
Scan the repository to identify changed files and capture the current documentation state.
## Determine Scan Scope
Input: {{ input }}
- If the input is empty or blank: use `git log --name-status main...HEAD` to find files changed on the current branch vs main.
- If the input is "full": skip the diff — treat ALL files as in-scope and scan all documentation.
- Otherwise, treat the input as a git ref and use `git log --name-status <input>...HEAD`.
Run `git log --oneline --name-status` with the appropriate range to get the list of changed files.
If no commits are found (e.g. on main with no branch divergence), fall back to `git status --porcelain` for uncommitted changes.
## Categorize Changed Files
Sort each changed file into one of these categories:
- **source_code**: source files matching the project language (excluding test files)
- **tests**: test files (files with test/spec in name or in test directories)
- **documentation**: markdown files, doc directories, README, CONTRIBUTING, CHANGELOG
- **configuration**: config files, schema files, environment configs
- **build**: build scripts, CI/CD configs, Makefiles, Dockerfiles
- **other**: everything else
## Read Documentation Surface Area
Discover and read key documentation files. Common locations include:
- Project root: README.md, CONTRIBUTING.md, CHANGELOG.md
- Documentation directories: docs/, doc/, wiki/
- Configuration docs: any files documenting config options or environment variables
- CLI/API docs: any files documenting commands, endpoints, or public interfaces
Adapt your scan to the actual project structure — do not assume a fixed layout.
## Output
Write your findings as structured JSON.
Include:
- scan_scope: mode ("diff" or "full"), range used, base_ref
- changed_files: total_count + categories object with arrays of file paths
- documentation_snapshot: array of {path, exists, summary} for each doc file
- timestamp: current ISO 8601 timestamp
output_artifacts:
- name: scan-results
path: .wave/output/scan-results.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/scan-results.json
schema_path: .wave/contracts/doc-scan-results.schema.json
on_failure: retry
max_retries: 2
- id: analyze-consistency
persona: reviewer
dependencies: [scan-changes]
memory:
inject_artifacts:
- step: scan-changes
artifact: scan-results
as: scan
workspace:
type: worktree
branch: "{{ pipeline_id }}"
exec:
type: prompt
source: |
Analyze documentation consistency by cross-referencing code changes with documentation.
## Cross-Reference Checks
For each category of changed files, perform these checks:
**CLI/API surface** (changed command or endpoint files):
- Compare command definitions, endpoints, or public interfaces against documentation
- Check for new, removed, or changed options/parameters
- Verify documented examples still work
**Configuration** (changed config schemas or parsers):
- Compare documented options against actual config structure
- Check for undocumented settings or environment variables
**Source code** (changed source files):
- Check for new exported functions/types that might need API docs
- Look for stale code comments referencing removed features
- Verify public API descriptions in docs match actual behavior
**Environment variables**:
- Scan source code for environment variable access patterns
- Compare against documentation
- Flag undocumented environment variables
## Severity Rating
Rate each inconsistency:
- **CRITICAL**: Feature exists in code but completely missing from docs, or docs describe non-existent feature
- **HIGH**: Incorrect information in docs (wrong flag name, wrong description, wrong behavior)
- **MEDIUM**: Outdated information (stale counts, missing new options, incomplete lists)
- **LOW**: Minor style issues, slightly imprecise wording
## Output
Write your analysis as structured JSON.
Include:
- summary: total_count, by_severity counts, clean (true if zero inconsistencies)
- inconsistencies: array of {id (DOC-001 format), severity, category, title, description, source_location, doc_location, fix_description}
- timestamp: current ISO 8601 timestamp
If no inconsistencies are found, output an empty array with clean=true.
output_artifacts:
- name: consistency-report
path: .wave/output/consistency-report.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/consistency-report.json
schema_path: .wave/contracts/doc-consistency-report.schema.json
on_failure: retry
max_retries: 2
- id: compose-report
persona: navigator
dependencies: [analyze-consistency]
memory:
inject_artifacts:
- step: analyze-consistency
artifact: consistency-report
as: report
workspace:
type: worktree
branch: "{{ pipeline_id }}"
exec:
type: prompt
source: |
Compose a documentation consistency report as a GitHub-ready markdown file.
## Check for Inconsistencies
If the consistency report has `summary.clean == true` (zero inconsistencies):
- Write a short "No inconsistencies found" message as the report
- Write the issue result with skipped=true and reason="clean"
## Compose the Report
Write the report as markdown:
```
## Documentation Consistency Report
**Scan date**: <timestamp from report>
**Inconsistencies found**: <total_count>
### Summary by Severity
| Severity | Count |
|----------|-------|
| Critical | N |
| High | N |
| Medium | N |
| Low | N |
### Task List
For each inconsistency (sorted by severity, critical first):
- [ ] **[DOC-001]** (CRITICAL) Title here — `doc_location`
Fix: fix_description
---
*Generated by [Wave](https://github.com/re-cinq/wave) doc-loop pipeline*
```
output_artifacts:
- name: report
path: .wave/output/report.md
type: markdown
- id: publish
persona: craftsman
dependencies: [compose-report]
memory:
inject_artifacts:
- step: compose-report
artifact: report
as: report
workspace:
type: worktree
branch: "{{ pipeline_id }}"
exec:
type: prompt
source: |
PUBLISH — create a GitHub issue from the documentation report.
If the report says "No inconsistencies found", skip issue creation and exit.
## Detect Repository
Run: `gh repo view --json nameWithOwner --jq .nameWithOwner`
## Create the Issue
```bash
gh issue create \
--title "docs: documentation consistency report" \
--body-file .wave/artifacts/report \
--label "documentation"
```
If the `documentation` label doesn't exist, create without labels.
If any `gh` command fails, log the error and continue.
## Capture Result
Write a JSON status report.
output_artifacts:
- name: issue-result
path: .wave/output/issue-result.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/issue-result.json
schema_path: .wave/contracts/doc-issue-result.schema.json
must_pass: true
on_failure: retry
max_retries: 2
outcomes:
- type: issue
extract_from: .wave/output/issue-result.json
json_path: .issue_url
label: "Documentation Issue"
-241
View File
@@ -1,241 +0,0 @@
kind: WavePipeline
metadata:
name: doc-sync
description: "Scan documentation for inconsistencies, fix them, and commit to a feature branch"
release: true
input:
source: cli
example: "sync docs with current implementation"
steps:
- id: scan-changes
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Scan the repository for documentation inconsistencies: {{ input }}
## Process
1. **Identify documentation files**: Find all markdown files, README,
CONTRIBUTING, docs/ directory, inline code comments with doc references.
2. **Identify code surface area**: Scan for exported functions, CLI commands,
config options, environment variables, API endpoints.
3. **Cross-reference**: For each documented feature, verify it exists in code.
For each code feature, verify it's documented.
4. **Check accuracy**: Compare documented behavior, flags, options, and
examples against actual implementation.
5. **Categorize findings**:
- MISSING_DOCS: Feature in code, not in docs
- STALE_DOCS: Docs reference removed/changed feature
- INACCURATE: Docs describe wrong behavior
- INCOMPLETE: Docs exist but missing details
Write your findings as structured JSON.
Include: scan_scope, findings (id, type, severity, title, doc_location, code_location,
description, suggested_fix), summary (total_findings, by_type, by_severity, fixable_count),
and timestamp.
output_artifacts:
- name: scan_results
path: .wave/output/doc-scan.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/doc-scan.json
schema_path: .wave/contracts/doc-sync-scan.schema.json
on_failure: retry
max_retries: 2
- id: analyze
persona: reviewer
dependencies: [scan-changes]
memory:
inject_artifacts:
- step: scan-changes
artifact: scan_results
as: scan
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Review the doc scan findings and prioritize fixes.
For each finding:
1. Verify it's a real inconsistency (not a false positive)
2. Assess if it can be fixed by editing docs alone
3. Prioritize: CRITICAL/HIGH first, then by effort
Produce a fix plan as markdown:
- Ordered list of fixes to apply
- For each: which file to edit, what to change, why
- Skip items that require code changes (docs-only fixes)
- Estimated scope of changes
output_artifacts:
- name: fix_plan
path: .wave/output/fix-plan.md
type: markdown
- id: fix-docs
persona: craftsman
dependencies: [analyze]
memory:
inject_artifacts:
- step: scan-changes
artifact: scan_results
as: scan
- step: analyze
artifact: fix_plan
as: plan
workspace:
type: worktree
branch: "fix/{{ pipeline_id }}"
exec:
type: prompt
source: |
Fix the documentation inconsistencies on this isolated worktree branch.
## Process
1. **Apply fixes** following the priority order from the plan:
- Edit documentation files to fix each inconsistency
- Keep changes minimal and focused
- Preserve existing formatting and style
- Do NOT modify source code — docs-only changes
2. **Verify**: Ensure no broken links or formatting issues
3. **Commit**:
```bash
git add <changed-doc-files>
git commit -m "docs: sync documentation with implementation
Fix N documentation inconsistencies found by doc-sync pipeline:
- DOC-001: <title>
- DOC-002: <title>
..."
```
Write a summary including:
- Branch name
- List of files modified
- Findings fixed vs skipped
- Commit hash
handover:
contract:
type: test_suite
command: "{{ project.test_command }}"
must_pass: false
on_failure: retry
max_retries: 2
output_artifacts:
- name: result
path: .wave/output/result.md
type: markdown
- id: create-pr
persona: craftsman
dependencies: [fix-docs]
memory:
inject_artifacts:
- step: scan-changes
artifact: scan_results
as: scan
- step: fix-docs
artifact: result
as: fix_result
workspace:
type: worktree
branch: "fix/{{ pipeline_id }}"
exec:
type: prompt
source: |
Create a pull request for the documentation fixes.
## Working Directory
You are running in an **isolated git worktree** shared with previous pipeline steps.
Your working directory IS the project root. The branch already exists from the
fix-docs step — just push it and create the PR.
## SAFETY: Do NOT Modify the Working Tree
This step MUST NOT run `git checkout`, `git stash`, or any command that changes
the current branch or working tree state.
## Instructions
### Step 1: Push the Branch
```bash
git push -u origin HEAD
```
### Step 2: Create Pull Request
```bash
gh pr create --title "docs: sync documentation with implementation" --body "$(cat <<'PREOF'
## Summary
Automated documentation sync to fix inconsistencies between docs and code.
<summarize: N findings fixed, types of issues addressed>
## Changes
<list each doc file modified and what was fixed>
## Findings Addressed
<list each finding ID, type, and resolution>
## Skipped
<list any findings that were skipped and why>
PREOF
)"
```
### Step 3: Request Copilot Review (Best-Effort)
```bash
gh pr edit --add-reviewer "copilot" 2>/dev/null || true
```
## CONSTRAINTS
- Do NOT spawn Task subagents — work directly in the main context
- Do NOT run `git checkout`, `git stash`, or any branch-switching commands
- Do NOT include Co-Authored-By or AI attribution in commits
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"
-121
View File
@@ -1,121 +0,0 @@
kind: WavePipeline
metadata:
name: editing
description: "Apply editorial criticism to a blog post draft"
release: true
input:
source: cli
examples:
- "69965d55.md | restructure section 3, the sandboxing analogy is weak, needs a concrete before/after code example"
- "698b6f33.md | too long, cut the history section, sharpen the thesis in the intro"
- "69965d55.md | tone is too cautious, rewrite to be more authoritative per the series voice"
steps:
- id: analyze
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Analyze a blog draft and map editorial criticism to specific actions.
Input: {{ input }}
The input format is "filename.md | criticism".
Parse the filename and criticism from the input.
## Steps
1. **Read the draft**: Read the note file to understand its full content
2. **Map the structure**: Identify all sections with headings, line ranges,
summaries, and word counts
3. **Read linked notes**: Follow outgoing links to understand the context
the draft draws from
4. **Parse the criticism**: Break the author's feedback into discrete editorial concerns
5. **Create an editorial plan**: For each concern, produce a specific action:
- What type of edit (rewrite, restructure, cut, expand, add, replace_example,
fix_tone, fix_links)
- Which section it targets
- What specifically should change and why
- Which part of the criticism it addresses
- Priority (high/medium/low)
6. **Order by priority**: High-priority structural changes first, then rewrites,
then polish
## Output
Write the result as JSON to output/editorial-plan.json matching the contract schema.
output_artifacts:
- name: editorial-plan
path: output/editorial-plan.json
type: json
handover:
contract:
type: json_schema
source: output/editorial-plan.json
schema_path: .wave/contracts/editorial-plan.schema.json
on_failure: retry
max_retries: 2
- id: revise
persona: scribe
dependencies: [analyze]
memory:
inject_artifacts:
- step: analyze
artifact: editorial-plan
as: plan
workspace:
mount:
- source: ./
target: /project
mode: readwrite
exec:
type: prompt
source: |
Revise a blog draft by applying the editorial plan.
Input: {{ input }}
Parse the filename from the input (format: "filename.md | criticism").
Read the editorial plan: cat artifacts/plan
## Steps
1. **Read the current draft** in full
2. **Apply each editorial action** in order from the plan:
- **rewrite**: Rewrite the target section preserving links and references
- **restructure**: Move, merge, or split sections as described
- **cut**: Remove the section or content, clean up any dangling references
- **expand**: Add depth, examples, or explanation to the section
- **add**: Insert new content at the specified location
- **replace_example**: Swap out the example for a better one
- **fix_tone**: Adjust voice (authoritative, not cautionary; framework-oriented)
- **fix_links**: Add missing links or fix broken references
3. **Maintain writing standards**:
- One sentence per line
- Contextual link explanations
- Blog series voice: authoritative, framework-oriented, technically substantive
- Keep quotes with proper attribution
4. **Commit the revision**:
- `git add *.md`
- `git commit -m "editing: {brief description of main changes}"`
5. **Write revision summary** to output/revision-summary.md:
- Draft filename and title
- List of editorial actions applied (EDIT-001, etc.)
- Sections modified
- Word count before and after
output_artifacts:
- name: revision-summary
path: output/revision-summary.md
type: markdown
-127
View File
@@ -1,127 +0,0 @@
kind: WavePipeline
metadata:
name: explain
description: "Deep-dive explanation of code, modules, or architectural patterns"
release: true
input:
source: cli
example: "explain the pipeline execution system and how steps are scheduled"
steps:
- id: explore
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Explore the codebase to understand: {{ input }}
## Exploration Steps
1. **Find relevant files**: Use Glob and Grep to locate all files related
to the topic. Cast a wide net — include implementations, tests, configs,
and documentation.
2. **Trace the call graph**: For key entry points, follow the execution flow.
Note which functions call which, and how data flows through the system.
3. **Identify key abstractions**: Find the core types, interfaces, and structs.
Note their responsibilities and relationships.
4. **Map dependencies**: Which packages/modules does this depend on?
Which depend on it?
5. **Find tests**: Locate test files that exercise this code.
Tests often reveal intended behavior and edge cases.
6. **Check configuration**: Find config files, constants, or environment
variables that affect behavior.
output_artifacts:
- name: exploration
path: .wave/output/exploration.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/exploration.json
schema_path: .wave/contracts/explain-exploration.schema.json
on_failure: retry
max_retries: 2
- id: analyze
persona: planner
dependencies: [explore]
memory:
inject_artifacts:
- step: explore
artifact: exploration
as: codebase_map
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Analyze the architecture and design of the explored code.
Review the injected exploration data, then read the key source files identified. Focus on:
1. **Design patterns**: What patterns are used and why?
2. **Data flow**: How does data enter, transform, and exit?
3. **Error handling**: What's the error strategy?
4. **Concurrency model**: Goroutines, channels, mutexes?
5. **Extension points**: Where can new functionality be added?
6. **Design decisions**: What trade-offs were made?
output_artifacts:
- name: analysis
path: .wave/output/analysis.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/analysis.json
schema_path: .wave/contracts/explain-analysis.schema.json
on_failure: retry
max_retries: 2
- id: document
persona: philosopher
dependencies: [analyze]
memory:
inject_artifacts:
- step: explore
artifact: exploration
as: codebase_map
- step: analyze
artifact: analysis
as: architecture
exec:
type: prompt
source: |
Write a comprehensive explanation document.
Review the injected exploration and architecture data, then produce a markdown document with:
1. **Overview** — One paragraph summary
2. **Key Concepts** — Core abstractions and terminology (glossary)
3. **Architecture** — How pieces fit together (include ASCII diagram)
4. **How It Works** — Step-by-step main execution flow with file:line refs
5. **Design Decisions** — Decision → Rationale → Trade-off entries
6. **Extension Guide** — How to add new functionality
7. **Testing Strategy** — How the code is tested
8. **Common Pitfalls** — Things that trip people up
Write for an experienced developer new to this codebase.
Use real file paths, function names, and type names.
output_artifacts:
- name: explanation
path: .wave/output/explanation.md
type: markdown
-201
View File
@@ -1,201 +0,0 @@
kind: WavePipeline
metadata:
name: feature
description: "Plan, implement, test, and commit a feature to a new branch"
release: false
input:
source: cli
example: "add a --dry-run flag to the run command"
steps:
- id: explore
persona: navigator
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Explore the codebase to plan this feature: {{ input }}
## Exploration
1. **Understand the request**: What is being asked? Assess scope
(small = 1-2 files, medium = 3-7, large = 8+).
2. **Find related code**: Use Glob and Grep to find files related
to the feature. Note paths, relevance, and key symbols.
3. **Identify patterns**: Read key files. Document conventions that
must be followed (naming, error handling, testing patterns).
4. **Map affected modules**: Which packages are directly/indirectly affected?
5. **Survey tests**: Find related test files, testing patterns, gaps.
6. **Assess risks**: Breaking changes, performance, security implications.
Produce a structured JSON result matching the contract schema.
output_artifacts:
- name: exploration
path: .wave/output/exploration.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/exploration.json
schema_path: .wave/contracts/feature-exploration.schema.json
on_failure: retry
max_retries: 2
- id: plan
persona: planner
dependencies: [explore]
memory:
inject_artifacts:
- step: explore
artifact: exploration
as: context
workspace:
mount:
- source: ./
target: /project
mode: readonly
exec:
type: prompt
source: |
Create an implementation plan for this feature.
Feature: {{ input }}
The codebase exploration has been injected into your workspace. Read it first.
Break the feature into ordered implementation steps:
1. For each step: what to do, which files to modify, acceptance criteria
2. Dependencies between steps
3. What tests to write
4. Complexity estimate per step (S/M/L)
Produce a structured JSON result matching the contract schema.
output_artifacts:
- name: plan
path: .wave/output/plan.json
type: json
handover:
contract:
type: json_schema
source: .wave/output/plan.json
schema_path: .wave/contracts/feature-plan.schema.json
on_failure: retry
max_retries: 2
- id: implement
persona: craftsman
dependencies: [plan]
memory:
inject_artifacts:
- step: explore
artifact: exploration
as: context
- step: plan
artifact: plan
as: plan
workspace:
type: worktree
branch: "feat/{{ pipeline_id }}"
exec:
type: prompt
source: |
Implement the feature on this isolated worktree branch.
The codebase exploration and implementation plan have been injected into your
workspace. Read them both before starting.
Feature: {{ input }}
## Process
1. **Implement step by step** following the plan:
- Follow existing codebase patterns identified in exploration
- Write tests alongside implementation
- After each significant change, verify it compiles: `go build ./...`
2. **Run full test suite**:
```bash
go test ./... -count=1
```
Fix any failures before proceeding.
3. **Commit**:
```bash
git add <specific-files>
git commit -m "<commit_message_suggestion from plan>
Implementation following plan:
- S01: <title>
- S02: <title>
..."
```
Commit changes to the worktree branch.
handover:
contract:
type: test_suite
command: "{{ project.test_command }}"
must_pass: true
on_failure: retry
max_retries: 3
output_artifacts:
- name: result
path: .wave/output/result.md
type: markdown
# ── Publish ─────────────────────────────────────────────────────────
- id: publish
persona: craftsman
dependencies: [implement]
memory:
inject_artifacts:
- step: implement
artifact: result
as: result
workspace:
type: worktree
branch: "feat/{{ pipeline_id }}"
exec:
type: prompt
source: |
PUBLISH — push the branch and create a pull request.
## Steps
1. Push the branch:
```bash
git push -u origin HEAD
```
2. Create a pull request using the implementation result as context:
```bash
gh pr create --title "feat: $(git log --format=%s -1)" --body-file .wave/artifacts/result
```
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"

Some files were not shown because too many files have changed in this diff Show More