Dropstone CLI

Comandos

Crea comandos personalizados para tareas repetitivas.

Los comandos personalizados te permiten especificar un prompt que deseas ejecutar cuando ese comando se ejecuta en tu sesión.

/my-command

Los comandos personalizados se suman a los comandos integrados como /init, /undo, /redo, /help. Aprende más.


Crear archivos de comando

Crea archivos markdown en el directorio commands/ para definir comandos personalizados.

Crea .dropstone/commands/test.md:

---
description: Run tests with coverage
agent: build
model: dropstone/dropstone-pro
---

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

El frontmatter define las propiedades del comando. El contenido se convierte en la plantilla.

Usa el comando escribiendo / seguido del nombre del comando.

/test

Configurar

Puedes agregar comandos personalizados a través de la configuración de Dropstone o creando archivos markdown en el directorio commands/.


JSON

Usa la opción command en tu config de Dropstone:

{
  "$schema": "https://dropstone.io/schema/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.",
      // Shown as the description in the slash command palette
      "description": "Run tests with coverage",
      "agent": "build",
      "model": "dropstone/dropstone-pro"
    }
  }
}

Ahora puedes ejecutar este comando desde cualquier sesión:

/test

Markdown

También puedes definir comandos usando archivos markdown. Colócalos en:

  • Global: ~/.config/dropstone/commands/
  • Por proyecto: .dropstone/commands/
---
description: Run tests with coverage
agent: build
model: dropstone/dropstone-pro
---

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

El nombre del archivo markdown se convierte en el nombre del comando. Por ejemplo, test.md te permite ejecutar:

/test

Configuración del prompt

Los prompts para los comandos personalizados admiten varios marcadores de posición y sintaxis especiales.


Argumentos

Pasa argumentos a los comandos usando el marcador de posición $ARGUMENTS.

---
description: Create a new component
---

Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.

Ejecuta el comando con argumentos:

/component Button

Y $ARGUMENTS se reemplazará con Button.

También puedes acceder a argumentos individuales usando parámetros posicionales:

  • $1 - Primer argumento
  • $2 - Segundo argumento
  • $3 - Tercer argumento
  • Y así sucesivamente...

Por ejemplo:

---
description: Create a new file with content
---

Create a file named $1 in the directory $2
with the following content: $3

Ejecuta el comando:

/create-file config.json src "{ \"key\": \"value\" }"

Esto reemplaza:

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

Salida de shell

Usa !comando para inyectar la salida de un comando de shell en tu prompt.

Por ejemplo, para crear un comando personalizado que analice la cobertura de pruebas:

---
description: Analyze test coverage
---

Here are the current test results:
!`npm test`

Based on these results, suggest improvements to increase coverage.

O para revisar cambios recientes:

---
description: Review recent changes
---

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

Review these changes and suggest any improvements.

Los comandos se ejecutan en el directorio raíz de tu proyecto y su salida se convierte en parte del prompt.


Referencias a archivos

Incluye archivos en tu comando usando @ seguido del nombre del archivo.

---
description: Review component
---

Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.

El contenido del archivo se incluye automáticamente en el prompt.


Opciones

Veamos las opciones de configuración en detalle.


Plantilla

La opción template define el prompt que se enviará al LLM cuando se ejecute el comando.

{
  "command": {
    "test": {
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
    }
  }
}

Esta es una opción de configuración obligatoria.


Descripción

Usa la opción description para proporcionar una breve descripción de lo que hace el comando.

{
  "command": {
    "test": {
      "description": "Run tests with coverage"
    }
  }
}

Esto se muestra junto al comando en la paleta de comandos de barra diagonal.


Agente

Usa la configuración agent para especificar opcionalmente qué agente debe ejecutar este comando. Si se trata de un subagente, el comando activará una invocación de subagente de forma predeterminada. Para deshabilitar este comportamiento, establece subtask en false.

{
  "command": {
    "review": {
      "agent": "plan"
    }
  }
}

Esta es una opción de configuración opcional. Si no se especifica, se usa por defecto tu agente actual.


Subtarea

Usa el booleano subtask para forzar que el comando active una invocación de subagente. Esto es útil si deseas que el comando no contamine tu contexto principal y forzará al agente a actuar como subagente, incluso si mode está configurado como primary en la configuración del agente.

{
  "command": {
    "analyze": {
      "subtask": true
    }
  }
}

Esta es una opción de configuración opcional.


Modelo

Usa la configuración model para anular el modelo predeterminado para este comando.

{
  "command": {
    "analyze": {
      "model": "dropstone/dropstone-pro"
    }
  }
}

Esta es una opción de configuración opcional.


Integrados

Dropstone incluye varios comandos integrados como /init, /undo, /redo, /help. Aprende más.

El comando integrado /review ejecuta una revisión de múltiples fases: ángulos de búsqueda, verificación independiente y luego una lista limitada de hallazgos. Controla su profundidad con review.effort.

Note

Los comandos personalizados pueden anular los integrados. Si defines un comando personalizado con el mismo nombre que uno integrado, el personalizado gana.

Ctrl+I