Skills are specialized capabilities you can assign to agents. Unlike MCPs (which are running servers), skills are prompt-based tool configurations - instructions injected into an agent's system prompt that describe how to use a particular tool.
Bundled skills are installed by the oh-my-opencode-slim installer and safely
reconciled on plugin startup/auto-update. Local customizations are preserved;
new bundled versions for customized skills are staged under
~/.config/opencode/.oh-my-opencode-slim/skill-updates/ for manual review.
| Skill | Description | Assigned to by default |
|---|---|---|
simplify |
Behavior-preserving code simplification | oracle |
codemap |
Repository codemap generation | orchestrator |
clonedeps |
Local dependency source cloning | orchestrator |
deepwork |
Heavy/complex coding sessions workflow | orchestrator |
reflect |
Review repeated work and suggest reusable workflow improvements | orchestrator |
worktrees |
Safe Git worktree lane management | orchestrator |
release-smoke-test |
Packed release-candidate and bugfix smoke validation | orchestrator |
oh-my-opencode-slim |
Plugin configuration and self-improvement guidance | orchestrator |
Behavior-preserving simplification for readability and maintainability.
simplify is a bundled skill for clarity-focused refactoring without behavior changes. It helps oracle reduce unnecessary complexity, improve naming and structure, and keep simplification work scoped and reviewable.
By default, this skill is assigned to oracle, which owns code review, maintainability review, and simplification guidance. The orchestrator should route simplification requests to oracle instead of handling them as a top-level specialty itself.
Source: adapted from Addy Osmani's code-simplification skill and bundled locally as simplify.
Automated repository mapping through hierarchical codemaps.
codemap empowers the Orchestrator to build and maintain a deep architectural understanding of any codebase. Instead of reading thousands of lines of code on every task, agents refer to hierarchical codemap.md files describing the why and how of each directory.
How to use: Ask the Orchestrator to run codemap. It automatically detects whether to initialize a new map or update an existing one.
Why it's useful:
See Codemap Skill for full documentation including manual commands and technical details.
Local source mirroring for important project dependencies.
clonedeps helps the Orchestrator clone a small, approved set of dependency
source repositories into .slim/clonedeps/repos/ so OpenCode can inspect library
internals while keeping cloned code out of git.
The skill is assigned to orchestrator. The orchestrator may ask @librarian
to identify important dependencies and resolve official repository URLs/tags,
then asks for approval before cloning with direct git/filesystem operations.
There is intentionally no helper script; dependency discovery and ref validation
are handled by the orchestrator/librarian workflow so the skill works across
languages and repository types.
Before planning, the orchestrator checks .slim/clonedeps.json and reuses
existing clones when possible. After cloning, it adds or updates a concise
## Cloned Dependency Source section in root AGENTS.md that lists each
read-only cloned repo path directly with a one-sentence purpose.
Safety defaults:
See Clonedeps for the full workflow and file layout.
Heavy/complex coding sessions and large modifications workflow.
deepwork is an orchestrator-only workflow skill for managing deep architectural work, multi-phase implementations, and complex refactoring. It provides a structured approach with mandatory review gates while maintaining flexibility in planning.
Start it directly with:
/deepwork <heavy coding task>
How it works:
.slim/deepwork/<task>.mdKey features:
When to use: Large-scale refactoring, multi-file architectural changes, complex feature development spanning modules.
When NOT to use: Simple single-file edits, trivial bug fixes, quick one-off changes.
Learn from repeated work and suggest practical workflow improvements.
reflect is an orchestrator-only workflow skill for reviewing recent work,
finding repeated workflow friction, and recommending the smallest useful reusable
asset. It may suggest a skill, custom agent, command, config rule, prompt rule,
MCP permission change, or project playbook - but only when there is enough
evidence.
Use it directly with:
/reflect
/reflect release workflow and checks
You can also use natural prompts such as:
reflect on my recent workflows
find repeated work worth turning into reusable instructions
suggest skills or agent config improvements from what I keep doing
Reflect is intentionally conservative. If no repeated workflow is strong enough, it should recommend creating nothing instead of manufacturing new assets.
When to use: recurring workflow friction, repeated manual processes, repeated agent-routing preferences, or prompts/config rules that you keep re-explaining.
When NOT to use: one-off implementation tasks, speculative agent creation, or broad self-improvement ideas with no usage evidence.
Safe Git worktree lane management for isolated coding.
worktrees is an orchestrator-only skill for managing Git worktrees as safe,
isolated coding lanes. Instead of polluting your current branch or juggling stash
state, the Orchestrator can set up lanes under .slim/worktrees/<slug>/ and
track them in .slim/worktrees.json.
Other agents can be delegated tasks inside the worktree lane, but the Orchestrator coordinates the lifecycle, validation, and final integration.
Safety defaults:
worktree add/remove, merge, rebase, cherry-pick, reset --hard, branch operations).omo/<slug> but respect custom user patterns.See Worktrees for the detailed safety protocol.
Configure, customize, and safely improve this plugin setup.
oh-my-opencode-slim is an orchestrator-only skill that teaches agents how to
configure the plugin itself: model presets, custom agents, agent prompts,
orchestratorPrompt delegation hints, skills, MCP permissions, optional agents,
and related OpenCode config files.
It is installed by default with the bundled skills and is available to the
Orchestrator through the default skills: ["*"] configuration.
The skill also tells the Orchestrator to notice repeatable workflow friction and suggest safe config or prompt improvements. It must ask before changing config or prompts unless the user explicitly requested the exact edit, and it reminds users that OpenCode may need a restart for config, prompt, agent, skill, MCP, or plugin changes to take effect.
Typical requests:
Tune my oh-my-opencode-slim models for lower cost.
Add a custom API reviewer agent.
Make the Orchestrator more conservative about parallel writer agents.
Help me configure MCP access for Librarian only.
After config changes, expect guidance like:
This should apply on the next OpenCode run; restart OpenCode if you need it immediately.
Validate packed release candidates and bugfixes before public publish.
release-smoke-test is an orchestrator-only skill for proving a release branch
works as an installed package artifact. It builds and packs the candidate,
installs the tarball into a throwaway app, runs OpenCode with a sanitized
temporary config, verifies the active plugin_origins, and searches isolated
logs for the crash signature being fixed.
Use it for release hardening, runtime compatibility checks, and model-specific smokes such as OpenCode 1.17.11 malformed message transform regressions.
Typical request:
Use release-smoke-test to validate this release candidate before npm publish.
The skill distinguishes fully isolated smokes from host-provider smokes. If a
model such as GPT-5.5 Fast needs provider aliases from the current machine, the
skill records that limitation instead of treating it as equivalent to a clean
env -i smoke.
Control which skills each agent can use in ~/.config/opencode/oh-my-opencode-slim.json (or .jsonc):
| Syntax | Meaning |
|---|---|
["*"] |
All installed skills |
["*", "!codemap"] |
All skills except codemap |
["simplify"] |
Only simplify |
[] |
No skills |
["!*"] |
Deny all skills |
Rules:
* expands to all available installed skills!item excludes a specific skill["a", "!a"]) → deny wins (principle of least privilege)Example:
{
"presets": {
"my-preset": {
"orchestrator": {
"skills": ["codemap"]
},
"oracle": {
"skills": ["simplify"]
},
"designer": {
"skills": []
},
"fixer": {
"skills": []
}
}
}
}