npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-1 --plugin aradotso-trending-skills-37This skill uses the workspace's default tool permissions.
```markdown
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
---
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>.