Es muy interesante esta conferencia de Boris Cherny en el marco de Code with Claude, el primer evento para desarrolladores de Anthropic, y tuvo lugar el 22 de mayo de 2025 en San Francisco,

Este es el texto:
Hola a todos. Soy Boris, miembro del equipo técnico de Anthropic y creador de Claude Code. Hoy voy a hablaros de algunos consejos prácticos para usar Claude Code. La charla será muy práctica; no voy a entrar demasiado en la historia ni en la teoría.
Antes de empezar, levantad la mano: ¿quién ha usado Claude Code antes? Bien, eso es lo que nos gusta ver.
Para quienes no hayan levantado la mano, sé que normalmente no se debe hacer esto mientras alguien habla, pero podéis abrir el portátil y escribir esto. Os ayudará a instalar Claude Code para poder seguir el resto de la charla. Solo necesitáis Node.js. Si lo tenéis instalado, debería funcionar. No es obligatorio seguirlo en directo, pero si aún no lo tenéis, esta es vuestra oportunidad para instalarlo.
¿Qué es Claude Code?
Claude Code es un nuevo tipo de asistente de IA. Ha habido distintas generaciones de asistentes de IA para programar. La mayoría se han centrado en completar una línea cada vez, o unas pocas líneas de código cada vez. Claude Code no está pensado para eso. Es completamente agéntico. Está pensado para crear funcionalidades, escribir funciones enteras, archivos completos o arreglar bugs completos de una vez.
Lo interesante de Claude Code es que funciona con todas tus herramientas. No tienes que cambiar tu flujo de trabajo ni sustituirlo todo para empezar a usarlo. Da igual qué IDE uses: VS Code, Xcode, JetBrains, Vim, Emacs o cualquier otro. Claude Code funciona con cualquier IDE y con cualquier terminal. Funciona en local, por SSH remoto, con Tmux o en cualquier entorno en el que estés trabajando.
Es una herramienta de propósito general. Si no has usado antes este tipo de asistentes de programación de formato libre, puede ser difícil saber cómo empezar. Lo abres, ves una barra de prompt y te preguntas: “¿Qué hago con esto? ¿Qué escribo?”.
Es una herramienta potente. Puedes usarla para muchas cosas, pero precisamente porque puede hacer tanto, no intentamos empujarte hacia un flujo de trabajo concreto. Como ingeniero, deberías poder usarla como quieras.
Cuando abres Claude Code por primera vez, recomendamos hacer algunas cosas sencillas para configurar el entorno.
Primero, ejecuta terminal setup. Esto te permite usar Shift + Enter para crear nuevas líneas, sin tener que usar barras invertidas para introducir saltos de línea. Hace que el uso sea más cómodo.
También puedes usar /theme para elegir modo claro, modo oscuro o temas daltonizados.
Puedes usar /install GitHub app. Hoy hemos anunciado una app de GitHub que permite mencionar a Claude en cualquier issue o pull request de GitHub. Para instalarla, solo tienes que ejecutar ese comando en la terminal.
También puedes personalizar el conjunto de herramientas permitidas para que no te pida confirmación cada vez. Esto es muy cómodo. Si hay acciones que Claude me pide aprobar muchas veces, suelo configurarlas así para no tener que aceptarlas una por una.
Otra cosa que hago a menudo es no escribir muchos prompts a mano. Si estás en macOS, puedes ir a Ajustes del sistema, en Accesibilidad, y activar el dictado. Entonces pulsas dos veces la tecla de dictado y puedes hablarle directamente. Ayuda mucho usar prompts específicos. Es bastante útil: puedes hablarle a Claude Code como hablarías con otro ingeniero, sin tener que escribir tanto.
Cuando empiezas con Claude Code, al ser tan libre y capaz de hacer tantas cosas, surge la pregunta: ¿por dónde empezar?
Lo que recomiendo por encima de todo es empezar con preguntas y respuestas sobre la base de código. Es decir, hacer preguntas sobre el código.
Esto es algo que enseñamos a los nuevos empleados en Anthropic. En el primer día de onboarding técnico, aprenden qué es Claude Code, lo descargan, lo configuran y empiezan directamente a hacer preguntas sobre la base de código.
Antes, el onboarding técnico suponía bastante carga para el equipo. Había que preguntar a otros ingenieros, buscar por el código, entender cómo usar las herramientas… y todo eso llevaba tiempo. Con Claude Code puedes hacerle preguntas directamente. Claude explora la base de código y responde ese tipo de preguntas.
En Anthropic, el onboarding técnico solía llevar unas dos o tres semanas. Ahora suele llevar unos dos o tres días.
Otra cosa interesante del sistema de preguntas y respuestas es que no hacemos indexación. No hay una base de datos remota con tu código. No lo subimos a ningún sitio. Tu código se queda en local. No entrenamos modelos generativos con tu código. Tú lo controlas. No hay índices ni nada parecido.
Eso también significa que no hay configuración previa. Descargas Claude, lo arrancas y lo usas. No hay que esperar a que indexe nada.
Esta es una charla técnica, así que voy a enseñar prompts muy concretos y ejemplos muy concretos que podéis usar para mejorar vuestra experiencia con Claude Code.
Puedes preguntarle cosas como: “¿Cómo se usa esta parte concreta del código?” o “¿Cómo instancio esta clase?”.
Claude Code no se limita a hacer una búsqueda de texto. A menudo va un nivel más profundo. Busca ejemplos de cómo se instancia una clase, cómo se usa y te da una respuesta más completa, más parecida a lo que obtendrías de una wiki o de documentación, no solo de un Command + F.
También le pregunto mucho por el historial de Git. Por ejemplo: “¿Por qué esta función tiene 15 argumentos?” o “¿Por qué los argumentos se llaman de esta forma tan rara?”.
Estoy seguro de que todos tenemos en nuestras bases de código alguna función o clase así. Claude Code puede revisar el historial de Git para entender cuándo se introdujeron esos argumentos, quién los introdujo, cuál era la situación y qué issues estaban vinculados a esos commits. Revisa todo eso y lo resume.
No tienes que explicárselo con tanto detalle. Solo le dices: “Mira el historial de Git”, y sabe hacerlo.
La razón por la que lo sabe no es que lo hayamos puesto en el system prompt. No hay nada en el system prompt sobre revisar el historial de Git. Lo sabe porque el modelo es muy bueno. Si le dices que use Git, sabe cómo usar Git. Tenemos la suerte de construir sobre un modelo muy bueno.
También le pregunto a menudo por issues de GitHub. Puede usar webfetch, consultar issues y buscar contexto. Esto también es muy útil.
Hay algo que hago todos los lunes en nuestra reunión semanal: le pregunto “¿Qué he enviado esta semana?”. Claude Code mira el log, conoce mi nombre de usuario y me da un resumen de todo lo que he enviado. Luego lo copio y lo pego en un documento.
Ese es el primer consejo. Para quienes no hayan usado Claude Code antes, o si se lo estáis enseñando a alguien por primera vez, recomendamos empezar con preguntas y respuestas sobre la base de código. No empecéis usando herramientas avanzadas ni editando código. Empezad haciendo preguntas sobre el código.
Eso enseña a la gente a escribir prompts y a entender los límites: qué puede hacer Claude Code, qué puede resolver de una vez, qué necesita dos o tres intentos, y cuándo conviene usar modo interactivo en un REPL.
Cuando ya estás cómodo con las preguntas y respuestas, puedes pasar a editar código.
Lo interesante de usar un LLM de forma agéntica es que le das herramientas y, de alguna manera, averigua cómo usarlas. En Claude Code le damos un conjunto pequeño de herramientas. Tiene una herramienta para editar archivos, otra para ejecutar comandos Bash y otra para buscar archivos. Encadena esas herramientas para explorar el código, pensar soluciones y hacer cambios.
No tienes que decirle explícitamente: “usa esta herramienta, luego esta otra y luego esta otra”. Le dices lo que quieres y él averigua cómo hacerlo. Encadena las herramientas de la forma adecuada para Claude Code.
Hay muchas maneras de usar esto.
A veces, antes de pedirle que escriba código, le pido que piense un poco o que haga un plan. Esto lo recomendamos mucho. A veces veo a gente pedirle a Claude Code que implemente una funcionalidad enorme de 3.000 líneas. A veces lo hace bien al primer intento. Pero otras veces construye algo que no se parece en nada a lo que querías.
La forma más sencilla de obtener el resultado que quieres es pedirle primero que piense. Puedes decirle: “Piensa ideas, haz un plan, enséñamelo y pide aprobación antes de escribir código”.
No necesitas usar un modo especial de planificación ni herramientas especiales. Solo tienes que pedírselo a Claude. Dile: “Antes de escribir código, haz un plan”. Eso es todo.
Otra frase que uso mucho es: “commit, push, PR”. No tiene nada especial, pero Claude es lo bastante inteligente para interpretarlo. Hará un commit, lo subirá a la rama, creará una rama si hace falta y abrirá una pull request en GitHub. No tienes que explicarle todo. Mirará el código, el historial y el log de Git para entender el formato de los commits y todo lo demás.
De nuevo, no lo hemos puesto en el system prompt. Simplemente sabe hacerlo porque el modelo es bueno.
A medida que avanzas, conviene conectar las herramientas de tu equipo. Aquí es donde Claude Code empieza a brillar.
Hay dos tipos generales de herramientas. Una son las herramientas por lotes. Por ejemplo, imaginemos una CLI llamada burly. No es real, pero sirve como ejemplo. Puedes decirle a Claude: “Usa esta CLI para hacer algo”. También puedes decirle que use --help para entender cómo se usa.
Si usas algo con frecuencia, puedes guardarlo en tu Claude.md, del que hablaré enseguida, para que Claude lo recuerde entre sesiones.
Este es un patrón común que seguimos en Anthropic y que también vemos en clientes externos.
Lo mismo ocurre con MCP. Claude Code puede usar herramientas por lotes y herramientas MCP. Solo tienes que explicarle qué herramientas existen, añadir la herramienta MCP y decirle cómo usarla. Claude empezará a usarla.
Esto es muy potente porque, cuando empiezas a trabajar con una nueva base de código, puedes darle todas las herramientas que tu equipo ya usa en esa base de código. Claude Code puede usarlas por ti.
Hay algunos flujos de trabajo comunes.
Uno es el que ya he mencionado: explorar un poco, planificar y pedir confirmación antes de escribir código.
Otros dos flujos son muy potentes. Cuando Claude tiene alguna forma de comprobar su trabajo —por ejemplo, escribiendo tests unitarios, haciendo capturas con Puppeteer o capturando el simulador de iOS— puede iterar.
Esto es increíble. Si le das un mockup y le dices “construye esta interfaz web”, lo hará bastante bien. Pero si puede iterar dos o tres veces, muchas veces lo deja casi perfecto.
El truco es darle alguna herramienta que le permita recibir feedback y comprobar su trabajo. A partir de ahí, itera por sí mismo y obtiene un resultado mucho mejor.
Sea cual sea tu dominio —tests unitarios, tests de integración, capturas de apps o de web— dale una forma de ver su resultado. Eso le permitirá mejorar.
Los siguientes pasos son: enseñar a Claude a usar tus herramientas y decidir cuál es el flujo de trabajo adecuado. Debes saber cuándo quieres que Claude escriba código directamente, cuándo quieres que piense y haga un plan, y cuándo quieres que itere.
A medida que profundizas, además de herramientas, quieres darle más contexto. Cuanto más contexto tenga, mejores serán sus decisiones.
Como ingeniero que trabaja en una base de código, tienes mucho contexto en la cabeza: sistemas, historia, decisiones pasadas… Hay varias maneras de darle eso a Claude. Cuanto más contexto útil le des, mejor lo hará.
La forma más sencilla es lo que llamamos Claude.md. Es un nombre de archivo especial. El lugar más simple para ponerlo es la raíz del proyecto, en el mismo directorio desde el que arrancas Claude. Claude lo leerá automáticamente al inicio de cada sesión.
También puedes tener un Claude.md local. Ese normalmente no lo subes al control de versiones. El Claude.md del proyecto sí deberías subirlo al repositorio y compartirlo con tu equipo, para escribirlo una vez y que todos lo aprovechen. El local es solo para ti.
¿Qué cosas se ponen en Claude.md? Comandos Bash comunes, herramientas MCP frecuentes, decisiones arquitectónicas, archivos importantes o cualquier cosa que normalmente necesites saber para trabajar en esa base de código.
Intenta mantenerlo breve. Si se vuelve demasiado largo, consume mucho contexto y no suele ser tan útil. Conviene que sea lo más corto posible.
Por ejemplo, en nuestra base de código tenemos comandos Bash comunes, una guía de estilo y algunos archivos clave.
También puedes poner otros Claude.md en subdirectorios. Claude los cargará bajo demanda cuando trabaje en esas carpetas.
Además, si estás en una empresa, quizá quieres un Claude.md compartido entre distintas bases de código y gestionado para todos los usuarios. Puedes ponerlo en la raíz empresarial y se cargará automáticamente.
Hay muchas formas de añadir contexto. Me costó preparar esta diapositiva porque hay muchas opciones.
Claude.md se carga automáticamente. También puedes usar comandos con barra, en .claude/commands. Esto puede estar en tu directorio home o dentro del proyecto.
Aquí tenemos algunos ejemplos de comandos que usamos en Claude Code. Por ejemplo, en el repositorio de Claude Code, cuando ves que se etiquetan issues, eso ocurre mediante este flujo de trabajo. Es un comando para etiquetar issues de GitHub.
Tenemos una GitHub Action que ejecuta Claude Code con ese comando, y Claude etiqueta los issues para que los humanos no tengan que hacerlo. Ahorra bastante tiempo.
También puedes mencionar archivos para incluirlos en el contexto. Como decía antes, los Claude.md en subdirectorios se cargan cuando Claude trabaja en esos directorios.
Merece la pena dedicar tiempo a ajustar el contexto. Puedes pasarlo por un mejorador de prompts y pensar para quién es ese contexto. Pregúntate si debe cargarse siempre, bajo demanda, si debe compartirse con el equipo o si es una preferencia personal.
Afinar el contexto mejora mucho el rendimiento si se hace bien.
A medida que avanzas, también conviene pensar en la jerarquía de las distintas formas de cargar contexto y configuración. No solo Claude.md, sino también configuración y todo lo relacionado con Claude.
Los proyectos son específicos de tu repositorio Git. Puedes subirlos al repositorio o hacerlos solo para ti. También puedes tener configuraciones globales para todos tus proyectos o políticas empresariales.
Una política empresarial es básicamente una configuración global que despliegas para todos tus empleados o para todo tu equipo.
Esto aplica a muchas cosas. Puedes hacerlo para comandos con barra y para permisos. Por ejemplo, si todos tus empleados usan un comando de tests, puedes añadirlo a una política empresarial. Así, cuando un empleado ejecute ese comando, se aprobará automáticamente. Es cómodo.
También puedes bloquear comandos. Por ejemplo, si hay una URL que nunca debería consultarse, puedes añadirla a esa configuración. Así, ningún empleado podrá anularlo y esa URL nunca podrá consultarse.
Sirve tanto para desbloquear trabajo como para mantener segura la base de código.
Lo mismo ocurre con servidores MCP. Puedes tener un archivo mcp.json en el repositorio. Así, cada vez que alguien ejecute Claude Code en esa base de código, se le pedirá que instale esos servidores MCP y todo el equipo podrá compartirlos.
Si no sabes por dónde empezar, recomiendo empezar con contexto compartido de proyecto. Lo escribes una vez, lo compartes con todos y obtienes un efecto de red: una persona hace un poco de trabajo y todo el equipo se beneficia.
Claude incluye varias herramientas para gestionar esto.
Por ejemplo, si ejecutas /memory, puedes ver todos los archivos de memoria que se están cargando: una política empresarial, tu memoria de usuario, el Claude.md del proyecto y quizá un Claude.md anidado que solo se carga en ciertos directorios.
Con /memory también puedes editar archivos de memoria concretos.
Cuando escribes # para que Claude recuerde algo, puedes elegir a qué memoria quieres enviarlo.
El siguiente paso es dedicar tiempo a configurar Claude.md, servidores MCP y las herramientas que usa tu equipo. Lo configuras una vez y lo compartes con todos.
Un ejemplo está en nuestro repositorio de apps. En Anthropic, ese es el repositorio donde tenemos el código web y de apps. Tenemos un servidor MCP de Puppeteer y lo compartimos con el equipo. Hay un mcp.json incluido en el repositorio. Así, cualquier ingeniero que trabaje en ese repo puede usar Puppeteer para ejecutar tests end-to-end, hacer capturas automáticamente e iterar, sin que cada ingeniero tenga que instalarlo por su cuenta.
Como esta charla trata de consejos avanzados, quiero hacer un breve paréntesis para hablar de algunos atajos de teclado que quizá no todo el mundo conoce.
Construir para terminal es difícil, pero también es divertido. Es como redescubrir un nuevo lenguaje de diseño. Las terminales son muy minimalistas y, por eso, a veces cuesta descubrir los atajos.
Aquí va una referencia rápida.
Puedes pulsar Shift + Tab para aceptar ediciones. Esto te cambia al modo de aceptación automática de ediciones. Los comandos Bash siguen necesitando aprobación, pero las ediciones se aceptan automáticamente. Siempre puedes pedirle a Claude que las deshaga después.
Por ejemplo, lo uso cuando sé que Claude va por buen camino o cuando está escribiendo tests unitarios e iterando sobre ellos. En esos casos suelo activar la aceptación automática para no tener que aprobar cada edición.
Cuando quieres que Claude recuerde algo, por ejemplo si no está usando bien una herramienta y quieres que la use correctamente en adelante, escribe # y dile qué debe recordar. Lo incorporará automáticamente a Claude.md.
Si quieres pasar a modo Bash para ejecutar un comando, puedes escribir ! y luego el comando. Se ejecutará localmente, pero también entrará en la ventana de contexto. Claude lo verá en el siguiente turno.
Esto es útil para comandos largos, comandos que sabes exactamente que quieres ejecutar o cualquier comando cuyo resultado quieras que entre en contexto. Claude verá tanto el comando como su salida.
Puedes mencionar archivos y carpetas para añadirlos al contexto.
En cualquier momento puedes pulsar Escape para detener lo que Claude esté haciendo. Da igual qué esté haciendo: puedes pulsar Escape de forma segura. No corromperá la sesión ni estropeará nada.
Por ejemplo, si Claude está editando un archivo, puedo pulsar Escape y decirle qué quiero que haga de otra forma. O si sugiere una edición de 20 líneas y 19 están perfectas, pero una debe cambiar, pulso Escape, se lo digo y le pido que rehaga la edición.
Puedes pulsar Escape dos veces para volver atrás en el historial.
Cuando termines una sesión, puedes iniciar Claude con resume para reanudarla, o usar --continue.
Si quieres ver más salida, pulsa Control + R. Eso muestra toda la salida, lo mismo que Claude ve en su ventana de contexto.
Lo siguiente que quiero comentar es el SDK de Claude Code.
Hemos hablado de esto al principio. Justo después de esta charla, Sid hará una sesión, creo que al otro lado del pasillo, en la que profundizará mucho en el SDK.
Si no habéis jugado con esto, cuando usas la bandera -p en Claude, eso es el SDK. Hemos estado preparando varias funciones en las últimas semanas para hacerlo aún mejor.
Puedes construir encima de esto. Puedes hacer cosas muy interesantes. Es exactamente lo que usa Claude Code: el mismo SDK.
Por ejemplo, puedes usar claude -p. Este es el SDK de CLI. Puedes pasarle un prompt, herramientas permitidas —incluidos comandos Bash específicos— y decirle en qué formato quieres la salida. Puedes pedir JSON o JSON en streaming si quieres procesarlo.
Esto es muy bueno para construir flujos. Lo usamos constantemente en CI, en respuesta a incidentes y en todo tipo de pipelines.
Piensa en ello como una utilidad Unix. Le das un prompt y te devuelve JSON. Puedes usarlo como quieras: enviarle datos por pipe o sacar su salida por pipe.
El uso de pipes también es muy potente. Por ejemplo, puedes hacer git status, pasarlo por pipe a Claude y luego usar jq para seleccionar el resultado.
Las combinaciones son infinitas. Es una idea nueva: una utilidad Unix superinteligente. Creo que apenas hemos arañado la superficie de lo que se puede hacer con esto.
Puedes leer desde un bucket de GCP, pasarle un log enorme y pedirle a Claude que encuentre lo interesante en ese log. Puedes traer datos desde la CLI de Sentry, pasarlos a Claude y pedirle que haga algo con ellos.
La última parte es probablemente uno de los casos de uso más avanzados que vemos.
Yo soy un usuario bastante normal de Claude: suelo tener un Claude ejecutándose cada vez, quizá algunas pestañas de terminal para distintos repositorios.
Pero cuando miro a usuarios avanzados, dentro y fuera de Anthropic, casi siempre tienen sesiones SSH, túneles de Tmux hacia sesiones de Claude, varios checkouts del mismo repositorio para ejecutar varias instancias de Claude en paralelo, o usan Git worktrees para tener cierto aislamiento.
Estamos trabajando activamente para que esto sea más fácil, pero por ahora estas son algunas ideas para hacer más trabajo en paralelo con Claude.
Puedes ejecutar tantas sesiones como quieras. Se puede hacer mucho trabajo en paralelo.
Eso es todo. Quería dejar algo de tiempo para preguntas y respuestas. Creo que esta es mi última diapositiva. Si alguien tiene preguntas, hay micrófonos a ambos lados. Encantado de responder.
—Hola, Boris. Gracias por crear Claude Code. Me preguntaba cuál fue la parte más difícil de implementar.
Creo que hubo muchas partes complicadas. Una especialmente difícil fue todo lo que hacemos para que los comandos Bash sean seguros.
Bash es peligroso por naturaleza y puede cambiar el estado del sistema de formas inesperadas. Pero, al mismo tiempo, si tienes que aprobar manualmente cada comando Bash, resulta muy molesto como ingeniero. No puedes ser productivo si estás aprobando comandos constantemente.
Gestionar eso de forma segura y escalable para muchos tipos de bases de código fue complicado, porque no todo el mundo ejecuta su código dentro de un contenedor Docker.
Lo que acabamos haciendo es distinguir algunos comandos de solo lectura, usar análisis estático para determinar qué comandos pueden combinarse de forma segura y añadir un sistema de permisos por niveles. Así puedes permitir o bloquear comandos en distintos niveles.
—Hola, Boris. Has mencionado darle una imagen a Claude Code, y eso me hizo preguntarme si hay alguna funcionalidad multimodal que no conozca. ¿Te refieres a apuntarlo a una imagen del sistema de archivos?
Sí. Claude Code es completamente multimodal. Lo ha sido desde el principio. Al estar en una terminal, es un poco difícil de descubrir.
Puedes tomar una imagen y arrastrarla y soltarla. Funciona. Puedes darle una ruta de archivo. También funciona. Puedes copiar y pegar la imagen, y también funciona.
Lo uso bastante cuando tengo un mockup. Arrastro el mockup, le digo que lo implemente, le doy un servidor para que pueda iterar sobre él y queda bastante automatizado.
—¿Por qué construisteis una herramienta de CLI en vez de un IDE?
Buena pregunta. Creo que hay dos razones.
La primera es que empezamos esto en Anthropic, y en Anthropic la gente usa una gran variedad de IDEs. Algunos usan VS Code, otros Zed, Xcode, Vim o Emacs. Era difícil construir algo que funcionara para todos. La terminal era el denominador común.
La segunda razón es que en Anthropic vemos de cerca lo rápido que mejora el modelo. Creo que hay una posibilidad real de que, para final de año, la gente ya no use IDEs de la misma manera. Queremos prepararnos para ese futuro y evitar invertir demasiado en interfaz de usuario y capas encima, porque con la forma en que progresan los modelos, quizá ese trabajo deje de ser útil pronto.
—¿Cuánto habéis usado Claude Code para modelado de machine learning, casi como una experiencia de AutoML? Me interesa saber cómo ha sido la experiencia.
Creo que la pregunta es cuánto usamos Claude Code para machine learning y modelado. Lo usamos bastante para eso.
Tanto ingenieros como investigadores en Anthropic usan Claude Code todos los días. Creo que alrededor del 80% de las personas técnicas en Anthropic lo usan a diario. Espero que eso se note en el producto y en el esfuerzo de uso interno que hemos puesto en él.
Esto incluye investigadores que usan herramientas como la herramienta de notebooks para editar y ejecutar notebooks.
—Muy bien, gracias.
Perfecto, creo que eso es todo. Gracias.