本文へスキップ
コマンドファイルの作成

コマンド

カスタムコマンドを使用すると、TUI でコマンドを実行するときに実行するプロンプトを指定できます。

ターミナル
/my-command

カスタムコマンドは、/init、/undo、/redo、/help などの組み込みコマンドに追加されます。 詳細はこちら。


カスタムコマンドを定義するには、commands/ ディレクトリに Markdown ファイルを作成します。

.opencode/commands/test.md を作成します。

.opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-sonnet-5-5
---

Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

フロントマターはコマンドのプロパティを定義します。内容がテンプレートとなります。

/ に続けてコマンド名を入力して、コマンドを使用します。

ターミナル
"/test"

カスタムコマンドは、OpenCode 設定を通じて、または commands/ ディレクトリに Markdown ファイルを作成することによって追加できます。


OpenCode 設定で command オプションを使用します:

opencode.jsonc
{
  "$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-sonnet-5-5"
    }
  }
}

これで、TUI で次のコマンドを実行できるようになります。

ターミナル
/test

Markdown ファイルを使用してコマンドを定義することもできます。それらを次の場所に置きます。

  • グローバル: ~/.config/opencode/commands/
  • プロジェクトごと: .opencode/commands/
~/.config/opencode/commands/test.md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-sonnet-5-5
---

Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.

Markdown ファイル名がコマンド名になります。たとえば、test.md を使用すると、 あなたは実行します:

ターミナル
/test

カスタムコマンドのプロンプトは、いくつかの特別なプレースホルダーと構文をサポートしています。


$ARGUMENTS プレースホルダーを使用してコマンドに引数を渡します。

.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.

引数を指定してコマンドを実行します。

ターミナル
/component Button

そして、$ARGUMENTS は Button に置き換えられます。

位置パラメータを使用して個々の引数にアクセスすることもできます。

  • $1 - 最初の引数
  • $2 - 2 番目の引数
  • $3 - 3 番目の引数
  • 等々…

例えば:

.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

次のコマンドを実行します。

ターミナル
/create-file config.json src "{ \"key\": \"value\" }"

これは以下を置き換えます。

  • $1 と config.json
  • $2 と src
  • $3 と { "key": "value" }

!command を使用して、shell コマンド の出力をプロンプトに挿入します。

たとえば、テストカバレッジを分析するカスタムコマンドを作成するには、次のようにします。

.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.

または、最近の変更を確認するには:

.opencode/commands/review-changes.md
---
description: Review recent changes
---

Recent git commits:
!`git log --oneline -10`

Review these changes and suggest any improvements.

コマンドはプロジェクトのルートディレクトリで実行され、その出力はプロンプトの一部になります。


@ の後にファイル名を指定して、コマンドにファイルを含めます。

.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 に送信されるプロンプトを定義します。

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 オプションを使用して、コマンドの動作の簡単な説明を入力します。

opencode.json
{
  "command": {
    "test": {
      "description": "Run tests with coverage"
    }
  }
}

これは、コマンドを入力すると TUI に説明として表示されます。


オプションで、agent 設定を使用して、このコマンドを実行する agent を指定します。 これが subagent の場合、コマンドはデフォルトでサブエージェントの呼び出しをトリガーします。 この動作を無効にするには、subtask を false に設定します。

opencode.json
{
  "command": {
    "review": {
      "agent": "plan"
    }
  }
}

これはオプションの設定オプションです。指定しない場合、デフォルトで現在のエージェントが使用されます。


subtask ブール値を使用して、コマンドが subagent 呼び出しを強制的にトリガーします。 これは、コマンドがプライマリコンテキストを汚染せず、エージェントがサブエージェントとして動作するように強制する場合に便利です。 agent 設定で mode が primary に設定されている場合でも。

opencode.json
{
  "command": {
    "analyze": {
      "subtask": true
    }
  }
}

これはオプションの設定オプションです。


model 設定を使用して、このコマンドのデフォルトモデルをオーバーライドします。

opencode.json
{
  "command": {
    "analyze": {
      "model": "anthropic/claude-sonnet-5-5"
    }
  }
}

これはオプションの設定オプションです。


OpenCode には、/init、/undo、/redo、/help などのいくつかの組み込みコマンドが含まれています。 詳細はこちら。

同じ名前のカスタムコマンドを定義すると、組み込みコマンドがオーバーライドされます。