# CLI para agentes de código

> Cómo Claude Code, Codex o Cursor usan el CLI de Ghosty por ti — login conducido por el agente, salida JSON, códigos de salida y la skill ghosty-agent.

URL: https://www.ghosty.studio/docs/cli/agentes-de-codigo

El CLI está hecho para que tu agente de código lo maneje. Gasta poco contexto (el agente lo aprende con `--help`), se encadena con otras herramientas y su salida es estable.

## La receta

1. Instala la skill que le enseña a tu agente a usar Ghosty:
   ```bash
   npx skills add https://www.ghosty.studio
   ```
2. Pídele lo que quieras en lenguaje normal: «cambia el prompt de mi agente de ventas para que cotice en dólares y pruébalo».

La skill `ghosty-agent` le dice qué comandos usar y en qué orden; el CLI hace el trabajo.

## El login lo conduce el agente

Tú no tienes que abrir ninguna terminal:

1. El agente corre `ghosty login --json`.
2. Lo primero que sale es una línea `{"event":"login_url","url":"…"}`. El agente te pasa esa liga en el chat.
3. Abres la liga y entras con tu cuenta. Si ya tenías sesión en ghosty.studio, basta con abrirla.
4. El CLI recibe la sesión, imprime `{"event":"logged_in","email":"…"}` y el agente sigue.

La sesión queda guardada en tu computadora y se renueva sola. Los siguientes comandos ya no piden nada.

:::tabs
```bash tab=Lo que corre el agente
ghosty login --json
# {"event":"login_url","url":"https://www.ghosty.studio/oauth2/authorize?…"}
# … la persona abre la liga …
# {"event":"logged_in","email":"tu@correo.com"}
```
:::

## Salida para máquinas

Con `--json`, stdout lleva **sólo JSON** y los avisos van a stderr, así que el agente puede leer el resultado sin limpiarlo.

```bash
ghosty agents ls --json
# [{"id":"cm…","name":"Ventas","engine":"claude-worker","source":"gs","lastActivity":"2026-09-25T…"}]
```

`ghosty chat --json` emite una línea por evento: `chunk`, `tool` y al final `done` con el texto completo y el uso de tokens.

## Códigos de salida

| Código | Significa | Qué hace el agente |
|---|---|---|
| `0` | Bien | Sigue. |
| `1` | Error de la API | Lee el mensaje; no reintenta igual. |
| `2` | Uso incorrecto | Revisa `ghosty <comando> --help`. |
| `3` | Sin sesión | Corre `ghosty login --json` y te pasa la liga. |

Los errores con `--json` salen así: `{"error":"Not logged in.","code":3,"hint":"Run: ghosty login"}`.

## El agente corre en otra máquina

Si el agente trabaja en una caja, en CI o por SSH —lejos de tu navegador—, `ghosty login` lo detecta y usa un **código de dispositivo**:

```bash
ghosty login --json
# {"event":"login_url","url":"https://www.ghosty.studio/activar?code=WDJB-MJHT","code":"WDJB-MJHT","method":"device"}
```

El agente te pasa la liga; la abres en tu teléfono o tu compu, **confirmas que el código es el mismo** y autorizas. El CLI lo detecta solo y sigue. Para forzarlo desde cualquier máquina: `ghosty login --device`.

Autoriza sólo códigos que tú o tu agente acaban de pedir: si alguien más te manda una liga de `/activar`, recházala.

## Sin navegador: token de agente

Para CI o para una máquina remota donde no hay navegador, usa el token del agente (`gat_…`, se genera en la ficha del agente → **Generar token**):

```bash
export GHOSTY_TOKEN=gat_…
ghosty agents get <id>
ghosty agents set <id> --prompt-file PROMPT.md
ghosty try <id> "ping"
```

Ese token sólo alcanza a **su** agente. Para listar agentes o usar `chat`, entra con `ghosty login`.
