一键导入
opencode-wave-gate
Run after wave implementation complete. Executes test + spec-check + review gate sequence. Usage: /wave-gate
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Run after wave implementation complete. Executes test + spec-check + review gate sequence. Usage: /wave-gate
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
| name | opencode-wave-gate |
| description | Run after wave implementation complete. Executes test + spec-check + review gate sequence. Usage: /wave-gate |
Executes the gate sequence after all wave tasks are implemented. Verifies test evidence, checks spec alignment, spawns code reviewers, and decides whether to advance.
Run this after all tasks in a wave are complete.
Check the spec directory for the task graph artifact (produced by decompose phase):
SPEC_DIR=$(ls -td .claude/specs/*/ | head -1)
ls "$SPEC_DIR"
Verify the wave's tasks are all marked complete in your tracking. If tracking is done via a task-graph JSON artifact on disk, read it. Otherwise, rely on the orchestrator's knowledge of what was implemented.
For each task in the current wave, confirm that:
How to verify new tests:
# Check for new test files or test methods added in this wave
BASE=$(git merge-base HEAD origin/main 2>/dev/null || echo "HEAD~10")
git diff --name-only $BASE..HEAD | grep -i test
If test evidence is missing for a task, re-spawn the implementation agent for that task. The agent MUST run tests and produce visible pass markers.
Spawn spec-check AND code reviewers in a single message with multiple Task calls.
Get wave changes:
BASE=$(git rev-parse --abbrev-ref origin/HEAD 2>/dev/null | sed 's|origin/||' || echo "main")
git diff --name-only $BASE...HEAD
Spawn ALL in parallel (single message, multiple Task calls):
## Spec Alignment Check
**Wave:** {wave}
**Tasks:** {task_ids}
Invoke /opencode-spec-check to verify implementation aligns with specification.
Output format required:
- SPEC_CHECK_WAVE: {wave}
- CRITICAL/HIGH/MEDIUM findings
- SPEC_CHECK_CRITICAL_COUNT: N
- SPEC_CHECK_VERDICT: PASSED | BLOCKED
code-reviewer — style, patterns, best practicessilent-failure-hunter — error handling, silent swallowingpr-test-analyzer — test coverage and qualitytype-design-analyzer — type safety and designcomment-analyzer — comment accuracy and completenessEach review agent gets the same prompt:
## Task: {task_id}
**Description:** {task description}
Files: {comma-separated files relevant to this task}
Task: {task_id}
Review these files and produce a Machine Summary with CRITICAL_COUNT, CRITICAL, and ADVISORY lines.
After all verification agents complete, post summary:
gh issue comment {ISSUE} --body "$(cat <<'EOF'
## Wave {N} Verification
### Spec Alignment
**Status:** {PASSED | BLOCKED}
{if blocked: list critical findings}
### Code Review
#### T1: {description}
**Status:** PASSED | BLOCKED - {N} critical, {N} advisory
**Critical:**
- {critical findings list, if any}
**Advisory:**
- {ALL advisory findings - always include, even for PASSED tasks}
#### T2: {description}
...
---
**Wave Status:** PASSED - Ready to advance | BLOCKED - fix issues
EOF
)"
If GH comment fails (rate limit, auth, network):
.claude/specs/{date_slug}/wave-{N}-review.md as fallbackVerify five checks before advancing:
If any check fails, the wave does NOT advance. Fix the issue and re-run /opencode-wave-gate.
On success: mark tasks "completed", update GH issue checkboxes if applicable, proceed to next wave.
When issues fixed, run /opencode-wave-gate again. It will:
| Symptom | Cause | Recovery |
|---|---|---|
| No SPEC_CHECK_CRITICAL_COUNT | Output malformed | Re-spawn spec-check-invoker |
| CRITICAL findings | Spec drift detected | Fix drift, re-run /opencode-wave-gate |
| Symptom | Cause | Recovery |
|---|---|---|
| No output from reviewer | Agent crashed/timed out | Re-spawn that specific reviewer |
| Malformed output | Skill parsing issue | Re-spawn with explicit format reminder |
spec-check-invoker agent for spec alignmentcode-reviewer, silent-failure-hunter, pr-test-analyzer, type-design-analyzer, comment-analyzer) per task基于 SOC 职业分类
Create and schedule CrossFit workouts on Garmin Connect. Use when user asks to 'create a CrossFit workout', 'make a WOD', 'build an EMOM', 'schedule a CrossFit session', 'AMRAP workout', 'Tabata', 'for time workout', or any request to create a non-running workout for Garmin.
This skill should be used when the user asks to 'design a feature', 'evaluate approaches', 'plan the architecture', 'domain modeling', 'DDD design', 'bounded contexts', 'functional core imperative shell', 'how should I structure this', 'what pattern should I use', or needs upfront architectural design for Java/Spring Boot, TypeScript/Next.js, or Rust codebases. For DESIGN decisions before implementation - not for reviewing existing code (use the architecture-agent via /review-pr for that).
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
This skill should be used when the user asks to 'implement', 'write code', 'build a feature', 'create a function', 'add functionality', 'code this', 'make this work', or needs to write production code for Java/Spring Boot or TypeScript/Next.js following FP, DDD, and testability patterns. Ensures code follows functional core/imperative shell, proper invariants, Either-based error handling, and is designed for testing without mocks.
This skill should be used when the user asks to 'check spec alignment', 'verify requirements coverage', 'detect drift', 'spec audit', or automatically at wave gates. Verifies implementation aligns with specification - different from code review which checks quality.
This skill should be used when the user asks to 'specify a feature', 'write requirements', 'define what we're building', 'capture requirements', 'document the spec', or before invoking /architecture-tech-lead for non-trivial features. Produces formal specifications (WHAT/WHY) that feed into architecture and planning phases.