====== 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