--- title: コマンド description: 反復的なタスク用のカスタム コマンドを作成します。 --- カスタム コマンドを使用すると、TUI でコマンドを実行するときに実行するプロンプトを指定できます。 ```bash frame="none" /my-command ``` カスタム コマンドは、`/init`、`/undo`、`/redo`、`/share`、`/help` などの組み込みコマンドに追加されます。 [詳細はこちら](/docs/tui#commands)。 --- ## コマンドファイルの作成 カスタム コマンドを定義するには、`commands/` ディレクトリにマークダウン ファイルを作成します。 `.opencode/commands/test.md` を作成します。 ```md title=".opencode/commands/test.md" --- 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. ``` フロントマターはコマンドのプロパティを定義します。内容がテンプレートとなります。 `/` に続けてコマンド名を入力して、コマンドを使用します。 ```bash frame="none" "/test" ``` --- ## 設定する カスタム コマンドは、OpenCode 構成を通じて、または `commands/` ディレクトリにマークダウン ファイルを作成することによって追加できます。 --- ### JSON OpenCode で `command` オプションを使用します [config](/docs/config): ```json title="opencode.jsonc" {4-12} { "$schema": "https://opencode.ai/config.json", "command": { // This becomes the name of the command "test": { // This is the prompt that will be sent to the LLM "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", // This is shown as the description in the TUI "description": "Run tests with coverage", "agent": "build", "model": "anthropic/claude-3-5-sonnet-20241022" } } } ``` これで、TUI で次のコマンドを実行できるようになります。 ```bash frame="none" /test ``` --- ### マークダウン マークダウン ファイルを使用してコマンドを定義することもできます。それらを次の場所に置きます。 - グローバル: `~/.config/opencode/agents/` - プロジェクトごと: `.opencode/agents/` ```markdown title="~/.config/opencode/commands/test.md" --- 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. ``` マークダウンファイル名がコマンド名になります。たとえば、`test.md` を使用すると、 あなたは実行します: ```bash frame="none" /test ``` --- ## プロンプト構成 カスタム コマンドのプロンプトは、いくつかの特別なプレースホルダーと構文をサポートしています。 --- ### 引数 `$ARGUMENTS` プレースホルダーを使用してコマンドに引数を渡します。 ```md title=".opencode/commands/component.md" --- description: Create a new component --- Create a new React component named $ARGUMENTS with TypeScript support. Include proper typing and basic structure. ``` 引数を指定してコマンドを実行します。 ```bash frame="none" /component Button ``` そして、`$ARGUMENTS` は `Button` に置き換えられます。 位置パラメータを使用して個々の引数にアクセスすることもできます。 - `$1` - 最初の引数 - `$2` - 2 番目の引数 - `$3` - 3 番目の引数 - 等々... 例えば: ```md title=".opencode/commands/create-file.md" --- description: Create a new file with content --- Create a file named $1 in the directory $2 with the following content: $3 ``` 次のコマンドを実行します。 ```bash frame="none" /create-file config.json src "{ \"key\": \"value\" }" ``` これは以下を置き換えます。 - `$1` と `config.json` - `$2` と `src` - `$3` と `{ "key": "value" }` --- ### シェル出力 _!`command`_ を使用して、[bash command](/docs/tui#bash-commands) の出力をプロンプトに挿入します。 たとえば、テスト カバレッジを分析するカスタム コマンドを作成するには、次のようにします。 ```md title=".opencode/commands/analyze-coverage.md" --- description: Analyze test coverage --- Here are the current test results: !`npm test` Based on these results, suggest improvements to increase coverage. ``` または、最近の変更を確認するには: ```md title=".opencode/commands/review-changes.md" --- description: Review recent changes --- Recent git commits: !`git log --oneline -10` Review these changes and suggest any improvements. ``` コマンドはプロジェクトのルート ディレクトリで実行され、その出力はプロンプトの一部になります。 --- ### ファイル参照 `@` の後にファイル名を指定して、コマンドにファイルを含めます。 ```md title=".opencode/commands/review-component.md" --- description: Review component --- Review the component in @src/components/Button.tsx. Check for performance issues and suggest improvements. ``` ファイルの内容はプロンプトに自動的に含まれます。 --- ## オプション 構成オプションを詳しく見てみましょう。 --- ### テンプレート `template` オプションは、コマンドの実行時に LLM に送信されるプロンプトを定義します。 ```json title="opencode.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` オプションを使用して、コマンドの動作の簡単な説明を入力します。 ```json title="opencode.json" { "command": { "test": { "description": "Run tests with coverage" } } } ``` これは、コマンドを入力すると TUI に説明として表示されます。 --- ### エージェント オプションで、`agent` 設定を使用して、このコマンドを実行する [agent](/docs/agents) を指定します。 これが [subagent](/docs/agents/#subagents) の場合、コマンドはデフォルトでサブエージェントの呼び出しをトリガーします。 この動作を無効にするには、`subtask` を `false` に設定します。 ```json title="opencode.json" { "command": { "review": { "agent": "plan" } } } ``` これは**オプション**の構成オプションです。指定しない場合、デフォルトで現在のエージェントが使用されます。 --- ### サブタスク `subtask` ブール値を使用して、コマンドが [subagent](/docs/agents/#subagents) 呼び出しを強制的にトリガーします。 これは、コマンドがプライマリ コンテキストを汚染せず、エージェントがサブエージェントとして動作するように**強制**する場合に便利です。 [agent](/docs/agents) 設定で `mode` が `primary` に設定されている場合でも。 ```json title="opencode.json" { "command": { "analyze": { "subtask": true } } } ``` これは**オプション**の構成オプションです。 --- ### モデル `model` 設定を使用して、このコマンドのデフォルト モデルをオーバーライドします。 ```json title="opencode.json" { "command": { "analyze": { "model": "anthropic/claude-3-5-sonnet-20241022" } } } ``` これは**オプション**の構成オプションです。 --- ## 内蔵 opencode には、`/init`、`/undo`、`/redo`、`/share`、`/help` などのいくつかの組み込みコマンドが含まれています。 [詳細はこちら](/docs/tui#commands)。 :::note カスタム コマンドは組み込みコマンドをオーバーライドできます。 ::: If コマンドを定義すると、組み込みコマンドがオーバーライドされます。