| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- ---
- title: Comandi
- description: Crea comandi personalizzati per task ripetitivi.
- ---
- I comandi personalizzati ti permettono di definire un prompt da eseguire quando quel comando viene lanciato nella TUI.
- ```bash frame="none"
- /my-command
- ```
- I comandi personalizzati si aggiungono a quelli integrati come `/init`, `/undo`, `/redo`, `/share`, `/help`. [Scopri di piu](/docs/tui#commands).
- ---
- ## Creazione file di comando
- Crea file markdown nella directory `commands/` per definire comandi personalizzati.
- Crea `.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.
- ```
- Il frontmatter definisce le proprieta del comando. Il contenuto diventa il template.
- Usa il comando digitando `/` seguito dal nome del comando.
- ```bash frame="none"
- "/test"
- ```
- ---
- ## Configurazione
- Puoi aggiungere comandi personalizzati tramite la config di OpenCode o creando file markdown nella directory `commands/`.
- ---
- ### JSON
- Usa l'opzione `command` nella [config](/docs/config) di OpenCode:
- ```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"
- }
- }
- }
- ```
- Ora puoi eseguire questo comando nella TUI:
- ```bash frame="none"
- /test
- ```
- ---
- ### Markdown
- Puoi anche definire comandi usando file markdown. Mettili in:
- - Globale: `~/.config/opencode/commands/`
- - Per progetto: `.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.
- ```
- Il nome del file markdown diventa il nome del comando. Per esempio, `test.md` ti permette di eseguire:
- ```bash frame="none"
- /test
- ```
- ---
- ## Configurazione del prompt
- I prompt dei comandi personalizzati supportano diversi placeholder e sintassi speciali.
- ---
- ### Argomenti
- Passa argomenti ai comandi usando il placeholder `$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.
- ```
- Esegui il comando con argomenti:
- ```bash frame="none"
- /component Button
- ```
- E `$ARGUMENTS` verra sostituito con `Button`.
- Puoi anche accedere ai singoli argomenti usando parametri posizionali:
- - `$1` - Primo argomento
- - `$2` - Secondo argomento
- - `$3` - Terzo argomento
- - E cosi via...
- Per esempio:
- ```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
- ```
- Esegui il comando:
- ```bash frame="none"
- /create-file config.json src "{ \"key\": \"value\" }"
- ```
- Questo sostituisce:
- - `$1` con `config.json`
- - `$2` con `src`
- - `$3` con `{ "key": "value" }`
- ---
- ### Output della shell
- Usa _!`command`_ per inserire nel prompt l'output di un [comando bash](/docs/tui#bash-commands).
- Per esempio, per creare un comando personalizzato che analizzi la copertura dei test:
- ```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.
- ```
- Oppure per rivedere modifiche recenti:
- ```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.
- ```
- I comandi vengono eseguiti nella root del progetto e il loro output diventa parte del prompt.
- ---
- ### Riferimenti ai file
- Includi file nel comando usando `@` seguito dal nome del file.
- ```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.
- ```
- Il contenuto del file viene incluso automaticamente nel prompt.
- ---
- ## Opzioni
- Vediamo le opzioni di configurazione nel dettaglio.
- ---
- ### Template del prompt
- L'opzione `template` definisce il prompt che verra inviato all'LLM quando il comando viene eseguito.
- ```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."
- }
- }
- }
- ```
- Questa e un'opzione di config **obbligatoria**.
- ---
- ### Descrizione
- Usa l'opzione `description` per fornire una breve descrizione di cosa fa il comando.
- ```json title="opencode.json"
- {
- "command": {
- "test": {
- "description": "Run tests with coverage"
- }
- }
- }
- ```
- Questo viene mostrato come descrizione nella TUI quando digiti il comando.
- ---
- ### Agente
- Usa la config `agent` per specificare opzionalmente quale [agente](/docs/agents) deve eseguire il comando.
- Se e un [subagent](/docs/agents/#subagents), il comando attiva per default l'invocazione di un subagent.
- Per disabilitare questo comportamento, imposta `subtask` a `false`.
- ```json title="opencode.json"
- {
- "command": {
- "review": {
- "agent": "plan"
- }
- }
- }
- ```
- Questa e un'opzione di config **opzionale**. Se non specificata, usa l'agente corrente.
- ---
- ### Sottotask
- Usa il booleano `subtask` per forzare il comando ad attivare l'invocazione di un [subagent](/docs/agents/#subagents).
- E utile se vuoi evitare che il comando inquini il contesto principale e **forza** l'agente ad agire come subagent,
- anche se `mode` e impostato su `primary` nella configurazione dell'[agente](/docs/agents).
- ```json title="opencode.json"
- {
- "command": {
- "analyze": {
- "subtask": true
- }
- }
- }
- ```
- Questa e un'opzione di config **opzionale**.
- ---
- ### Modello
- Usa la config `model` per sovrascrivere il modello predefinito per questo comando.
- ```json title="opencode.json"
- {
- "command": {
- "analyze": {
- "model": "anthropic/claude-3-5-sonnet-20241022"
- }
- }
- }
- ```
- Questa e un'opzione di config **opzionale**.
- ---
- ## Comandi integrati
- opencode include diversi comandi integrati come `/init`, `/undo`, `/redo`, `/share`, `/help`; [scopri di piu](/docs/tui#commands).
- :::note
- I comandi personalizzati possono sovrascrivere quelli integrati.
- :::
- Se definisci un comando personalizzato con lo stesso nome, sovrascrivera il comando integrato.
|