The open coding agent for your terminal.
Agent · Skill · Plugin · MCP · Security
A terminal-based assistant that reads your repository, reasons about tasks, proposes plans, edits files, and runs commands — while keeping you in control of every consequential action.
It is not just autocomplete or a chatbot. It is a loop of observation, reasoning, action, and verification.
Parse the request and repository context.
Decide which files and tools to use.
Edit files and run approved commands.
Run tests and explain the changes.
Each pass through the loop improves context and reduces uncertainty.
| Tool type | What it does | Scope |
|---|---|---|
| Autocomplete | Predicts the next few tokens of code | Single cursor location |
| Chat | Answers questions and explains code | Conversation |
| Agent | Plans, edits, runs commands, and verifies | Whole task across files |
Agents are distinguished by tool use and iteration, not just model size.
| Dimension | Closed assistant | OpenCode |
|---|---|---|
| Model choice | Vendor-controlled | You choose the provider and model |
| Environment | Web or IDE plugin | Terminal-native, runs in your workspace |
| Extensibility | Limited or closed | Plugins, skills, and MCP servers |
| Privacy | Cloud-only, opaque | Can use local or self-hosted models |
| Control | Hidden defaults | Explicit permissions and project rules |
How OpenCode behaves as an autonomous worker inside your codebase.
Writes and reviews Go API services — handlers, validation, and tests.
> @api-builder add a POST
/users handler with tests
Builds and refactors Next.js pages, components, and API routes.
> @ui-slicer build a
dashboard server component
Creates Flutter screens and widgets with state and error handling.
> @widget-drawer add a
projects list screen
Define your own in .opencode/agents/<name>.md with mode: subagent, then summon with an @ mention.
---
description: Builds and refactors Next.js pages, components, and API routes
mode: subagent
permission:
edit: allow
bash: deny
---
You are a Next.js frontend specialist.
- Slice designs into reusable components
- Follow the existing folder structure
- Keep Server Components server-side
- Confirm before installing new packages
The file name becomes the agent name — summon it with @ui-slicer.
Reusable process knowledge encoded as instructions.
A skill tells the agent how to perform a repeatable task: what to check, what to avoid, and how to report results. It encodes team taste as process.
Executable extensions that change behavior and add capabilities.
A plugin hooks into OpenCode to add new commands, customize output, enforce rules, or integrate with internal systems. It changes what the agent can do.
A standard bridge to external tools and data sources.
An MCP server exposes a typed, discoverable capability to the agent. It lets OpenCode query or act on external systems without hard-coding integrations.
issue tracker, docs, API
| Concept | What it is | Changes |
|---|---|---|
| Skill | Instruction template for a repeatable workflow | How the agent thinks |
| Plugin | Code that extends OpenCode itself | What the agent can do locally |
| MCP | External capability served over a protocol | Which external systems it can reach |
Use skills for process, plugins for local behavior, and MCP for external integrations.
Capability without boundaries becomes liability.
Inspecting files and explaining behavior should require no special trust.
File changes and consequential commands need explicit approval.
Never expose keys, tokens, or credentials to the model or external tools.
The agent should not escape the project directory without permission.
Ask the agent to inspect and explain before it changes anything.
Point to specific files, tests, or errors. Smaller context is safer context.
Every change must be accompanied by a diff, a test, and an explanation.
Trust is built by verifying the work, not by disabling safeguards.
An open agent loop you can extend and constrain.
Understand, plan, act, verify.
Reusable instructions.
Local extensibility.
External capability.