← claude-core
Recursos
EN PT ES
▮ CLAUDE-CORE · ACADEMY CLAUDE CODE v2.1.143 12 MÓDULOS · PRINCIPIANTE → AVANZADO ▮

CLAUDE CODE MASTER CLASS

De la primera sesión a usuario avanzado · 12 módulos · ~60 minutos de punta a punta.

Para quién es esto

Ya usaste un asistente de código, pero Claude Code se siente más profundo que una caja de chat y sospechas que hay un sistema debajo. Lo hay. Esta Master Class recorre las 12 superficies de ese sistema, desde el binario claude hasta CI/CD headless, con un diagrama por concepto y una receta copy-paste por módulo.

Cómo usar esta página

§1

Modelo Mental

fundamentos

TL;DR — Claude Code no es "Claude en una terminal." Es un agent harness: un loop que lee tu repo, ejecuta herramientas, observa resultados, itera. El modelo es un nodo; el harness es el sistema.

▸ Tres cosas que Anthropic ofrece (elige la correcta)

  1. claude.ai (chat) — conversación, sin herramientas, sin repo. Lo mejor para pensar en voz alta.
  2. Claude Code — agente nativo de terminal que lee tu codebase, edita archivos, corre comandos, arregla errores. Lo mejor para entregar código.
  3. Anthropic API — Claude programable dentro de tu app. Lo mejor cuando TÚ eres el harness.

▸ El loop del agente, en 5 pasos

promptmodelotool callresultadomodelo → (loop hasta terminar) repite hasta: respuesta solo de texto · max-turns alcanzado · budget alcanzado · interrupción del usuario

▸ Qué hace diferente a Claude Code

  • Tiene workspace propio. Puede `Read`, `Edit`, `Write`, `Bash` sobre tus archivos — no solo hablar de ellos.
  • Tiene contrato. Permisos, hooks, y CLAUDE.md son los rieles. Configuras intención; Claude trabaja dentro de ella.
  • Compone. Skills, agents, servidores MCP, hooks — cada uno es una primitiva. Esta Master Class enseña cada una.

▸ Pruébalo ahora

cd ~/tu-proyecto
claude
> ¿qué hace este codebase?
Profundizar → cheatsheet PARTE I (superficie CLI)
Siguiente → §2 · Tu Primera Sesión
§2

Tu Primera Sesión

fundamentos

TL;DR — Cuatro formas de entrada cubren el 95% del uso real: claude (interactivo), claude -p (one-shot), claude -c (continuar), claude -r (retomar por id). El resto son flags encima.

▸ Las cuatro formas

  1. claude — REPL interactivo. El 90% de los casos. Tipeas, responde, iteras.
  2. claude -p "tarea" — one-shot. Imprime el resultado y sale. Para pipes, scripts, CI.
  3. claude -c — retoma la última conversación en este dir. Sigue desde donde lo dejaste.
  4. claude -r [id|búsqueda] — elige una sesión específica. Picker interactivo si no hay arg.

▸ Tres flags que valen desde el día 1

  • --model haiku|sonnet|opus — elige el cerebro. Default es sonnet. (§9 cubre cuándo usar cuál.)
  • --add-dir <path> — deja a Claude ver archivos fuera del cwd. Workflow multi-repo.
  • --max-budget-usd 0.50 — techo duro. La sesión se detiene cuando el cap de costo se alcanza.

▸ El grafo de sesión

startup ─SessionStart→ interactive ⇄ /compact ⇄ compacted │ └─/clear→ contexto nuevo ─SessionEnd→ finalizado

▸ Pruébalo ahora

# one-shot scripteable, salida estructurada, con budget
claude -p --output-format json --max-budget-usd 0.50 \
  "resume los últimos 3 commits"
Profundizar → cheatsheet PARTE I (modos · modelo · I/O · subcomandos)
Siguiente → §3 · CLAUDE.md, el manual
§3

CLAUDE.md, el manual de instrucciones

fundamentos

TL;DRCLAUDE.md es lo primero que Claude lee. Pon las convenciones del proyecto aquí y dejas de repetirte cada sesión. Los archivos hacen merge en un ancestor walk; los anidados pueden ser path-scoped.

▸ La jerarquía (todos hacen merge en el prompt)

~/.claude/CLAUDE.md # user-global · preferencias por máquina <ancestors>/CLAUDE.md # cada dir desde cwd hasta la raíz del repo ./CLAUDE.md # proyecto · el canónico · git-tracked ./CLAUDE.local.md # overrides personales · gitignored <subdir>/CLAUDE.md # anidado · on-demand cuando se tocan archivos del subdir

▸ Las cuatro cosas que vale poner

  1. Stack. Lenguaje, framework, test runner. Evita que Claude adivine.
  2. Build & test. Comandos exactos. bun test, pnpm run lint, etc.
  3. Convenciones. Estilo, patrones, naming. Lo que un reviewer corregiría.
  4. Trampas. Comportamiento no-obvio. Lo que te mordió una vez.

▸ Frontmatter path-scoped

---
paths: ["src/**", "tests/**"]
---
# Solo se carga cuando se tocan archivos en src/ o tests/.
# Úsalo para mantener CLAUDE.md enfocado.

▸ Imports (compone, no duplica)

@./conventions.md       # relativo
@~/.claude/snippet.md   # user-home
@/abs/path.md           # absoluto
Profundizar → cheatsheet PARTE II (card CLAUDE.md · imports · reload triggers)
Siguiente → §4 · Permisos & Seguridad
§4

Permisos & Seguridad

fundamentos

TL;DR — Claude pregunta antes de hacer cosas destructivas, pero tú decides la política. Cuatro modos van de "pregunta todo" a "confía en el agente", más una allow/deny list con glob patterns.

▸ Los cuatro modos (del menos al más confiado)

  1. default — prompt en cada tool call. Más seguro, más lento.
  2. acceptEdits — acepta edits automáticamente, sigue preguntando para Bash. Bueno para refactor.
  3. plan — modo read-only; Claude propone un plan, apruebas antes de cualquier escritura.
  4. bypassPermissions — agente corre libre. Úsalo en sandbox descartable o en CI con cap duro de budget.

▸ Allow / deny con glob patterns

// .claude/settings.json
{ "permissions": {
    "defaultMode": "default",
    "allow": ["Bash(git *)", "Read", "Edit"],
    "deny":  ["Bash(rm -rf *)", "Bash(curl *)"]
} }

▸ La regla de seguridad

  • La mayoría de patterns es ToolName(arg-pattern). El arg pattern es un shell-glob.
  • Deny gana a allow para la misma herramienta. Construye tu red de seguridad con deny.
  • Nunca pegues --dangerously-skip-permissions en un repo real. La flag existe para sandbox — desactiva TODO check de permisos, incluida la deny list.
  • Combina modos de alta confianza con --max-budget-usd para que un agente desbocado queme dinero en vez de archivos.
Profundizar → cheatsheet card PERMISSIONS (defaultMode · allow patterns · escapes)
Siguiente → §5 · El Universo MCP
§5

El Universo MCP

capacidades

TL;DRMCP (Model Context Protocol) es cómo Claude habla con el mundo más allá de tu filesystem. Un .mcp.json declara servidores; cada servidor expone herramientas con nombre mcp__<srv>__<tool>.

▸ Cinco servidores maduros que vale conocer

  • playwright — automatización de browser. Click, type, screenshot, evaluate JS. Default para workflow autenticado.
  • chrome-devtools — observabilidad de red, performance, runtime. Solo para debug.
  • dbhub — SQL multi-DB (Postgres, MySQL, SQLite). Read-only por default.
  • nextjs-devtools — build logs, routes, server actions, diagnostics de cache.
  • github — issues / PRs / repos / workflows estructurados (más rico que el CLI gh).

▸ Agregando un servidor

// .mcp.json en la raíz del repo
{ "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-playwright"]
    }
} }

▸ Trust gate

Por default Claude pregunta antes de habilitar servidores MCP declarados en un proyecto. Pon enableAllProjectMcpServers: true en settings para saltar el prompt — solo en repos que confías.

▸ Modelo mental

playwrightgithub ───── CLAUDE ───── chrome-devtoolsdbhub nextjs-devtools cada servidor = una superficie externa · cada herramienta = un verbo en esa superficie
Profundizar → radial del ecosistema MCP en el Atlas
Siguiente → §6 · Skills — embotellando prompts
§6

Skills — embotellando tus prompts

capacidades

TL;DR — una skill es una carpeta con un SKILL.md adentro. Su cuerpo ES el prompt. La invocas como /<nombre>. Dejas de pegar las mismas instrucciones cada sesión.

▸ Anatomía

.claude/skills/<nombre>/ ├── SKILL.md # frontmatter + cuerpo es el prompt ├── templates/ # assets opcionales └── examples/ # material de referencia

▸ El frontmatter que importa

---
description: Pista de descubrimiento en una línea (Claude la lee para saber cuándo sugerirte)
argument-hint: <new <slug> | list>
allowed-tools: [Read, Grep, Bash]
paths: ["docs/specs/**"]   # path-scoped: solo cargable en dirs que matcheen
context: fork               # turn aislado (no contamina la conversación principal)
---
# /nombre — el cuerpo debajo de esta línea es el prompt

▸ Dos features que mueven la aguja

  1. $ARGUMENTS — lo que el usuario tipeó después del slash command. Deja que una skill maneje varias formas de llamar.
  2. !`shell-cmd` — corre al cargar la skill; stdout se inyecta como contexto. Ideal para estado vivo ("fecha de hoy", "branch actual", "lista de PRs abiertos").

▸ Skills bundled (ya en tu máquina)

/simplify · /batch · /debug · /loop · /claude-api — todas vienen con Claude Code. /help lista las que están en tu instalación.

Profundizar → cheatsheet card SKILLS (frontmatter completo · patrones de invocación)
Siguiente → §7 · Agents — delegación
§7

Agents — delegación hecha bien

capacidades

TL;DR — un agent corre en un contexto aislado y devuelve un único mensaje. Delega cuando (a) el trabajo necesita muchas tool calls, (b) el resultado cabe en un resumen, o (c) quieres mantener ruido fuera de la conversación principal.

▸ Los cinco agents built-in

  • general-purpose — research y ejecución multi-step. El default.
  • Explore — búsqueda read-only rápida. "¿Dónde está X definido? ¿Qué archivos usan Y?"
  • Plan — modo arquitecto. Produce un plan de implementación, no escribe código.
  • claude-code-guide — Q&A sobre el propio Claude Code (esta Master Class es un ejemplo real).
  • statusline-setup — configura tu status line. Nicho pero viene incluido.

▸ Una buena delegación tiene cinco partes

TASK:        una frase — qué hacer
CONTEXT:     archivos/paths que el agent debe leer primero
CONSTRAINTS: qué NO hacer · budgets · guardrails de estilo
DELIVERABLE: artefacto concreto (path de archivo, PR, forma del resumen)
DONE_WHEN:   condición verificable (tests pasan, archivo existe)

O DELIVERABLE o DONE_WHEN es requerido (o ambos). El agent no hereda contexto del padre — entrégale todo lo que necesita por adelantado.

▸ Dispatch desde un tool call

Agent({
  subagent_type: "Explore",
  prompt: "TASK: localizar todos los callers de getUser() en src/.\n..." ,
  model: "sonnet",          // opcional · sobrescribe el default
  isolation: "worktree",    // opcional · corre en worktree git temporal
})

▸ Model-fit cheatsheet

Implementación mecánica → sonnet. Lookup rápido de schema/protocolo → haiku. Revisión de arquitectura o debug exploratorio → opus. Research comparativa multi-fuente → opus si ≥2 señales, si no sonnet.

Profundizar → diagrama Atlas Skill · Agent · Hook composition
Siguiente → §8 · Hooks — guardián de cada acción
§8

Hooks — guardián de cada acción

capacidades

TL;DR — los hooks son shell scripts que corren en eventos de ciclo de vida. 29 eventos en total. Cada uno recibe JSON por stdin y decide vía exit code: 0 = permite, 2 en PreToolUse = BLOQUEA (stderr mostrado al agent), cualquier otro = solo log.

▸ Las siete familias de eventos

  1. Session lifecycle — SessionStart · SessionEnd · Setup · Stop · StopFailure
  2. Prompts & instructions — UserPromptSubmit · UserPromptExpansion · InstructionsLoaded
  3. Tool gates — PreToolUse · PostToolUse · PostToolUseFailure · PostToolBatch
  4. Permission — PermissionRequest · PermissionDenied
  5. Sub-agents & tasks — SubagentStart · SubagentStop · TaskCreated · TaskCompleted
  6. Compaction — PreCompact · PostCompact
  7. System — Notification · TeammateIdle · ConfigChange · CwdChanged · FileChanged · WorktreeCreate · WorktreeRemove · Elicitation · ElicitationResult

▸ Hook mínimo viable

// .claude/settings.json
{ "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "command": "bash .claude/hooks/check-bash.sh"
      }]
    }]
} }
#!/usr/bin/env bash
# .claude/hooks/check-bash.sh — lee JSON de stdin, decide por exit
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command')
if [[ "$cmd" =~ rm\ -rf ]]; then
  echo "bloqueado: rm -rf está negado en este proyecto" >&2
  exit 2
fi
exit 0

▸ Una trampa que vale señalar

PostToolUse(Bash) dispara solo en éxito. Para capturar fallas, parea con PostToolUseFailure(Bash). El payload de falla usa .error y no tiene tool_response.

▸ Tres tipos de handler

  • type: command — shell script. El default.
  • type: prompt — single-turn Claude eval sobre $ARGUMENTS.
  • type: agent — spawnea un sub-agent con herramientas para verificación profunda.
Profundizar → radial Atlas de hook taxonomy · 29 eventos de un vistazo
Siguiente → §9 · Costo & Fit del Modelo
§9

Costo & Fit del Modelo

avanzado

TL;DR — la misma tarea corriendo en Opus puede costar 60× más que en Haiku. La diagonal es óptima; fuera de ella es gasto excesivo o subdimensionado. Elegir bien una vez puede cortar 70% de la cuenta.

▸ Los tres modelos · por millón de tokens

haiku sonnet opus $0.25/$1.25 $3/$15 $15/$75 in/out in/out in/out formateo docs ✓ óptimo ~ ok ✗ 60× desperdicio refactor simple ───────────────────────────────────────────────────────────────── coding tasks ~ subdim. ✓ óptimo ~ 5× overspend test fixes ───────────────────────────────────────────────────────────────── arquitectura ✗ no llega ~ se esfuerza ✓ óptimo debug difícil

▸ Knob de effort (solo Opus)

--effort low|medium|high intercambia latencia por profundidad. low para loops apretados, high para revisión one-shot de arquitectura.

▸ Cache es tu segunda mayor palanca

  • Anthropic cachea prompts por 5 minutos (tier free) o 1 hora (con cache_control explícito).
  • System prompts + CLAUDE.md + reads largos son candidatos a cache. Repetir dentro del TTL es ~90% más barato.
  • Sleeps largos (≥5 min) rompen el cache. Planifica intervalos de loop con esto en mente.

▸ El techo duro

claude -p --max-budget-usd 1.00 --max-turns 12 \
  "correr tests, arreglar fallas, repetir hasta verde"

Budget cap y turn cap son la red de seguridad — cuando un loop no converge, deja de quemar dinero en vez de ponerse creativo.

Profundizar → matriz Atlas Cost × Model fit
Siguiente → §10 · Patrones de Workflow
§10

Patrones de Workflow

avanzado

TL;DR — la mayoría del trabajo real en Claude Code encaja en una de cinco formas. Elegir la forma correcta importa más que elegir el modelo correcto.

▸ Los cinco patrones

  1. Sequential — un Claude, una tarea, de arriba a abajo. El default. Úsalo para cualquier cosa donde el paso N depende del N−1.
  2. Operator — te quedas en el loop, Claude propone diffs, aceptas/rechazas. Úsalo para code review y edits quirúrgicos.
  3. Split-merge — un parent dispara N agents delegados (uno por archivo, uno por módulo), parent fusiona los retornos. Úsalo para refactors estilo codemod.
  4. Agent teams — cadena Plan → Implement → Review, cada uno un sub-agent diferente con contexto propio. Úsalo para features no-triviales.
  5. Headlessclaude -p en CI/CD con salida estructurada. Sin humano en el loop. Úsalo para PR review bots, test-fix loops, audit de dependencias.

▸ Eligiendo la forma

¿necesita checkpoint humano entre pasos? ─sí→ operator │ no ▼ ¿trabajo naturalmente paralelo? ─sí→ split-merge │ no ▼ ¿se descompone en modos de razonamiento ─sí→ agent teams distintos (plan / code / review)? │ no ▼ ¿corre en CI sin humano? ─sí→ headless │ no ▼ default → sequential

▸ El trade-off oculto

Los patrones paralelos (split-merge, agent teams) son rápidos pero cuestan más en tokens totales porque cada agent delegado carga su propio contexto. Sequential es más lento pero más barato. Elige paralelo solo cuando latencia de wall-clock importa de verdad.

Profundizar → cheatsheet card WORKFLOW PATTERNS
Siguiente → §11 · Compaction & Memoria
§11

Compaction & Memoria

avanzado

TL;DR — Claude Code resume sesiones largas automáticamente. El resumen es lossy. El puente PreCompact → SessionStart(compact) es cómo preservas la señal cruda que importa.

▸ Tres capas de memoria

  1. CLAUDE.md — siempre en contexto. La capa "cómo funciona este proyecto".
  2. Auto-memory — Claude escribe hechos sobre tu proyecto en ~/.claude/projects/<slug>/memory/ conforme aprende. Indexado por MEMORY.md, cargado al inicio de sesión.
  3. Transcript — la conversación misma. Cuando crece más allá del budget, compaction entra en acción.

▸ El flujo de compaction

turn N → PreCompact hook → summarizer corre → PostCompact │ ▼ SessionStart(source:compact) re-inyecta additionalContext para turn N+1

▸ Por qué importa el puente de hook

  • El summarizer es lo único que cruza la frontera por default — y la summarización pierde citas verbatim, paths de archivo, palabras exactas.
  • Solo PreCompact puede escribir antes de la truncación; solo SessionStart puede inyectar después. Ningún otro hook cierra ese gap.
  • Guarda raw turns en disco en PreCompact, léelas de vuelta en SessionStart-con-source-compact. Es el patrón canónico.

▸ Pruébalo ahora

# compaction manual
/compact

# revisa qué se preservó
/memory
Profundizar → flujo Atlas Compaction interrupt
Siguiente → §12 · CI/CD & Headless
§12

CI/CD & Headless

avanzado

TL;DRclaude -p es la puerta al uso no-interactivo. Combínalo con --output-format json, --max-budget-usd, y --max-turns para tener un agent determinístico, presupuestado y parseable en tu pipeline.

▸ Las cinco flags que hacen funcionar headless

  • -p, --print — imprime resultado y sale. Sin REPL.
  • --output-format json|text|stream-json — JSON es el default correcto para máquinas.
  • --max-turns N — cap duro de iteraciones del agent. Detiene runaway.
  • --max-budget-usd X — cap duro de costo. Detiene overrun de costo.
  • --permission-mode bypassPermissions — requerido en CI donde no hay humano para aprobar. Parea con los dos caps de arriba.

▸ Un step real de GitHub Actions

- name: PR review bot
  run: |
    claude -p \
      --permission-mode bypassPermissions \
      --output-format json \
      --max-turns 6 \
      --max-budget-usd 0.50 \
      "review del PR #${{ github.event.number }} por issues de seguridad,
       retorna findings como JSON: {findings: [{file, line, severity, why}]}"
  env:
    ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

▸ Tres patrones que entregan

  1. PR review bot — corre en pull_request, postea findings como review comment.
  2. Test-fix loop — corre en workflow_dispatch, intenta arreglar tests fallando, abre PR con el fix.
  3. Audit de dependencias — corre cada noche, lee package.json + advisories, abre issues por deps vulnerables.

▸ La disciplina

  • Siempre setear cap de turn Y cap de budget. Los dos. CI loops es donde el dinero desaparece.
  • Usa el modelo más barato que dé la talla. La mayoría del trabajo de CI es sonnet como máximo.
  • Trata el JSON de salida como contrato — haz que el step de CI falle si el JSON está malformado, en vez de dejarlo cascadear.
Profundizar → cheatsheet card I/O & FORMAT · sección de recipes