2026-03-24 15:31:54 +09:00
# Oh-My-OpenAgent Features Reference
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
## Agents
2026-01-20 15:02:54 +09:00
2026-03-24 15:31:54 +09:00
Oh-My-OpenAgent provides 11 specialized AI agents. Each has distinct expertise, optimized models, and tool permissions.
2026-01-20 15:02:54 +09:00
### Core Agents
2026-03-27 12:59:36 +09:00
Core-agent tab cycling is deterministic via injected runtime order field. The fixed priority order is Sisyphus (order: 1), Hephaestus (order: 2), Prometheus (order: 3), and Atlas (order: 4). Remaining agents follow after that stable core ordering.
2026-03-27 12:20:40 +09:00
2026-03-06 20:50:11 +09:00
| Agent | Model | Purpose |
| --------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-04-23 12:21:30 +02:00
| **Sisyphus ** | `claude-opus-4-7` | The default orchestrator. Plans, delegates, and executes complex tasks using specialized subagents with aggressive parallel execution. Todo-driven workflow with extended thinking (32k budget). Fallback: `opencode-go/kimi-k2.6` → `kimi-for-coding/k2p5` → `opencode\|moonshotai\|moonshotai-cn\|firmware\|ollama-cloud\|aihubmix/kimi-k2.5` → `openai\|github-copilot\|opencode/gpt-5.5 (medium)` → `zai-coding-plan\|opencode/glm-5` → `opencode/big-pickle` . |
2026-04-28 08:44:34 +09:00
| **Hephaestus ** | `gpt-5.5` | The Legitimate Craftsman. Autonomous deep worker inspired by AmpCode's deep mode. Goal-oriented execution with thorough research before action. Explores codebase patterns, completes tasks end-to-end without premature stopping. Named after the Greek god of forge and craftsmanship. Requires a GPT-capable provider. |
2026-04-23 12:21:30 +02:00
| **Oracle ** | `gpt-5.5` | Architecture decisions, code review, debugging. Read-only consultation with stellar logical reasoning and deep analysis. Inspired by AmpCode. Fallback: `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `opencode-go/glm-5.1` . |
| **Librarian ** | `gpt-5.4-mini-fast` | Multi-repo analysis, documentation lookup, OSS implementation examples. Deep codebase understanding with evidence-based answers. Fallback: `opencode-go/qwen3.5-plus` → `opencode-go/minimax-m2.7` → `anthropic\|opencode/claude-haiku-4-5` → `openai\|opencode/gpt-5.4-nano` . |
| **Explore ** | `gpt-5.4-mini-fast` | Fast codebase exploration and contextual grep. Fallback: `opencode-go/qwen3.5-plus` → `opencode-go/minimax-m2.7` → `anthropic\|opencode/claude-haiku-4-5` → `openai\|opencode/gpt-5.4-nano` . |
| **Multimodal-Looker ** | `gpt-5.5` | Visual content specialist. Analyzes PDFs, images, diagrams to extract information. Fallback: `opencode-go/kimi-k2.6` → `zai-coding-plan/glm-4.6v` → `openai\|github-copilot\|opencode/gpt-5-nano` . |
2026-01-20 15:02:54 +09:00
### Planning Agents
2026-03-06 20:50:11 +09:00
| Agent | Model | Purpose |
| -------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-04-23 12:21:30 +02:00
| **Prometheus ** | `claude-opus-4-7` | Strategic planner with interview mode. Creates detailed work plans through iterative questioning. Fallback: `openai\|github-copilot\|opencode/gpt-5.5 (high)` → `opencode-go/glm-5.1` → `google\|github-copilot\|opencode/gemini-3.1-pro` . |
2026-05-08 13:06:34 +09:00
| **Metis ** | `claude-sonnet-4-6` | Plan consultant — pre-planning analysis. Identifies hidden intentions, ambiguities, and AI failure points. Fallback: `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `openai\|github-copilot\|opencode/gpt-5.5 (high)` → `opencode-go/glm-5.1` → `kimi-for-coding/k2p5` . |
2026-04-23 12:21:30 +02:00
| **Momus ** | `gpt-5.5` | Plan reviewer — validates plans against clarity, verifiability, and completeness standards. Fallback: `anthropic\|github-copilot\|opencode/claude-opus-4-7 (max)` → `google\|github-copilot\|opencode/gemini-3.1-pro (high)` → `opencode-go/glm-5.1` . |
2026-02-21 03:13:45 +09:00
### Orchestration Agents
2026-03-06 20:50:11 +09:00
| Agent | Model | Purpose |
| ------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-04-23 12:21:30 +02:00
| **Atlas ** | `claude-sonnet-4-6` | Todo-list orchestrator. Executes planned tasks systematically, managing todo items and coordinating work. Fallback: `opencode-go/kimi-k2.6` → `openai\|github-copilot\|opencode/gpt-5.5 (medium)` → `opencode-go/minimax-m2.7` . |
| **Sisyphus-Junior ** | _ (category-dependent) _ | Category-spawned executor. Model is selected automatically based on the task category (visual-engineering, quick, deep, etc.). Its built-in general fallback chain is `anthropic\|github-copilot\|opencode/claude-sonnet-4-6` → `opencode-go/kimi-k2.6` → `openai\|github-copilot\|opencode/gpt-5.5 (medium)` → `opencode-go/minimax-m2.7` → `opencode/big-pickle` . |
2026-01-20 15:02:54 +09:00
### Invoking Agents
2026-01-19 13:36:05 +09:00
The main agent invokes these automatically, but you can call them explicitly:
```
Ask @oracle to review this design and propose an architecture
2026-01-20 15:02:54 +09:00
Ask @librarian how this is implemented - why does the behavior keep changing?
2026-01-19 13:36:05 +09:00
Ask @explore for the policy on this feature
```
2026-01-20 15:02:54 +09:00
### Tool Restrictions
2026-01-19 13:36:05 +09:00
2026-03-06 20:50:11 +09:00
| Agent | Restrictions |
| ----------------- | --------------------------------------------------------------------------------------- |
| oracle | Read-only: cannot write, edit, or delegate (blocked: write, edit, task, call_omo_agent) |
| librarian | Cannot write, edit, or delegate (blocked: write, edit, task, call_omo_agent) |
| explore | Cannot write, edit, or delegate (blocked: write, edit, task, call_omo_agent) |
| multimodal-looker | Allowlist: `read` only |
| atlas | Cannot delegate (blocked: task, call_omo_agent) |
| momus | Cannot write, edit, or delegate (blocked: write, edit, task) |
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
### Background Agents
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
Run agents in the background and continue working:
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
- Have GPT debug while Claude tries different approaches
- Gemini writes frontend while Claude handles backend
- Fire massive parallel searches, continue implementation, use results when ready
```
# Launch in background
2026-02-06 16:01:54 +09:00
task(subagent_type="explore", load_skills=[], prompt="Find auth implementations", run_in_background=true)
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
# Continue working...
# System notifies on completion
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
# Retrieve results when needed
background_output(task_id="bg_abc123")
```
2026-01-19 13:36:05 +09:00
2026-01-26 16:02:34 +09:00
#### Visual Multi-Agent with Tmux
Enable `tmux.enabled` to see background agents in separate tmux panes:
``` json
{
"tmux" : {
"enabled" : true ,
"layout" : "main-vertical"
}
}
```
When running inside tmux:
2026-03-06 20:50:11 +09:00
2026-01-26 16:02:34 +09:00
- Background agents spawn in new panes
- Watch multiple agents work in real-time
- Each pane shows agent output live
- Auto-cleanup when agents complete
2026-05-08 16:08:18 +09:00
- **Stable agent ordering**: core-agent tab cycling defaults to Sisyphus, Hephaestus, Prometheus, Atlas, and can be customized with `agent_order`
2026-01-26 16:02:34 +09:00
2026-03-27 12:20:40 +09:00
Customize agent models, prompts, and permissions in `oh-my-opencode.jsonc` .
2026-01-26 16:02:34 +09:00
2026-04-28 10:48:27 +09:00
### Team Mode (experimental, OFF by default)
Parallel multi-agent coordination modeled after Claude Code's experimental Agent Teams. Enable via `team_mode.enabled: true` . Exposes 12 `team_*` tools for spawning a lead + up to 8 members, a shared deferred-ack mailbox, a shared task list with file-locked claims, optional per-member git worktrees, and an optional tmux layout that streams each member's session output into dedicated panes.
See the * * [Team Mode Guide ](../guide/team-mode.md )** for configuration, team spec format, lifecycle, bounds, and storage layout.
2026-05-08 16:14:30 +09:00
### Architecture Snapshot (current)
- **Feature modules**: `src/features/` has 20 modules.
- **Tool system**: `src/tools/` has 16 tool directories that produce **20 to 39 tools ** depending on config gates.
- **Hook system**: 5-tier composition is **52 base hooks ** . With team mode it becomes **59 ** (extra tool guard + transforms + direct team session event handlers).
- **MCP system**: 3 tiers: built-in remote MCPs (`websearch` , `context7` , `grep_app` ), `.mcp.json` loader, and skill-embedded MCP from `SKILL.md` frontmatter.
- **Managers**: plugin startup creates 4 managers: TmuxSessionManager, BackgroundManager, SkillMcpManager, ConfigHandler.
- **Config pipeline**: 6 phases in order: provider, plugin-components, agents, tools, MCPs, commands.
- **Canonical core agent order**: Sisyphus, Hephaestus, Prometheus, Atlas.
- **OpenClaw**: bidirectional integrations for Discord, Telegram, HTTP, and shell with reply listener daemon.
2026-02-21 04:07:06 +09:00
## Category System
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
A Category is an agent configuration preset optimized for specific domains. Instead of delegating everything to a single AI agent, it is far more efficient to invoke specialists tailored to the nature of the task.
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
### What Categories Are and Why They Matter
2026-02-21 03:59:34 +09:00
2026-02-21 04:07:06 +09:00
- **Category**: "What kind of work is this?" (determines model, temperature, prompt mindset)
- **Skill**: "What tools and knowledge are needed?" (injects specialized knowledge, MCP tools, workflows)
2026-02-21 03:59:34 +09:00
2026-02-21 04:07:06 +09:00
By combining these two concepts, you can generate optimal agents through `task` .
2026-02-21 03:59:34 +09:00
2026-02-21 04:07:06 +09:00
### Built-in Categories
2026-02-21 03:59:34 +09:00
2026-03-06 20:50:11 +09:00
| Category | Default Model | Use Cases |
| -------------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `visual-engineering` | `google/gemini-3.1-pro` | Frontend, UI/UX, design, styling, animation |
2026-04-28 08:44:34 +09:00
| `ultrabrain` | `openai/gpt-5.5` (xhigh) | Deep logical reasoning, complex architecture decisions requiring extensive analysis |
2026-05-07 16:21:25 +09:00
| `deep` | `openai/gpt-5.5` (medium) | Goal-oriented autonomous problem-solving on hairy problems requiring deep research. ONE goal + ONE deliverable per call — multiple goals must fan out as parallel `deep` calls, never bundled into one. |
2026-03-06 20:50:11 +09:00
| `artistry` | `google/gemini-3.1-pro` (high) | Highly creative/artistic tasks, novel ideas |
2026-03-18 18:31:11 +09:00
| `quick` | `openai/gpt-5.4-mini` | Trivial tasks - single file changes, typo fixes, simple modifications |
2026-03-06 20:50:11 +09:00
| `unspecified-low` | `anthropic/claude-sonnet-4-6` | Tasks that don't fit other categories, low effort required |
2026-04-17 14:52:19 +09:00
| `unspecified-high` | `anthropic/claude-opus-4-7` (max) | Tasks that don't fit other categories, high effort required |
2026-03-06 20:50:11 +09:00
| `writing` | `google/gemini-3-flash` | Documentation, prose, technical writing |
2026-02-21 03:59:34 +09:00
2026-02-21 04:07:06 +09:00
### Usage
Specify the `category` parameter when invoking the `task` tool.
``` typescript
2026-03-06 20:50:11 +09:00
task ( {
category : "visual-engineering" ,
prompt : "Add a responsive chart component to the dashboard page" ,
} ) ;
2026-02-21 04:07:06 +09:00
```
### Custom Categories
2026-03-27 12:20:40 +09:00
You can define custom categories in your plugin config file. During the rename transition, both `oh-my-openagent.json[c]` and legacy `oh-my-opencode.json[c]` basenames are recognized.
2026-02-21 04:07:06 +09:00
#### Category Configuration Schema
2026-03-06 20:50:11 +09:00
| Field | Type | Description |
| ------------------- | ------- | --------------------------------------------------------------------------- |
| `description` | string | Human-readable description of the category's purpose. Shown in task prompt. |
2026-04-17 14:52:19 +09:00
| `model` | string | AI model ID to use (e.g., `anthropic/claude-opus-4-7` ) |
2026-03-06 20:50:11 +09:00
| `variant` | string | Model variant (e.g., `max` , `xhigh` ) |
| `temperature` | number | Creativity level (0.0 ~ 2.0). Lower is more deterministic. |
| `top_p` | number | Nucleus sampling parameter (0.0 ~ 1.0) |
| `prompt_append` | string | Content to append to system prompt when this category is selected |
| `thinking` | object | Thinking model configuration (`{ type: "enabled", budgetTokens: 16000 }` ) |
| `reasoningEffort` | string | Reasoning effort level (`low` , `medium` , `high` ) |
| `textVerbosity` | string | Text verbosity level (`low` , `medium` , `high` ) |
| `tools` | object | Tool usage control (disable with `{ "tool_name": false }` ) |
| `maxTokens` | number | Maximum response token count |
| `is_unstable_agent` | boolean | Mark agent as unstable - forces background mode for monitoring |
2026-02-21 04:07:06 +09:00
#### Example Configuration
``` jsonc
{
"categories" : {
// 1. Define new custom category
"korean-writer" : {
"model" : "google/gemini-3-flash" ,
"temperature" : 0.5 ,
2026-03-06 20:50:11 +09:00
"prompt_append" : "You are a Korean technical writer. Maintain a friendly and clear tone." ,
2026-02-21 04:07:06 +09:00
} ,
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
// 2. Override existing category (change model)
"visual-engineering" : {
2026-04-28 08:44:34 +09:00
"model" : "openai/gpt-5.5" ,
2026-03-06 20:50:11 +09:00
"temperature" : 0.8 ,
2026-02-21 04:07:06 +09:00
} ,
// 3. Configure thinking model and restrict tools
"deep-reasoning" : {
2026-04-17 14:52:19 +09:00
"model" : "anthropic/claude-opus-4-7" ,
2026-02-21 04:07:06 +09:00
"thinking" : {
"type" : "enabled" ,
2026-03-06 20:50:11 +09:00
"budgetTokens" : 32000 ,
2026-02-21 04:07:06 +09:00
} ,
"tools" : {
2026-03-06 20:50:11 +09:00
"websearch_web_search_exa" : false ,
} ,
} ,
} ,
2026-02-21 04:07:06 +09:00
}
```
### Sisyphus-Junior as Delegated Executor
When you use a Category, a special agent called **Sisyphus-Junior ** performs the work.
2026-01-20 15:02:54 +09:00
2026-02-21 04:07:06 +09:00
- **Characteristic**: Cannot **re-delegate ** tasks to other agents.
- **Purpose**: Prevents infinite delegation loops and ensures focus on the assigned task.
2026-03-27 12:20:40 +09:00
## Advanced Configuration
2026-03-27 12:59:36 +09:00
### Rename Compatibility
The published package and binary remain `oh-my-opencode` . Inside `opencode.json` , the compatibility layer now prefers the plugin entry `oh-my-openagent` , while legacy `oh-my-opencode` entries still load with a warning. Plugin config files (`oh-my-openagent.json[c]` or legacy `oh-my-opencode.json[c]` ) are recognized during the transition. Run `bunx oh-my-opencode doctor` to check for legacy package name warnings.
2026-03-27 12:20:40 +09:00
### Fallback Models
Configure per-agent fallback chains with arrays that can mix plain model strings and per-model objects:
``` jsonc
{
"agents" : {
"sisyphus" : {
"fallback_models" : [
"opencode/glm-5" ,
2026-04-28 08:44:34 +09:00
{ "model" : "openai/gpt-5.5" , "variant" : "high" } ,
2026-03-27 12:20:40 +09:00
{ "model" : "anthropic/claude-sonnet-4-6" , "thinking" : { "type" : "enabled" , "budgetTokens" : 64000 } }
]
}
}
}
```
When a model errors, the runtime can move through the configured fallback array. Object entries let you tune the backup model itself instead of only swapping the model name.
2026-05-08 16:14:30 +09:00
The plugin uses two independent fallback systems:
- **model-fallback**: proactive model chain selection in chat params.
- **runtime-fallback**: reactive recovery after runtime failures from provider/API behavior.
2026-03-27 12:20:40 +09:00
### File-Based Prompts
2026-03-27 12:59:36 +09:00
Load agent system prompts from external files using `file://` URLs in the `prompt` field, or append additional content with `prompt_append` . The `prompt_append` field also works on categories.
2026-03-27 12:20:40 +09:00
``` jsonc
{
"agents" : {
"sisyphus" : {
"prompt" : "file:///path/to/custom-prompt.md"
2026-03-27 12:59:36 +09:00
} ,
"oracle" : {
"prompt_append" : "file:///path/to/additional-context.md"
}
} ,
"categories" : {
"deep" : {
"prompt_append" : "file:///path/to/deep-category-append.md"
2026-03-27 12:20:40 +09:00
}
}
}
```
2026-03-27 12:59:36 +09:00
Supports `~` expansion for home directory and relative `file://` paths.
2026-03-27 12:20:40 +09:00
Useful for:
- Version controlling prompts separately from config
- Sharing prompts across projects
- Keeping configuration files concise
2026-03-27 12:59:36 +09:00
- Adding category-specific context without duplicating base prompts
2026-03-27 12:20:40 +09:00
2026-03-27 12:59:36 +09:00
The file content is loaded at runtime and injected into the agent's system prompt.
2026-03-27 12:20:40 +09:00
### Session Recovery
The system automatically recovers from common session failures without user intervention:
- **Missing tool results**: reconstructs recoverable tool state and skips invalid tool-part IDs instead of failing the whole recovery pass
- **Thinking block violations**: Recovers from API thinking block mismatches
- **Empty messages**: Reconstructs message history when content is missing
- **Context window limits**: Gracefully handles Claude context window exceeded errors with intelligent compaction
- **JSON parse errors**: Recovers from malformed tool outputs
Recovery happens transparently during agent execution. You see the result, not the failure.
2026-02-21 04:07:06 +09:00
## Skills
Skills provide specialized workflows with embedded MCP servers and detailed instructions. A Skill is a mechanism that injects **specialized knowledge (Context) ** and **tools (MCP) ** for specific domains into agents.
2026-01-20 15:02:54 +09:00
### Built-in Skills
2026-03-06 20:50:11 +09:00
| Skill | Trigger | Description |
| ------------------ | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **git-master ** | commit, rebase, squash, "who wrote", "when was X added" | Git expert. Detects commit styles, splits atomic commits, formulates rebase strategies. Three specializations: Commit Architect (atomic commits, dependency ordering, style detection), Rebase Surgeon (history rewriting, conflict resolution, branch cleanup), History Archaeologist (finding when/where specific changes were introduced). |
| **playwright ** | Browser tasks, testing, screenshots | Browser automation via Playwright MCP. MUST USE for browser verification, browsing, web scraping, testing, and screenshots. |
| **agent-browser ** | Browser tasks on agent-browser | Browser automation via the `agent-browser` CLI. Covers navigation, snapshots, screenshots, network inspection, and scripted interactions. |
| **dev-browser ** | Stateful browser scripting | Browser automation with persistent page state for iterative workflows and authenticated sessions. |
| **frontend-ui-ux ** | UI/UX tasks, styling | Designer-turned-developer persona. Crafts stunning UI/UX even without design mockups. Emphasizes bold aesthetic direction, distinctive typography, cohesive color palettes. |
2026-04-13 21:22:03 +09:00
| **review-work ** | "review work", "review my work", "QA my work" | Post-implementation review orchestrator. Launches 5 parallel background sub-agents for comprehensive review: goal verification, code quality, security, hands-on QA, and context mining. All must pass for review to pass. |
| **ai-slop-remover ** | "remove AI slop", "de-AI", "humanize" | Removes AI-generated code smells from files while preserving functionality. Identifies and eliminates verbose comments, redundant error handling, over-engineered patterns, and generic AI phrasing. |
2026-01-20 15:02:54 +09:00
2026-02-21 04:07:06 +09:00
#### git-master Core Principles
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
**Multiple Commits by Default ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
```
3+ files -> MUST be 2+ commits
5+ files -> MUST be 3+ commits
10+ files -> MUST be 5+ commits
```
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
**Automatic Style Detection ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
- Analyzes last 30 commits for language (Korean/English) and style (semantic/plain/short)
- Matches your repo's commit conventions automatically
2026-01-25 15:02:41 +09:00
2026-02-21 04:07:06 +09:00
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
```
/git-master commit these changes
/git-master rebase onto main
/git-master who wrote this authentication code?
```
2026-01-25 15:02:41 +09:00
2026-02-21 04:07:06 +09:00
#### frontend-ui-ux Design Process
- **Design Process**: Purpose, Tone, Constraints, Differentiation
- **Aesthetic Direction**: Choose extreme - brutalist, maximalist, retro-futuristic, luxury, playful
- **Typography**: Distinctive fonts, avoid generic (Inter, Roboto, Arial)
- **Color**: Cohesive palettes with sharp accents, avoid purple-on-white AI slop
- **Motion**: High-impact staggered reveals, scroll-triggering, surprising hover states
- **Anti-Patterns**: Generic fonts, predictable layouts, cookie-cutter design
### Browser Automation Options
2026-03-24 15:31:54 +09:00
Oh-My-OpenAgent provides two browser automation providers, configurable via `browser_automation_engine.provider` .
2026-02-21 04:07:06 +09:00
#### Option 1: Playwright MCP (Default)
2026-01-20 15:02:54 +09:00
``` yaml
mcp :
playwright :
command : npx
args : [ "@playwright/mcp@latest" ]
```
2026-01-19 13:36:05 +09:00
2026-01-25 15:02:41 +09:00
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-25 15:02:41 +09:00
```
/playwright Navigate to example.com and take a screenshot
```
#### Option 2: Agent Browser CLI (Vercel)
``` json
{
"browser_automation_engine" : {
"provider" : "agent-browser"
}
}
```
**Requires installation ** :
2026-03-06 20:50:11 +09:00
2026-01-25 15:02:41 +09:00
``` bash
bun add -g agent-browser
```
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-25 15:02:41 +09:00
```
Use agent-browser to navigate to example.com and extract the main heading
```
2026-02-21 04:07:06 +09:00
**Capabilities (Both Providers) ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- Navigate and interact with web pages
- Take screenshots and PDFs
- Fill forms and click elements
- Wait for network requests
- Scrape content
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
### Custom Skill Creation (SKILL.md)
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
You can add custom skills directly to `.opencode/skills/` in your project root or `~/.claude/skills/` in your home directory.
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
**Example: `.opencode/skills/my-skill/SKILL.md` **
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
``` markdown
---
name: my-skill
description: My special custom skill
mcp:
my-mcp:
command: npx
args: ["-y", "my-mcp-server"]
---
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
# My Skill Prompt
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
This content will be injected into the agent's system prompt.
...
2026-01-20 15:02:54 +09:00
```
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
**Skill Load Locations ** (priority order, highest first):
2026-03-06 20:50:11 +09:00
2026-02-21 03:13:45 +09:00
- `.opencode/skills/*/SKILL.md` (project, OpenCode native)
- `~/.config/opencode/skills/*/SKILL.md` (user, OpenCode native)
- `.claude/skills/*/SKILL.md` (project, Claude Code compat)
- `.agents/skills/*/SKILL.md` (project, Agents convention)
- `~/.agents/skills/*/SKILL.md` (user, Agents convention)
Same-named skill at higher priority overrides lower.
2026-01-19 13:36:05 +09:00
2026-05-08 16:14:30 +09:00
Loaded skill display priority follows this order: `project > user > opencode > builtin/plugin` .
2026-01-20 15:02:54 +09:00
Disable built-in skills via `disabled_skills: ["playwright"]` in config.
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
### Category + Skill Combo Strategies
You can create powerful specialized agents by combining Categories and Skills.
#### The Designer (UI Implementation)
- **Category**: `visual-engineering`
- **load_skills**: `["frontend-ui-ux", "playwright"]`
- **Effect**: Implements aesthetic UI and verifies rendering results directly in browser.
#### The Architect (Design Review)
- **Category**: `ultrabrain`
- **load_skills**: `[]` (pure reasoning)
2026-04-28 08:44:34 +09:00
- **Effect**: Leverages GPT-5.5 xhigh reasoning for in-depth system architecture analysis.
2026-02-21 04:07:06 +09:00
#### The Maintainer (Quick Fixes)
- **Category**: `quick`
- **load_skills**: `["git-master"]`
- **Effect**: Uses cost-effective models to quickly fix code and generate clean commits.
### task Prompt Guide
2026-01-20 15:02:54 +09:00
2026-02-21 04:07:06 +09:00
When delegating, **clear and specific ** prompts are essential. Include these 7 elements:
1. **TASK ** : What needs to be done? (single objective)
2. **EXPECTED OUTCOME ** : What is the deliverable?
3. **REQUIRED SKILLS ** : Which skills should be loaded via `load_skills` ?
4. **REQUIRED TOOLS ** : Which tools must be used? (whitelist)
5. **MUST DO ** : What must be done (constraints)
6. **MUST NOT DO ** : What must never be done
7. **CONTEXT ** : File paths, existing patterns, reference materials
**Bad Example ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
> "Fix this"
**Good Example ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
> **TASK**: Fix mobile layout breaking issue in `LoginButton.tsx`
> **CONTEXT**: `src/components/LoginButton.tsx`, using Tailwind CSS
> **MUST DO**: Change flex-direction at `md:` breakpoint
> **MUST NOT DO**: Modify existing desktop layout
> **EXPECTED**: Buttons align vertically on mobile
## Commands
2026-01-20 15:02:54 +09:00
Commands are slash-triggered workflows that execute predefined templates.
### Built-in Commands
2026-03-06 20:50:11 +09:00
| Command | Description |
| -------------------- | ------------------------------------------------------------------------------------------ |
| `/init-deep` | Initialize hierarchical AGENTS.md knowledge base |
| `/ralph-loop` | Start self-referential development loop until completion |
| `/ulw-loop` | Start ultrawork loop - continues with ultrawork mode |
| `/cancel-ralph` | Cancel active Ralph Loop |
| `/refactor` | Intelligent refactoring with LSP, AST-grep, architecture analysis, and TDD verification |
| `/start-work` | Start Sisyphus work session from Prometheus plan |
2026-02-21 03:13:45 +09:00
| `/stop-continuation` | Stop all continuation mechanisms (ralph loop, todo continuation, boulder) for this session |
2026-03-06 20:50:11 +09:00
| `/handoff` | Create a detailed context summary for continuing work in a new session |
2026-01-20 15:02:54 +09:00
2026-02-21 04:07:06 +09:00
### /init-deep
2026-01-20 15:02:54 +09:00
**Purpose ** : Generate hierarchical AGENTS.md files throughout your project
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
```
/init-deep [--create-new] [--max-depth=N]
```
Creates directory-specific context files that agents automatically read:
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
```
project/
├── AGENTS.md # Project-wide context
├── src/
│ ├── AGENTS.md # src-specific context
│ └── components/
│ └── AGENTS.md # Component-specific context
```
2026-02-21 04:07:06 +09:00
### /ralph-loop
2026-01-20 15:02:54 +09:00
**Purpose ** : Self-referential development loop that runs until task completion
**Named after ** : Anthropic's Ralph Wiggum plugin
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-19 13:36:05 +09:00
```
2026-01-20 15:02:54 +09:00
/ralph-loop "Build a REST API with authentication"
/ralph-loop "Refactor the payment module" --max-iterations=50
```
**Behavior ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- Agent works continuously toward the goal
- Detects `<promise>DONE</promise>` to know when complete
- Auto-continues if agent stops without completion
- Ends when: completion detected, max iterations reached (default 100), or `/cancel-ralph`
**Configure ** : `{ "ralph_loop": { "enabled": true, "default_max_iterations": 100 } }`
2026-02-21 04:07:06 +09:00
### /ulw-loop
2026-01-20 15:02:54 +09:00
**Purpose ** : Same as ralph-loop but with ultrawork mode active
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
Everything runs at maximum intensity - parallel agents, background tasks, aggressive exploration.
2026-02-21 04:07:06 +09:00
### /refactor
2026-01-20 15:02:54 +09:00
**Purpose ** : Intelligent refactoring with full toolchain
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
```
/refactor <target> [--scope=<file|module|project>] [--strategy=<safe|aggressive>]
```
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
**Features ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- LSP-powered rename and navigation
- AST-grep for pattern matching
- Architecture analysis before changes
- TDD verification after changes
- Codemap generation
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
### /start-work
2026-01-20 15:02:54 +09:00
**Purpose ** : Start execution from a Prometheus-generated plan
**Usage ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
```
/start-work [plan-name]
```
2026-01-20 15:57:14 +09:00
Uses atlas agent to execute planned tasks systematically.
2026-01-20 15:02:54 +09:00
2026-02-21 04:07:06 +09:00
### /stop-continuation
2026-02-21 03:13:45 +09:00
**Purpose ** : Stop all continuation mechanisms for this session
Stops ralph loop, todo continuation, and boulder state. Use when you want the agent to stop its current multi-step workflow.
2026-02-21 04:07:06 +09:00
### /handoff
2026-02-21 03:13:45 +09:00
**Purpose ** : Create a detailed context summary for continuing work in a new session
Generates a structured handoff document capturing the current state, what was done, what remains, and relevant file paths — enabling seamless continuation in a fresh session.
2026-01-20 15:02:54 +09:00
### Custom Commands
Load custom commands from:
2026-03-06 20:50:11 +09:00
2026-02-21 03:13:45 +09:00
- `.opencode/command/*.md` (project, OpenCode native)
- `~/.config/opencode/command/*.md` (user, OpenCode native)
- `.claude/commands/*.md` (project, Claude Code compat)
- `~/.config/opencode/commands/*.md` (user, Claude Code compat)
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
## Tools
2026-05-08 16:14:30 +09:00
Tool registration is config-gated. `src/tools/` has 16 directories, and exposed tools range from **20 minimum to 39 maximum ** .
2026-02-21 04:07:06 +09:00
### Code Search Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| -------- | ----------------------------------------------------------------- |
2026-02-21 04:07:06 +09:00
| **grep ** | Content search using regular expressions. Filter by file pattern. |
2026-03-06 20:50:11 +09:00
| **glob ** | Fast file pattern matching. Find files by name patterns. |
2026-02-21 04:07:06 +09:00
### Edit Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-05-08 16:14:30 +09:00
| **edit ** | Hash-anchored edit tool. Uses `LINE#ID` format for precise, safe modifications. Validates content hashes before applying changes and rejects stale hash edits. |
Hashline IDs use characters from `ZPMQVRWSNKTXJBYH` .
2026-02-21 04:07:06 +09:00
### LSP Tools (IDE Features for Agents)
2026-03-06 20:50:11 +09:00
| Tool | Description |
| ----------------------- | ------------------------------------------- |
| **lsp_diagnostics ** | Get errors/warnings before build |
| **lsp_prepare_rename ** | Validate rename operation |
| **lsp_rename ** | Rename symbol across workspace |
| **lsp_goto_definition ** | Jump to symbol definition |
| **lsp_find_references ** | Find all usages across workspace |
| **lsp_symbols ** | Get file outline or workspace symbol search |
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
### AST-Grep Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| -------------------- | -------------------------------------------- |
| **ast_grep_search ** | AST-aware code pattern search (25 languages) |
| **ast_grep_replace ** | AST-aware code replacement |
2026-02-21 04:07:06 +09:00
### Delegation Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **call_omo_agent ** | Spawn explore/librarian agents. Supports `run_in_background` . |
| **task ** | Category-based task delegation. Supports built-in categories like `visual-engineering` , `ultrabrain` , `deep` , `artistry` , `quick` , `unspecified-low` , `unspecified-high` , and `writing` , or direct agent targeting via `subagent_type` . |
| **background_output ** | Retrieve background task results |
| **background_cancel ** | Cancel running background tasks |
2026-02-21 04:07:06 +09:00
### Visual Analysis Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-02-21 04:07:06 +09:00
| **look_at ** | Analyze media files (PDFs, images, diagrams) via Multimodal-Looker agent. Extracts specific information or summaries from documents, describes visual content. |
### Skill Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| ------------- | ------------------------------------------------------------------------------------------------------ |
| **skill ** | Load and execute a skill or slash command by name. Returns detailed instructions with context applied. |
| **skill_mcp ** | Invoke MCP server operations from skill-embedded MCPs. |
2026-02-21 04:07:06 +09:00
### Session Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| ------------------ | ---------------------------------------- |
| **session_list ** | List all OpenCode sessions |
| **session_read ** | Read messages and history from a session |
2026-02-21 04:07:06 +09:00
| **session_search ** | Full-text search across session messages |
2026-03-06 20:50:11 +09:00
| **session_info ** | Get session metadata and statistics |
2026-02-21 04:07:06 +09:00
### Task Management Tools
Requires `experimental.task_system: true` in config.
2026-03-06 20:50:11 +09:00
| Tool | Description |
| --------------- | ---------------------------------------- |
2026-02-21 04:07:06 +09:00
| **task_create ** | Create a new task with auto-generated ID |
2026-03-06 20:50:11 +09:00
| **task_get ** | Retrieve a task by ID |
| **task_list ** | List all active tasks |
| **task_update ** | Update an existing task |
2026-02-21 04:07:06 +09:00
#### Task System Details
2026-03-24 15:31:54 +09:00
**Note on Claude Code Alignment ** : This implementation follows Claude Code's internal Task tool signatures (`TaskCreate` , `TaskUpdate` , `TaskList` , `TaskGet` ) and field naming conventions (`subject` , `blockedBy` , `blocks` , etc.). However, Anthropic has not published official documentation for these tools. This is Oh My OpenAgent's own implementation based on observed Claude Code behavior and internal specifications.
2026-02-21 04:07:06 +09:00
**Task Schema ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
``` ts
interface Task {
2026-03-06 20:50:11 +09:00
id : string ; // T-{uuid}
subject : string ; // Imperative: "Run tests"
description : string ;
status : "pending" | "in_progress" | "completed" | "deleted" ;
activeForm? : string ; // Present continuous: "Running tests"
blocks : string [ ] ; // Tasks this blocks
blockedBy : string [ ] ; // Tasks blocking this
owner? : string ; // Agent name
metadata? : Record < string , unknown > ;
threadID : string ; // Session ID (auto-set)
2026-02-21 04:07:06 +09:00
}
```
**Dependencies and Parallel Execution ** :
```
[Build Frontend] ──┐
├──→ [Integration Tests] ──→ [Deploy]
[Build Backend] ──┘
```
- Tasks with empty `blockedBy` run in parallel
- Dependent tasks wait until blockers complete
**Example Workflow ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
``` ts
2026-03-06 20:50:11 +09:00
TaskCreate ( { subject : "Build frontend" } ) ; // T-001
TaskCreate ( { subject : "Build backend" } ) ; // T-002
TaskCreate ( { subject : "Run integration tests" , blockedBy : [ "T-001" , "T-002" ] } ) ; // T-003
2026-02-21 04:07:06 +09:00
2026-03-06 20:50:11 +09:00
TaskList ( ) ;
2026-02-21 04:07:06 +09:00
// T-001 [pending] Build frontend blockedBy: []
// T-002 [pending] Build backend blockedBy: []
// T-003 [pending] Integration tests blockedBy: [T-001, T-002]
2026-03-06 20:50:11 +09:00
TaskUpdate ( { id : "T-001" , status : "completed" } ) ;
TaskUpdate ( { id : "T-002" , status : "completed" } ) ;
2026-02-21 04:07:06 +09:00
// T-003 now unblocked
```
**Storage ** : Tasks are stored as JSON files in `.sisyphus/tasks/` .
**Difference from TodoWrite ** :
2026-03-06 20:50:11 +09:00
| Feature | TodoWrite | Task System |
| ------------------ | -------------- | -------------------------- |
| Storage | Session memory | File system |
| Persistence | Lost on close | Survives restart |
| Dependencies | None | Full support (`blockedBy` ) |
| Parallel execution | Manual | Automatic optimization |
2026-02-21 04:07:06 +09:00
**When to Use ** : Use Tasks when work has multiple steps with dependencies, multiple subagents will collaborate, or progress should persist across sessions.
### Interactive Terminal Tools
2026-03-06 20:50:11 +09:00
| Tool | Description |
| -------------------- | -------------------------------------------------------------------------------------------------- |
2026-02-21 04:07:06 +09:00
| **interactive_bash ** | Tmux-based terminal for TUI apps (vim, htop, pudb). Pass tmux subcommands directly without prefix. |
**Usage Examples ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
``` bash
# Create a new session
interactive_bash( tmux_command = "new-session -d -s dev-app" )
# Send keystrokes to a session
interactive_bash( tmux_command = "send-keys -t dev-app 'vim main.py' Enter" )
# Capture pane output
interactive_bash( tmux_command = "capture-pane -p -t dev-app" )
```
**Key Points ** :
2026-03-06 20:50:11 +09:00
2026-02-21 04:07:06 +09:00
- Commands are tmux subcommands (no `tmux` prefix)
- Use for interactive apps that need persistent sessions
- One-shot commands should use regular `Bash` tool with `&`
## Hooks
2026-01-19 13:36:05 +09:00
2026-03-06 20:50:11 +09:00
Hooks intercept and modify behavior at key points in the agent lifecycle across the full session, message, tool, and parameter pipeline.
2026-01-19 13:36:05 +09:00
2026-05-08 16:14:30 +09:00
Current composition counts:
- Session: 24
- Tool Guard: 14
- Transform: 5
- Continuation: 7
- Skill: 2
- Total base: 52
- With `team_mode.enabled` : +1 Tool Guard, +2 Transform, +4 direct team session event handlers in `src/plugin/event.ts` = 59
2026-01-20 15:02:54 +09:00
### Hook Events
2026-01-19 13:36:05 +09:00
2026-03-06 20:50:11 +09:00
| Event | When | Can |
| --------------- | ----------------------------- | -------------------------------------------------- |
| **PreToolUse ** | Before tool execution | Block, modify input, inject context |
| **PostToolUse ** | After tool execution | Add warnings, modify output, inject messages |
| **Message ** | During message processing | Transform content, detect keywords, activate modes |
| **Event ** | On session lifecycle changes | Recovery, fallback, notifications |
| **Transform ** | During context transformation | Inject context, validate blocks |
| **Params ** | When setting API parameters | Adjust model settings, effort level |
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
### Built-in Hooks
#### Context & Injection
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ------------------------------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **directory-agents-injector ** | PreToolUse + PostToolUse | Auto-injects AGENTS.md when reading files. Walks from file to project root, collecting all AGENTS.md files. Deprecated for OpenCode 1.1.37+ — Auto-disabled when native AGENTS.md injection is available. |
| **directory-readme-injector ** | PreToolUse + PostToolUse | Auto-injects README.md for directory context. |
| **rules-injector ** | PreToolUse + PostToolUse | Injects rules from `.claude/rules/` when conditions match. Supports globs and alwaysApply. |
| **compaction-context-injector ** | Event | Preserves critical context during session compaction. |
| **context-window-monitor ** | Event | Monitors context window usage and tracks token consumption. |
| **preemptive-compaction ** | Event | Proactively compacts sessions before hitting token limits. |
2026-01-20 15:02:54 +09:00
#### Productivity & Control
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| --------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
2026-05-08 16:14:30 +09:00
| **keyword-detector ** | Message + Transform | IntentGate detector. Activates `ultrawork` /`ulw` , `search` , `analyze` , and `team` modes from message keywords. |
2026-03-06 20:50:11 +09:00
| **think-mode ** | Params | Auto-detects extended thinking needs. Catches "think deeply", "ultrathink" and adjusts model settings. |
| **ralph-loop ** | Event + Message | Manages self-referential loop continuation. |
| **start-work ** | Message | Handles /start-work command execution. |
| **auto-slash-command ** | Message | Automatically executes slash commands from prompts. |
| **stop-continuation-guard ** | Event + Message | Guards the stop-continuation mechanism. |
| **category-skill-reminder ** | Event + PostToolUse | Reminds agents about available category skills for delegation. |
| **anthropic-effort ** | Params | Adjusts Anthropic API effort level based on context. |
2026-01-20 15:02:54 +09:00
#### Quality & Safety
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ------------------------------- | ------------------------ | ----------------------------------------------------------------------------------------- |
2026-05-08 16:14:30 +09:00
| **comment-checker ** | PostToolUse | Runs `@code-yeongyu/comment-checker` to block AI-slop comment patterns. Bypass options: `// @allow` for a line, `// comment-checker-disable-file` at file top. |
2026-03-06 20:50:11 +09:00
| **thinking-block-validator ** | Transform | Validates thinking blocks to prevent API errors. |
| **edit-error-recovery ** | PostToolUse + Event | Recovers from edit tool failures. |
| **write-existing-file-guard ** | PreToolUse | Prevents accidental overwrites of existing files without reading them first. |
| **hashline-read-enhancer ** | PostToolUse | Enhances read output with hash-anchored line markers for the hashline edit tool. |
| **hashline-edit-diff-enhancer ** | PreToolUse + PostToolUse | Enhances edit operations with diff markers for the hashline edit tool. |
2026-01-20 15:02:54 +09:00
#### Recovery & Stability
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ------------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **session-recovery ** | Event | Recovers from session errors — missing tool results, thinking block issues, empty messages. |
| **anthropic-context-window-limit-recovery ** | Event | Handles Claude context window limits gracefully. |
| **runtime-fallback ** | Event + Message | Automatically switches to backup models on retryable API errors (e.g., 429, 503, 529), provider key misconfiguration errors (e.g., missing API key), and auto-retry signals (when `timeout_seconds > 0` ). Configurable retry logic with per-model cooldown. |
| **model-fallback ** | Event + Message | Manages model fallback chain when primary model is unavailable. |
| **json-error-recovery ** | PostToolUse | Recovers from JSON parse errors in tool outputs. |
2026-01-20 15:02:54 +09:00
#### Truncation & Context Management
2026-01-19 13:36:05 +09:00
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ------------------------- | ----------- | --------------------------------------------------------------------------------------------------- |
2026-02-21 03:13:45 +09:00
| **tool-output-truncator ** | PostToolUse | Truncates output from Grep, Glob, LSP, AST-grep tools. Dynamically adjusts based on context window. |
2026-01-20 15:02:54 +09:00
#### Notifications & UX
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ---------------------------- | ------------------- | -------------------------------------------------------------------------------------------------- |
| **auto-update-checker ** | Event | Checks for new versions on session creation, shows startup toast with version and Sisyphus status. |
| **background-notification ** | Event | Notifies when background agent tasks complete. |
| **session-notification ** | Event | OS notifications when agents go idle. Works on macOS, Linux, Windows. |
| **agent-usage-reminder ** | PostToolUse + Event | Reminds you to leverage specialized agents for better results. |
| **question-label-truncator ** | PreToolUse | Truncates long question labels in the Question tool UI. |
2026-01-20 15:02:54 +09:00
#### Task Management
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| -------------------------------- | ------------------- | --------------------------------------------------- |
| **task-resume-info ** | PostToolUse | Provides task resume information for continuity. |
| **delegate-task-retry ** | PostToolUse + Event | Retries failed task delegation calls. |
| **empty-task-response-detector ** | PostToolUse | Detects empty responses from delegated tasks. |
| **tasks-todowrite-disabler ** | PreToolUse | Disables TodoWrite tool when task system is active. |
2026-02-21 03:13:45 +09:00
#### Continuation
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ------------------------------ | ----- | ---------------------------------------------------------- |
2026-02-21 03:13:45 +09:00
| **todo-continuation-enforcer ** | Event | Enforces todo completion — yanks idle agents back to work. |
2026-03-06 20:50:11 +09:00
| **compaction-todo-preserver ** | Event | Preserves todo state during session compaction. |
| **unstable-agent-babysitter ** | Event | Handles unstable agent behavior with recovery strategies. |
2026-01-20 15:02:54 +09:00
#### Integration
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| ---------------------------- | ------------------- | ------------------------------------------------------- |
| **claude-code-hooks ** | All | Executes hooks from Claude Code's settings.json. |
| **atlas ** | Multiple | Main orchestration logic for todo-driven work sessions. |
| **interactive-bash-session ** | PostToolUse + Event | Manages tmux sessions for interactive CLI. |
| **non-interactive-env ** | PreToolUse | Handles non-interactive environment constraints. |
2026-01-20 15:02:54 +09:00
#### Specialized
2026-03-06 20:50:11 +09:00
| Hook | Event | Description |
| --------------------------- | ---------- | ---------------------------------------------------------- |
| **prometheus-md-only ** | PreToolUse | Enforces markdown-only output for Prometheus planner. |
| **no-sisyphus-gpt ** | Message | Prevents Sisyphus from running on incompatible GPT models. |
| **no-hephaestus-non-gpt ** | Message | Prevents Hephaestus from running on non-GPT models. |
| **sisyphus-junior-notepad ** | PreToolUse | Manages notepad state for Sisyphus-Junior agents. |
2026-01-20 15:02:54 +09:00
### Claude Code Hooks Integration
Run custom scripts via Claude Code's `settings.json` :
2026-01-19 13:36:05 +09:00
``` json
{
"hooks" : {
"PostToolUse" : [
{
"matcher" : "Write|Edit" ,
"hooks" : [ { "type" : "command" , "command" : "eslint --fix $FILE" } ]
}
]
}
}
```
2026-01-20 15:02:54 +09:00
**Hook locations ** :
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- `~/.claude/settings.json` (user)
- `./.claude/settings.json` (project)
- `./.claude/settings.local.json` (local, git-ignored)
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
### Disabling Hooks
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
Disable specific hooks in config:
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
``` json
{
2026-03-19 11:37:30 +09:00
"disabled_hooks" : [ "comment-checker" ]
2026-01-20 15:02:54 +09:00
}
```
2026-01-19 13:36:05 +09:00
2026-02-21 04:07:06 +09:00
## MCPs
2026-01-20 15:02:54 +09:00
2026-05-08 16:14:30 +09:00
The plugin uses a three-tier MCP architecture:
1. Built-in remote MCPs from `src/mcp/`
2. Claude Code `.mcp.json` loader with `${VAR}` expansion
3. Skill-embedded MCP servers declared in `SKILL.md` frontmatter
2026-02-21 04:07:06 +09:00
### Built-in MCPs
2026-01-20 15:02:54 +09:00
2026-03-06 20:50:11 +09:00
| MCP | Description |
| ------------- | --------------------------------------------------------------------------------------------- |
| **websearch ** | Real-time web search powered by Exa AI |
| **context7 ** | Official documentation lookup for any library/framework |
| **grep_app ** | Ultra-fast code search across public GitHub repos. Great for finding implementation examples. |
2026-01-20 15:02:54 +09:00
### Skill-Embedded MCPs
Skills can bring their own MCP servers:
``` yaml
---
description : Browser automation skill
mcp :
playwright :
command : npx
args : [ "-y" , "@anthropic-ai/mcp-playwright" ]
---
```
The `skill_mcp` tool invokes these operations with full schema discovery.
2026-05-08 16:14:30 +09:00
Skill MCP clients are isolated per session by key `${sessionID}:${skillName}:${serverName}` .
2026-01-29 19:48:36 +09:00
#### OAuth-Enabled MCPs
Skills can define OAuth-protected remote MCP servers. OAuth 2.1 with full RFC compliance (RFC 9728, 8414, 8707, 7591) is supported:
``` yaml
---
description : My API skill
mcp :
my-api :
url : https://api.example.com/mcp
oauth :
clientId : ${CLIENT_ID}
scopes : [ "read" , "write" ]
---
```
When a skill MCP has `oauth` configured:
2026-03-06 20:50:11 +09:00
2026-01-29 19:48:36 +09:00
- **Auto-discovery**: Fetches `/.well-known/oauth-protected-resource` (RFC 9728), falls back to `/.well-known/oauth-authorization-server` (RFC 8414)
- **Dynamic Client Registration**: Auto-registers with servers supporting RFC 7591 (clientId becomes optional)
- **PKCE**: Mandatory for all flows
- **Resource Indicators**: Auto-generated from MCP URL per RFC 8707
- **Token Storage**: Persisted in `~/.config/opencode/mcp-oauth.json` (chmod 0600)
- **Auto-refresh**: Tokens refresh on 401; step-up authorization on 403 with `WWW-Authenticate`
- **Dynamic Port**: OAuth callback server uses an auto-discovered available port
Pre-authenticate via CLI:
``` bash
2026-03-27 12:20:40 +09:00
bunx oh-my-opencode mcp oauth login <server-name> --server-url https://api.example.com
2026-01-29 19:48:36 +09:00
```
2026-03-27 12:59:36 +09:00
## Model Capabilities
Model capabilities are models.dev-backed, with a refreshable cache and compatibility diagnostics. The system combines bundled models.dev snapshot data, optional refreshed cache data, provider runtime metadata, and heuristics when exact metadata is unavailable.
### Refreshing Capabilities
Update the local cache with the latest model information:
``` bash
bunx oh-my-opencode refresh-model-capabilities
```
Configure automatic refresh at startup:
``` jsonc
{
"model_capabilities" : {
"enabled" : true ,
"auto_refresh_on_start" : true ,
"refresh_timeout_ms" : 5000 ,
"source_url" : "https://models.dev/api.json"
}
}
```
### Capability Diagnostics
Run `bunx oh-my-opencode doctor` to see capability diagnostics including:
- effective model resolution for agents and categories
- warnings when configured models rely on compatibility fallback
- override compatibility details alongside model resolution output
2026-01-20 15:02:54 +09:00
## Context Injection
### Directory AGENTS.md
Auto-injects AGENTS.md when reading files. Walks from file directory to project root:
```
project/
├── AGENTS.md # Injected first
├── src/
│ ├── AGENTS.md # Injected second
│ └── components/
│ ├── AGENTS.md # Injected third
│ └── Button.tsx # Reading this injects all 3
```
### Conditional Rules
Inject rules from `.claude/rules/` when conditions match:
``` markdown
---
globs: ["*.ts", "src/**/*.js"]
description: "TypeScript/JavaScript coding rules"
---
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- Use PascalCase for interface names
- Use camelCase for function names
```
Supports:
2026-03-06 20:50:11 +09:00
2026-01-20 15:02:54 +09:00
- `.md` and `.mdc` files
- `globs` field for pattern matching
- `alwaysApply: true` for unconditional rules
- Walks upward from file to project root, plus `~/.claude/rules/`
## Claude Code Compatibility
Full compatibility layer for Claude Code configurations.
### Config Loaders
2026-03-06 20:50:11 +09:00
| Type | Locations |
| ------------ | ---------------------------------------------------------------------------------- |
| **Commands ** | `~/.config/opencode/commands/` , `.claude/commands/` |
| **Skills ** | `~/.config/opencode/skills/*/SKILL.md` , `.claude/skills/*/SKILL.md` |
| **Agents ** | `~/.config/opencode/agents/*.md` , `.claude/agents/*.md` |
| **MCPs ** | `~/.claude.json` , `~/.config/opencode/.mcp.json` , `.mcp.json` , `.claude/.mcp.json` |
2026-01-20 15:02:54 +09:00
MCP configs support environment variable expansion: `${VAR}` .
2026-01-19 13:36:05 +09:00
### Compatibility Toggles
2026-01-20 15:02:54 +09:00
Disable specific features:
2026-01-19 13:36:05 +09:00
``` json
{
"claude_code" : {
"mcp" : false ,
"commands" : false ,
"skills" : false ,
"agents" : false ,
"hooks" : false ,
"plugins" : false
}
}
```
2026-03-06 20:50:11 +09:00
| Toggle | Disables |
| ---------- | ------------------------------------------------------------ |
| `mcp` | `.mcp.json` files (keeps built-in MCPs) |
| `commands` | Command loading from Claude Code paths |
| `skills` | Skill loading from Claude Code paths |
| `agents` | Agent loading from Claude Code paths (keeps built-in agents) |
| `hooks` | settings.json hooks |
| `plugins` | Claude Code marketplace plugins |
2026-01-19 13:36:05 +09:00
2026-01-20 15:02:54 +09:00
Disable specific plugins:
2026-01-19 13:36:05 +09:00
``` json
{
"claude_code" : {
"plugins_override" : {
2026-01-20 15:02:54 +09:00
"claude-mem@thedotmack" : false
2026-01-19 13:36:05 +09:00
}
}
}
```