Planos · agentic-dev-boilerplate
00 · el backlog antes del código

Historias listas antes de que alguien codee.

/product-management es el trabajo continuo de producto: convierte el PRD en épicas e historias dentro de Jira, las refina hasta que cualquiera del equipo pueda tomarlas, y calcula en qué orden se pueden empezar. La calidad del backlog decide todo lo que viene después.

para PM / PO y para quien codea fuente de verdad: Jira, caché local de solo lectura no espera mockups: las pantallas llegan después
Entrada

PRD + SRS

Lo que dejó /project-foundation.

→
Crear

Épicas e historias

Directo en Jira, con clave real.

→
Refinar

INVEST + criterios

Gherkin, bordes, voz de negocio.

→
Ordenar

Execution Sprints

Orden topológico de dependencias.

→
Entrega

Sprint dev

/sprint-development toma cada historia.

01 · cuándo usarla

Trabajo de backlog, cada vez que aparece

A diferencia de /project-foundation, que corre una vez, esta skill se vuelve a invocar siempre que surja trabajo de producto: una feature nueva, un criterio ambiguo, una historia que no cumple INVEST a mitad de sprint.

Úsala cuando

Hay backlog que crear o pulir

  • Siembras el primer backlog a partir de un PRD recién hecho.
  • Aparece una feature o épica nueva para sumar al backlog.
  • Una historia tiene criterios de aceptación vagos o ambiguos.
  • Una historia necesita validar INVEST o una sesión de 3 amigos.
  • Quieres enumerar edge cases de una feature de forma sistemática.
  • Quieres un reporte de sprint o saber qué se empieza primero.
No la uses para

Lo que pertenece a otra skill

  • Pantallas o mockups: la historia se refina sin ellos; la pantalla se resuelve cuando /sprint-development toma la historia.
  • Definir el producto desde cero: eso es /project-foundation.
  • Montar la infraestructura: eso es /project-bootstrap.
  • Implementar una historia: eso es /sprint-development.
  • Tests unitarios: eso es /unit-testing.
  • Casos de prueba formales de QA: fuera de alcance de este repo.
Antes de arrancar: el PRD y el SRS que deja /project-foundation en .context/PRD/ y .context/SRS/ (obligatorios para la siembra inicial, contexto útil para todo lo demás; en una app existente sin PRD ni SRS, los business maps y el glosario de dominio hacen de docs de producto y el flujo A no aplica), la identidad del proyecto en .agents/project.yaml, y acceso a Jira por acli (o el MCP de Atlassian como respaldo).
02 · el mapa

Flujos A a H: crear, refinar, ordenar y mirar

Cada flujo tiene su propia referencia con el protocolo exacto. No los eliges por nombre: describes lo que necesitas y la skill enruta al flujo que corresponde.

Sesión solo en A, B y C. Son flujos largos que pueden interrumpirse: escriben un plan en .session/product-management/<scope>/ y se pueden retomar. D a H son cortos o de solo lectura: no crean carpeta de sesión ni chequean reanudación.
03 · el mecanismo

Jira primero, la copia local después

Todo lo que la skill escribe va a Jira. Lo que ves en .context/PBI/ es una caché de solo lectura que materializa un script. Nadie la escribe a mano: ni tú ni la IA.

Fuente de verdad

El issue en Jira

[ISSUE_TRACKER_TOOL]
  • Se crea con clave real (PROJ-45), nunca con TBD.
  • Criterios, alcance y fuera de alcance viven en campos propios, no en la descripción.
  • Los campos se nombran por slug ({{jira.acceptance_criteria}}), resuelto contra .agents/jira-required.yaml y .agents/jira-fields.json. Nunca un ID numérico.
  • Capa de herramienta: acli primero, MCP de Atlassian como respaldo, REST como último recurso.
Copia local

La caché sincronizada

.context/PBI/epics/EPIC-…/stories/STORY-…/
  • La materializa bun run jira:sync-issues (get, pull, pull --epic).
  • Un archivo por campo con contenido: acceptance-criteria.md, scope.md, out-of-scope.md…
  • Algo está mal en la copia? Se corrige en Jira y se vuelve a sincronizar.
  • Un clon nuevo la reconstruye con bun run context:hydrate.
Trampa: leer campos con acli viewSu proyección por defecto omite los campos personalizados: los criterios se ven vacíos aunque estén llenos. Para leer, bun run jira:sync-issues get <KEY> y abrir el archivo del campo.
Trampa: varios campos ricos en una sola llamadaEl MCP convierte Markdown a ADF solo en la descripción. Varios campos ricos juntos hacen fallar el update entero: un campo por llamada.
Lo que queda en manos humanas: el Sprint de JiraLa skill calcula el orden de ejecución, pero asignar issues a un objeto Sprint del board lo hace una persona, cuando decide arrancarlo.
Para entender la caché a fondo: el deck PBI como caché de Jira explica los tres niveles de archivo y por qué la copia local no se commitea.
04 · plan antes de escribir

A, B y C arrancan con un plan que apruebas

Los tres flujos que crean issues siguen el mismo contrato de sesión: primero se fija si hay trabajo a medio hacer, después escriben un plan, y recién con tu aprobación tocan Jira.

Fase 0 · hay una sesión previa?

El scope es seed (A) o el slug de la épica (B, C). Si existe progress.md, la IA te muestra el objetivo, la última fase cerrada y la próxima, y espera: retomar, reiniciar (archiva lo anterior) o abortar.

Fase 1 · el plan

Escribe .session/product-management/<scope>/plan.md: objetivo, entradas, enfoque, fases, riesgos y checklist de verificación. Nace en draft y pasa a approved solo cuando tú lo apruebas.

Ejecución con checkpoints

Cada épica creada (A), cada historia sumada (B) o cada parte de la épica descompuesta (C) deja una entrada en progress.md. Si se corta, se retoma desde ahí.

Archivo

Con el checklist del plan en verde, la carpeta se mueve a .session/.archive/ y queda un resumen en la memoria persistente para encontrarla después.

05 · flujo A

Siembra inicial: del PRD al primer backlog

Corre una vez, cuando hay PRD y SRS frescos y cero issues en Jira. Avanza épica por épica para mantener el contexto acotado.

Confirmar la clave del proyecto

Sale de .agents/project.yaml. Si falta o está mal formada, la IA se detiene: nunca adivina una clave.

Borrador del árbol de épicas, sin escribir nada

Épicas con sus historias fundacionales, prioridad y orden provisional. Es un borrador de trabajo para que tú detectes épicas de más o de menos antes de gastar números de ticket.

Por cada épica: crear, transicionar, sincronizar

Crea la épica y la pasa a su estado por defecto ({{jira.statuses.epic_default}}, Planning si el slug no está). Crea las historias hijas validadas con INVEST y las pasa a {{jira.statuses.story_default}} (Shift-Left QA por defecto). Después, bun run jira:sync-issues pull --epic.

Chequeo de solapamiento de alcance

Compara el alcance de las historias hermanas. Si dos comparten un bullet literal, levanta un overlap_alert y no lo arregla sola: tú eliges mover el bullet, extraer una historia compartida o aceptar el duplicado con su razón.

Dependencias y orden de ejecución

Con todo creado, corre el descubrimiento de dependencias, publica los links en Jira y cierra con la secuenciación (ver §11).

La IA hace

Lee PRD, personas, journeys y specs funcionales; arma el borrador; crea en Jira.

Tú decides

Apruebas el árbol, resuelves cada solapamiento y confirmas la matriz de dependencias.

Sale

Issues en Jira, la caché en .context/PBI/ y .context/dev-roadmap.md §4.

06 · flujo B

Feature nueva: primero se mide, después se crea

Un pedido del PO, una oportunidad, feedback de un cliente. Antes de crear nada, la IA clasifica la idea en uno de tres niveles. La clasificación decide el camino.

Nivel 1

Una historia

Extiende algo que existe, entra en una épica actual, no pide cambios de arquitectura. Se crea la historia bajo esa épica.

Nivel 2

Una épica completa

Capacidad nueva que no entra en ninguna épica, con alcance acotado y entre 3 y 8 historias. Se crea la épica con sus hijas, links, chequeo de solapamiento y secuenciación.

Nivel 3 · stop

Varias épicas

Dos o más épicas, dependencias complejas, cambios de arquitectura. No se crea nada: sale un plan de división. Aprobado el plan, se corre el nivel 2 una épica a la vez.

No fuerces el nivel. Si el análisis dice "nivel 3", insistir en crear todo de una vez satura el contexto y deja dependencias mal resueltas. Se trabaja incremental.
07 · flujo C

Una épica es un módulo, no una lista de tareas

Agrupa historias relacionadas bajo un mismo padre, cuenta el "por qué" de la capacidad y mide el avance a escala de feature. Si no se describe en dos oraciones, son dos épicas.

Tamaño sano

Señales de que está bien cortada

  • Entre 3 y 8 historias. Menos es una historia; más, hay que dividir.
  • De 2 a 4 sprints de duración.
  • Un solo equipo. Las épicas multi-equipo se dividen.
  • Título en sustantivo, sin pipe ni verbo: Tenancy & Identity.
Épica o feature flag?

No son alternativas

  • Flag: encender o apagar algo que ya existe, salir en oscuro, rollback instantáneo.
  • Épica: una capacidad nueva con varias historias, métricas y lugar en el roadmap.
  • El flag es una táctica de implementación; la épica, un contenedor de producto.
Los criterios de una épica son resultados: "la persona completa la capacidad de punta a punta sin salir del producto", "todas sus historias están en Done". Los escenarios Gherkin viven en cada historia, nunca en la épica.
08 · antes de cada escritura en Jira

Un título que se lee en el board, y un control previo

El título de una historia no es la frase "Como… quiero… para…". Esa frase es larga para una tarjeta y entierra la acción. Va en la descripción; el título usa otro formato.

Authentication | Sign up and sign in via OAuth (GitHub / Google)

{Feature} | {Action} · en inglés · sin persona ni beneficio

As a visitor, I want to sign in via OAuth so that I can access the app

esto va en la descripción, sección "User story", nunca en el título

Reglas del título

Feature corto, acción en infinitivo

  • {Feature}: de 1 a 3 palabras; las historias hermanas de la misma feature lo comparten.
  • {Action}: el "I want to…" como verbo base, sin persona y sin el "so that".
  • Sin prefijos de spec (FR-…): la spec va como primera línea de la descripción, **Source spec:** FR-XXX.
  • Si el producto es él mismo una herramienta de gestión, la entidad que choca con el vocabulario ágil lleva el prefijo TMS- (TMS-Run Execution).
Control previo, obligatorio

Si algo falla, se corrige antes de publicar

  • Persona real del archivo de personas, nunca "el usuario" ni "el sistema".
  • Voz de negocio: sin endpoints, códigos HTTP, tablas, librerías ni algoritmos.
  • Criterios en bloques ```gherkin.
  • Esfuerzo y tokens vacíos: el AI Effort lo fija QA y los tokens los miden los agentes.
  • Sin duplicar criterios ni alcance en la descripción, sin inventar contenido, y los términos del glosario de dominio.
La prueba de la voz: si un criterio sigue siendo verdad después de cambiar todo el stack, está en voz de negocio. Si se rompe al cambiar de stack, es implementación y va al plan que arma /sprint-development. La excepción: cuando la persona consume una API, los endpoints sí son lo que observa.
09 · flujo D

De "existe en Jira" a "cualquiera la puede tomar"

Una buena historia entra en un sprint, está en la voz de la persona y no deja dudas sobre qué es "terminada". Si dos devs la leen e imaginan cosas distintas, no está refinada.

INVEST La pregunta Si falla
Independent Se completa sin depender de otras historias? Resecuenciar, o extraer la dependencia compartida a su propia historia.
Negotiable Queda flexibilidad en cómo se implementa? Sacar detalle de implementación de la descripción.
Valuable El "para que…" es un beneficio claro? Hablar con producto; sin valor, no se construye.
Estimable El equipo podría dimensionarla con lo que hay? Un spike acotado en tiempo, y después refinar de nuevo.
Small Entra en un sprint? Partirla en rebanadas verticales.
Testable Los escenarios son claros y medibles? Reescribir en Gherkin: mínimo uno feliz, uno de error y uno de borde.
Cortar bien

Rebanadas verticales, no capas

  • Vertical: cada rebanada entrega un resultado visible por sí sola ("pagar con tarjeta guardada", "agregar tarjeta nueva", "errores claros al rechazar").
  • Horizontal (antipatrón): "base de datos, después API, después UI". Nada se puede mostrar hasta el final.
  • Otras vías: por paso del flujo, por variación de datos, por interfaz o por rol.
3 amigos · opcional

Producto, dev y QA, antes del sprint

  • Vale la pena si la historia es grande, toca integraciones, es un flujo sin precedente, hay ambigüedad o depende de otro equipo.
  • Treinta a cuarenta y cinco minutos: leer la historia, recorrer el camino feliz, levantar incógnitas y bordes, decidir alcance, confirmar Ready.
  • Si queda algo sin tildar, se agenda otra; no se marca Ready.
Compuerta INVEST y la prueba de voz pasan, los criterios están en Gherkin, las dependencias están publicadas como links en Jira, y la historia se transiciona a {{jira.statuses.story_default}}. Ese cambio de estado le avisa al equipo que pasó el control de Ready.
10 · flujos E y F

Criterios que se pueden verificar, y bordes que no se pierden

Un criterio sin un "dado", un "cuando" y un "entonces" concretos no es un criterio: es un deseo. El objetivo es quitar cada "depende" antes de que la historia entre al sprint.

Scenario: User cannot create a note with empty title Given I am on the new-note form When I submit the form with an empty title Then I see the error "Title is required" And no note is created

un escenario de error, en su bloque gherkin, con texto concreto

Flujo E · al editar criterios existentes

Primero el control de voz

  • Lee el campo con bun run jira:sync-issues get, nunca con acli view.
  • Busca implementación, escenarios sin bloque gherkin y personas genéricas.
  • Si encuentra algo, reescribe el campo entero y te muestra el antes y el después antes de publicar.
  • Cada "entonces" es algo que la persona ve: un mensaje, un elemento, un estado.
10b · flujo F

Edge cases: encontrarlos y decidir

Dónde buscar

Cinco familias

  • Límites: vacío, máximo, uno de más, caracteres raros.
  • Errores: red, base de datos, servicio externo, permisos.
  • Concurrencia: dos personas editando, doble clic, estado viejo.
  • Rendimiento: mucho volumen, red lenta, límites de terceros.
  • Persona: rol, idioma, dispositivo, accesibilidad.
La regla de decisión

Criterio o test?

  • Criticidad alta (dinero, datos, seguridad, un journey crítico) y comportamiento claro: pasa a criterio de aceptación.
  • Si no: queda como asunto de testing, para QA.
  • Criticidad media con comportamiento muy claro: a criterio del PO.
  • Lo que se difiere se documenta con su razón; no se pierde en silencio.
11 · dependencias y flujo H

Qué empezamos primero?

El orden sale del grafo de links de Jira, no de una intuición. Por eso antes de ordenar hay que descubrir las dependencias reales y publicarlas.

Descubrimiento activo de dependencias

Antes de crear o editar una historia, la IA arma una matriz (desde, hacia, fuente) leyendo el árbol de épicas, los links que ya existen y el mapa de datos. Fuentes válidas: el orden del PRD o del SRS, el master plan, las relaciones entre entidades y lo que declaró una persona.

Filtrar el ruido

"Necesita que exista el login" o "necesita la base de datos" es una propiedad del proyecto, no una dependencia entre dos historias. La prueba: si la dependencia desaparece al reordenar sprints, era ruido.

Tú confirmas, después se publica

La matriz filtrada se te muestra antes de escribir un solo link. Cada link se crea de a uno y se relee para verificar la dirección: "A depende de B" tiene que leerse así desde A.

Si el workspace no tiene el tipo de link de dependencias, el respaldo relates pierde la dirección: la IA te lo avisa con nombre y apellido.

Con los links publicados, el flujo H hace un orden topológico: lo que no espera a nadie va al Execution Sprint 1; lo que solo espera al 1, al 2; y así hasta vaciar el grafo.

Execution Sprint 1
PROJ-2 · PROJ-3 · PROJ-18

Nada los bloquea: se empiezan en paralelo.

Execution Sprint 2
PROJ-4 · PROJ-19

Cada uno espera a una historia del sprint 1.

Execution Sprint N
…

1 + el sprint más alto de sus predecesoras.

ejemplo ilustrativo · solo cuentan los links de dependencia y de bloqueo

Dos sprints distintos

Master Sprint y Execution Sprint

  • Master Sprint: agrupación estratégica del roadmap, en .context/master-implementation-plan.md. Casi no cambia.
  • Execution Sprint: lote operativo que sale del orden topológico. Se recalcula cada vez que cambian historias o links.
Dónde queda y qué vale

Un insumo para planificar

  • La skill delega la escritura en /project-context dev-roadmap, que regenera la §4 de .context/dev-roadmap.md sin tocar las secciones escritas a mano.
  • Es un insumo de la reunión de planning (capacidad, prioridades, otros equipos), no un compromiso.
Un ciclo es un bug. Si A depende de B y B de A, el orden se detiene y la IA te muestra las historias atrapadas. Cuál link se saca es una decisión de producto: la toma una persona, nunca la IA.
12 · flujo G

Reporte de sprint: mirar sin tocar

Una foto del sprint y del backlog orientada a desarrollo. Es de solo lectura: no cambia estados, no crea issues, no escribe en .context/. Se muestra en la conversación y se guarda solo si lo pides.

Sprint Report · {{PROJECT_KEY}}
tú
reporte de sprint, con PRs
Alcance? Sprint activo, backlog o ambos. Filtro por persona o épica?
ambos, todo
→ [ISSUE_TRACKER_TOOL] búsqueda de épicas e historias
→ gh pr list (abiertos y mergeados)
reporte
🔴 BLOCKED · atención ya
🟡 In Progress · con su PR
🔵 In Review · estado del review
🟦 Ready For Dev
📦 Backlog / To Do
✅ Done
📈 avance por épica · 🎯 métricas · ⚠️ alertas

el orden de los grupos sigue la urgencia de desarrollo

El reporte siempre sugiere el paso siguiente: si hay bloqueos, investigarlos; PRs sin actividad, pedir review; historias en curso sin PR, hablar con quien la tiene; backlog que crece sin prioridad, una sesión de refinamiento con esta misma skill.
13 · historias con interfaz

No espera el mockup, pero deja la fila

Una historia se escribe, se refina y queda lista sin que exista ninguna pantalla dibujada. No se posterga, no se bloquea y no se degrada por eso.

Lo que sí debe

Su fila en el mapa Historia → Pantalla

.context/design/master-design-plan.md · §8
  • Si el proyecto tiene master design plan, cada historia con interfaz nace con una línea en §8.
  • La línea nombra la pantalla donde se renderiza, o dice explícito que todavía no hay mockup que la cubra: 🔒 mockup-gated.
  • Es barata, y es lo que la compuerta de diseño lee más adelante.
Lo que no es

Escribir la fila no es diseñar

  • La fila no es un mockup.
  • Cuando /sprint-development toma la historia, su compuerta de diseño lee la fila y resuelve la ruta de la pantalla en ese momento.
  • Una historia de UI creada sin fila llega a desarrollo ya fuera de la regla de fidelidad del repo.
14 · rieles de seguridad

Lo que la skill nunca hace

La lista completa de antipatrones vive en SKILL.md. Estos son los que un PM nota primero.

No inventa. Criterio, alcance o regla de negocio sin fuente (PRD, SRS, mapa de negocio o lo que dijiste) se reporta como gap, se frena ese campo y sigue con el resto.
No dimensiona por ti. El AI Effort lo fija QA en shift-left y los tokens los miden los agentes. Si QA marca High, propone partir la historia y firmas tú.
No crea links sin tu confirmación, ni usa un link simétrico para algo que depende del orden sin avisarte.
No resuelve solapamientos ni ciclos sola. Te muestra el problema y espera tu decisión.
No escribe la caché a mano ni hardcodea IDs de campos, nombres de links o comandos de herramienta: todo se resuelve por slug o por la skill dueña.
No dice "Wave". Dice Sprint, y Master Sprint o Execution Sprint cuando hay ambigüedad.
Opcional, para equipos que lo necesitan: el patrón de delta specs reemplaza la edición en el lugar de los criterios por un spec fuente por feature más un delta por historia (agregado, modificado, quitado). Sirve con varios devs en la misma feature o con auditoría; para equipos chicos, el flujo por defecto alcanza.
15 · qué le dices a la IA

Invocarla en las tres terminales

Esta skill no tiene modos con nombre: el flujo sale de tu frase. Nombras la skill y describes lo que quieres, en español o en inglés.

Claude Code

/product-management crear épica para notificaciones

La barra carga la skill; el resto de la frase elige el flujo.

OpenCode

carga la skill product-management: refina los criterios de PROJ-45

Sin barra: nombras la skill en la frase.

Codex

carga la skill product-management: qué historias trabajamos primero

Mismo patrón que OpenCode, CLI o Desktop.

Si dices algo como… Corre
"seed the product backlog" A · siembra inicial
"agregar feature al backlog" B · feature incremental
"crear épica" C · creación de épica
"INVEST a esta historia" · "3 amigos" D · refinamiento
"refine acceptance criteria" E · criterios de aceptación
"enumerar edge cases" F · edge cases
"reporte de sprint" · "estado del sprint" G · reporte
"qué historias trabajamos primero" H · secuenciación
16 · después de esta skill

A quién le pasa la posta

Implementación

/sprint-development

Toma cada historia lista y la lleva de plan a código, review y deploy. Si los criterios no están claros, te devuelve aquí a refinar primero.

Orden de ejecución

/project-context dev-roadmap

Escribe la §4 de .context/dev-roadmap.md con el orden que calcula el flujo H.

Tests

/unit-testing

TDD sobre una función, dentro de /sprint-development.

Antes de esta skill

/project-foundation

Deja el PRD y el SRS de los que sale la siembra inicial.

Para leer más: .agents/skills/product-management/SKILL.md y su carpeta references/, una referencia por flujo. Para el diseño de pantallas que llega después, el deck Del plano al producto.