opencode
OpenCode is an open-source, provider-agnostic AI coding agent that handles feature implementation, refactoring, code review, and long-running autonomous sessions. Use it when delegating bounded coding tasks via `opencode run` or orchestrating iterative multi-step work through interactive TUI sessions, provided OpenCode is installed, authenticated with a configured provider, and the project is in a Git repository.
git clone --depth 1 https://github.com/moltis-org/moltis /tmp/opencode && cp -r /tmp/opencode/crates/skills/src/assets/autonomous-ai-agents/opencode ~/.claude/skills/opencodeSKILL.md
# OpenCode CLI Use [OpenCode](https://opencode.ai) as an autonomous coding worker orchestrated by Moltis terminal/process tools. OpenCode is a provider-agnostic, open-source AI coding agent with a TUI and CLI. ## When to Use - User explicitly asks to use OpenCode - You want an external coding agent to implement/refactor/review code - You need long-running coding sessions with progress checks - You want parallel task execution in isolated workdirs/worktrees ## Prerequisites - OpenCode installed: `npm i -g opencode-ai@latest` or `brew install anomalyco/tap/opencode` - Auth configured: `opencode auth login` or set provider env vars (OPENROUTER_API_KEY, etc.) - Verify: `opencode auth list` should show at least one provider - Git repository for code tasks (recommended) - `pty=true` for interactive TUI sessions ## Binary Resolution (Important) Shell environments may resolve different OpenCode binaries. If behavior differs between your terminal and the agent, check: ``` terminal(command="which -a opencode") terminal(command="opencode --version") ``` If needed, pin an explicit binary path: ``` terminal(command="$HOME/.opencode/bin/opencode run '...'", workdir="~/project", pty=true) ``` ## One-Shot Tasks Use `opencode run` for bounded, non-interactive tasks: ``` terminal(command="opencode run 'Add retry logic to API calls and update tests'", workdir="~/project") ``` Attach context files with `-f`: ``` terminal(command="opencode run 'Review this config for security issues' -f config.yaml -f .env.example", workdir="~/project") ``` Show model thinking with `--thinking`: ``` terminal(command="opencode run 'Debug why tests fail in CI' --thinking", workdir="~/project") ``` Force a specific model: ``` terminal(command="opencode run 'Refactor auth module' --model openrouter/anthropic/claude-sonnet-4", workdir="~/project") ``` ## Interactive Sessions (Background) For iterative work requiring multiple exchanges, start the TUI in background: ``` terminal(command="opencode", workdir="~/project", background=true, pty=true) # Returns session_id # Send a prompt process(action="submit", session_id="<id>", data="Implement OAuth refresh flow and add tests") # Monitor progress process(action="poll", session_id="<id>") process(action="log", session_id="<id>") # Send follow-up input process(action="submit", session_id="<id>", data="Now add error handling for token expiry") # Exit cleanly — Ctrl+C process(action="write", session_id="<id>", data="\x03") # Or just kill the process process(action="kill", session_id="<id>") ``` **Important:** Do NOT use `/exit` — it is not a valid OpenCode command and will open an agent selector dialog instead. Use Ctrl+C (`\x03`) or `process(action="kill")` to exit. ### TUI Keybindings | Key | Action | |-----|--------| | `Enter` | Submit message (press twice if needed) | | `Tab` | Switch between agents (build/plan) | | `Ctrl+P` | Open command palette | | `Ctrl+X L` | Switch session | | `Ctrl+X M` | Switch model | | `Ctrl+X N` | New session | | `Ctrl+X E` | Open editor | | `Ctrl+C` | Exit OpenCode | ### Resuming Sessions After exiting, OpenCode prints a session ID. Resume with: ``` terminal(command="opencode -c", workdir="~/project", background=true, pty=true) # Continue last session terminal(command="opencode -s ses_abc123", workdir="~/project", background=true, pty=true) # Specific session ``` ## Common Flags | Flag | Use | |------|-----| | `run 'prompt'` | One-shot execution and exit | | `--continue` / `-c` | Continue the last OpenCode session | | `--session <id>` / `-s` | Continue a specific session | | `--agent <name>` | Choose OpenCode agent (build or plan) | | `--model provider/model` | Force specific model | | `--format json` | Machine-readable output/events | | `--file <path>` / `-f` | Attach file(s) to the message | | `--thinking` | Show model thinking blocks | | `--variant <level>` | Reasoning effort (high, max, minimal) | | `--title <name>` | Name the session | | `--attach <url>` | Connect to a running opencode server | ## Procedure 1. Verify tool readiness: - `terminal(command="opencode --version")` - `terminal(command="opencode auth list")` 2. For bounded tasks, use `opencode run '...'` (no pty needed). 3. For iterative tasks, start `opencode` with `background=true, pty=true`. 4. Monitor long tasks with `process(action="poll"|"log")`. 5. If OpenCode asks for input, respond via `process(action="submit", ...)`. 6. Exit with `process(action="write", data="\x03")` or `process(action="kill")`. 7. Summarize file changes, test results, and next steps back to user. ## PR Review Workflow OpenCode has a built-in PR command: ``` terminal(command="opencode pr 42", workdir="~/project", pty=true) ``` Or review in a temporary clone for isolation: ``` terminal(command="REVIEW=$(mktemp -d) && git clone https://github.com/user/repo.git $REVIEW && cd $REVIEW && opencode run 'Review this PR vs main. Report bugs, security risks, test gaps, and style issues.' -f $(git diff origin/main --name-only | head -20 | tr '\n' ' ')", pty=true) ``` ## Parallel Work Pattern Use separate workdirs/worktrees to avoid collisions: ``` terminal(command="opencode run 'Fix issue #101 and commit'", workdir="/tmp/issue-101", background=true, pty=true) terminal(command="opencode run 'Add parser regression tests and commit'", workdir="/tmp/issue-102", background=true, pty=true) process(action="list") ``` ## Session & Cost Management List past sessions: ``` terminal(command="opencode session list") ``` Check token usage and costs: ``` terminal(command="opencode stats") terminal(command="opencode stats --days 7 --models anthropic/claude-sonnet-4") ``` ## Pitfalls - Interactive `opencode` (TUI) sessions require `pty=true`. The `opencode run` command does NOT need pty. - `/exit` is NOT a valid command — it opens an agent selector. Use Ctrl+C to exit the TUI. - PATH mismatch can select the wrong OpenCode binary/model config. - If OpenCode appears stuck, inspect logs
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
Manage Apple Notes via the memo CLI on macOS (create, view, search, edit).
Manage Apple Reminders via remindctl CLI (list, add, complete, delete).
Generate dark-themed SVG diagrams of software systems and cloud infrastructure as standalone HTML files with inline SVG graphics. Semantic component colors (cyan=frontend, emerald=backend, violet=database, amber=cloud/AWS, rose=security, orange=message bus), JetBrains Mono font, grid background. Best suited for software architecture, cloud/VPC topology, microservice maps, service-mesh diagrams, database + API layer diagrams, security groups, message buses — anything that fits a tech-infra deck with a dark aesthetic. If a more specialized diagramming skill exists for the subject (scientific, educational, hand-drawn, animated, etc.), prefer that — otherwise this skill can also serve as a general-purpose SVG diagram fallback. Based on Cocoon AI's architecture-diagram-generator (MIT).
Search and retrieve academic papers from arXiv using their free REST API. No API key needed. Search by keyword, author, category, or ID. Combine with web_extract or the ocr-and-documents skill to read full paper content.
Generate ASCII art using pyfiglet (571 fonts), cowsay, boxes, toilet, image-to-ascii, remote APIs (asciified, ascii.co.uk), and LLM fallback. No API keys required.
Production pipeline for ASCII art video — any format. Converts video/audio/images/generative input into colored ASCII character video output (MP4, GIF, image sequence). Covers: video-to-ASCII conversion, audio-reactive music visualizers, generative ASCII art animations, hybrid video+audio reactive, text/lyrics overlays, real-time terminal rendering. Use when users request: ASCII video, text art video, terminal-style video, character art animation, retro text visualization, audio visualizer in ASCII, converting video to ASCII art, matrix-style effects, or any animated ASCII output.
PyTorch library for audio generation including text-to-music (MusicGen) and text-to-sound (AudioGen). Use when you need to generate music from text descriptions, create sound effects, or perform melody-conditioned music generation.