日本語
ドキュメント
コマンド

コマンド

繰り返しタスク用のカスタムコマンドを作成します。

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

/my-command

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


コマンドファイルの作成

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

.opencode/commands/test.md を作成:

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

frontmatter でコマンドのプロパティを定義します。コンテンツがテンプレートになります。

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

/test

設定

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


JSON

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-3-5-sonnet-20241022"
    }
  }
}

これで TUI でこのコマンドを実行できます:

/test

Markdown

markdown ファイルを使用してコマンドを定義することもできます。以下の場所に配置します:

  • グローバル:~/.config/opencode/commands/
  • プロジェクト単位:.opencode/commands/
~/.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.

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

$ARGUMENTSButton に置き換えられます。

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

  • $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\" }"

これにより以下が置き換えられます:

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

Shell 出力

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

例えば、テストカバレッジを分析するカスタムコマンドを作成:

.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

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

description オプションを使用して、コマンドの機能の簡単な説明を提供します。

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

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


Agent

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

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

これはオプションの設定オプションです。指定しない場合、現在の agent がデフォルトになります。


Subtask

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

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

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


Model

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

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

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


組み込みコマンド

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

注意

カスタムコマンドは組み込みコマンドをオーバーライドできます。

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