Skip to main content

command-creation

This skill should be used when the user asks to "create a command", "add a custom command", "make a slash command", "create /command", or needs guidance on creating custom commands in OpenCode.

Quellinformationen

Repository
the-perfect-developer/the-perfect-opencode
Letzte Quellaktivität
3. März 2026 um 19:07
Erkannte Sprache von SKILL.md
Englisch
Sterne
12
Forks
2

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
8 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
command-creation
description
This skill should be used when the user asks to "create a command", "add a custom command", "make a slash command", "create /command", or needs guidance on creating custom commands in OpenCode.
# Command Creation for OpenCode Create custom slash commands for repetitive tasks that execute specific prompts with dynamic arguments. ## MUST FOLLOW **Commands must only specify `agent` in their frontmatter — never `model`.** Model selection is managed at the agent level in `opencode.json`. Adding a `model` field to a command bypasses centralized configuration and creates inconsistency across the project. **Always ask the user which agent should run the command.** The `agent:` field is required and must never be omitted. The two primary choices are: - `build` — For commands that create or modify files, run tests, build, or deploy - `plan` — For commands that analyze, review, or read without making changes ```yaml --- description: Brief description agent: build # or: plan --- ``` Do **not** add `model:` to command frontmatter. To change the model used by a command, configure the target agent's model in `opencode.json`. ## What Commands Are Custom commands let you define reusable prompts that can be triggered with `/command-name` in the OpenCode TUI. They provide: - **Repetitive task automation** - Common workflows like testing, deployment, code review - **Dynamic arguments** - Pass parameters to customize command behavior - **Shell integration** - Include bash command output in prompts - **File references** - Automatically include file contents - **Agent and model selection** - Route commands to specific agents or models Commands execute immediately when invoked, sending the configured prompt to the LLM. ## Quick Start Create a command in three steps: 1. **Create command file**: ```bash mkdir -p .opencode/commands touch .opencode/commands/test.md ``` 2. **Add frontmatter and content** to `test.md`: ```markdown --- description: Run tests with coverage agent: build model: anthropic/claude-3-5-sonnet-20241022 --- Run the full test suite with coverage report and show any failures. Focus on the failing tests and suggest fixes. ``` 3. **Use the command** in TUI: ``` /test ``` That's it! The command will execute the prompt with the configured settings. ## File Locations Create command files in these locations: **Project-local**: - `.opencode/commands/command-name.md` **Global** (user-wide): - `~/.config/opencode/commands/command-name.md` Use project-local for repository-specific commands. Use global for general-purpose commands you use across projects. ## Creating Commands ### Method 1: Markdown Files (Recommended) Create a markdown file in the `commands/` directory. The filename becomes the command name. **Structure**: ``` .opencode/commands/ ├── test.md # /test command ├── review.md # /review command └── component.md # /component command ``` **Example** - `.opencode/commands/review.md`: ```markdown --- description: Review code changes agent: plan --- Review recent git commits: !`git log --oneline -10` Review these changes and suggest any improvements. ``` **Frontmatter fields**: - `description` - Brief description shown in TUI (optional) - `agent` - Which agent should execute the command (optional) - `subtask` - Force subagent invocation (optional boolean) - ~~`model`~~ - **Do not use** — model is managed in `opencode.json` at the agent level The content after frontmatter becomes the command template. ### Method 2: JSON Configuration Add commands to `opencode.jsonc` using the `command` option: ```jsonc { "$schema": "https://opencode.ai/config.json", "command": { "test": { "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", "description": "Run tests with coverage", "agent": "build", "model": "anthropic/claude-3-5-sonnet-20241022" } } } ``` Use JSON for simple commands or when you want all configuration in one file. ## Command Templates Templates support special syntax for dynamic behavior: ### 1. Arguments with $ARGUMENTS Pass arguments to commands using the `$ARGUMENTS` placeholder: `.opencode/commands/component.md`: ```markdown --- description: Create a new component --- Create a new React component named $ARGUMENTS with TypeScript support. Include proper typing and basic structure. ``` **Usage**: ``` /component Button ``` This replaces `$ARGUMENTS` with `Button`. ### 2. Positional Arguments ($1, $2, $3, ...) Access individual arguments using positional parameters: `.opencode/commands/create-file.md`: ```markdown --- description: Create a new file with content --- Create a file named $1 in the directory $2 with the following content: $3 ``` **Usage**: ``` /create-file config.json src "{ \"key\": \"value\" }" ``` This replaces: - `$1` → `config.json` - `$2` → `src` - `$3` → `{ "key": "value" }` ### 3. Shell Output with !`command` Inject bash command output into prompts using *!`command`* syntax: `.opencode/commands/analyze-coverage.md`: ```markdown --- description: Analyze test coverage --- Here are the current test results: !`npm test` Based on these results, suggest improvements to increase coverage. ``` **More examples**: ```markdown Recent commits: !`git log --oneline -10` Current branch status: !`git status` Package versions: !`npm list --depth=0` ``` Commands run in your project's root directory and their output is included in the prompt. ### 4. File References with @ Include file contents using `@` followed by the filename: `.opencode/commands/review-component.md`: ```markdown --- description: Review component --- Review the component in @src/components/Button.tsx. Check for performance issues and suggest improvements. ``` The file content is automatically included in the prompt. **Multiple files**: ```markdown Compare @src/old-api.ts and @src/new-api.ts. Identify breaking changes and migration steps. ``` ## Configuration Options ### template (required for JSON) The prompt sent to the LLM when the command executes. **JSON**: ```json { "command": { "test": { "template": "Run tests and report failures." } } } ``` **Markdown**: Content after frontmatter is the template. ### description (optional) Brief description shown in the TUI when typing the command. **JSON**: ```json { "command": { "test": { "description": "Run tests with coverage" } } } ``` **Markdown**: ```yaml --- description: Run tests with coverage --- ``` ### agent (required) Specify which agent should execute the command. **Always ask the user whether the command should use `build` or `plan` — never leave this field out.** - `build` — For tasks that create/modify files, run tests, build, or deploy - `plan` — For analysis, code review, and read-only tasks **JSON**: ```json { "command": { "review": { "agent": "plan" } } } ``` **Markdown**: ```yaml --- agent: plan --- ``` If the agent is a subagent, the command triggers a subagent invocation by default. Disable with `subtask: false`. **Default**: Current agent if not specified. ### subtask (optional) Force the command to trigger a subagent invocation. Useful to avoid polluting primary context. **JSON**: ```json { "command": { "analyze": { "subtask": true } } } ``` **Markdown**: ```yaml --- subtask: true --- ``` This forces subagent behavior even if the agent's `mode` is `primary`. ### model (optional) Override the default model for this command. **JSON**: ```json { "command": { "analyze": { "model": "anthropic/claude-3-5-sonnet-20241022" } } } ``` **Markdown**: ```yaml --- model: anthropic/claude-3-5-sonnet-20241022 --- ``` ## Common Patterns ### Testing Commands `.opencode/commands/test.md`: ```markdown --- description: Run tests with coverage agent: build --- Run the full test suite with coverage report: !`npm test -- --coverage` Analyze failures and suggest fixes. ``` ### Code Review Commands `.opencode/commands/review.md`: ```markdown --- description: Review recent changes --- Recent commits: !`git log --oneline -10` Changed files: !`git diff --name-only HEAD~5` Review these changes for: - Code quality issues - Performance concerns - Security vulnerabilities ``` ### Component Generation Commands `.opencode/commands/component.md`: ```markdown --- description: Create React component --- Create a new React component named $1: - Location: src/components/$1.tsx - Include TypeScript types - Add basic props interface - Follow project conventions from @src/components/Example.tsx ``` **Usage**: `/component Button` ### Deployment Commands `.opencode/commands/deploy.md`: ```markdown --- description: Deploy to environment agent: build subtask: true --- Deploy to $1 environment: !`git status` Steps: 1. Run pre-deployment checks 2. Build production bundle 3. Deploy to $1 4. Verify deployment ``` **Usage**: `/deploy staging` ### Documentation Commands `.opencode/commands/doc.md`: ```markdown --- description: Generate documentation --- Generate documentation for $ARGUMENTS: Code to document: @$ARGUMENTS Create comprehensive documentation including: - Function/class description - Parameters and return values - Usage examples - Edge cases ``` **Usage**: `/doc src/utils/parser.ts` ## Built-in Commands OpenCode includes built-in commands: - `/init` - Initialize OpenCode in a project - `/undo` - Undo last change - `/redo` - Redo last undone change - `/share` - Share conversation - `/help` - Show help **Note**: Custom commands can override built-in commands. If you define a custom command with the same name, it will replace the built-in version. ## Best Practices **DO**: - Use markdown files for easier editing and version control - Include clear descriptions for discoverability - Use positional arguments for multiple parameters - Leverage shell commands for dynamic context - Test commands before sharing with team - Use subagent mode for long-running or complex tasks - Keep templates focused on a single task **DON'T**: - Create overly complex templates with too many arguments - Use shell commands that modify system state - Include sensitive data in command templates - Override built-in commands unless necessary - Forget to document what arguments commands expect - Set `model:` in command frontmatter — use `agent:` only; model is managed in `opencode.json` ## Examples See working examples in the `examples/` directory: - **`test-command.md`** - Test execution with coverage - **`component-command.md`** - Component generation with arguments - **`review-command.md`** - Code review with git integration - **`deploy-command.md`** - Multi-step deployment workflow ## Troubleshooting **Command doesn't appear**: 1. Verify file is in `.opencode/commands/` or `~/.config/opencode/commands/` 2. Check filename is lowercase with `.md` extension 3. Ensure YAML frontmatter is valid (if used) **Arguments not replaced**: 1. Check you're using `$ARGUMENTS` or `$1`, `$2`, etc. 2. Verify you're passing arguments: `/command arg1 arg2` **Shell command fails**: 1. Test command in terminal first: `bash -c "your command"` 2. Check command runs from project root 3. Verify command exists on system **File reference not working**: 1. Check file path is correct relative to project root 2. Verify file exists: `ls path/to/file` 3. Use forward slashes even on Windows ## Additional Resources ### Reference Files For detailed information: - **`references/template-syntax.md`** - Complete template syntax reference - **`references/configuration-options.md`** - All configuration options explained - **`references/common-patterns.md`** - More command patterns and examples ### Example Files Working examples in `examples/`: - **`test-command.md`** - Test execution - **`component-command.md`** - Component generation
Auf GitHub ansehen
Diese SKILL.md ist sehr gross, daher zeigt SkillsMP hier nur den ersten Abschnitt. Auf GitHub ansehen