opencode
When to Use This Skill
Load this skill when the user:
- Asks about OpenCode installation, setup, or configuration
- Mentions opencode.ai commands like /init, /connect, /undo
- Needs help with AGENTS.md or custom commands
- Asks about TUI features, mode switching, or tools
- Wants to create agents, skills, or custom commands
- References opencode configuration (opencode.json)
- Is working on a project with .opencode directory
This skill provides specialized knowledge for OpenCode workflows.
OpenCode Agent Guide
Quick Start
Installation
# Recommended: Install script
curl -fsSL https://opencode.ai/install | bash
# Or use npm
npm install -g opencode-ai
# Or use Homebrew (macOS/Linux)
brew install anomalyco/tap/opencode
[Source: https://opencode.ai/docs]
Setup
# Navigate to your project
cd /path/to/project
# Start OpenCode
opencode
# Configure your AI provider
/connect
# Initialize project (creates AGENTS.md)
/init
[Source: https://opencode.ai/docs]
Essential commands: /init, /help, /exit, /new, /sessions [Source: https://opencode.ai/docs/tui]
File references: @path/to/file - fuzzy file search and content injection [Source: https://opencode.ai/docs]
Bash commands: !npm install - execute shell commands directly [Source: https://opencode.ai/docs]
Undo/redo: /undo (Git-based), /redo restore changes [Source: https://opencode.ai/docs/tui]
Core Usage Patterns
File References
@filename # Fuzzy search single file
@src/components/*.tsx # Pattern matching
@path/to/file.ts:42 # Line-specific reference
Use @ for fuzzy file matching. Agent reads file content automatically [Source: https://opencode.ai/docs]
Bash Commands
!npm install # Run npm commands
!git status && git diff # Chain commands
!`git log --oneline -5` # Output injection in custom commands
Execute shell commands. Use workdir parameter instead of cd patterns [Source: https://opencode.ai/docs/tools]
Agent Switching
- Tab key: Switch between Build mode (default) and Plan mode [Source: https://opencode.ai/docs/agents]
- @subagent: Invoke subagents (General, Explore) via @mention [Source: https://opencode.ai/docs/agents]
- Ctrl+x: Default leader key for shortcuts [Source: https://opencode.ai/docs/tui]
TUI Commands
Session: /sessions, /new, /exit, /share, /unshare [Source: https://opencode.ai/docs/tui]
Configuration: /connect, /models, /editor, /themes [Source: https://opencode.ai/docs/tui]
View: /compact, /details, /thinking [Source: https://opencode.ai/docs/tui]
Git: /undo, /redo, /export, /import [Source: https://opencode.ai/docs/tui]
Help: /help, /init (creates AGENTS.md) [Source: https://opencode.ai/docs/tui]
CLI Usage
Default: opencode starts TUI. Non-interactive: opencode run <prompt> [Source: https://opencode.ai/docs/cli]
Commands: agent, attach, auth, github, mcp, models, run, serve, session, stats, export, import, web [Source: https://opencode.ai/docs/cli]
Global flags: --help, --version, --print-logs, --log-level [Source: https://opencode.ai/docs/cli]
Environment: OPENCODE_AUTO_SHARE, OPENCODE_CONFIG, OPENCODE_DISABLE_CLAUDE_CODE [Source: https://opencode.ai/docs/cli]
Configuration
Files: .opencode/opencode.json (project), ~/.config/opencode/config.json (global) [Source: https://opencode.ai/docs]
Basic opencode.json structure:
{
"agents": {
"default": {
"model": "provider/model",
"temperature": 0.7
}
},
"tools": {
"bash": {
"permissions": "allow"
}
}
}
[Source: https://opencode.ai/docs/agents]
Initial setup: /connect command configures connection [Source: https://opencode.ai/docs]
Agent config: tools, permissions, model, temperature [Source: https://opencode.ai/docs/agents]
Claude compatibility: Reads CLAUDE.md when AGENTS.md not present [Source: https://opencode.ai/docs/rules]
For advanced configuration (remote config, plugins, formatters), see CONFIGURATION.md
Custom Commands
Location: .opencode/commands/ or ~/.config/opencode/commands/ [Source: https://opencode.ai/docs/commands]
Format: Markdown with YAML frontmatter [Source: https://opencode.ai/docs/commands]
---
description: Run tests with coverage
agent: Build
template: |
!npm run test -- --coverage && !npm run lint
$ARGUMENTS
---
# Test Runner
Run tests and lint. Arguments passed directly.
Arguments: $ARGUMENTS (all), $1, $2, $3 (positional) [Source: https://opencode.ai/docs/commands]
Shell injection: !command`` - injects output into command template [Source: https://opencode.ai/docs/commands]
File references: @filename in commands [Source: https://opencode.ai/docs/commands]
Config options: template, description, agent, subtask, model [Source: https://opencode.ai/docs/commands]
Agents
Modes: Build (default), Plan - switch with Tab key [Source: https://opencode.ai/docs/agents]
Subagents: General, Explore - invoke via @mention [Source: https://opencode.ai/docs/agents]
Configuration: JSON or Markdown files in .opencode/agents/ [Source: https://opencode.ai/docs/agents]
Options: description, temperature, max_steps, disable, prompt, model, tools, permissions, mode, hidden, task_permissions, color, top_p [Source: https://opencode.ai/docs/agents]
Creation: opencode agent create <name> [Source: https://opencode.ai/docs/agents]
Switching: Tab key cycles between Build mode and Plan mode; @subagent invokes subagents [Source: https://opencode.ai/docs/agents]
Tools
Built-in tools:
bash- Execute shell commandsedit- Edit files in placewrite- Write new filesread- Read file contentsgrep- Search file contentsglob- Find files by patternlist- List directory contentslsp- Language Server Protocol (experimental)patch- Apply patchesskill- Load agent skillstodowrite/todoread- Task managementwebfetch- Fetch web contentquestion- Interactive prompts [Source: https://opencode.ai/docs/tools]
Permissions: allow, deny, ask per tool [Source: https://opencode.ai/docs/tools]
Custom tools: Configure in opencode.json [Source: https://opencode.ai/docs/tools]
MCP servers: External tool integrations [Source: https://opencode.ai/docs/tools]
Ignore patterns: .ignore file in project root [Source: https://opencode.ai/docs/tools]
Best practices: Use workdir param instead of cd patterns. Batch independent tool calls. Prefer grep over bash grep [Source: https://opencode.ai/docs/tools]
Skills System
Format: SKILL.md with YAML frontmatter [Source: https://opencode.ai/docs/skills]
Locations: .opencode/skills/<name>/, ~/.config/opencode/skills/<name>/, .claude/skills/<name>/, ~/.claude/skills/<name>/ [Source: https://opencode.ai/docs/skills]
Frontmatter: name (req), description (req), license (opt), compatibility (opt), metadata (opt) [Source: https://opencode.ai/docs/skills]
Name validation: 1-64 chars, lowercase alphanumeric with hyphens, regex: ^[a-z0-9]+(-[a-z0-9]+)*$ [Source: https://opencode.ai/docs/skills]
Description: 1-1024 characters [Source: https://opencode.ai/docs/skills]
Discovery: Walks up from CWD to git worktree, loads from global configs [Source: https://opencode.ai/docs/skills]
Loading: skill tool loads by name [Source: https://opencode.ai/docs/skills]
Permissions: pattern-based allow/deny/ask [Source: https://opencode.ai/docs/skills]
Rules and AGENTS.md
AGENTS.md: Project root file created by /init command [Source: https://opencode.ai/docs/rules]
Types: Project (local), Global (~/.config/opencode/AGENTS.md), Claude Code Compatible [Source: https://opencode.ai/docs/rules]
Custom instructions: instructions field in opencode.json [Source: https://opencode.ai/docs/rules]
External refs: Reference external files from AGENTS.md [Source: https://opencode.ai/docs/rules]
Precedence: local AGENTS.md > global AGENTS.md > Claude CLAUDE.md [Source: https://opencode.ai/docs/rules]
Common Workflows
Add a New Feature
1. Switch to Plan mode (Tab key)
2. Plan: "Add user authentication to /settings route. Check @src/notes.ts for reference"
3. Review and iterate on the plan
4. Switch to Build mode (Tab key)
5. Build: "Go ahead and implement"
6. Test: !npm test
7. Commit: !git add . && git commit -m "feat: add authentication"
Debug an Issue
1. Identify error location: @src/api/error.ts:42
2. Check related files: @src/components/*
3. Run with debug output: !npm run dev -- --verbose
4. Add breakpoints based on error
5. Test fix: !npm run test -- --watch
6. If issue persists: /undo to revert, refine prompt
Git Workflow
!git status
@path/to/changed/file.ts
!git add . && git commit -m "message"
Use /undo to revert changes via Git, /redo to restore [Source: https://opencode.ai/docs/tui]
Multi-Mode Task
@plan-agent: Create implementation plan
Tab to Build mode, execute plan
Custom Command Workflow
Create command in .opencode/commands/
Use @file references for context
Use $ARGUMENTS for user input
Test with /help command