SismaticBot Assistant
SismaticBot está escribiendo...
Guía Técnica · Abril 2026

Claude Code:
De 0 a 100

Instalación, Comandos, Subagentes, MCP y un Caso Práctico Real con Python

30 min de lectura
💻 Nivel: principiante → producción
🎥 Basado en el curso de Nick Saraev (772K vistas)
135K
commits/día escritos por Claude Code
90%
del código de Anthropic generado con IA
×4
velocidad media de producción

01

¿Qué es Claude Code exactamente?

Claude Code es la herramienta de línea de comandos oficial de Anthropic. No es el Claude del navegador. La diferencia es fundamental: el Claude de claude.ai es un consultor al que le mandas emails. Claude Code es ese mismo consultor sentado en tu escritorio, con acceso a todos tus archivos, ejecutando comandos en tu nombre mientras tú supervisas.

Característica Claude.ai (navegador) Claude Code (terminal)
Lee tus archivos ❌ Tienes que pegar código ✅ Indexa todo el proyecto
Ejecuta comandos ❌ Solo describe ✅ Corre npm test, git commit…
Edita archivos ❌ Te da código para copiar ✅ Edita directamente
Recuerda el proyecto ❌ Cada sesión desde cero ✅ Lee CLAUDE.md siempre
Conecta con GitHub ❌ Imposible ✅ Crea PRs, comenta issues
Trabajo paralelo ❌ Un hilo por sesión ✅ Subagentes simultáneos

02

Prerrequisitos

Cuenta de Anthropic — obligatorio

Claude Code no está disponible en el plan gratuito.

Plan Precio Para quién
Claude Pro $20/mes Aprendizaje y uso moderado. El mejor para empezar.
Claude Max $100–200/mes Uso intensivo, menos límites de mensajes
Teams $25/usuario/mes Equipos de desarrollo
Console API Pago por uso CI/CD, automatización, producción

Regístrate en: claude.ai/upgrade

03

Instalación paso a paso

macOS / Linux — instalador nativo (recomendado)

Un solo comando. No necesitas Node.js. Se autoactualiza en segundo plano.

bash

curl -fsSL https://claude.ai/install.sh | bash

# Verificar instalación
claude --version
# claude 1.x.x  ✓

# Diagnóstico completo
claude doctor
# ✓ Installation type: native
# ✓ Auto-updates: enabled

Windows — PowerShell

Primero instala Git for Windows. Luego en PowerShell:

powershell

irm https://claude.ai/install.ps1 | iex
claude --version

⚠️

Usa PowerShell, no Git Bash

Git Bash tiene problemas de compatibilidad con Claude Code en Windows.

Windows con WSL2

powershell (admin)

wsl --install -d Ubuntu
# Reinicia el PC, luego dentro de Ubuntu:
curl -fsSL https://claude.ai/install.sh | bash

Método npm (alternativa)

bash

# NUNCA uses sudo con este comando
npm install -g @anthropic-ai/claude-code

# Si ves "command not found":
echo 'export PATH="$(npm config get prefix)/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

04

Primera sesión

La primera vez que ejecutas claude, se abre el navegador para hacer login con tu cuenta de Anthropic.

bash

claude
# Abriendo navegador para autenticación...
# ✓ Autenticado como tu@email.com

# Para CI/CD sin navegador:
export ANTHROPIC_API_KEY=sk-ant-api03-xxxxx
claude

Comandos iniciales

claude code

/help        # Lista todos los comandos
/status      # Modelo activo, permisos, MCPs
/doctor      # Diagnóstico del entorno
/init        # Genera CLAUDE.md para el proyecto
Ctrl+C       # Interrumpir tarea en curso
Ctrl+D       # Salir

Atajos de teclado

Atajo Acción
Shift+Tab (×2) Activar Plan Mode — piensa sin tocar nada
Shift+Tab (×1) Volver a Edit Mode
Ctrl+C Interrumpir tarea en curso
↑ / ↓ Navegar historial de prompts
Tab Autocompletar comandos /

05

El archivo CLAUDE.md — la memoria del proyecto

El CLAUDE.md es el activo más importante de tu configuración. Claude lo lee automáticamente al inicio de cada sesión. Sin él, Claude empieza sin contexto: no sabe qué stack usas ni cómo arrancar el proyecto.

💡

Generarlo automáticamente

Con Claude Code abierto en tu proyecto, escribe /init. Claude escanea el proyecto y genera un CLAUDE.md inicial. Revísalo y mejóralo.

CLAUDE.md completo para un proyecto SaaS

markdown

# TaskFlow — CLAUDE.md

## Stack técnico
- Frontend: React 18 + TypeScript + Tailwind CSS
- Backend: Node.js 20 + Express + PostgreSQL
- Tests: Jest + React Testing Library

## Comandos esenciales
- npm run dev         → Frontend en localhost:3000
- npm run server      → Backend en localhost:4000
- npm test            → Todos los tests

## Reglas de código
- TypeScript strict mode — siempre
- No usar `any` en TypeScript
- No hardcodear URLs — usar variables de entorno
- No commitear .env

06

Plan Mode vs Edit Mode

Plan Mode Edit Mode
Activar Shift+Tab ×2 o /plan Por defecto
Qué hace Propone cambios y espera tu OK Escribe y edita de inmediato
Cuándo usar Cambios grandes, +3 archivos, arquitectura Fixes pequeños, un archivo
Seguridad Máxima — nada sin tu aprobación Normal

Ejemplo con Plan Mode

claude code

> /plan

> Quiero añadir autenticación con Google OAuth.
  Necesito botón en login, callback endpoint,
  guardar usuario nuevo en DB.

Claude propone:
  1. npm install passport passport-google-oauth20
  2. Crear /server/config/passport.js
  3. Añadir GET /auth/google y /auth/google/callback
  4. Migración: campo googleId en users
  5. Actualizar LoginButton.tsx

¿Apruebo el plan? > sí

07

Todos los comandos esenciales

referencia rápida

# SESIÓN
/help              # Lista todos los comandos
/status            # Modelo activo, permisos, MCPs
/doctor            # Diagnóstico — úsalo cuando algo falla
/init              # Genera CLAUDE.md

# CONTEXTO
/clear             # Limpia historial
/compact           # Resume sin perder el hilo
@archivo.js        # Incluye archivo en contexto
--continue         # Retoma sesión anterior

# MODO NO INTERACTIVO
claude -p "tarea"                     # Ejecuta y sale
claude -p "tarea" --max-budget-usd 2  # Limita gasto
claude -w feature/rama                # Crea worktree

08

Gestión de contexto

Claude Code tiene una ventana de contexto de 200.000 tokens. En sesiones largas puede agotarse — Claude empieza a «olvidar» reglas o repetir trabajo.

Prompts específicos = mejores resultados

«Arregla los bugs del proyecto»
«En /server/routes/auth.js línea 45, validateToken lanza TokenExpiredError sin manejar. Añade try/catch y retorna HTTP 401 con body {error: ‘Token expirado’}»

gestión de contexto

/compact           # Compacta sin perder el hilo
/clear             # Limpia historial completo
claude --continue  # Retoma sesión anterior

# Referenciar solo lo necesario con @
> @src/routes/auth.js
  La función validateToken no maneja TokenExpiredError...

09

Subagentes

Los subagentes son instancias especializadas de Claude que trabajan de forma independiente y devuelven solo el resultado al hilo principal. Mantienen el contexto limpio.

Crear el subagente Code Reviewer

.claude/agents/code-reviewer.md

---
name: code-reviewer
description: Revisor experto. Úsalo tras implementar cambios.
tools: Read, Grep, Glob, Bash
model: sonnet
---

Para cada archivo modificado evalúa:
1. Seguridad: inputs sin validar, tokens hardcodeados
2. Rendimiento: queries N+1, bucles innecesarios
3. Tests: cobertura para cambios críticos

Formato — cita archivo + línea:
🔴 CRÍTICO — [problema] → [solución]
🟡 MEJORA  — [problema] → [sugerencia]
✅ OK      — [qué está bien]

10

MCP — Conecta Claude con el mundo

MCP (Model Context Protocol) permite conectarse con GitHub, bases de datos, Playwright, Notion, Slack y cualquier API con soporte MCP.

GitHub MCP — el más útil

bash

claude mcp add --transport stdio github -- npx -y @modelcontextprotocol/server-github

# Token en: https://github.com/settings/tokens/new
# Luego puedes hacer desde Claude Code:
> Lista los últimos 5 PRs abiertos
> Crea un PR de feature/auth a main
> Comenta en el issue #42 que el bug está resuelto

MCPs más útiles en 2026

MCP Para qué sirve
GitHub PRs, issues, commits, reviews
PostgreSQL Consultas, esquema, optimización
Playwright Tests E2E automáticos
Notion Leer/escribir páginas
Slack Mensajes y canales

⚠️

No actives todos a la vez

Con más de 10 MCPs activos la ventana de contexto puede reducirse de 200K a 70K tokens.

11

Git Worktrees

Los worktrees permiten tener múltiples ramas activas en carpetas separadas al mismo tiempo, sin interferencias. La funcionalidad más infrautilizada de Claude Code.

bash

# Terminal 1 — desarrollando una feature
git worktree add ../proyecto-feature-pagos feature/pagos
cd ../proyecto-feature-pagos && claude

# Terminal 2 — bug urgente en paralelo
git worktree add ../proyecto-hotfix hotfix/login-bug
cd ../proyecto-hotfix && claude

# Atajo directo de Claude Code
claude -w feature/nueva-funcionalidad

# Limpiar al terminar
git worktree remove ../proyecto-hotfix

💡

Regla de oro

main = producción estable. Nunca desarrolles directamente en main. Siempre usa worktrees para mantener producción intacta.

PARTE 2

Caso Práctico Real

Sistema de captación automática de clínicas dentales
con Python · Playwright · Claude API

12

Arquitectura del sistema

Vas a construir un sistema que encuentra clínicas en Google Maps, detecta sus puntos débiles y genera mensajes de captación personalizados con IA. El resultado parece hecho a mano porque está basado en datos reales de cada negocio.

🗺️ Google Maps
↓ Playwright (scraping)
datos: nombre, rating, web
↓ Análisis: reseñas + web + anuncios
🤖 Claude API → Mensaje personalizado

📧 Tu bandeja → Cliente potencial

Setup: 4 pasos

1
Crear entorno virtual
mkdir dental-system && cd dental-system
python -m venv venv && source venv/bin/activate
2
Instalar dependencias
pip install playwright requests beautifulsoup4 python-dotenv anthropic
3
Instalar el navegador (CRÍTICO)
playwright install — sin esto el scraping no funciona
4
Configurar API key
Crea .env: ANTHROPIC_API_KEY=sk-ant-api03-xxx — en console.anthropic.com/keys

core.py — cliente Claude

python

import os, anthropic
from dotenv import load_dotenv

load_dotenv()
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

def call_claude(prompt: str, max_tokens: int = 800) -> str:
    response = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=max_tokens,
        messages=[{"role": "user", "content": prompt}]
    )
    return response.content[0].text

tools/maps_scraper.py — scraping con Playwright

python

from playwright.sync_api import sync_playwright
import time, re

def scrape_google_maps(query="clinica dental Madrid", max_results=10):
    results = []
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page()
        page.goto("https://www.google.com/maps")
        page.locator("input#searchboxinput").fill(query)
        page.keyboard.press("Enter")
        time.sleep(4)

        # Scroll para cargar más resultados
        panel = page.locator("div[role='feed']").first
        for _ in range(5):
            panel.evaluate("el => el.scrollTop += 1500")
            time.sleep(1.5)

        for listing in page.locator("div[role='article']").all()[:max_results]:
            try:
                name = listing.locator("h3").inner_text(timeout=2000).strip()
                listing.click()
                time.sleep(2.5)
                rating_el = page.locator("span[aria-label*='estrellas']").first
                raw = rating_el.get_attribute("aria-label") or ""
                m = re.search(r"(\d[,\.]\d)", raw)
                rating = m.group(1).replace(",", ".") if m else ""
                results.append({"name": name, "rating": rating})
                print(f"✓ {name} — {rating}⭐")
            except: continue
        browser.close()
    return results

⚠️

Google cambia sus selectores periódicamente

Si el scraper falla, usa DevTools (F12) para inspeccionar los selectores actuales y actualiza maps_scraper.py. Es normal.

agents/messaging.py — mensajes con Claude

python

from core import call_claude

def generate_message(data: dict) -> str:
    problems = []
    if "baja" in data.get("reputation_problem", ""):
        problems.append(f"rating de {data['rating']} estrellas")
    if data.get("reviews_count", 999) < 50:
        problems.append(f"solo {data['reviews_count']} reseñas")
    if not data.get("has_website"):
        problems.append("no tienen página web")

    prompt = f"""
    Eres experto en marketing dental en España.
    Escribe un email de captación (máx 120 palabras).
    Tono: directo, usa 'vosotros', no parecer spam.
    Objetivo: conseguir una llamada de 10 min.
    Clínica: {data['name']}
    Problemas: {chr(10).join(f'- {p}' for p in problems)}
    """
    return call_claude(prompt, max_tokens=400)

Ejemplo de mensaje generado

📧 Output real del sistema

Hola,

He estado revisando vuestra clínica y he detectado dos puntos que os están costando pacientes: tenéis 3.9 estrellas con solo 23 reseñas, y la competencia en vuestra zona está invirtiendo en anuncios mientras vosotros no aparecéis.

Trabajo con clínicas dentales para mejorar su captación desde Google. Las clínicas con las que trabajo han incrementado sus nuevos pacientes entre un 30% y un 60%.

¿Os parece si hablamos 10 minutos esta semana?

main.py — ejecutar todo

python

from tools.maps_scraper import scrape_google_maps
from tools.reviews import analyze_reviews
from agents.messaging import generate_message

if __name__ == "__main__":
    clinics = scrape_google_maps("clinica dental Santiago de Compostela")
    for clinic in clinics:
        review = analyze_reviews(clinic)
        if not review.get("is_lead"): continue
        msg = generate_message({**clinic, **review})
        print(f"\n{clinic['name']}\n{msg}")

# Ejecutar:
# source venv/bin/activate && python main.py

13

Cómo monetizar el sistema

SEO Local

300–800€
/mes por cliente ✅

Gestión Reseñas

200–400€
/mes ✅

Google Ads

500–1.500€
/mes + % ✅

Setup web

1.500–4.000€
pago único

📊

Métricas realistas

20–50 contactos cualificados/día con una hora de trabajo. Tasa de respuesta 3–8% con mensajes personalizados. Cálculo conservador: 2 clientes/semana × 400€/mes = 800€ MRR adicional en el primer mes.

14

Errores comunes

Prompts vagos

Mal: «Arregla los bugs del proyecto»
Bien: «En /server/routes/auth.js línea ~45, validateToken no maneja JWT TokenExpiredError. Añade try/catch y devuelve HTTP 401 con {error: ‘Token expirado’}»

No usar CLAUDE.md

Sin CLAUDE.md Claude no sabe tu stack ni convenciones. Usa /init en cada proyecto nuevo.

No verificar el código generado

Claude es correcto el 80-90% del tiempo. Siempre pide que ejecute los tests: «Corre npm test y dime si algo falla antes de continuar».

⚡ Resumen ejecutivo

Instalación curl -fsSL https://claude.ai/install.sh | bash
Verificar claude doctor
CLAUDE.md /init en cada proyecto, luego edítalo
Plan Mode Shift+Tab ×2 para cambios grandes
Contexto /compact cuando la sesión se alarga
Subagentes Crea code-reviewer en .claude/agents/
MCP GitHub claude mcp add github -- npx @modelcontextprotocol/server-github
Worktrees claude -w feature/rama — nunca en main directo
Sistema dental python main.py — scraping + análisis + mensajes IA
Monetización 300–800€/mes por cliente SEO local + reseñas

🚀 El siguiente paso es tuyo

Este artículo te ha dado el mapa completo.
Instala Claude Code ahora y construye algo real hoy.

Empezar con Claude Pro →