Sesión 1 del track Dev: práctica guiada, instalamos la base común, dominamos Spec-Driven Development sobre el ticket real ONEDEV-63 y dejamos la revisión de PRs automatizada.
AI Mate · David RamosSesión 1 · Dev #1
EL PROGRAMA COMPLETO
PROGRAMA DE SESIONES
Tres sesiones, un equipo dev autónomo
01
Dev #1 · Fundamentos + SDD · HOY
Jue 18 jun. Práctica guiada, starter kit común y flujo Spec-Driven sobre un ticket real (ONEDEV-63).
02
Dev #2 · Herramientas avanzadas
Semana del 23 jun. Ciclo SDD completo, IA en code review y testing, generar PRs con asistencia IA.
03
Dev #3 · Estándares + primer agente
Spec estándar del equipo en el repo, buenas prácticas y tu primer agente personal.
Estás en la Sesión 1. Hoy además adelantamos dos técnicas que pidió el equipo: desarrollo en paralelo y agentes especializados.
SESIÓN 1 · DEV #1 · ~5 H
PROGRAMA DE HOY
Nueve bloques, manos al teclado
00
Arranque · 10'
01
Recap activo · 40'
02
CLAUDE.md del repo · 15'
03
Spec-Driven Development · 55'
04
Base común (starter kit) · 35'
05
PR review automática · 25'
06
Desarrollo en paralelo · 35'
07
Agentes: subagentes → teams → ultracode · 50'
08
Política + métricas · 20'
PARA QUE LA SESIÓN FLUYA
NORMAS DE LA SESIÓN
Cómo trabajamos hoy
DINÁMICA
Manos al teclado: todos el mismo ejercicio, a la vez.
Una cosa a la vez: no te adelantes a los pasos.
Si te pierdes, avisa y te rescatamos al momento.
Errores = aprendizaje: los depuramos juntos en vivo.
PARA NO CORTAR EL RITMO
Dudas → al "parking"; se resuelven en el Q&A de cada bloque.
Silencia Slack y notificaciones: foco en la sesión.
Bloques cronometrados; lo que no dé tiempo, va a deberes.
Cada ejercicio tiene su criterio de "hecho" claro.
TRAZABILIDAD DE LA PRÁCTICA
REPOSITORIO DE PRÁCTICAS
Todo queda en un repo
# Clónalo al arrancar — lo usamos toda la sesióngit clone <repo-practicas> # onedev-practicas-claude# live/ → ejercicios en sesión# deberes/ → para casa (antes de la Sesión 2)# recursos/ → chuletas (git worktree, agentes)
Cada ejercicio trae su README: objetivo, pasos y criterio de "hecho".
Lo que no acabemos en vivo queda como deberes.
El caso práctico es ONEDEV-63 sobre onedev-grid-service.
POR QUÉ ESTAMOS AQUÍ
OBJETIVOS
Qué nos llevamos hecho
01
Nivelar al equipo
Cerrar las dudas del Kick-off con práctica guiada, no más caos de Q&A.
02
Instalar la base común
El starter kit: plugins, skills, MCPs y CLAUDE.md, todos configurados igual.
03
Dominar el flujo SDD
Plan → revisar → ejecutar → verificar sobre el ticket real ONEDEV-63.
04
Automatizar la revisión de PRs
GitHub Actions consumiendo la API con la cuenta del equipo.
05
Probar técnicas avanzadas
Desarrollo en paralelo con worktrees y un equipo de agentes especializados.
DE LO CONCEPTUAL A LO PRÁCTICO
EN QUÉ CAMBIA HOY
Del Kick-off a las manos en el teclado
KICK-OFF · 12 JUN
Intro conceptual a Claude Code
Mucha pregunta suelta, poca práctica
Cada uno con un entorno distinto
Sin tocar permisos, git→PR ni SDD
HOY · SESIÓN 1 PRÁCTICA
Todos al teclado, mismo ejercicio
Estructura clara y cronometrada
Base común instalada en cada entorno
SDD sobre ONEDEV-63 + PR review
BLOQUE 1 DE 8
BLOQUES 0 + 1
Arranque + recap activo
Todos con Claude Code corriendo y los 4 pilares practicados, no explicados.
01
BLOQUE 1 · RECAP ACTIVO
LOS 4 PILARES
Lo que ya sabéis, ahora en los dedos
01
Terminal
Claude lee el repo entero, ejecuta comandos e itera hasta que funciona.
02
CLAUDE.md
El contexto del proyecto, versionado. Mismo estándar para todo el equipo.
03
Plan mode
Pide el plan antes de ejecutar. Revisa, aprueba, y solo entonces aplica.
04
Contexto y coste
Leer la statusline, /compact y elegir el modelo según la tarea.
BLOQUE 1 · RECAP ACTIVO
EJERCICIO GUIADO · 40'
Mismo ejercicio, todos a la vez
01
Lanzar Claude en el repo
En la raíz del proyecto, no en cualquier carpeta.
02
Un prompt simple → leer el plan
Entender qué propone antes de dejarle tocar nada.
03
/compact y leer la statusline
Modelo · coste · contexto: saber siempre dónde estás.
04
Cambiar Opus ↔ Sonnet
El modelo potente para pensar, el rápido para ejecutar.
Material: live/01-recap-activo. La Q&A va enganchada a lo que acabáis de hacer.
BLOQUE 2 DE 8
BLOQUE 2
CLAUDE.md del repo
Todos acaban con el mismo contexto estándar, versionado en el repo.
02
BLOQUE 2 · CLAUDE.MD
DE BORRADOR A ESTÁNDAR · 15'
Un contexto, el mismo para todos
# En la raíz del repo de OneDevclaude# /init lee el proyecto y genera un borrador de CLAUDE.md/init# Comparar con la plantilla del equipo y cerrar los [CONFIRMAR] del stack
El borrador de /init es el punto de partida, no el final
Cerramos en vivo los [CONFIRMAR] del stack de OneDev
Se versiona en el repo: mismo CLAUDE.md para todo el equipo · live/02-claude-md
BLOQUE 3 DE 8
BLOQUE 3 · EL NÚCLEO
Spec-Driven Development
La especificación como contrato ejecutable: plan → revisar → ejecutar → verificar.
03
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
EL PROBLEMA
¿La IA te acelera… hasta que revisas el PR?
Cuando la IA genera más rápido de lo que el equipo puede revisar, la velocidad se convierte en deuda. SDD recupera el control poniendo la intención por delante de la ejecución.
"Una spec incompleta no produce código malo por accidente: produce el mejor código posible para una pregunta mal formulada."
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
LA CAUSA
El trabajo mal definido
Cuando el trabajo llega mal definido al copiloto, los síntomas son siempre los mismos. Reconocerlos es el primer paso.
!
PRs con "esto no era lo que pedí"
El dev hace suposiciones e implementa todas, o ninguna.
!
La misma feature, hecha dos veces distinta
El code review dura días porque nadie sabe qué se intenta hacer.
!
QA rechaza por requisitos no documentados
Deuda técnica que crece por decisiones sin información suficiente.
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
LOS 3 PILARES DEL USO EFECTIVO
Tool · Prompt · Context
01
Tool
La herramienta importa menos de lo que crees. Un copiloto sin configurar es un junior; bien configurado, un senior que ya hizo el onboarding.
02
Prompt
Forma estructurada y reproducible: objetivo claro, restricciones (qué NO tocar) y formato de salida.
03
Context
El más importante y el más ignorado. Un contexto pobre es traicionero: el output parece bien, pero falla tarde, en review, QA o producción.
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
QUÉ ES SDD
La spec como contrato ejecutable
NO ES
Un documento de 50 páginas
Un texto que se pierde en una carpeta
Solo el happy path
SÍ ES
Markdown, estructurada y mínima
Objetivo, criterios de aceptación y tareas
Inputs, outputs, estados y casos de error
El mismo agente, el mismo modelo. La única variable es el input.
BLOQUE 3 · CASO PRÁCTICO
EL TICKET REAL · ONEDEV-63
Ingesta de capacidad de red
EL TICKET
Descarga e ingesta desde CNMC (ArcGIS), REE (Excel) y distribuidoras
12 subtareas reales en Jira: scrapers por distribuidora (REE + 5 DSOs) + análisis, normalización, dedup, S3, logging y deploy. Para no depender de fuentes en vivo, usamos fixtures cacheadas.
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
EL CICLO · SPEC-DRIVEN
Proposal → Apply → Archive
01
Proposal
Conviertes la user story en spec detallada: objetivos, criterios de aceptación y tareas. Es el contrato.
›
02
Apply
El agente ejecuta la spec sin improvisar: branch, tests, código, docs y testing report. Todo trazable.
›
03
Archive
La spec verificada se archiva como fuente de verdad. No desaparece: es contexto para la siguiente feature.
El ciclo no es lineal: tiene puntos de retorno definidos. La intención primero, la ejecución después.
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
CÓMO SE TRADUCE EN CLAUDE CODE
Plan → ejecutar → verificar
# 1 · Plan: pide el plan, NO que ejecute (modelo Opus)/plan implementa el scraper de REE (generación y demanda) — ONEDEV-211
# 2 · Revisa el plan, apruébalo y deja que ejecute (Sonnet)# 3 · Verifica antes del PR: pytest verde + revisión automática/code-review
El plan mode es el Proposal: el contrato antes de tocar código
/code-review revisa, pero no sustituye al criterio del equipo
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
QUÉ LO HACE FUNCIONAR
Cuatro prácticas
01
Empieza siempre por el contrato
Inputs, outputs, estados y reglas de negocio por escrito y versionados, aunque sea en versión mínima.
02
Diseña para el error, no solo el éxito
Errores, límites y estados inválidos. Una spec sin casos de error es una spec a medias.
03
Usa ejemplos concretos
Payloads, respuestas y casos de test completos. Ayudan al humano que revisa y al agente que ejecuta.
04
Trata la spec como código
Es parte del sistema, no un documento temporal. Trazabilidad: cada commit se traza al requisito que lo originó.
BLOQUE 3 · SPEC-DRIVEN DEVELOPMENT
PRÁCTICA · 40'
Tu subtarea de ONEDEV-63
PROPOSAL
/plan
Coge una subtarea real (REE·211, E-Distribución·212, normalización·217…) y pide el plan. Léelo como un contrato.
›
APPLY
Ejecuta
Apruebas y dejas que implemente sobre onedev-grid-service. Cero improvisación.
›
VERIFY
Tests + review
pytest verde (con fixtures cacheadas) y /code-review antes del PR.
Material: live/03-sdd-onedev63. David da soporte 1:1. Lo que no acabes → deberes.
BLOQUE 4 DE 8
BLOQUE 4
La base común
Un solo settings.json y todo el equipo queda configurado igual.
/code-review, /tdd, /simplify, /diagnose. Cada dev prueba una sobre su código.
3
MCPs
GitHub, sequential-thinking y Postgres (ejemplo), vía .mcp.json del repo.
# Un solo archivo configura a todo el equipo igual
.claude/settings.json # plugins · MCPs · statusline · hook de lint
.mcp.json # GitHub · sequential-thinking · Postgres
CLAUDE.md # contexto del repo
BLOQUE 5 DE 8
BLOQUE 5
Revisión automática de PRs
Claude revisa cada PR solo, vía GitHub Actions con la API key del equipo.
05
BLOQUE 5 · PR REVIEW
GITHUB ACTIONS · 25'
Una revisión en cada PR
# .github/workflows/claude-code-review.ymlon: pull_request
# Claude comenta cada PR automáticamente# Secret del repo: ANTHROPIC_API_KEY (cuenta del equipo)
El workflow viene en el starter kit, listo para activar
Solo falta el secret ANTHROPIC_API_KEY de cada equipo
Consume la API con la cuenta del equipo, no con la personal · live/05-pr-review
BLOQUE 6 DE 8
BLOQUE 6
Desarrollo en paralelo
Varias features a la vez: una instancia de Claude Code por git worktree.
06
BLOQUE 6 · DESARROLLO EN PARALELO
GIT WORKTREE + VARIAS INSTANCIAS
Varias features a la vez
Un worktree es otro directorio del MISMO repo con otra rama. Una instancia de Claude por worktree → dos features avanzan en paralelo, aisladas, sin churn de cambiar de rama.
# dos worktrees, dos ramas, dos features de ONEDEV-63git worktree add ../gs-ree -b feature/ONEDEV-211-ree origin/main
git worktree add ../gs-edis -b feature/ONEDEV-212-edistribucion origin/main
git worktree list
# T1: cd ../gs-ree && claude T2: cd ../gs-edis && claudeclaude --worktree 211-ree # atajo integrado
La misma rama no se puede checkoutear en dos worktrees · .venv y .env no se comparten
Reparte ficheros distintos = cero conflictos · mergea A y luego rebase B
BLOQUE 6 · DESARROLLO EN PARALELO
PRÁCTICA · 35'
Dos subtareas, dos worktrees
WORKTREE A · 211
REE
Una instancia de Claude construye el scraper de REE (generación y demanda).
›
WORKTREE B · 212
E-Distribución
Otra instancia, en paralelo, construye el scraper de E-Distribución. Ficheros distintos.
›
MERGE
A → main → rebase B
Integra A, luego rebasa B sobre main. Sin conflictos evitables.
En parejas, dos terminales, un clon. Acordad el contrato antes. Material y deberes: live/06-parallel-worktrees.
BLOQUE 7 DE 8
BLOQUE 7
Agentes especializados
Un equipo de subagentes con rol propio (PM, Dev, QA, Security) — y cómo escala a equipos orquestados y al modo ultracode.
07
BLOQUE 7 · AGENTES ESPECIALIZADOS
ANATOMÍA DE UN SUBAGENTE
Un agente es un contrato, no un asistente
# .claude/agents/qa-reviewer.md · el fichero ES el agente
---
name: qa-reviewer
description: Use PROACTIVELY tras implementar — audita el diff vs criterios
tools: Read, Grep, Glob # solo lectura → veredicto fiablemodel: sonnet
---
Eres un revisor de QA… # el cuerpo del .md ES el system prompt
La description es la interfaz pública: el router la lee para decidir si te invoca. "Use when… / Use PROACTIVELY when…" + condición observable = routing fiable
tools = least-privilege (auditor sin escritura) · model por responsabilidad (Opus razona, Sonnet ejecuta)
BLOQUE 7 · AGENTES ESPECIALIZADOS
UN EQUIPO DE SUBAGENTES
PM · Dev · QA en .claude/agents
PM
pm-spec
Ticket → spec + criterios de aceptación. Opus · solo lectura.
Dev
dev-implementer
Implementa según la spec + tests. Sonnet · Edit/Write.
QA
qa-reviewer
Audita el diff vs criterios. Sonnet · solo lectura.
Sec
security-reviewer
Auditoría de vulnerabilidades. Sonnet · solo lectura.
Cada rol es un .md independiente; el flujo los encadena PM → Dev → QA/Sec, cada uno con su contexto limpio
Los auditores van sin permisos de escritura: por eso su veredicto es fiable
BLOQUE 7 · AGENTES ESPECIALIZADOS
PRÁCTICA · 40'
Del ticket al APPROVE
PM
@pm-spec
Convierte ONEDEV-63 en spec con criterios de aceptación.
›
DEV
@dev-implementer
Implementa según la spec, con tests.
›
QA
@qa-reviewer
Audita el diff vs criterios. Itera hasta APPROVE.
/agents# confirma que cargan los 5 roles del equipo
El roster (.claude/agents/) listo en live/07-agentes-especializados. El campo description dirige el router; @-mención para forzar.
BLOQUE 7 · AGENTES ESPECIALIZADOS
DE ROLES SUELTOS A UN EQUIPO
Un equipo que colabora
Un agent-team es un lead que reparte el trabajo entre varios compañeros en paralelo que se coordinan entre ellos.
LEAD
Reparte
Un coordinador descompone la tarea y lanza varios compañeros con nombre, en un mensaje.
›
TEAM
En paralelo
Cada uno trabaja su parte a la vez y se hablan entre ellos (SendMessage) para no pisarse.
›
SÍNTESIS
Un resultado
El lead reúne lo de todos en una entrega coherente. Tú supervisas el panel y rediriges.
# Off por defecto: flag experimental en ~/.claude/settings.json — reinicia Claude
{ "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" } }
# Luego, en lenguaje natural → crea un equipo (backend, frontend, QA) para ONEDEV-63
Se coordinan vía SendMessage + lista de tareas compartida. Material: live/07b-agent-teams.
BLOQUE 7 · AGENTES ESPECIALIZADOS
EL NIVEL MÁXIMO · ULTRACODE
Orquestación multi-agente
Para tareas que un solo contexto no abarca, ultracode (los Dynamic Workflows) deja que Claude orqueste muchos agentes en paralelo, verifique de forma adversaria y sintetice. El coste de tokens deja de ser la restricción; manda la exhaustividad.
01
Barridos a gran escala
Migraciones, auditorías de seguridad o revisión multi-dimensión de un módulo entero de una vez.
02
Verificación adversaria
Varios agentes intentan refutar cada hallazgo antes de darlo por bueno. Menos falsos positivos.
03
Se activa a propósito
Cambias el effort a «ultracode» o escribes «ultracode» en el prompt. Solo cuando la exhaustividad importa más que el gasto.
Potente y caro: para barridos donde un solo agente no llega. Lo vemos a fondo en la Sesión 2.
BLOQUE 8 DE 8
BLOQUE 8
Política, métricas y cierre
Cómo usamos la IA, qué medimos y cómo seguimos a partir de hoy.
08
BLOQUE 8 · POLÍTICA + MÉTRICAS
LÍNEA BASE DE ADOPCIÓN · 20'
Lo que medimos
Métrica
Línea base hoy
Hacia dónde
PRs por semana
—
↑ throughput
Tiempo de code review
—
↓ con PR review
% de tareas con IA
—
↑ adopción
5% del tiempo para explorar y aprender la herramienta
Qué se puede subir al repo y qué no, y con qué cuenta (zero-retention)
AL CERRAR LA SESIÓN
CRITERIO DE "HECHO"
Cómo sabemos que funcionó
Todos con Claude Code en terminal y el starter kit funcionando
Cada dev ha completado un ciclo SDD sobre ONEDEV-63
El CLAUDE.md del repo de OneDev, creado y compartido
El workflow de PR review listo (falta solo la API key)
Worktrees y agentes especializados probados; lo demás en deberes
Lo que no se mide no se mejora: la línea base de hoy es el punto de partida del acompañamiento.
×
PRÓXIMOS PASOS
Lo que sale de esta sesión
Cada dev sale con la base común instalada, un ciclo SDD completado sobre ONEDEV-63, y las técnicas avanzadas (worktrees y agentes) probadas. Lo que quede, en deberes para la Sesión 2.
1 · Starter kit instalado2 · Ciclo SDD sobre ONEDEV-633 · Worktrees + agentes probadosDigital Tools · One Hub Energy