323 lines
8.1 KiB
Plaintext
323 lines
8.1 KiB
Plaintext
---
|
|
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 コマンドを定義すると、組み込みコマンドがオーバーライドされます。
|