# Quick Reference Guide
Complete reference for oh-my-opencode-slim configuration and capabilities.
## Table of Contents
- [Presets](#presets)
- [Skills](#skills)
- [Cartography](#cartography)
- [MCP Servers](#mcp-servers)
- [Tools & Capabilities](#tools--capabilities)
- [Configuration](#configuration)
---
## Presets
The default installer generates an OpenAI preset. To use alternative providers (Kimi, GitHub Copilot, ZAI Coding Plan), see **[Provider Configurations](provider-configurations.md)** for step-by-step instructions and full config examples.
### Switching Presets
**Method 1: Edit Config File**
Edit `~/.config/opencode/oh-my-opencode-slim.json` (or `.jsonc`) and change the `preset` field:
```json
{
"preset": "openai"
}
```
**Method 2: Environment Variable**
Set the environment variable before running OpenCode:
```bash
export OH_MY_OPENCODE_SLIM_PRESET=openai
opencode
```
The environment variable takes precedence over the config file.
### OpenAI Preset (Default)
Uses OpenAI models exclusively:
```json
{
"preset": "openai",
"presets": {
"openai": {
"orchestrator": { "model": "openai/gpt-5.4", "skills": ["*"], "mcps": ["websearch"] },
"oracle": { "model": "openai/gpt-5.4", "variant": "high", "skills": [], "mcps": [] },
"librarian": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": ["websearch", "context7", "grep_app"] },
"explorer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] },
"designer": { "model": "openai/gpt-5.4-mini", "variant": "medium", "skills": ["agent-browser"], "mcps": [] },
"fixer": { "model": "openai/gpt-5.4-mini", "variant": "low", "skills": [], "mcps": [] }
}
}
}
```
### Other Providers
For Kimi, GitHub Copilot, and ZAI Coding Plan presets, see **[Provider Configurations](provider-configurations.md)**.
---
## Skills
Skills are specialized capabilities provided by external agents and tools. Unlike MCPs which are servers, skills are prompt-based tool configurations installed via `npx skills add` during installation.
### Recommended Skills (via npx)
| Skill | Description | Assigned To |
|-------|-------------|-------------|
| [`simplify`](#simplify) | YAGNI code simplification expert | `orchestrator` |
| [`agent-browser`](#agent-browser) | High-performance browser automation | `designer` |
### Custom Skills (bundled in repo)
| Skill | Description | Assigned To |
|-------|-------------|-------------|
| [`cartography`](#cartography) | Repository understanding and hierarchical codemap generation | `orchestrator` |
### Simplify
**The Minimalist's sacred truth: every line of code is a liability.**
`simplify` is a specialized skill for complexity analysis and YAGNI enforcement. It identifies unnecessary abstractions and suggests minimal implementations.
### Agent Browser
**External browser automation for visual verification and testing.**
`agent-browser` provides full high-performance browser automation capabilities. It allows agents to browse the web, interact with elements, and capture screenshots for visual state verification.
### Cartography
**Automated repository mapping through hierarchical codemaps.**
A dedicated guide (with screenshots) lives at: **[docs/cartography.md](cartography.md)**.
`cartography` empowers the Orchestrator to build and maintain a deep architectural understanding of any codebase. Instead of reading thousands of lines of code every time, agents refer to hierarchical `codemap.md` files that describe the *why* and *how* of each directory.
**How to use:**
Just ask the **Orchestrator** to `run cartography`. It will automatically detect if it needs to initialize a new map or update an existing one.
**Why it's useful:**
- **Instant Onboarding:** Help agents (and humans) understand unfamiliar codebases in seconds.
- **Efficient Context:** Agents only read architectural summaries, saving tokens and improving accuracy.
- **Change Detection:** Only modified folders are re-analyzed, making updates fast and efficient.
- **Timeless Documentation:** Focuses on high-level design patterns that don't get stale.
Technical Details & Manual Control
The skill uses a background Python engine (`cartographer.py`) to manage state and detect changes.
**How it works under the hood:**
1. **Initialize** - Orchestrator analyzes repo structure and runs `init` to create `.slim/cartography.json` (hashes) and empty templates.
2. **Map** - Orchestrator spawns specialized **Explorer** sub-agents to fill codemaps with timeless architectural details (Responsibility, Design, Flow, Integration).
3. **Update** - On subsequent runs, the engine detects changed files and only refreshes codemaps for affected folders.
**Manual Commands:**
```bash
# Initialize mapping manually
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py init \
--root . \
--include "src/**/*.ts" \
--exclude "**/*.test.ts"
# Check for changes since last map
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py changes --root .
# Sync hashes after manual map updates
python3 ~/.config/opencode/skills/cartography/scripts/cartographer.py update --root .
```
### Skills Assignment
You can customize which skills each agent is allowed to use in `~/.config/opencode/oh-my-opencode-slim.json` (or `.jsonc`).
**Syntax:**
| Syntax | Description | Example |
|--------|-------------|---------|
| `"*"` | All installed skills | `["*"]` |
| `"!item"` | Exclude specific skill | `["*", "!agent-browser"]` |
| Explicit list | Only listed skills | `["simplify"]` |
| `"!*"` | Deny all skills | `["!*"]` |
**Rules:**
- `*` expands to all available skills
- `!item` excludes specific skills
- Conflicts (e.g., `["a", "!a"]`) → deny wins (principle of least privilege)
- Empty list `[]` → no skills allowed
**Example Configuration:**
```json
{
"presets": {
"my-preset": {
"orchestrator": {
"skills": ["*", "!agent-browser"]
},
"designer": {
"skills": ["agent-browser", "simplify"]
}
}
}
}
```
---
## MCP Servers
Built-in Model Context Protocol servers (enabled by default):
| MCP | Purpose | URL |
|-----|---------|-----|
| `websearch` | Real-time web search via Exa AI | `https://mcp.exa.ai/mcp` |
| `context7` | Official library documentation | `https://mcp.context7.com/mcp` |
| `grep_app` | GitHub code search via grep.app | `https://mcp.grep.app` |
### MCP Permissions
Control which agents can access which MCP servers using per-agent allowlists:
| Agent | Default MCPs |
|-------|--------------|
| `orchestrator` | `websearch` |
| `designer` | none |
| `oracle` | none |
| `librarian` | `websearch`, `context7`, `grep_app` |
| `explorer` | none |
| `fixer` | none |
### Configuration & Syntax
You can configure MCP access in your plugin configuration file: `~/.config/opencode/oh-my-opencode-slim.json` (or `.jsonc`).
**Per-Agent Permissions**
Control which agents can access which MCP servers using the `mcps` array in your preset. The syntax is the same as for skills:
| Syntax | Description | Example |
|--------|-------------|---------|
| `"*"` | All MCPs | `["*"]` |
| `"!item"` | Exclude specific MCP | `["*", "!context7"]` |
| Explicit list | Only listed MCPs | `["websearch", "context7"]` |
| `"!*"` | Deny all MCPs | `["!*"]` |
**Rules:**
- `*` expands to all available MCPs
- `!item` excludes specific MCPs
- Conflicts (e.g., `["a", "!a"]`) → deny wins
- Empty list `[]` → no MCPs allowed
**Example Configuration:**
```json
{
"presets": {
"my-preset": {
"orchestrator": {
"mcps": ["websearch"]
},
"librarian": {
"mcps": ["websearch", "context7", "grep_app"]
},
"oracle": {
"mcps": ["*", "!websearch"]
}
}
}
}
```
**Global Disabling**
You can disable specific MCP servers globally by adding them to the `disabled_mcps` array at the root of your config object.
---
## Tools & Capabilities
### Tmux Integration
**Watch your agents work in real-time.** When the Orchestrator launches sub-agents or initiates background tasks, new tmux panes automatically spawn showing each agent's live progress. No more waiting in the dark.
#### Quick Setup
1. **Enable tmux integration** in `oh-my-opencode-slim.json` (or `.jsonc`):
```json
{
"tmux": {
"enabled": true,
"layout": "main-vertical",
"main_pane_size": 60
}
}
```
2. **Run OpenCode inside tmux**:
```bash
tmux
opencode
```
#### Layout Options
| Layout | Description |
|--------|-------------|
| `main-vertical` | Your session on the left (60%), agents stacked on the right |
| `main-horizontal` | Your session on top (60%), agents stacked below |
| `tiled` | All panes in equal-sized grid |
| `even-horizontal` | All panes side by side |
| `even-vertical` | All panes stacked vertically |
> **Detailed Guide:** For complete tmux integration documentation, troubleshooting, and advanced usage, see [Tmux Integration](tmux-integration.md)
### Background Tasks
The plugin provides tools to manage asynchronous work:
| Tool | Description |
|------|-------------|
| `background_task` | Launch an agent in a new session (`sync=true` blocks, `sync=false` runs in background) |
| `background_output` | Fetch the result of a background task by ID |
| `background_cancel` | Abort running tasks |
### LSP Tools
Language Server Protocol integration for code intelligence:
| Tool | Description |
|------|-------------|
| `lsp_goto_definition` | Jump to symbol definition |
| `lsp_find_references` | Find all usages of a symbol across the workspace |
| `lsp_diagnostics` | Get errors/warnings from the language server |
| `lsp_rename` | Rename a symbol across all files |
> **Built-in LSP Servers:** OpenCode includes pre-configured LSP servers for 30+ languages (TypeScript, Python, Rust, Go, etc.). See the [official documentation](https://opencode.ai/docs/lsp/#built-in) for the full list and requirements.
### Code Search Tools
Fast code search and refactoring:
| Tool | Description |
|------|-------------|
| `grep` | Fast content search using ripgrep |
| `ast_grep_search` | AST-aware code pattern matching (25 languages) |
| `ast_grep_replace` | AST-aware code refactoring with dry-run support |
### Formatters
OpenCode automatically formats files after they're written or edited using language-specific formatters.
> **Built-in Formatters:** Includes support for Prettier, Biome, gofmt, rustfmt, ruff, and 20+ others. See the [official documentation](https://opencode.ai/docs/formatters/#built-in) for the complete list.
---
## Configuration
### Files You Edit
| File | Purpose |
|------|---------|
| `~/.config/opencode/opencode.json` | OpenCode core settings |
| `~/.config/opencode/oh-my-opencode-slim.json` or `.jsonc` | Plugin settings (agents, tmux, MCPs) |
| `.opencode/oh-my-opencode-slim.json` or `.jsonc` | Project-local plugin overrides (optional) |
> **💡 JSONC Support:** Configuration files support JSONC format (JSON with Comments). Use `.jsonc` extension to enable comments and trailing commas. If both `.jsonc` and `.json` exist, `.jsonc` takes precedence.
### Prompt Overriding
You can customize agent prompts by creating markdown files in `~/.config/opencode/oh-my-opencode-slim/`:
- With no preset, prompt files are loaded directly from this directory.
- With `preset` set (for example `test`), the plugin first checks `~/.config/opencode/oh-my-opencode-slim/{preset}/`, then falls back to the root prompt directory.
| File | Purpose |
|------|---------|
| `{agent}.md` | Replaces the default prompt entirely |
| `{agent}_append.md` | Appends to the default prompt |
**Example:**
```
~/.config/opencode/oh-my-opencode-slim/
├── test/
│ ├── orchestrator.md # Preset-specific override (preferred)
│ └── explorer_append.md
├── orchestrator.md # Custom orchestrator prompt
├── orchestrator_append.md # Append to default orchestrator prompt
├── explorer.md
├── explorer_append.md
└── ...
```
**Usage:**
- Create `{agent}.md` to completely replace an agent's default prompt
- Create `{agent}_append.md` to add custom instructions to the default prompt
- Both files can exist simultaneously - the replacement takes precedence
- When `preset` is set, `{preset}/{agent}.md` and `{preset}/{agent}_append.md` are checked first
- If neither file exists, the default prompt is used
This allows you to fine-tune agent behavior without modifying the source code.
### JSONC Format (JSON with Comments)
The plugin supports **JSONC** format for configuration files, allowing you to:
- Add single-line comments (`//`)
- Add multi-line comments (`/* */`)
- Use trailing commas in arrays and objects
**File Priority:**
1. `oh-my-opencode-slim.jsonc` (preferred if exists)
2. `oh-my-opencode-slim.json` (fallback)
**Example JSONC Configuration:**
```jsonc
{
// Use preset for development
"preset": "openai",
/* Presets definition - customize agent models here */
"presets": {
"openai": {
// Fast models for quick iteration
"oracle": { "model": "openai/gpt-5.4" },
"explorer": { "model": "openai/gpt-5.4-mini" },
},
},
"tmux": {
"enabled": true, // Enable for monitoring
"layout": "main-vertical",
},
}
```
### Plugin Config (`oh-my-opencode-slim.json` or `oh-my-opencode-slim.jsonc`)
The installer generates this file with the OpenAI preset by default. You can manually customize it to mix and match models from any provider. See [Provider Configurations](provider-configurations.md) for examples.
#### Option Reference
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `preset` | string | - | Name of the preset to use (e.g., `"openai"`, `"kimi"`) |
| `presets` | object | - | Named preset configurations containing agent mappings |
| `presets...model` | string | - | Model ID for the agent (e.g., `"openai/gpt-5.4"`) |
| `presets...temperature` | number | - | Temperature setting (0-2) for the agent |
| `presets...variant` | string | - | Agent variant for reasoning effort (e.g., `"low"`, `"medium"`, `"high"`) |
| `presets...skills` | string[] | - | Array of skill names the agent can use (`"*"` for all, `"!item"` to exclude) |
| `presets...mcps` | string[] | - | Array of MCP names the agent can use (`"*"` for all, `"!item"` to exclude) |
| `tmux.enabled` | boolean | `false` | Enable tmux pane spawning for sub-agents |
| `tmux.layout` | string | `"main-vertical"` | Layout preset: `main-vertical`, `main-horizontal`, `tiled`, `even-horizontal`, `even-vertical` |
| `tmux.main_pane_size` | number | `60` | Main pane size as percentage (20-80) |
| `disabled_mcps` | string[] | `[]` | MCP server IDs to disable globally (e.g., `"websearch"`) |