# Configura a Ghosty desde tu agente de código

> Identidad, modelo, archivos de conocimiento, skills y servidores MCP — todo por API con el token del agente, y una skill para que Claude Code, Cursor o Codex lo hagan por ti.

URL: https://www.ghosty.studio/docs/configurar

En Ghosty Studio **la configuración no vive en formularios**: vive en una API pequeña sobre la máquina del agente, y quien la usa es **tu agente de código**. Le instalas una skill, le das el token, y le pides las cosas en tu idioma.

## 1. Copia el token de tu agente

En **Agentes → tu agente → Configura a Ghosty desde tu agente de código → Generar token**. Ahí mismo aparece el bloque listo para pegar (el comando de la skill y los dos `export`). El token empieza por `gat_` y **sólo alcanza a ese agente**. El id está en la URL: `/app/agents/<id>`.

![Tarjeta de la ficha: el comando de la skill y los dos export con el id y el token](/docs-img/token.png)

Guárdalos como variables de entorno en tu terminal; nunca en argumentos ni en archivos del repo:

```bash
export GHOSTY_AGENT_ID="…"
export GHOSTY_AGENT_TOKEN="gat_…"
```

## 2. Instala la skill en tu agente de código

```bash
npx skills add https://ghosty.studio
# o desde GitHub, con conteo en skills.sh:
npx skills add blissito/ghosty-skills
```

Funciona con Claude Code, Cursor, Codex y el resto de agentes que leen [Agent Skills](https://agentskills.io). La skill sabe qué endpoint llamar, en qué orden y qué no hacer (por ejemplo, reiniciar una sola vez al final).

Son cuatro skills, y el comando instala las que elijas:

| Skill | Para qué |
|---|---|
| `ghosty-agent` | configurar un agente por API: identidad, modelo, archivos, skills, MCPs |
| `ghosty-docs` | leer esta documentación desde un agente (markdown, `llms.txt`, MCP de docs) |
| `ghosty-acp` | conectar Zed, VS Code o Neovim al agente por ACP |
| `ghosty-recipe` | escribir o revisar la receta `.yaml` de un agente para subirla al creador |

El índice vive en `/.well-known/agent-skills/index.json` con `digest` por skill (formato v0.2.0), y también viajan dentro del paquete npm `ghosty-acp`.

## 3. Pídeselo

Abre tu agente de código en cualquier carpeta y habla normal:

| Le dices | Lo que hace |
|---|---|
| «Ponle esta identidad a mi agente de Ghosty: es Nora, asistente de la clínica, contesta corto y nunca diagnostica.» | `PATCH` con `prompt`, luego `restart`. Por default la identidad se **anexa** a la persona de Ghosty (que responde en el idioma en que le escriben); con `promptMode: "replace"` el agente es **sólo** tu prompt. |
| «Súbele los PDFs de la carpeta `precios/`.» | Un `PUT …/files/<nombre>` por archivo. Caen en el workspace del agente; los ve con `ls`. |
| «Instálale la skill de cotizaciones que está en `skills/cotizaciones/`.» | `PUT …/skills/cotizaciones` con el `SKILL.md` y sus assets, luego `restart`. |
| «Conéctalo al MCP de Notion con este token.» | `GET …/mcp`, añade el servidor a la lista y `PUT` completo. Se reinicia solo. |
| «Cámbialo a Sonnet.» | `GET` para ver los modelos válidos, `PATCH` con `model`. |
| «¿Qué tiene configurado?» | `GET …?full=1`: identidad, modelo, archivos, skills y MCPs (`hasMachine` dice si el motor tiene máquina). |
| «¿Ya funciona?» | `POST …/try` con un mensaje: la respuesta del agente, sin salir del editor. La skill lo hace sola después de cada cambio. |

La skill trae una plantilla de identidad (quién es, cómo habla, qué hace, qué no hace, cuándo pregunta) y verifica cada cambio con `try`.

## Qué hay debajo

Todo pasa por `https://www.ghosty.studio/api/v2/agents/<id>` con `Authorization: Bearer gat_…`:

| Ruta | Para qué |
|---|---|
| `GET /` · `PATCH /` | leer y cambiar `name`, `engine`, `model`, `prompt`, `promptMode`, `webSearch`, `channels` |
| `PUT /files/<ruta>` · `DELETE` · `GET /files` | archivos en `/data/work/` (bytes crudos, ≤10 MB) |
| `PUT /skills/<slug>` · `DELETE` · `GET /skills` | `SKILL.md` + assets en `/data/agent/skills/<slug>/`; el `GET` trae también `community` (catálogo) |
| `PUT /skills/<slug>` con `{ "fromCatalog": true }` | instala una del [catálogo de la comunidad](/blog/habilidades-de-la-comunidad) sin mandar markdown |
| `GET /mcp` · `PUT /mcp` | servidores MCP propios (`http` con URL o `stdio` con comando); reinicia |
| `POST /restart` | reinicia el proceso del agente; corta un turno en vuelo, el disco sobrevive |
| `POST /try` | un turno de prueba a texto (`{text, session?, reset?}`); funciona en todos los motores |

Detalle de cada cuerpo y respuesta en la [referencia](/docs/api/referencia) (tag *Configuración*) y en el [`api.md` de la skill](/skills/ghosty-agent/references/api.md).

## El catálogo de la comunidad

En *Habilidades* de cada agente hay una sección **De la comunidad**: 15 skills open source elegidas por instalaciones reales en skills.sh y estrellas verificadas en GitHub (grill-me, caveman, ponytail, karpathy-guidelines, brainstorming, test-driven-development, systematic-debugging, verification-before-completion, frontend-design, skill-creator, webapp-testing, web-design-guidelines, react-best-practices…). Están copiadas al repo fijadas a un commit, con su licencia; **Instalar** las convierte en una habilidad propia del agente con todos sus archivos, y desde ahí se editan, se apagan por canal o se borran como cualquier otra. Por API: `GET /skills` → `community[]` con `installed`, y `PUT /skills/<slug>` con `{ "fromCatalog": true }`. Cuáles y por qué: [el post](/blog/habilidades-de-la-comunidad).

## Lo que conviene saber

- **Identidad y modelo funcionan en todos los motores.** Archivos, skills y MCPs propios necesitan máquina propia (Ghosty · Lite y Goose); en Claude o DeepSeek esas rutas responden `409 agente_sin_maquina` hasta que lleguen.
- **En motores con máquina, la identidad y las skills entran al reiniciar** (o en la siguiente conversación). Un `PATCH` de `prompt` y un `PUT` de skill quedan guardados en la máquina; el cerebro los lee cuando arranca. Por eso la skill agrupa cambios y reinicia una vez. En Claude, Codex o DeepSeek no hay reinicio: la identidad entra sola en la siguiente conversación.
- **Los archivos no necesitan reinicio**: están en el disco en cuanto termina el `PUT`.
- **Un `PUT /mcp` reemplaza la lista entera.** Para añadir uno, manda la lista existente más el nuevo.
- **El token es la llave del agente**: quien lo tenga puede hablar con él y usar su terminal. Si se filtra, rótalo desde la ficha; el anterior muere al instante.
- La máquina puede estar dormida: la primera llamada la despierta y tarda unos segundos.
