====== 4. Claude Code ======
[[https://code.claude.com|Claude Code]] es la herramienta de programación con IA de Anthropic. Como [[cursos:sdd:03-opencode|OpenCode]], vive **dentro de la terminal** y trabaja sobre los ficheros de la carpeta en la que se lanza. Aquí solo se cuenta lo que **no tiene OpenCode o se hace de otra forma**; lo que funciona igual ya está en su tema.
----
===== 1. Puesta en marcha =====
==== Instalar ====
* Linux
curl -fsSL https://claude.ai/install.sh | bash
claude --version
* Windows (PowerShell)
irm https://claude.ai/install.ps1 | iex
claude --version
==== Arrancar ====
cd mi-proyecto
claude
==== Actualizar ====
Se actualiza solo, en segundo plano. Para forzarlo:
claude update
----
===== 2. Cuenta y modelos =====
Es la gran diferencia con OpenCode: **solo habla con modelos de Anthropic** y **no hay nada gratis**. No existe ''/connect'' ni modelos //free//.
* ''/login'': entra con tu cuenta. Vale una suscripción **Pro o Max** de Claude (pago fijo al mes, con un límite de uso que se renueva cada pocas horas) o una cuenta de la API (pago por token). El plan gratuito de Claude no incluye Claude Code.
* ''/usage'': cuánto llevas gastado del límite de tu plan y cuándo se renueva.
==== /model: cambiar de modelo ====
Abre la lista de modelos. ''Enter'' lo deja como predeterminado y ''s'' lo cambia solo para esta sesión.
^ Modelo ^ Cuándo ^
| ''fable'' | El más capaz y el más caro. Para lo más difícil |
| ''opus'' | Muy capaz y más barato que Fable. Para planificar y para lo difícil |
| ''sonnet'' | Más barato y rápido. Para implementar lo ya decidido |
| ''haiku'' | El más barato. Tareas mecánicas |
==== /effort: cuánto piensa ====
Además del modelo se elige **cuánto razona** antes de responder: ''/effort low'', ''medium'', ''high'', ''xhigh'' o ''max''. Más esfuerzo es mejor respuesta, pero más lenta y más cara. Pero no es si piensa mejor sino que "le da más vueltas antes de responder"
/effort high
Deja ''medium'' para el día a día y sube a ''high'' o ''xhigh'' para el diseño o para un fallo que no hay manera de encontrar.
Más informnación:
* [[https://www.youtube.com/watch?v=bc-cUBcciv8|Anthropic reveló qué nivel de esfuerzo usar en Claude]]
----
===== 3. Agentes =====
Qué es un subagente y para qué sirve está en el [[cursos:sdd:08-skills-agentes#agente_principal_y_subagentes|tema de Skills y agentes]]. De serie, Claude Code trae tres:
* ''general-purpose'': para tareas de varios pasos que investigan y cambian código.
* ''Explore'': busca y entiende el código sin modificar nada.
* ''Plan'': investiga el código en el [[#el_modo_plan|modo Plan]] antes de proponerte el plan, sin modificar nada.
==== Cómo se lanza ====
Hay tres formas de lanzarlo:
* **Invocándolo directamente con ''@agent-''** y su nombre. Al escribir ''@'' sale en la lista junto a los ficheros.
@agent-Explore ¿dónde se valida el token JWT y qué endpoints no pasan por esa validación?
* **Con lenguaje natural**, diciéndole que lo use:
Usa el subagente general-purpose para migrar los tests del módulo pedidos de JUnit 4 a JUnit 5
* **Automáticamente**: lo decide Claude Code, que lo lanza cuando la tarea encaja con su ''description''. Es lo que pasa casi siempre: le preguntas algo sobre el código y verás que lanza ''Explore'' sin que se lo pidas.
Los subagentes van **en segundo plano**: sigues hablando con Claude mientras trabajan. Si uno se queda en primer plano bloqueando la sesión, ''Ctrl+B'' lo manda a segundo plano.
==== Dónde se guardan ====
Cada subagente es un fichero ''.md'':
* ''.claude/agents/'' **en el proyecto**: está en el repositorio para que sea solo de ese proyecto.
* ''~/.claude/agents/'' **en tu ordenador**: para compartirlo entre proyectos
----
===== 4. Skills =====
Qué es una //skill// y cómo se escribe está en el [[cursos:sdd:08-skills-agentes|tema de Skills y agentes]].
==== Cómo se lanza ====
Hay tres formas de lanzarla:
* **Invocándola directamente con ''/''** y su nombre: cada //skill// es un comando más, y al escribir ''/'' sale en la lista. Lo que escribas detrás le llega como argumento.
/revisar-pr 128
* **Con lenguaje natural**, diciéndole que la use:
Usa la skill revisar-pr con el PR 128
* **Automáticamente**: lo decide Claude Code, que la carga cuando su ''description'' encaja con lo que pides («revisa el PR 128»).
==== Dónde se guardan ====
Cada //skill// es una carpeta con su ''SKILL.md'':
* ''.claude/skills/'' **en el proyecto**: está en el repositorio para que sea solo de ese proyecto.
* ''~/.claude/skills/'' **en tu ordenador**: para compartirla entre proyectos.
----
===== 5. Modos: Plan y Build =====
Como en OpenCode, hay **dos modos: Plan y Build**, y se cambia entre ellos con **''Mayús+Tab''**.
==== El modo Plan ====
Lee, analiza y te propone un plan, **sin editar ningún fichero**, como el Plan de OpenCode. Puede ejecutar los comandos simples que necesite para investigar, pero antes los revisa el **clasificador**. Cualquier otro comando te lo pregunta.
El **clasificador** es una IA de Claude que decide qué tiene que preguntarte y qué no.
Cuando el plan está bien y lo aceptas, Claude Code ofrece pasar directamente a Build para ejecutarlo.
==== El modo Build ====
Ejecuta: edita ficheros y lanza comandos. Es un único modo, pero hay **tres tipos según los permisos**, es decir, según qué te pregunta antes de hacer algo:
^ Tipo ^ Editar en la carpeta ^ Comandos simples (''mkdir'', ''mv'', ''cp'', ''rm''…) ^ Todo el resto ^
| **Manual** | Pregunta | Pregunta | Pregunta |
| **Aceptar ediciones** | ✓ | ✓ | Pregunta |
| **Auto** | ✓ | ✓ | ✓ El clasificador revisa cada acción: bloquea lo peligroso y sigue |
''Mayús+Tab'' recorre los tres tipos de Build y el Plan en este orden: Manual, Aceptar ediciones, Plan y Auto.
Debajo de la caja de entrada se ve siempre en qué modo estás, con la coletilla «mode on»: ''plan mode on'', ''auto mode on''… En Manual no aparece nada.
**Auto** es cómodo, pero quien decide lo que se ejecuta ya no eres tú. Úsalo solo en un repositorio con todo commiteado, para poder volver atrás.
----
===== 6. Comandos =====
==== /init ====
Genera las instrucciones fijas del proyecto: analiza el código y escribe qué es el proyecto, su arquitectura y los comandos habituales (arrancar, probar, construir). Es un punto de partida: revísalo y edítalo a mano.
La trampa: **genera un ''CLAUDE.md''**, no un ''AGENTS.md'', y si existe un ''CLAUDE.md'' Claude Code deja de leer el ''AGENTS.md'' ([[cursos:sdd:07-agents-md#claudemdno_usarlo|por qué no usarlo]]). Así que se renombra; si ya tenías ''AGENTS.md'', se pasa a él lo que interese y el ''CLAUDE.md'' se borra.
git mv CLAUDE.md AGENTS.md
==== /clear ====
Empieza de cero: borra la conversación y deja el contexto vacío. Se hace **cada vez que cambias de tarea**.
==== /rewind ====
Vuelve atrás: abre la lista de tus prompts, eliges hasta cuál volver y qué se restaura: el código, la conversación o los dos.
Solo deshace lo que Claude Code **editó con sus herramientas**. Lo que hizo con un comando de shell (un ''rm'', un ''mv'', un ''git checkout'') no se recupera. El deshacer de verdad sigue siendo ''git''.
==== /compact ====
Resume la conversación para liberar contexto y seguir en la misma sesión.
**No uses ''/compact''**: antes de llegar a él, usa ''/clear''. El resumen lo hace el modelo, que no sabe qué es lo importante para ti, y sigues trabajando con un contexto peor sin darte cuenta.
==== /copy ====
Copia al portapapeles la última respuesta de Claude Code
==== /export ====
Exporta toda la conversación (no solo la última respuesta)
==== ESC ====
No es un comando, es una tecla: pulsada una vez, para al agente en seco, esté pensando o a media tarea. Lo que ya ha hecho se queda hecho: le dices qué cambiar y sigue.
No la pulses dos veces: con la caja de entrada vacía, ''ESC ESC'' no interrumpe, abre ''/rewind''.
----
===== 7. Plugins =====
Un plugin de Claude Code es un paquete que puede traer //skills//, subagentes, //hooks// y servidores MCP a la vez. No se instalan desde npm sino desde **//marketplaces//**: repositorios de GitHub con un catálogo de plugins. Al instalar, el plugin se nombra con ''@'' y el //marketplace// del que sale: ''plugin@marketplace''.
Para ver los instalados y buscar en los catálogos, el gestor de plugins:
/plugin
==== Desde el marketplace oficial ====
El //marketplace// de Anthropic, ''claude-plugins-official'', ya viene añadido: sus plugins se instalan directamente.
/plugin install frontend-design@claude-plugins-official
==== Desde un repositorio de GitHub ====
Un plugin que no está en el oficial se instala en dos pasos: primero se añade el //marketplace// de su repositorio y luego se instala el plugin.
* Añadir el //marketplace//, con ''usuario/repositorio'' de GitHub:
/plugin marketplace add jarrodwatts/claude-hud
* Instalar el plugin desde ese //marketplace//:
/plugin install claude-hud@claude-hud
Lo que va detrás de la ''@'' es el nombre del //marketplace//, no el del repositorio. Suelen coincidir, pero no siempre. Para ver los marketplace que hay usar ''/plugin marketplace list''
Un plugin de un repositorio cualquiera ejecuta código en tu máquina con tus permisos (sus //hooks// y sus servidores MCP). Mira de quién es antes de instalarlo.
----
===== 8. Plugins a instalar =====
==== claude-hud: contexto y límites siempre a la vista ====
Claude Code no enseña en pantalla el contexto ocupado ni cuánto queda del límite del plan: hay que pedirlo con ''/context'' y ''/usage''. [[https://github.com/jarrodwatts/claude-hud|claude-hud]] lo pone en la barra de estado, debajo de la caja de entrada: modelo, **porcentaje de contexto**, **uso del plan**, la herramienta o el subagente que se está ejecutando y las tareas pendientes. No ocupa contexto.
Sin el plugin, debajo de la caja de entrada solo se ve el modo:
{{:cursos:sdd:claude-hud-sin.png?700|Claude Code sin claude-hud}}
Con el plugin, en la misma sesión aparece debajo una barra de estado con varias líneas:
{{:cursos:sdd:claude-hud-con.png?700|Claude Code con claude-hud}}
Vamos a ver qué es cada cosa:
{{:cursos:sdd:claude-hud-con-anotada.png?700|Qué es cada dato de claude-hud}}
* **Modelo**: con el que estás trabajando (''Sonnet 5.5'').
* **Proyecto**: la carpeta en la que se ha arrancado Claude Code (''tienda'').
* **Directorio añadido**: otra carpeta a la que también tiene acceso (''+disenyo-interfaces'').
* **Rama de git**: la rama actual; el ''*'' indica que hay cambios sin commitear.
* **Duración de la sesión**: cuánto tiempo lleva abierta (''1m'').
* **Contexto ocupado**: cuánto de la ventana de contexto se ha gastado (4 %). Es lo que dice cuándo hacer ''/clear''.
* **Uso del plan**: cuánto llevas gastado del límite de tu suscripción (3 %) y cuándo se renueva (en 2 h 12 min).
* **MCP y hooks cargados**: cuántos servidores MCP y //hooks// están activos.
* **Herramientas que ha usado**: las que ha usado en la última petición y cuántas veces (''Read ×1''). Mientras trabaja se ve la que está ejecutando, y también los subagentes y las tareas pendientes.
* **Modo**: este no es del plugin, sale también sin él.
Se instala desde su repositorio de GitHub, como en [[#desde_un_repositorio_de_github|la sección anterior]], y se activa con:
/claude-hud:setup
Por defecto solo enseña el modelo, el proyecto, la rama de git, el contexto y el uso del plan. El resto de lo que sale en las capturas (la duración, los MCP y //hooks//, las herramientas, los subagentes y las tareas) hay que activarlo con:
/claude-hud:configure
Te pregunta qué quieres ver y lo guarda en ''~/.claude/plugins/claude-hud/config.json''. Esta es la configuración de las capturas; las líneas a ''true'' de ''display'' son lo que se ve:
{
"lineLayout": "expanded",
"showSeparators": false,
"gitStatus": {
"enabled": true,
"showDirty": true,
"showAheadBehind": false,
"showFileStats": false
},
"display": {
"showModel": true,
"showContextBar": true,
"showTools": true,
"showAgents": true,
"showTodos": true,
"showProject": true,
"showConfigCounts": true,
"showTokenBreakdown": false,
"showSpeed": false,
"showUsage": true,
"usageBarEnabled": true,
"showSessionName": true,
"showDuration": true,
"customLine": ""
}
}
----
===== 9. Enlaces =====
* [[https://code.claude.com|code.claude.com]]
* [[https://code.claude.com/docs/es/overview|Documentación]]
* [[https://code.claude.com/docs/en/interactive-mode|Atajos de teclado y modo interactivo]]: la lista completa