File size: 8,317 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 | ---
title: コマンド
description: 反復的なタスク用のカスタムコマンドを作成します。
---
カスタムコマンドを使用すると、TUI でコマンドを実行するときに実行するプロンプトを指定できます。
```bash frame="none"
/my-command
```
カスタムコマンドは、`/init`、`/undo`、`/redo`、`/share`、`/help` などの組み込みコマンドに追加されます。 [詳細はこちら](/docs/tui#commands)。
---
## コマンドファイルの作成
カスタムコマンドを定義するには、`commands/` ディレクトリに Markdown ファイルを作成します。
`.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/` ディレクトリに Markdown ファイルを作成することによって追加できます。
---
### JSON
OpenCode [設定](/docs/config)で `command` オプションを使用します:
```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
```
---
### Markdown
Markdown ファイルを使用してコマンドを定義することもできます。それらを次の場所に置きます。
- グローバル: `~/.config/opencode/commands/`
- プロジェクトごと: `.opencode/commands/`
```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.
```
Markdown ファイル名がコマンド名になります。たとえば、`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 コマンド](/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
カスタムコマンドは組み込みコマンドをオーバーライドできます。
:::
同じ名前のカスタムコマンドを定義すると、組み込みコマンドがオーバーライドされます。
|