Complete toolkit for configuring and extending OpenCode: agent creation, custom slash commands, configuration management, plugin development, and SDK usage.
98
98%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Common patterns, creation workflow, and example commands for OpenCode slash commands.
Command creation is conversational, not transactional.
"What task do you want to automate?"
"Can you show me how you'd normally ask for this?"
"Does it need arguments?"
/command foo bar → $ARGUMENTS = "foo bar", $1 = "foo", $2 = "bar""Should it make changes or just analyze?"
agent: plan"Should it run as a background subtask?"
subtask: true"Project-specific or use everywhere?"
.opencode/commands/~/.config/opencode/commands/Be flexible: If user provides lots of info upfront, adapt — MUST NOT rigidly ask every question.
---
description: 3-word command summary
agent: build # Optional: build, plan, or custom agent
model: provider/model-id # Optional: override model
subtask: true # Optional: run as subagent
---
<summary>
Line 1: You MUST [purpose].
Line 2: You SHOULD [inputs].
Line 3: You MUST [outcome].
</summary>
<user_guidelines>
$ARGUMENTS
</user_guidelines>
Template body goes here.| Field | Purpose | Required |
|---|---|---|
description | Shown in command list | Recommended |
agent | Route to specific agent | No |
model | Override model | No |
subtask | Force subagent invocation | No |
| Scope | Path |
|---|---|
| Project | .opencode/commands/<name>.md |
| Global | ~/.config/opencode/commands/<name>.md |
---
description: Run tests and fix failures
---
<summary>
You MUST run the full test suite.
You SHOULD identify and fix failures.
You MUST re-verify fixes.
</summary>
<objective>
You MUST run the full test suite, find the root cause of any failures, and fix the issue.
</objective>
1. Show the failing test
2. Identify the root cause
3. Fix the issue
4. Re-run to verify---
description: Review code for issues
agent: plan
---
<summary>
You MUST review $ARGUMENTS for issues.
You SHOULD check for bugs, security, and performance.
You MUST provide actionable feedback.
</summary>
<target>
$ARGUMENTS
</target>
<objective>
You MUST review the file above for bugs, security, and performance issues and provide actionable feedback without making changes.
</objective>---
description: Stage and commit with conventional prefix
---
<summary>
You MUST analyze changes and stage files.
You SHOULD choose a conventional commit prefix.
You MUST commit with a concise message.
</summary>
<context>
!`git status`
!`git diff`
</context>
<objective>
You MUST analyze changes, stage relevant files, and commit with a concise message.
</objective>
1. Analyze all changes
2. Choose appropriate prefix: docs:, feat:, fix:, refactor:, test:, ci:
3. Write concise commit message (imperative mood)
4. Stage relevant files and commit---
description: Check spelling in markdown files
subtask: true
---
<summary>
You MUST find unstaged markdown files.
You SHOULD check them for spelling errors.
You MUST report any found errors.
</summary>
<context>
!`git diff --name-only | grep -E '\.md$'`
</context>
<objective>
You MUST check for and report any spelling errors found in unstaged markdown files.
</objective>---
description: Search GitHub issues
model: anthropic/claude-3-5-haiku-20241022
subtask: true
---
<summary>
You MUST search GitHub issues for $ARGUMENTS.
You SHOULD limit results to the top 10.
You MUST summarize the relevant issues.
</summary>
<context>
!`gh issue list --search "$ARGUMENTS" --limit 10`
</context>
<objective>
You MUST summarize the top 10 relevant GitHub issues found for $ARGUMENTS.
</objective>---
description: Create a new React component
---
<summary>
You MUST create a React component named $1.
You SHOULD include TypeScript props and basic styling.
You MUST provide a unit test file.
</summary>
<objective>
You MUST create a React component named $1 in $2 with TypeScript props interface, basic styling, and a unit test file.
</objective>Usage: /component UserProfile src/components
---
description: Generate database migration
---
<summary>
You MUST read the Prisma schema.
You SHOULD generate a migration for $ARGUMENTS.
You MUST ensure the migration matches the schema.
</summary>
<context>
@prisma/schema.prisma
</context>
<objective>
You MUST generate a Prisma migration for $ARGUMENTS that matches the provided schema.
</objective>Use the !cmd syntax to inject bash output:
Review recent changes:
!`git log --oneline -10`
Suggest improvements.Use @ to include file content:
Given the schema in @prisma/schema.prisma, generate a migration for $ARGUMENTS.Use agent: plan for commands that should never modify files.
---
description: Analyze code quality
agent: plan
---
<summary>
You MUST analyze $ARGUMENTS for code quality issues.
You SHOULD check for bugs, security issues, and anti-patterns.
You MUST provide a prioritized list of improvements.
</summary>
<target>
$ARGUMENTS
</target>
<objective>
Provide actionable feedback without making any changes.
</objective>Use subtask: true for tasks that run independently and produce a single output.
---
description: Generate test coverage report
subtask: true
model: anthropic/claude-3-5-haiku-20241022
---
<summary>
You MUST generate a test coverage report.
You SHOULD identify untested code paths.
You MUST output a markdown summary.
</summary>
<context>
!`npm run test -- --coverage --json 2>/dev/null | tail -100`
</context>
<objective>
Analyze coverage and produce a markdown report of untested paths.
</objective>Use !cmd to inject live shell output and @file for file content.
---
description: Review recent changes
---
<summary>
You MUST review recent git changes.
You SHOULD identify potential issues or improvements.
You MUST provide actionable feedback.
</summary>
<context>
!`git log --oneline -10`
!`git diff HEAD~5`
</context>
<objective>
Review the changes above and provide specific, actionable feedback.
</objective>Use $1, $2 when two distinct pieces of information are needed.
---
description: Migrate component to new pattern
---
<summary>
You MUST migrate $1 from $2 pattern to the new pattern.
You SHOULD preserve existing behavior.
You MUST run tests after migration.
</summary>
<target>
Component: $1
From pattern: $2
</target>
<objective>
Perform the migration and verify tests still pass.
</objective>Usage: /migrate UserCard class-component
Use @file references to constrain context to relevant files.
---
description: Generate API client from schema
---
<summary>
You MUST generate a TypeScript API client.
You SHOULD follow patterns in existing client code.
You MUST export typed functions for each endpoint.
</summary>
<schema>
@openapi.yaml
</schema>
<existing_client>
@src/api/client.ts
</existing_client>
<objective>
Generate TypeScript functions for each endpoint following existing patterns.
</objective>| Requirement | Pattern | Key Setting |
|---|---|---|
| Read-only analysis | Analysis | agent: plan |
| Background processing | Fire-and-forget | subtask: true |
| Needs live data | Contextual | !cmd injection |
| Two input variables | Multi-argument | $1, $2 |
| Schema or config driven | Scope-limited | @file reference |
| Default (interactive) | None | Omit all flags |
| Command Name | Convention | Example |
|---|---|---|
File → /filename | Kebab-case | code-review.md → /code-review |
| Short action verbs | Prefer imperative | /test, /review, /deploy |
| Qualified actions | Noun-verb | /db-migrate, /api-generate |
!cmd for dynamic data, @file for configsplan for analysis, default for changes$ARGUMENTS — Only use $1/$2 when order matters