skills/oh-my-openagent-omo/SKILL.md
```markdown --- name: oh-my-openagent-omo description: Expert skill for oh-my-openagent (omo) — the multi-model AI agent harness built on OpenCode with ultrawork orchestration, discipline agents, and multi-provider support triggers: - "set up oh-my-openagent" - "configure omo ultrawork" - "install oh-my-opencode" - "use ultrawork with claude" - "set up multi-model agent orchestration" - "configure omo with openai and anthropic" - "run discipline agents with omo" - "get oh-my-open
npx skillsauth add aradotso/trending-skills skills/oh-my-openagent-omoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
---
name: oh-my-openagent-omo
description: Expert skill for oh-my-openagent (omo) — the multi-model AI agent harness built on OpenCode with ultrawork orchestration, discipline agents, and multi-provider support
triggers:
- "set up oh-my-openagent"
- "configure omo ultrawork"
- "install oh-my-opencode"
- "use ultrawork with claude"
- "set up multi-model agent orchestration"
- "configure omo with openai and anthropic"
- "run discipline agents with omo"
- "get oh-my-openagent working"
---
# Oh My OpenAgent (omo) — AI Agent Harness
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
oh-my-openagent (omo) is an open-source agent harness built on top of OpenCode that lets you orchestrate multiple AI models (Claude, GPT, Gemini, Kimi, GLM, Minimax, etc.) in parallel. It ships with pre-configured discipline agents, the `ultrawork` command, hash-anchored editing, LSP + AST-grep tooling, built-in MCPs, and a tmux-integrated TUI.
---
## Installation
### Via AI Agent (recommended)
Paste this into Claude Code, Cursor, AmpCode, or any coding agent:
Install and configure oh-my-opencode by following the instructions here: https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/refs/heads/dev/docs/guide/installation.md
### Manual — npm global
```bash
npm install -g oh-my-opencode
npx oh-my-opencode@latest
bun add -g oh-my-opencode
# Launch the TUI
omo
# Or use the legacy alias
oh-my-opencode
# Once inside the TUI, activate full orchestration:
ultrawork
# or the short alias:
ulw
omo uses a config.json (OpenCode-compatible) plus a CLAUDE.md / AGENTS.md skill file in your project root.
~/.config/opencode/config.json{
"$schema": "https://opencode.ai/config.schema.json",
"theme": "opencode",
"providers": {
"anthropic": {
"apiKey": "$ANTHROPIC_API_KEY"
},
"openai": {
"apiKey": "$OPENAI_API_KEY"
},
"google": {
"apiKey": "$GOOGLE_API_KEY"
}
},
"model": "anthropic/claude-opus-4-5",
"autoshare": false
}
config.json (full power){
"$schema": "https://opencode.ai/config.schema.json",
"theme": "opencode",
"providers": {
"anthropic": {
"apiKey": "$ANTHROPIC_API_KEY"
},
"openai": {
"apiKey": "$OPENAI_API_KEY"
},
"google": {
"apiKey": "$GOOGLE_API_KEY"
},
"moonshot": {
"apiKey": "$MOONSHOT_API_KEY",
"baseURL": "https://api.moonshot.ai/v1"
},
"zhipu": {
"apiKey": "$ZHIPU_API_KEY",
"baseURL": "https://open.bigmodel.cn/api/paas/v4"
}
},
"model": "anthropic/claude-opus-4-5",
"mcpServers": {
"exa": {
"type": "stdio",
"command": "npx",
"args": ["-y", "exa-mcp-server"],
"env": {
"EXA_API_KEY": "$EXA_API_KEY"
}
},
"context7": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
# Required for your chosen provider(s)
export ANTHROPIC_API_KEY="..."
export OPENAI_API_KEY="..."
export GOOGLE_API_KEY="..."
# Optional — for built-in MCPs
export EXA_API_KEY="..."
# Optional — additional providers
export MOONSHOT_API_KEY="..." # Kimi
export ZHIPU_API_KEY="..." # GLM / Z.ai
| Command | Alias | Description |
|---|---|---|
| ultrawork | ulw | Activates all discipline agents; orchestrates until task is complete |
| /ulw-loop | ralph loop | Self-referential loop; reruns until 100% done |
| /new | | Start a new session |
| /model | | Switch the active model |
| /mcp | | List or toggle MCP servers |
| /share | | Share session transcript |
| Ctrl+C | | Interrupt current agent run |
ultrawork spins up the full Sisyphus team in parallel:
| Agent | Role | |---|---| | Sisyphus | Orchestrator — delegates and tracks overall task completion | | Hephaestus | Implementer — writes and edits code | | Oracle | Reasoner — deep analysis, planning, and debugging | | Librarian | Documentation and context retrieval | | Explore | Web search, discovery, and research via Exa MCP |
Each agent is scoped to a lightweight context to avoid token bloat.
omo is Claude Code-compatible. Place a CLAUDE.md or AGENTS.md file in your project root to give agents project-specific context:
# Project Context
## Stack
- Next.js 15 (App Router)
- Prisma + PostgreSQL
- Tailwind CSS v4
## Key commands
- `pnpm dev` — start dev server
- `pnpm test` — run Vitest suite
- `pnpm db:migrate` — run Prisma migrations
## Conventions
- All React components use named exports
- API routes live in `src/app/api/`
- Shared types in `src/types/`
omo uses LINE#ID content hashes to validate every file edit, preventing stale-line errors.
When writing agent prompts that involve edits, reference the hash pattern:
// The agent will internally resolve LINE#ID before patching.
// You never interact with hashes directly — they are managed by omo's edit tool.
// Just describe the change in plain language:
"In src/utils/format.ts, change the date format from MM/DD/YYYY to YYYY-MM-DD"
omo ships workspace-level rename and AST-aware rewrite capabilities:
# Agents can invoke these automatically. You can also trigger explicitly:
# "Rename all usages of `getUserById` to `fetchUserById` across the workspace"
# "Find all React components that use useEffect without a dependency array"
For manual AST-grep queries in your terminal:
# Install ast-grep if not present
npm install -g @ast-grep/cli
# Example: find all `console.log` calls in TypeScript files
ast-grep --lang typescript --pattern 'console.log($$$)'
# Example: find React hooks missing dependency arrays
ast-grep --lang typescript --pattern 'useEffect(() => { $$$ })'
| MCP | Purpose | Env var needed |
|---|---|---|
| Exa | Live web search | EXA_API_KEY |
| Context7 | Official library docs lookup | none |
| Grep.app | GitHub code search | none |
Add them to config.json under mcpServers:
{
"mcpServers": {
"exa": {
"type": "stdio",
"command": "npx",
"args": ["-y", "exa-mcp-server"],
"env": { "EXA_API_KEY": "$EXA_API_KEY" }
},
"context7": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"grep-app": {
"type": "stdio",
"command": "npx",
"args": ["-y", "grep-app-mcp"]
}
}
}
You can attach MCP server configuration directly inside a skill file so the agent carries its own tools without polluting the global context:
<!-- Inside a custom SKILL.md -->
---
mcpServers:
my-db-tool:
type: stdio
command: node
args: ["./tools/db-inspector.js"]
env:
DATABASE_URL: "$DATABASE_URL"
---
omo supports full interactive terminals via tmux, enabling REPLs, debuggers, and TUI apps inside the agent session.
# Ensure tmux is installed
brew install tmux # macOS
sudo apt install tmux # Debian/Ubuntu
# omo will detect tmux automatically when launched inside a tmux session
tmux new -s omo
omo
Agents can then spawn panes, run long-lived processes, and read their output.
Before classifying or acting on any user message, omo's IntentGate layer analyses true intent. This prevents literal misinterpretation.
Practical implication — be expressive with your prompts:
# Less effective (too literal):
"Delete all TODO comments"
# More effective (expresses true intent):
"Clean up all TODO comments that are already resolved or no longer relevant,
but keep any that describe genuine future work"
ultrawork
I need to add Stripe subscription billing to this Next.js app.
The app already has Prisma + PostgreSQL. Add:
- Checkout session creation
- Webhook handler for subscription events
- A /billing page showing current plan and invoices
/ulw-loop
Refactor all class-based React components in src/components/ to
functional components with hooks. Do not stop until every file is done.
# Switch to a reasoning-optimised model for planning
/model openai/o3
Analyse the current architecture in src/ and produce a migration plan
to move from REST to tRPC. List every file that needs changes.
ultrawork
Use Exa to find the latest Prisma v6 migration docs, then update
our schema.prisma to use the new multi-schema feature.
# Spawn a background linting agent while you work on features
ultrawork
In the background: run ESLint on the entire codebase, fix all
auto-fixable issues, and report the remaining ones. Don't block
my main session.
omo command not found after npm install -g# Check npm global bin is on PATH
npm bin -g # shows the bin dir
export PATH="$(npm bin -g):$PATH" # add to ~/.bashrc or ~/.zshrc
# Verify the env var is exported (not just set)
echo $ANTHROPIC_API_KEY
# Re-export if empty
export ANTHROPIC_API_KEY="sk-ant-..."
# Test the MCP server outside omo
npx -y exa-mcp-server
# Check for missing env vars — omo passes env vars from config.json
# but they must resolve at launch time
echo $EXA_API_KEY
Use the ralph loop to force continuation:
/ulw-loop
Continue the previous task from where it stopped. Do not stop
until fully complete.
If you see stale-line or hash mismatch errors, the file was modified externally after the agent read it. Fix:
# Tell the agent explicitly:
"Re-read the file before making any edits"
# Ensure you launched omo from within a tmux session
tmux new -s work
omo
| Use case | Recommended model |
|---|---|
| Orchestration | anthropic/claude-opus-4-5 or moonshot/kimi-k2 |
| Deep reasoning / planning | openai/o3 |
| Fast iteration | google/gemini-2.5-flash |
| Large codebase context | google/gemini-2.5-pro |
| Budget-conscious coding | zhipu/glm-4 |
Switch mid-session with /model <provider>/<model-id>.
development
```markdown --- name: compose-performance-skills description: Install and use the skydoves/compose-performance-skills agent skill library to diagnose and fix Jetpack Compose performance issues including stability, recomposition, lazy layouts, modifiers, side effects, and build configuration. triggers: - "my composable recomposes too often" - "LazyColumn drops frames during scroll" - "diagnose Compose stability issues" - "fix unnecessary recomposition in Jetpack Compose" - "optimize Com
development
Headless iOS Simulator manager with host-side HID input injection, 60fps streaming, and device farm web UI for iOS 26
development
```markdown --- name: claude-code-game-studios description: Turn Claude Code into a full 49-agent game dev studio with 72 workflow skills, automated hooks, and a real studio hierarchy for Godot, Unity, and Unreal projects. triggers: - "set up claude code game studios" - "use ai agents for game development" - "set up game dev studio with claude" - "add game studio agents to my project" - "how do I use claude code for game dev" - "set up godot unity unreal ai workflow" - "49 agents g
development
```markdown --- name: xq-py-quantum-vm description: Python implementation of the Quip Network's quantum virtual machine (xqvm) triggers: - quantum virtual machine python - xqvm quip network - quantum circuit simulation python - xq-py quantum vm - quip network quantum python - simulate quantum gates python - quantum vm xqvm - xqvm-py quantum circuit --- # xq-py Quantum Virtual Machine > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. `xqvm-py` is a Python impl