agentleFS
maystudiosmaystudios/claude-skills/opencode/SKILL.md

opencode

Skill21 starsChanged 7 months agoMITView on GitHub

Invoke OpenCode CLI as a sub-agent to leverage alternative AI models (GPT-5.x, Codex, local models) for code implementation, review, debugging, research, and second opinions. Use when the user asks to "use opencode", "get a second opinion from GPT/Codex", "implement with opencode", "review with opencode", "let opencode handle this", "use a different model", or wants cross-model validation. Also triggers when the user explicitly names an OpenCode model (e.g., "use gpt-5.4", "use codex") or wants to delegate a task to a non-Claude AI system. Supports all providers configured in the user's OpenCode installation (OpenAI, GitHub Copilot, local models via Ollama/LM Studio, and OpenCode's own free-tier models).

  • Installs packages

34 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use github-repo-management, touchdesigner-mcp and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • math-incSkill

    github-repo-management

    Clone, create, fork, configure, and manage GitHub repositories. Manage remotes, secrets, releases, and workflows. Works with gh CLI or falls back to git + GitHub REST API via curl.

    Also in 14 projects that use this

  • john-data-chenSkill

    touchdesigner-mcp

    Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.

    Also in 7 projects that use this

  • math-incSkill

    minecraft-modpack-server

    Set up a modded Minecraft server from a CurseForge/Modrinth server pack zip. Covers NeoForge/Forge install, Java version, JVM tuning, firewall, LAN config, backups, and launch scripts.

    Also in 5 projects that use this

  • john-data-chenSkill

    teams-meeting-pipeline

    Operate the Teams meeting summary pipeline via Hermes CLI — summarize meetings, inspect pipeline status, replay jobs, manage Microsoft Graph subscriptions.

    Also in 8 projects that use this

  • Tommy-ywSkill

    songwriting-and-ai-music

    Songwriting craft, AI music generation prompts (Suno focus), parody/adaptation techniques, phonetic tricks, and lessons learned. These are tools and ideas, not rules. Break any of them when the art calls for it.

    Also in 10 projects that use this

  • mae616Skill

    p5js

    p5.js(クリエイティブコーディング)のProcessing由来「コードでスケッチ」思想を軸に、setup/drawループ・座標系・インタラクション・パフォーマンス最適化を整理する。p5.js、Processing、クリエイティブコーディング、ジェネラティブアート、インタラクティブ表現、ビジュアルプログラミング、Canvas描画、パーティクル、フラクタル、ノイズ表現に関する相談で必ず使うこと。ユーザーが「コードでアート」「動くビジュアル」「インタラクティブな描画」と言った場合にも適用する。

    Also in 10 projects that use this

  • +4 more from math-inc

The file

Show its rules and text

We split this skill into the rules it gives an agent

29 rules. 0 are common, 23 are distinctive, and 6 are very specific to this project.

  • 0

    Common

    Most of the 32 edited versions we read keep these.

  • 23

    Distinctive

    This author's own choices. Worth a look.

  • 6

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use when the user wants OpenCode to write or modify code.

    line 76
  2. Distinctive:

    Use when the user wants a second opinion on code quality, bugs, or correctness.

    line 97
  3. Distinctive:

    Use when the user wants OpenCode to investigate a bug or error.

    line 114
  4. Distinctive:

    Use when the user wants OpenCode to explore and analyze the codebase.

    line 132
  5. Distinctive:

    Use them when the task benefits from multi-step validation or parallel execution.

    line 152
  6. Very specific:

    Run Protocol 1 (Implement) with --agent build

    line 159
  7. Distinctive:

    Read and verify the changes yourself (quick sanity check)

    line 160
  8. Distinctive:

    Run Protocol 2 (Review) on the changed files, using a DIFFERENT model:

    line 161
  9. Very specific:

    If implementation used openai/gpt-5.4, review with openai/gpt-5.3-codex

    line 162
  10. Distinctive:

    Quality gate: If review finds critical issues, fix them (either yourself or re-run implement with fix instructions)

    line 164
  11. Distinctive:

    Always set a maximum iteration count (default 3, user can specify more)

    line 220
  12. Distinctive:

    Stop early if improvements become marginal

    line 223
  13. Very specific:

    Run the OpenCode command using Bash with run_in_background: true:

    line 231
  14. Distinctive:

    When notified, parse the result:

    line 239
  15. Distinctive:

    Run the first task and capture the session ID:

    line 250
  16. Distinctive:

    Use the session ID for follow-up tasks:

    line 257
  17. Distinctive:

    If changes are correct → keep them, report success

    line 284
  18. Distinctive:

    If changes are wrong → revert:

    line 285
  19. Distinctive:

    Do NOT use OpenCode to invoke Claude/Anthropic models or Google/Gemini models -- these providers are not available in OpenCode.

    line 298
  20. Distinctive:

    Every prompt sent to OpenCode must follow this structure:

    line 303
  21. Distinctive:

    Always set explicit scope boundaries.

    line 340
  22. Very specific:

    Use opencode models to discover all available models.

    line 440
  23. Distinctive:

    Always use a different model for review than implementation

    line 446
  24. Distinctive:

    If a model fails or times out, fall back in this order:

    line 472
  25. Very specific:

    If OpenCode crashes mid-implementation (--agent build):

    line 481
  26. Distinctive:

    Check which files were modified: git diff --name-only

    line 482
  27. Distinctive:

    Read each modified file to assess completeness

    line 483
  28. Very specific:

    If changes are partial or broken → git checkout -- <files>

    line 484
  29. Distinctive:

    Use this to decide WHEN and HOW to invoke OpenCode:

    line 492

“Common” is measured: kept by at least 6 in 10 of the 32 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

OpenCode Sub-Agent Protocol

This is an executable protocol for delegating work to OpenCode agents. Follow it precisely.

Prerequisites

  • opencode CLI installed and in PATH (verify: opencode --version)
  • At least one provider authenticated (opencode providers list)
  • Available models listed via opencode models

Core Command

OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json --model <provider/model> --agent <build|plan> --dir "<working-dir>" --dangerously-skip-permissions [options] "<prompt>" 2>/dev/null

Key flags:

  • --format json -- machine-parseable ndjson output (always use this)
  • --model provider/model -- e.g., openai/gpt-5.4, openai/gpt-5.3-codex
  • --variant <level> -- reasoning effort: minimal, medium, high, xhigh (provider-specific)
  • --dir <path> -- working directory for the task
  • --dangerously-skip-permissions -- auto-approve tool calls (required for headless)
  • -f/--file <path> -- attach file(s) to the prompt
  • --agent <name> -- build for implementation (filesystem+bash), plan for analysis (read-only)
  • -c/--continue -- continue last session
  • -s/--session <id> -- continue specific session

Output Parsing

The --format json flag emits ndjson (one JSON object per line):

typeContains
text.part.text -- model's text response
tool_call.part.name, .part.input -- tool invocations
tool_result.part.output -- tool execution results
step_startSession/message IDs
step_finish.part.tokens (usage), .part.cost, .part.reason

Parse with the helper script (always redirect stderr):

opencode run --format json ... 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py [--mode text|full|tools|cost|session|diff|summary]

Parse modes:

  • text -- model's text response (default)
  • full -- text + tool calls + tool results
  • tools -- tool calls and results only
  • cost -- token usage and cost breakdown
  • session -- extract session ID for continuation
  • diff -- extract file modifications from tool calls
  • summary -- one-line summary (status, tokens, cost, duration)

Task Protocols

Determine the task type from the user's request, then follow the matching protocol.

Protocol 1: Implement

Use when the user wants OpenCode to write or modify code.

Steps:

  1. Scope -- identify exactly which files to create/modify. List them explicitly.
  2. Context -- gather files the agent needs to see. Attach with -f.
  3. Constraints -- build the constraint block (see Prompt Engineering below).
  4. Execute -- run with --agent build:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4 --agent build \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      -f <file1> -f <file2> \
      "<prompt>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py --mode full
  5. Validate -- read every modified file. Check correctness, conventions, compilation.
  6. Report -- summarize what changed, flag anything suspicious.

Default model: openai/gpt-5.4 | Timeout: timeout: 300000

Protocol 2: Review

Use when the user wants a second opinion on code quality, bugs, or correctness.

Steps:

  1. Target -- identify files to review.
  2. Execute -- run with --agent plan (read-only):
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4 --variant high --agent plan \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      -f <file1> "<review prompt>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py
  3. Present -- relay findings to user with file:line references.

Default model: openai/gpt-5.4 + --variant high | Timeout: timeout: 300000

Protocol 3: Debug

Use when the user wants OpenCode to investigate a bug or error.

Steps:

  1. Evidence -- gather error messages, stack traces, relevant code.
  2. GAS context -- for GAS bugs, instruct the agent to check: tag blocking/requirements, effect application/removal ordering, MMC dependencies, ASC initialization timing.
  3. Execute -- run with --agent plan:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.3-codex --variant high --agent plan \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      "<diagnostic prompt>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py
  4. Analyze -- cross-reference findings with actual code before presenting.

Default model: openai/gpt-5.3-codex + --variant high | Timeout: timeout: 300000

Protocol 4: Research

Use when the user wants OpenCode to explore and analyze the codebase.

Steps:

  1. Question -- formulate a clear, bounded research question.
  2. Execute -- run with --agent plan:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4-mini-fast --agent plan \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      "<research question>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py
  3. Verify -- spot-check claims by reading referenced files yourself.

Default model: openai/gpt-5.4-mini-fast | Timeout: timeout: 300000


Orchestration Patterns

These patterns compose the basic protocols above into more powerful workflows. Use them when the task benefits from multi-step validation or parallel execution.

Pattern A: Implement-Then-Review Pipeline

When: Implementation tasks where quality matters. This is the default for non-trivial implementation.

Protocol:

  1. Run Protocol 1 (Implement) with --agent build
  2. Read and verify the changes yourself (quick sanity check)
  3. Run Protocol 2 (Review) on the changed files, using a DIFFERENT model:
    • If implementation used openai/gpt-5.4, review with openai/gpt-5.3-codex
    • Cross-model review catches model-specific blind spots
  4. Quality gate: If review finds critical issues, fix them (either yourself or re-run implement with fix instructions)
  5. Report both the implementation and review results to user

Pattern B: Parallel Multi-Model Review

When: The user wants thorough validation, or says "get multiple opinions".

Protocol:

  1. Construct the review prompt once
  2. Spawn parallel Bash commands (use run_in_background or &):
    # Run in parallel -- each to a temp file
    PROMPT="<review prompt>"
    DIR="C:/UnrealEngine/VHS"
    
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4 --variant high --agent plan \
      --dir "$DIR" --dangerously-skip-permissions "$PROMPT" \
      2>/dev/null > /tmp/review_gpt54.txt &
    
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.3-codex --variant high --agent plan \
      --dir "$DIR" --dangerously-skip-permissions "$PROMPT" \
      2>/dev/null > /tmp/review_codex.txt &
    
    wait
  3. Parse each result separately:
    cat /tmp/review_gpt54.txt | python .claude/skills/opencode/scripts/parse_output.py
    cat /tmp/review_codex.txt | python .claude/skills/opencode/scripts/parse_output.py
  4. Synthesize -- identify issues raised by multiple models (high confidence) vs. single model (lower confidence). Present a unified report.

Pattern C: Autonomous Improvement Loop

When: The user wants iterative code improvement, or says "keep improving this", "optimize", "polish".

Inspired by autoresearch's iterative experiment loop. The agent makes changes, validates them, keeps improvements, and reverts failures.

Protocol:

LOOP (max N iterations, default 3):
  1. Identify the current quality baseline (read code, note issues)
  2. Construct an improvement prompt targeting the worst issue
  3. Run Protocol 1 (Implement) with --agent build
  4. Validate: read changed files, check for regressions
  5. Run Protocol 2 (Review) on changed files with a different model
  6. QUALITY GATE:
     - If review passes (no critical issues) → keep changes, report improvement
     - If review fails (critical issues found) → revert changes (git checkout the files), report why
  7. If no more meaningful improvements found → STOP
  8. Continue to next iteration

Important constraints:

  • Always set a maximum iteration count (default 3, user can specify more)
  • Each iteration must target a specific, measurable improvement
  • Revert on failure -- never accumulate broken changes
  • Stop early if improvements become marginal
  • Report each iteration's outcome so the user can follow progress

Pattern D: Background Agent

When: Claude Code wants to continue other work while OpenCode runs. Use for long-running tasks that don't block the conversation.

Protocol:

  1. Run the OpenCode command using Bash with run_in_background: true:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4 --agent plan \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      "<prompt>" 2>/dev/null > /tmp/opencode_result.txt
  2. Continue with other work while waiting for notification
  3. When notified, parse the result:
    cat /tmp/opencode_result.txt | python .claude/skills/opencode/scripts/parse_output.py
  4. Present findings to user

Pattern E: Session Continuation (Multi-Step Workflow)

When: Complex tasks that benefit from building context across multiple exchanges.

Protocol:

  1. Run the first task and capture the session ID:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --model openai/gpt-5.4 --agent plan \
      --dir "C:/UnrealEngine/VHS" --dangerously-skip-permissions \
      "<first task>" 2>/dev/null | tee /tmp/oc_step1.txt | python .claude/skills/opencode/scripts/parse_output.py --mode session
  2. Use the session ID for follow-up tasks:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --session "<session-id>" --dangerously-skip-permissions \
      "<follow-up task>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py
    Or use --continue for the last session:
    OPENCODE_DISABLE_AUTOUPDATE=true opencode run --format json \
      --continue --dangerously-skip-permissions \
      "<follow-up task>" 2>/dev/null | python .claude/skills/opencode/scripts/parse_output.py

Pattern F: Git-Checkpoint Implementation

When: Risky implementations where rollback safety is important.

Inspired by autoresearch's git-as-state-machine pattern.

Protocol:

  1. Checkpoint -- note the current git state:
    git stash  # or commit current work
  2. Run Protocol 1 (Implement) with --agent build
  3. Validate -- read all changed files, run build/tests if applicable
  4. Gate:
    • If changes are correct → keep them, report success
    • If changes are wrong → revert:
      git checkout -- <modified-files>
    • Report what went wrong and why the revert happened
  5. Never leave broken changes -- if validation fails, always revert before reporting

Prompt Engineering

OpenCode has NO access to this conversation's context. Every prompt must be fully self-contained.

Do NOT use OpenCode to invoke Claude/Anthropic models or Google/Gemini models -- these providers are not available in OpenCode. Only use OpenAI, GitHub Copilot, local, and OpenCode's own models.

Prompt Structure (Required)

Every prompt sent to OpenCode must follow this structure:

[CONTEXT BLOCK]
<project type, conventions, key constraints>

[TASK]
<imperative description of what to do>

[SCOPE]
<explicit boundaries: which files/dirs to touch, which to ignore>

[CONSTRAINTS]
<naming conventions, patterns to follow, things to avoid>

[OUTPUT FORMAT]
<what form the response should take>

UE5/VHS Context Block (Always Include for Project Tasks)

This is an Unreal Engine 5.7 C++ project (VHS - first-person horror game).
Source: Source/VHS/  |  Module: VHS  |  No Public/Private split (side-by-side .h/.cpp)

Naming conventions:
- UE prefixes: A (actors), U (UObjects), F (structs), E (enums), I (interfaces)
- GAS: GA_ (abilities), GC_ (cues), MMC_ (magnitude calcs), GE_ (effects)
- Booleans: b prefix (bIsRecovering)
- #pragma once, CoreMinimal.h first, .generated.h last

Key systems: GAS (AbilitySystem/), Enhanced Input, StateTree (AI)
Dependencies: GameplayAbilities, GameplayTags, GameplayTasks, EnhancedInput, StateTreeModule

Scope Constraints (Critical for Avoiding Timeouts)

Always set explicit scope boundaries. Broad prompts cause the agent to explore the entire filesystem and timeout.

Good:

Search ONLY in Source/VHS/AbilitySystem/. Do NOT explore other directories.
Modify ONLY HorrorCharacter.h and HorrorCharacter.cpp. Do NOT touch other files.

Bad:

Look through the project and find issues.  (too broad -- will timeout)

Implementation Prompt Template

[CONTEXT]
This is an Unreal Engine 5.7 C++ project (VHS). <conventions block>

[TASK]
Implement <feature> in <file(s)>.
<detailed requirements>

[SCOPE]
- Create/modify ONLY: <explicit file list>
- Reference (read-only): <files to read for context>
- Do NOT touch: <exclusions>

[CONSTRAINTS]
- Follow existing patterns in <reference file>
- Use UPROPERTY(EditDefaultsOnly, Category = "<Category>") for configurable values
- All new UObject classes need UCLASS(ClassGroup=(VHS)) macro
- Header: #pragma once, CoreMinimal.h first, .generated.h last

[OUTPUT]
Write the implementation directly. No explanations needed.

Review Prompt Template

[CONTEXT]
This is an Unreal Engine 5.7 C++ project using GAS. <conventions block>

[TASK]
Review the following files for: correctness, bugs, performance, security, UE5 best practices.
Be specific: cite file paths and line numbers. Suggest concrete fixes.

[SCOPE]
Review ONLY: <file list>
Do NOT explore other directories.

[OUTPUT FORMAT]
For each issue found:
- **[SEVERITY]** (critical/warning/info)
- **File:Line** -- specific location
- **Issue** -- what's wrong
- **Fix** -- concrete solution

Debug Prompt Template

[CONTEXT]
UE5.7 project (VHS) using GAS. <conventions block>

[BUG REPORT]
<symptom description>
<error messages / stack traces>
<reproduction steps if known>

[TASK]
Investigate root cause. Check:
- <specific things to check based on the bug>
- For GAS bugs: tag blocking, effect ordering, MMC deps, ASC init timing

[SCOPE]
Search ONLY in: <directory>

[OUTPUT FORMAT]
1. Root cause (most likely)
2. Evidence (file:line references)
3. Fix (concrete code changes)

Model Selection

Pick the right model for the task. See references/models.md for the full guide.

Quick defaults:

TaskFastDefaultDeep
Implementationopenai/gpt-5.4-mini-fastopenai/gpt-5.4openai/gpt-5.3-codex
Reviewopenai/gpt-5.4-miniopenai/gpt-5.4 + --variant highopenai/gpt-5.3-codex + --variant high
Debugopenai/gpt-5.4-mini-fastopenai/gpt-5.3-codex + --variant highopenai/gpt-5.4 + --variant xhigh
Researchopenai/gpt-5.4-mini-fastopenai/gpt-5.4-fastopenai/gpt-5.4

Use opencode models to discover all available models. Only OpenAI, GitHub Copilot, OpenCode's own free-tier models, and local models (Ollama/LM Studio) are supported.

Cross-model review pairings (for Pipeline Pattern A):

  • Implement with openai/gpt-5.4 → Review with openai/gpt-5.3-codex
  • Implement with openai/gpt-5.3-codex → Review with openai/gpt-5.4
  • Always use a different model for review than implementation

Cost-sensitive alternatives:

  • github-copilot/gpt-5.4 -- free with Copilot subscription
  • github-copilot/gpt-5.3-codex -- free with Copilot subscription
  • opencode/big-pickle -- OpenCode's own free tier
  • Local: ollama/qwen3-coder:latest -- zero API cost

Error Handling & Recovery

Error Detection

SymptomCauseRecovery
opencode not foundNot installedTell user: npm i -g opencode
No providers configuredNo authTell user: opencode providers login
Model not availableWrong model IDRun opencode models, suggest alternatives
Timeout (>3 min)Scope too broadNarrow scope constraints, use faster model
JSON parse failureCorrupt outputRetry with --format default, read raw text
Exit code non-zeroRuntime errorCheck stderr (up to 500 chars), retry once
Empty text responseAgent did only tool callsUse --mode full to see tool call results

Automatic Model Fallback

If a model fails or times out, fall back in this order:

  1. openai/gpt-5.4 (primary)
  2. openai/gpt-5.3-codex (code-optimized)
  3. openai/gpt-5.4-mini-fast (fastest, always works)
  4. github-copilot/gpt-5.4 (free tier)
  5. opencode/big-pickle (OpenCode free tier)

Crash Recovery

If OpenCode crashes mid-implementation (--agent build):

  1. Check which files were modified: git diff --name-only
  2. Read each modified file to assess completeness
  3. If changes are partial or broken → git checkout -- <files>
  4. Retry with a narrower scope or different model
  5. Report the crash and recovery to the user

Decision Framework

Use this to decide WHEN and HOW to invoke OpenCode:

User request received
  │
  ├─ "use opencode" / names a model → Use OpenCode (user explicit)
  │
  ├─ "second opinion" / "cross-validate" → Pattern B (Parallel Multi-Model)
  │
  ├─ "implement with X" → Protocol 1, optionally Pattern A (Implement-Then-Review)
  │
  ├─ "review with X" → Protocol 2
  │
  ├─ "keep improving" / "optimize" / "polish" → Pattern C (Autonomous Loop)
  │
  ├─ Complex implementation → Pattern A (Implement-Then-Review) by default
  │
  ├─ Risky changes → Pattern F (Git-Checkpoint)
  │
  └─ Long-running task, user wants to continue chatting → Pattern D (Background)

Advanced Patterns

See references/advanced.md for:

  • Server mode for persistent sessions
  • Environment variables for automation
  • Export/import sessions
  • Stats and cost tracking

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.