f5161f584d
Ports the claude-code canonical to OpenCode conventions: - Phase 1 adds Bootstrap Superpowers Context step — uses OpenCode's native skill tool to list + verify superpowers/brainstorming, superpowers/test-driven-development, superpowers/verification-before-completion, and superpowers/finishing-a-development-branch before any other phase. - All sub-skill invocations swapped to OpenCode native skill tool with superpowers/<skill> (slash) path format. - Helper paths swapped to ~/.config/opencode/skills/reviewer-runtime/ and ~/.config/opencode/skills/do-task/templates/. - Plan-mode guard removed (OpenCode has no plan-mode concept). - Prerequisite Check adds opencode --version + Superpowers symlink at ~/.config/opencode/skills/superpowers verification. - Opencode reviewer branch (from M1 research) uses `opencode run -m <provider>/<model> --agent plan --format json` with fresh-call default and documented opt-in -s <id> resume path. - Added Required Skill Invocation Rules, Variant Hardening Notes — OpenCode, Common Mistakes, and Red Flags sections. - Template runtime field = opencode; guardrail line updated. Core-section schema identical across all 4 variants (14 sections). Reviewer: codex / gpt-5.4. Approved round 1 (0 P0/P1/P2/P3). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
145 lines
4.4 KiB
Markdown
145 lines
4.4 KiB
Markdown
# Task Plan: [Short Title]
|
|
|
|
> **Variant guardrail (OpenCode):** Sub-skills (`brainstorming`, `test-driven-development`, `verification-before-completion`, `finishing-a-development-branch`, `using-git-worktrees`) MUST be invoked through OpenCode's native skill tool from `~/.config/opencode/skills/superpowers/<skill>/SKILL.md`. Phase 1 MUST include the Bootstrap Superpowers Context step. Opencode reviewer calls MUST use `--agent plan` to stay read-only.
|
|
|
|
## Metadata
|
|
|
|
| Field | Value |
|
|
|-------|-------|
|
|
| Created | YYYY-MM-DD |
|
|
| Slug | YYYY-MM-DD-<slug> |
|
|
| Runtime | opencode |
|
|
| Reviewer CLI | codex \| claude \| cursor \| opencode |
|
|
| Reviewer Model | <model> |
|
|
| MAX_ROUNDS | 10 |
|
|
| Branch Strategy | current-branch \| worktree |
|
|
| Branch Name | <current branch name, or new branch name when worktree is used> |
|
|
| Worktree Path | <absolute path to worktree dir; blank when Branch Strategy = current-branch> |
|
|
| Status | draft |
|
|
|
|
### Status Enum (authoritative)
|
|
|
|
| Value | Meaning |
|
|
|-------|---------|
|
|
| `draft` | Newly created; plan review not yet started |
|
|
| `plan-approved` | Plan review loop returned APPROVED |
|
|
| `implementation-in-progress` | Phase 6 executing |
|
|
| `implementation-approved` | Phase 8 review loop returned APPROVED; awaiting commit |
|
|
| `pushed` | Committed + pushed to remote |
|
|
| `local-only` | Committed locally; user declined push |
|
|
| `aborted-plan-review` | MAX_ROUNDS reached in Phase 5; user aborted |
|
|
| `aborted-impl-review` | MAX_ROUNDS reached in Phase 8; user aborted |
|
|
| `aborted-verification` | Phase 7 retries exhausted; user aborted |
|
|
| `failed` | Hard tooling failure |
|
|
|
|
---
|
|
|
|
## Prompt
|
|
|
|
<!-- Exact user prompt, verbatim. -->
|
|
|
|
## Interpretation
|
|
|
|
<!-- Short restatement of goal + out-of-scope items. -->
|
|
|
|
## Assumptions
|
|
|
|
<!-- Anything we're assuming and needs confirmation. Empty list OK after clarifying questions. -->
|
|
|
|
## Files
|
|
|
|
<!-- Files expected to be created / modified / deleted. Paths are absolute or repo-relative. -->
|
|
|
|
| Action | Path | Why |
|
|
|--------|------|-----|
|
|
| | | |
|
|
|
|
## Approach
|
|
|
|
<!-- 3-10 bullets describing implementation order. -->
|
|
|
|
## TDD Approach
|
|
|
|
<!-- One of:
|
|
(a) **TDD applies** — list the failing test(s) to write first, then implementation, then confirm green.
|
|
(b) **TDD auto-skipped** — reason must be exactly one of:
|
|
- `pure-documentation`
|
|
- `pure-comment-whitespace-rename`
|
|
(c) **TDD user-approved skip** — user explicitly approved skipping TDD for this task.
|
|
Record the approval timestamp (ISO-8601) and the specific reason (e.g., `pure-config-addition`).
|
|
-->
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] <criterion 1>
|
|
- [ ] <criterion 2>
|
|
|
|
## Verification
|
|
|
|
<!-- Commands to run:
|
|
lint: <cmd>
|
|
typecheck: <cmd>
|
|
tests: <cmd>
|
|
-->
|
|
|
|
## Rollback
|
|
|
|
<!-- How to undo: `git revert <hash>`, or manual steps if the change is not easily revertable. -->
|
|
|
|
---
|
|
|
|
## Runtime State
|
|
|
|
<!-- Updated by the skill at runtime. Used to detect resume and to persist reviewer session IDs across rounds. -->
|
|
|
|
```yaml
|
|
plan_review_round: 0
|
|
implementation_review_round: 0
|
|
CODEX_PLAN_SESSION_ID:
|
|
CODEX_IMPL_SESSION_ID:
|
|
CURSOR_PLAN_SESSION_ID:
|
|
CURSOR_IMPL_SESSION_ID:
|
|
OPENCODE_PLAN_SESSION_ID:
|
|
OPENCODE_IMPL_SESSION_ID:
|
|
last_phase_entered:
|
|
last_round_ts:
|
|
last_scan_outcome_plan:
|
|
last_scan_outcome_impl:
|
|
verification_attempts: 0
|
|
tests_added_count: 0
|
|
tdd_used: false
|
|
```
|
|
|
|
## Review History
|
|
|
|
<!-- Append one entry per reviewer round, both loops. -->
|
|
|
|
| Timestamp (ISO-8601) | Loop | Round | Verdict | Summary |
|
|
|----------------------|------|-------|---------|---------|
|
|
| | | | | |
|
|
|
|
## Final Status
|
|
|
|
<!-- Filled at the terminal outcome (phase 9/10). Populate at least:
|
|
- Terminal status (one of the 10 Status enum values)
|
|
- Commit hash (if any)
|
|
- Plan-review rounds used / MAX_ROUNDS
|
|
- Implementation-review rounds used / MAX_ROUNDS
|
|
- TDD used (true|false)
|
|
- Tests added count
|
|
- Verification attempts used
|
|
- Last round ISO-8601 timestamp
|
|
- Notes (anything the user should know when revisiting)
|
|
-->
|
|
|
|
|
|
---
|
|
|
|
## Guardrails (do NOT remove)
|
|
|
|
- This file is the single persistent artifact for `do-task`. Do not split it or delete it on success.
|
|
- `Status` must always match one of the 10 enum values.
|
|
- `Runtime State` is updated by the skill, not by the user.
|
|
- Review History is append-only.
|
|
- `last_scan_outcome_plan` and `last_scan_outcome_impl` record the most recent secret-scan result for each loop. They are informational; the scan itself runs per-payload with no caching.
|