customizing-opencode
Customizing OpenCode
Configure OpenCode behavior through config files, agents, commands, and extensions.
Config File Locations
| Location | Path | Purpose |
|---|---|---|
| Global | ~/.config/opencode/opencode.json |
User-wide preferences |
| Project | ./opencode.json |
Project-specific settings |
| Custom | $OPENCODE_CONFIG env var |
Override path |
Precedence (later overrides earlier): Remote .well-known/opencode < Global < Custom < Project
Quick Reference
| Task | Where | Reference |
|---|---|---|
| Set theme, model, autoupdate | opencode.json |
config-schema.md |
| Define specialized agents | .opencode/agents/*.md or config |
agents.md |
| Create slash commands | .opencode/commands/*.md or config |
commands.md |
| Add external tools via MCP | opencode.json mcp section |
mcp-servers.md |
| Write custom tool functions | .opencode/tools/*.ts |
custom-tools.md |
| Extend with plugins/hooks | .opencode/plugins/*.ts or npm |
plugins.md |
| Control tool access | opencode.json permission section |
permissions.md |
| Customize keyboard shortcuts | opencode.json keybinds section |
keybinds.md |
| Change colors/appearance | opencode.json theme or custom JSON |
themes.md |
Directory Structure
~/.config/opencode/ # Global config
├── opencode.json
├── AGENTS.md # Global rules
├── agents/ # Global agents
├── commands/ # Global commands
├── plugins/ # Global plugins
├── skills/ # Global skills
├── tools/ # Global custom tools
└── themes/ # Global custom themes
.opencode/ # Project config (same structure)
├── agents/
├── commands/
├── plugins/
├── skills/
├── tools/
└── themes/
When to Use What
| Need | Solution |
|---|---|
| Change model/theme for all projects | Global opencode.json |
| Project-specific agent behavior | Project .opencode/agents/ |
| Reusable prompt templates | Commands (.opencode/commands/) |
| External service integration | MCP servers |
| Custom logic the LLM can call | Custom tools |
| React to OpenCode events | Plugins |
| Restrict dangerous operations | Permissions |
Variable Substitution
Use in any config value:
{
"model": "{env:OPENCODE_MODEL}", // Environment variable
"instructions": ["{file:./rules.md}"] // File contents
}
Rules (AGENTS.md)
Project instructions loaded into LLM context:
| File | Scope |
|---|---|
./AGENTS.md |
Project (traverses up to git root) |
~/.config/opencode/AGENTS.md |
Global |
instructions array in config |
Additional files/globs |
{
"instructions": ["CONTRIBUTING.md", "docs/*.md"]
}
Docs
Full documentation: https://opencode.ai/docs/config/
More from third774/dotfiles
opensrc
Fetch source code for npm, PyPI, or crates.io packages and GitHub/GitLab repos to provide AI agents with implementation context beyond types and docs. Use when needing to understand how a library works internally, debug dependency issues, or explore package implementations.
90natural-writing
Write like a human, not a language model. Avoid AI-tell vocabulary, formulaic structures, and hollow emphasis. Apply to ALL written output including prose, documentation, comments, and communication. Use when drafting prose, documentation, comments, or any written output that should sound human.
66agent-skills
Author and improve Agent Skills following the agentskills.io specification. Use when creating new SKILL.md files, modifying existing skills, reviewing skill quality, or organizing skill directories with proper naming, descriptions, and progressive disclosure.
31documenting-code-comments
Standards for writing self-documenting code and best practices for when to write (and avoid) code comments. Use when auditing, cleaning up, or improving inline code documentation.
28adversarial-code-review
Review code through hostile perspectives to find bugs, security issues, and unintended consequences the author missed. Use when reviewing PRs, auditing codebases, or before critical deployments.
21verification-before-completion
Run verification commands before claiming work is complete or fixed. Use before asserting any task is done, bug is fixed, tests pass, or feature works.
18