mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-30 13:43:26 +08:00
Delete llms.txt
not necessary + opencode focused, open to a PR for a new one
This commit is contained in:
642
llms.txt
642
llms.txt
@@ -1,642 +0,0 @@
|
||||
# OpenCode Documentation for LLMs
|
||||
|
||||
> OpenCode is an open-source AI coding agent available as a terminal interface, desktop application, or IDE extension. It helps developers write code, add features, and understand codebases through conversational interactions.
|
||||
|
||||
## Installation
|
||||
|
||||
Multiple installation methods are available:
|
||||
|
||||
```bash
|
||||
# curl script (recommended)
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
|
||||
# Node.js package managers
|
||||
npm install -g opencode
|
||||
bun install -g opencode
|
||||
pnpm add -g opencode
|
||||
yarn global add opencode
|
||||
|
||||
# Homebrew (macOS/Linux)
|
||||
brew install anomalyco/tap/opencode
|
||||
|
||||
# Arch Linux
|
||||
paru -S opencode
|
||||
|
||||
# Windows
|
||||
choco install opencode # Chocolatey
|
||||
scoop install opencode # Scoop
|
||||
# Or use Docker/WSL (recommended for Windows)
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Configuration file: `opencode.json` or `opencode.jsonc` (with comments)
|
||||
|
||||
Schema: `https://opencode.ai/config.json`
|
||||
|
||||
### Core Settings
|
||||
|
||||
```json
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5",
|
||||
"default_agent": "build",
|
||||
"instructions": [
|
||||
"CONTRIBUTING.md",
|
||||
"docs/guidelines.md"
|
||||
],
|
||||
"plugin": [
|
||||
"opencode-helicone-session",
|
||||
"./.opencode/plugins"
|
||||
],
|
||||
"agent": { /* agent definitions */ },
|
||||
"command": { /* command definitions */ },
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask",
|
||||
"mcp_*": "ask"
|
||||
},
|
||||
"tools": {
|
||||
"write": true,
|
||||
"bash": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Use `{env:VAR_NAME}` for environment variables and `{file:path}` for file contents in configuration values.
|
||||
|
||||
## Agents
|
||||
|
||||
OpenCode supports two agent types:
|
||||
|
||||
### Primary Agents
|
||||
Main assistants you interact with directly. Switch between them using Tab or configured keybinds.
|
||||
|
||||
### Subagents
|
||||
Specialized assistants that primary agents invoke automatically or through `@` mentions (e.g., `@general help me search`).
|
||||
|
||||
### Built-in Agents
|
||||
|
||||
| Agent | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| build | primary | Default agent with full tool access for development work |
|
||||
| plan | primary | Restricted agent for analysis; file edits and bash set to "ask" |
|
||||
| general | subagent | Full tool access for multi-step research tasks |
|
||||
| explore | subagent | Read-only agent for rapid codebase exploration |
|
||||
| compaction | system | Hidden agent for context compaction |
|
||||
| title | system | Hidden agent for title generation |
|
||||
| summary | system | Hidden agent for summarization |
|
||||
|
||||
### Agent Configuration
|
||||
|
||||
JSON format in `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices",
|
||||
"mode": "subagent",
|
||||
"model": "anthropic/claude-opus-4-5",
|
||||
"prompt": "{file:.opencode/prompts/agents/code-reviewer.txt}",
|
||||
"temperature": 0.3,
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"read": true,
|
||||
"bash": true
|
||||
},
|
||||
"permission": {
|
||||
"edit": "deny",
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git status": "allow"
|
||||
}
|
||||
},
|
||||
"steps": 10
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Markdown format in `~/.config/opencode/agents/` or `.opencode/agents/`:
|
||||
|
||||
```markdown
|
||||
---
|
||||
description: Expert code review specialist
|
||||
mode: subagent
|
||||
model: anthropic/claude-opus-4-5
|
||||
temperature: 0.3
|
||||
tools:
|
||||
write: false
|
||||
read: true
|
||||
bash: true
|
||||
permission:
|
||||
edit: deny
|
||||
steps: 10
|
||||
---
|
||||
|
||||
You are an expert code reviewer. Review code for quality, security, and maintainability...
|
||||
```
|
||||
|
||||
### Agent Configuration Options
|
||||
|
||||
| Option | Purpose | Values |
|
||||
|--------|---------|--------|
|
||||
| description | Required field explaining agent purpose | string |
|
||||
| mode | Agent type | "primary", "subagent", or "all" |
|
||||
| model | Override default model | "provider/model-id" |
|
||||
| temperature | Control randomness | 0.0-1.0 (lower = focused) |
|
||||
| tools | Enable/disable specific tools | object or wildcards |
|
||||
| permission | Set tool permissions | "ask", "allow", or "deny" |
|
||||
| steps | Limit agentic iterations | number |
|
||||
| prompt | Reference custom prompt file | "{file:./path}" |
|
||||
| top_p | Alternative randomness control | 0.0-1.0 |
|
||||
|
||||
## Commands
|
||||
|
||||
### Built-in Commands
|
||||
|
||||
- `/init` - Initialize project analysis (creates AGENTS.md)
|
||||
- `/undo` - Undo last change
|
||||
- `/redo` - Redo undone change
|
||||
- `/share` - Generate shareable conversation link
|
||||
- `/help` - Show help
|
||||
- `/connect` - Configure API providers
|
||||
|
||||
### Custom Commands
|
||||
|
||||
**Markdown files** in `~/.config/opencode/commands/` (global) or `.opencode/commands/` (project):
|
||||
|
||||
```markdown
|
||||
---
|
||||
description: Create implementation plan
|
||||
agent: planner
|
||||
subtask: true
|
||||
---
|
||||
|
||||
Create a detailed implementation plan for: $ARGUMENTS
|
||||
|
||||
Include:
|
||||
- Requirements analysis
|
||||
- Architecture review
|
||||
- Step breakdown
|
||||
- Testing strategy
|
||||
```
|
||||
|
||||
**JSON configuration** in `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"command": {
|
||||
"plan": {
|
||||
"description": "Create implementation plan",
|
||||
"template": "Create a detailed implementation plan for: $ARGUMENTS",
|
||||
"agent": "planner",
|
||||
"subtask": true
|
||||
},
|
||||
"test": {
|
||||
"template": "Run tests with coverage for: $ARGUMENTS\n\nOutput:\n!`npm test`",
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Template Variables
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `$ARGUMENTS` | All command arguments |
|
||||
| `$1`, `$2`, `$3` | Positional arguments |
|
||||
| `!`command`` | Include shell command output |
|
||||
| `@filepath` | Include file contents |
|
||||
|
||||
### Command Options
|
||||
|
||||
| Option | Purpose | Required |
|
||||
|--------|---------|----------|
|
||||
| template | Prompt text sent to LLM | Yes |
|
||||
| description | UI display text | No |
|
||||
| agent | Target agent for execution | No |
|
||||
| model | Override default LLM | No |
|
||||
| subtask | Force subagent invocation | No |
|
||||
|
||||
## Tools
|
||||
|
||||
### Built-in Tools
|
||||
|
||||
| Tool | Purpose | Permission Key |
|
||||
|------|---------|---------------|
|
||||
| bash | Execute shell commands | "bash" |
|
||||
| edit | Modify existing files using exact string replacements | "edit" |
|
||||
| write | Create new files or overwrite existing ones | "edit" |
|
||||
| read | Read file contents from codebase | "read" |
|
||||
| grep | Search file contents using regular expressions | "grep" |
|
||||
| glob | Find files by pattern matching | "glob" |
|
||||
| list | List files and directories | "list" |
|
||||
| lsp | Access code intelligence (experimental) | "lsp" |
|
||||
| patch | Apply patches to files | "edit" |
|
||||
| skill | Load skill files (SKILL.md) | "skill" |
|
||||
| todowrite | Manage todo lists during sessions | "todowrite" |
|
||||
| todoread | Read existing todo lists | "todoread" |
|
||||
| webfetch | Fetch and read web pages | "webfetch" |
|
||||
| question | Ask user questions during execution | "question" |
|
||||
|
||||
### Tool Permissions
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "allow",
|
||||
"webfetch": "deny",
|
||||
"mcp_*": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Permission levels:
|
||||
- `"allow"` - Tool executes without restriction
|
||||
- `"deny"` - Tool cannot be used
|
||||
- `"ask"` - Requires user approval before execution
|
||||
|
||||
## Custom Tools
|
||||
|
||||
Location: `.opencode/tools/` (project) or `~/.config/opencode/tools/` (global)
|
||||
|
||||
### Tool Definition
|
||||
|
||||
```typescript
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Execute SQL query on the database",
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute"),
|
||||
database: tool.schema.string().optional().describe("Target database")
|
||||
},
|
||||
async execute(args, context) {
|
||||
// context.worktree - git repository root
|
||||
// context.directory - current working directory
|
||||
// context.sessionID - current session ID
|
||||
// context.agent - active agent identifier
|
||||
|
||||
const result = await someDbQuery(args.query)
|
||||
return { result }
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### Multiple Tools Per File
|
||||
|
||||
```typescript
|
||||
// math.ts - creates math_add and math_multiply tools
|
||||
export const add = tool({
|
||||
description: "Add two numbers",
|
||||
args: {
|
||||
a: tool.schema.number(),
|
||||
b: tool.schema.number()
|
||||
},
|
||||
async execute({ a, b }) {
|
||||
return { result: a + b }
|
||||
}
|
||||
})
|
||||
|
||||
export const multiply = tool({
|
||||
description: "Multiply two numbers",
|
||||
args: {
|
||||
a: tool.schema.number(),
|
||||
b: tool.schema.number()
|
||||
},
|
||||
async execute({ a, b }) {
|
||||
return { result: a * b }
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
### Schema Types (Zod)
|
||||
|
||||
```typescript
|
||||
tool.schema.string()
|
||||
tool.schema.number()
|
||||
tool.schema.boolean()
|
||||
tool.schema.array(tool.schema.string())
|
||||
tool.schema.object({ key: tool.schema.string() })
|
||||
tool.schema.enum(["option1", "option2"])
|
||||
tool.schema.optional()
|
||||
tool.schema.describe("Description for LLM")
|
||||
```
|
||||
|
||||
## Plugins
|
||||
|
||||
Plugins extend OpenCode with custom hooks, tools, and behaviors.
|
||||
|
||||
### Plugin Structure
|
||||
|
||||
```typescript
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
// project - Current project information
|
||||
// client - OpenCode SDK client for AI interaction
|
||||
// $ - Bun's shell API for command execution
|
||||
// directory - Current working directory
|
||||
// worktree - Git worktree path
|
||||
|
||||
return {
|
||||
// Hook implementations
|
||||
"file.edited": async (event) => {
|
||||
// Handle file edit event
|
||||
},
|
||||
|
||||
"tool.execute.before": async (input, output) => {
|
||||
// Intercept before tool execution
|
||||
},
|
||||
|
||||
"session.idle": async (event) => {
|
||||
// Handle session idle
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Loading Plugins
|
||||
|
||||
1. **Local files**: Place in `.opencode/plugins/` (project) or `~/.config/opencode/plugins/` (global)
|
||||
2. **npm packages**: Specify in `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"plugin": [
|
||||
"opencode-helicone-session",
|
||||
"@my-org/custom-plugin",
|
||||
"./.opencode/plugins"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Available Hook Events
|
||||
|
||||
**Command Events:**
|
||||
- `command.executed` - After a command is executed
|
||||
|
||||
**File Events:**
|
||||
- `file.edited` - After a file is edited
|
||||
- `file.watcher.updated` - When file watcher detects changes
|
||||
|
||||
**Tool Events:**
|
||||
- `tool.execute.before` - Before tool execution (can modify input)
|
||||
- `tool.execute.after` - After tool execution (can modify output)
|
||||
|
||||
**Session Events:**
|
||||
- `session.created` - When session starts
|
||||
- `session.compacted` - After context compaction
|
||||
- `session.deleted` - When session ends
|
||||
- `session.idle` - When session becomes idle
|
||||
- `session.updated` - When session is updated
|
||||
- `session.status` - Session status changes
|
||||
|
||||
**Message Events:**
|
||||
- `message.updated` - When message is updated
|
||||
- `message.removed` - When message is removed
|
||||
- `message.part.updated` - When message part is updated
|
||||
|
||||
**LSP Events:**
|
||||
- `lsp.client.diagnostics` - LSP diagnostic updates
|
||||
- `lsp.updated` - LSP state updates
|
||||
|
||||
**Shell Events:**
|
||||
- `shell.env` - Modify shell environment variables
|
||||
|
||||
**TUI Events:**
|
||||
- `tui.prompt.append` - Append to TUI prompt
|
||||
- `tui.command.execute` - Execute TUI command
|
||||
- `tui.toast.show` - Show toast notification
|
||||
|
||||
**Other Events:**
|
||||
- `installation.updated` - Installation updates
|
||||
- `permission.asked` - Permission request
|
||||
- `server.connected` - Server connection
|
||||
- `todo.updated` - Todo list updates
|
||||
|
||||
### Hook Event Mapping (Claude Code → OpenCode)
|
||||
|
||||
| Claude Code Hook | OpenCode Plugin Event |
|
||||
|-----------------|----------------------|
|
||||
| PreToolUse | `tool.execute.before` |
|
||||
| PostToolUse | `tool.execute.after` |
|
||||
| Stop | `session.idle` or `session.status` |
|
||||
| SessionStart | `session.created` |
|
||||
| SessionEnd | `session.deleted` |
|
||||
| N/A | `file.edited`, `file.watcher.updated` |
|
||||
| N/A | `message.*`, `permission.*`, `lsp.*` |
|
||||
|
||||
### Plugin Example: Auto-Format
|
||||
|
||||
```typescript
|
||||
export const AutoFormatPlugin = async ({ $, directory }) => {
|
||||
return {
|
||||
"file.edited": async (event) => {
|
||||
if (event.path.match(/\.(ts|tsx|js|jsx)$/)) {
|
||||
await $`prettier --write ${event.path}`
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Plugin Example: TypeScript Check
|
||||
|
||||
```typescript
|
||||
export const TypeCheckPlugin = async ({ $, client }) => {
|
||||
return {
|
||||
"tool.execute.after": async (input, output) => {
|
||||
if (input.tool === "edit" && input.args.filePath?.match(/\.tsx?$/)) {
|
||||
const result = await $`npx tsc --noEmit`.catch(e => e)
|
||||
if (result.exitCode !== 0) {
|
||||
client.app.log("warn", "TypeScript errors detected")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Providers
|
||||
|
||||
OpenCode integrates 75+ LLM providers via AI SDK and Models.dev.
|
||||
|
||||
### Supported Providers
|
||||
|
||||
- OpenCode Zen (recommended for beginners)
|
||||
- Anthropic (Claude)
|
||||
- OpenAI (GPT)
|
||||
- Google (Gemini)
|
||||
- Amazon Bedrock
|
||||
- Azure OpenAI
|
||||
- GitHub Copilot
|
||||
- Ollama (local)
|
||||
- And 70+ more
|
||||
|
||||
### Provider Configuration
|
||||
|
||||
```json
|
||||
{
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"options": {
|
||||
"baseURL": "https://api.anthropic.com/v1"
|
||||
}
|
||||
},
|
||||
"custom-provider": {
|
||||
"npm": "@ai-sdk/openai-compatible",
|
||||
"name": "Display Name",
|
||||
"options": {
|
||||
"baseURL": "https://api.example.com/v1",
|
||||
"apiKey": "{env:CUSTOM_API_KEY}"
|
||||
},
|
||||
"models": {
|
||||
"model-id": { "name": "Model Name" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Model Naming Convention
|
||||
|
||||
Format: `provider/model-id`
|
||||
|
||||
Examples:
|
||||
- `anthropic/claude-sonnet-4-5`
|
||||
- `anthropic/claude-opus-4-5`
|
||||
- `anthropic/claude-haiku-4-5`
|
||||
- `openai/gpt-4o`
|
||||
- `google/gemini-2.0-flash`
|
||||
|
||||
### API Key Setup
|
||||
|
||||
```bash
|
||||
# Interactive setup
|
||||
opencode
|
||||
/connect
|
||||
|
||||
# Environment variables
|
||||
export ANTHROPIC_API_KEY=sk-...
|
||||
export OPENAI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
Keys stored in: `~/.local/share/opencode/auth.json`
|
||||
|
||||
## MCP (Model Context Protocol)
|
||||
|
||||
Configure MCP servers in `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcp": {
|
||||
"github": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-github"],
|
||||
"env": {
|
||||
"GITHUB_PERSONAL_ACCESS_TOKEN": "{env:GITHUB_TOKEN}"
|
||||
}
|
||||
},
|
||||
"filesystem": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
MCP tool permissions use `mcp_*` wildcard:
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"mcp_*": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Ecosystem Plugins
|
||||
|
||||
### Authentication & Provider Plugins
|
||||
- Alternative model access (ChatGPT Plus, Gemini, Antigravity)
|
||||
- Session tracking (Helicone headers)
|
||||
- OAuth integrations
|
||||
|
||||
### Development Tools
|
||||
- Sandbox isolation (Daytona integration)
|
||||
- Type injection for TypeScript/Svelte
|
||||
- DevContainer multi-branch support
|
||||
- Git worktree management
|
||||
|
||||
### Enhancement Plugins
|
||||
- Web search with citations
|
||||
- Markdown table formatting
|
||||
- Dynamic context token pruning
|
||||
- Desktop notifications
|
||||
- Persistent memory (Supermemory)
|
||||
- Background process management
|
||||
|
||||
### Plugin Discovery
|
||||
|
||||
- opencode.cafe - Community plugin registry
|
||||
- awesome-opencode - Curated list
|
||||
- GitHub search for "opencode-plugin"
|
||||
|
||||
## Quick Reference
|
||||
|
||||
### Key Shortcuts
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| Tab | Toggle between Plan and Build modes |
|
||||
| @ | Reference files or mention agents |
|
||||
| / | Execute commands |
|
||||
|
||||
### Common Commands
|
||||
|
||||
```bash
|
||||
/init # Initialize project
|
||||
/connect # Configure API providers
|
||||
/share # Share conversation
|
||||
/undo # Undo last change
|
||||
/redo # Redo undone change
|
||||
/help # Show help
|
||||
```
|
||||
|
||||
### File Locations
|
||||
|
||||
| Purpose | Project | Global |
|
||||
|---------|---------|--------|
|
||||
| Configuration | `opencode.json` | `~/.config/opencode/config.json` |
|
||||
| Agents | `.opencode/agents/` | `~/.config/opencode/agents/` |
|
||||
| Commands | `.opencode/commands/` | `~/.config/opencode/commands/` |
|
||||
| Plugins | `.opencode/plugins/` | `~/.config/opencode/plugins/` |
|
||||
| Tools | `.opencode/tools/` | `~/.config/opencode/tools/` |
|
||||
| Auth | - | `~/.local/share/opencode/auth.json` |
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
```bash
|
||||
# Verify credentials
|
||||
opencode auth list
|
||||
|
||||
# Check configuration
|
||||
cat opencode.json | jq .
|
||||
|
||||
# Test provider connection
|
||||
/connect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
For more information: https://opencode.ai/docs/
|
||||
Reference in New Issue
Block a user