Product Owner
Escribe y gobierna el spec.
El Product Owner es la persona que escribe, gobierna y cierra el ciclo de la especificación. En un SDLC AI-native, el Product Owner opera un stack de primitivas validadas que convierten la intención en un contrato legible por máquinas.
Resumen ejecutivo
El Product Owner convierte la intención de negocio ambigua en una especificación aprobada y verificable que el resto del SDLC puede ejecutar sin pérdidas en la traducción. En un SDLC AI-native, el Product Owner opera dentro de la fase de Planning con un conjunto fijo de primitivas: un agente de especificación, cuatro slash prompts, instrucciones con alcance, hooks validados por esquema y una lista curada de MCPs validados. Las salidas principales son documentos SPECIFICATION.md en forma EARS, criterios de aceptación en Given-When-Then, enlaces de trazabilidad desde el requisito hasta la prueba y registros de decisión para cada cambio de alcance.
Rol y responsabilidades
Piensa en el Product Owner como un ingeniero civil que redacta la especificación de un puente. Los constructores, inspectores y reguladores leen el mismo documento y derivan su trabajo a partir de él. El Product Owner no vierte concreto, pero es responsable de que cada vertido, soldadura y cable coincida con una cláusula numerada que alguien pueda verificar bajo carga. En un SDLC AI-native, la especificación es el contrato entre humanos y agentes, y el Product Owner es su editor jefe.
Responsabilidades principales:
- Redactar y mantener
SPECIFICATION.mdpara cada feature, usando requisitos EARS y criterios de aceptación en Given-When-Then - Gobernar el backlog en GitHub Projects o Azure Boards, asegurando que cada ítem enlace a una sección del spec
- Definir y proteger la hipótesis de resultado del producto, no la lista de salidas
- Resolver conflictos de alcance entre stakeholders antes de que lleguen al Developer
- Operar el agente Spec Scribe y los prompts
/draft-spec,/earsify,/review-spec,/link-acceptance - Cerrar el ciclo confirmando la aceptación en los pull requests fusionados en GitHub
- Mantener la matriz de trazabilidad desde el requisito hasta la prueba y el artefacto desplegado
- Publicar las release notes a partir del diff del spec, no del diff del código
Jobs to be done
- Como Product Owner, quiero convertir una conversación con stakeholders en un borrador de spec en menos de una hora, para que el equipo nunca espere por mí para iniciar el discovery.
- Como Product Owner, quiero cada requisito en forma EARS, para que los agentes puedan parsearlo sin interpretación.
- Como Product Owner, quiero cada criterio de aceptación en Given-When-Then, para que el QA Engineer pueda generar pruebas directamente desde el spec.
- Como Product Owner, quiero un enlace de trazabilidad en vivo desde cada requisito hasta su prueba y su artefacto desplegado, para que pueda responder preguntas de auditoría en minutos.
- Como Product Owner, quiero que el spec rechace el merge cuando falte la aceptación, para que la deriva de alcance se detecte antes de escribir código.
- Como Product Owner, quiero que las release notes se generen a partir del diff del spec, para que los stakeholders vean el valor entregado, no los commits enviados.
Puntos de dolor antes de la era AI-native
- Tickets ambiguos. Las descripciones libres en un tracker obligan a cada lector a adivinar la intención. Los developers implementan la interpretación más fácil; QA prueba la más defensiva.
- Handoffs verbales. El alcance vive en la memoria de la reunión. Cuando termina la reunión, el alcance se bifurca silenciosamente.
- Criterios de aceptación inventados al momento del review. Los reviewers negocian la definición de done después de escrito el código, así que el rework es inevitable.
- Trazabilidad construida a mano en hojas de cálculo. La matriz queda obsoleta el día que se publica, y los auditores lo saben.
- Release notes escritas por el release manager a partir de los logs de commit. Los stakeholders ven ruido técnico, no resultados de producto, y la confianza se erosiona.
Flujo diario AI-native
El Product Owner opera un loop fijo cada día. El loop usa primitivas de GitHub Copilot dentro de Visual Studio Code y Claude Code en la terminal, además de un pequeño catálogo de MCPs validados para contexto externo.
Setup de la mañana
- Abrir el repositorio en Visual Studio Code. GitHub Copilot Chat carga
AGENTS.mdy las instrucciones de spec con alcance. - Hacer pull del último
mainy abrir el branch activo de la feature para el spec en curso. - Revisar los aportes nocturnos de stakeholders capturados en hilos de Microsoft Teams y Outlook a través del MCP del Microsoft 365 Agents SDK.
- Ejecutar
/review-specsobre el borrador del día anterior para detectar violaciones a EARS y aceptaciones faltantes.
Ejecución al mediodía
- Toma de aportes de stakeholders. Invocar
/draft-speccon la transcripción de la reunión o el hilo de Teams. El agente Spec Scribe produce un primer borrador con requisitos numerados y preguntas abiertas marcadas. - Conversión a EARS. Invocar
/earsifysobre cualquier enunciado en forma libre. El agente reescribe cada uno en la formaWHEN ... THE system SHALL ...y se niega a emitir requisitos sin una condición disparadora. - Vinculación de aceptación. Invocar
/link-acceptancepara adjuntar criterios Given-When-Then a cada requisito. El agente bloquea el spec para que no avance al review hasta que cada requisito tenga al menos un criterio. - Sincronización del backlog. Usar el MCP de GitHub o el MCP de Azure DevOps para crear o actualizar work items que referencien anclas de sección del spec, no resúmenes en prosa.
Revisión al final de la tarde
- Invocar
/review-specpara correr la barrida final de gobierno. El agente verifica testabilidad, contradicciones, duplicados y requisitos huérfanos. - Abrir un pull request sobre
SPECIFICATION.md. GitHub Copilot Code Review comenta sobre problemas estructurales; los stakeholders humanos aprueban el contenido. - Actualizar la matriz de trazabilidad. Un hook post-merge regenera la matriz a partir de las anclas del spec, los IDs de prueba y los registros de despliegue en GitHub Actions.
- Publicar el digest diario del spec al canal de Teams a través del Microsoft 365 Agents SDK, resumiendo los requisitos aceptados y las preguntas abiertas.
Primitivas recomendadas
Agente
| Agente | Archivo | Propósito |
|---|---|---|
spec-scribe | .github/agents/spec-scribe.agent.md | Redactar, earsificar, revisar y enlazar la aceptación para SPECIFICATION.md |
El Spec Scribe usa claude-sonnet-4-6 por defecto. Herramientas: read, edit, search, grep, glob. Sin acceso a bash, porque la persona Product Owner nunca ejecuta código. El extended thinking se habilita solo para /review-spec, donde la detección de contradicciones se beneficia de un razonamiento profundo.
Slash prompts
| Comando | Archivo | Propósito |
|---|---|---|
/draft-spec | .github/prompts/draft-spec.prompt.md | Convertir una entrada cruda de stakeholders en un borrador numerado de spec |
/earsify | .github/prompts/earsify.prompt.md | Reescribir requisitos en forma libre a sintaxis EARS |
/review-spec | .github/prompts/review-spec.prompt.md | Barrida de gobierno por testabilidad, contradicciones y huérfanos |
/link-acceptance | .github/prompts/link-acceptance.prompt.md | Adjuntar criterios Given-When-Then a cada requisito |
Instrucciones con alcance
El applyTo con alcance reduce el costo en tokens en aproximadamente 68 por ciento comparado con instrucciones globales.
Alcance (applyTo) | Archivo | Propósito |
|---|---|---|
docs/specs/**/*.md | .github/instructions/specs.instructions.md | Formato EARS, numeración, anclas y verbos vagos prohibidos |
docs/adr/**/*.md | .github/instructions/adr.instructions.md | Formato del registro de decisión cuando un spec requiere una elección arquitectónica |
docs/releases/**/*.md | .github/instructions/release-notes.instructions.md | Release notes generadas a partir del diff del spec, no del log de commits |
Hooks
Los hooks cuestan cero tokens de LLM. Son la capa de gobierno más fuerte para las especificaciones.
pre-commit: rechazar cualquier archivo de spec con un requisito que carezca de un disparador EARS o un criterio de aceptación huérfanopost-commit: regenerar la matriz de trazabilidad a partir de las anclas del spec y los IDs de pruebapre-merge: bloquear el merge de cualquier cambio de spec que no incluya una entrada en el changelog y un work item enlazado
MCPs validados
| MCP | Propósito | Dueño |
|---|---|---|
| GitHub MCP Server | Leer y actualizar GitHub Projects, issues y PRs para el gobierno del backlog | GitHub (oficial) |
| Azure DevOps MCP Server | Leer y actualizar work items de Azure Boards cuando el equipo usa Azure DevOps | Microsoft (oficial) |
| Microsoft Learn Docs MCP | Obtener documentación vigente de productos Microsoft al escribir specs para features de M365 o Azure | Microsoft (oficial) |
| Microsoft 365 Agents SDK MCP | Traer hilos de Teams, decisiones de Outlook y artefactos de SharePoint a la toma de aportes del spec | Microsoft (oficial) |
| Azure MCP Server | Consultar Application Insights y Azure Monitor para anclar specs en el comportamiento de producción | Microsoft (oficial) |
Ejemplos reales
Ejemplo 1: redactar un spec a partir de una conversación de Teams
Entrada: Un hilo de Microsoft Teams de 45 minutos entre ventas y soporte que propone un flujo de renovación de contrato self-service.
Invocación: /draft-spec con el hilo exportado vía el MCP del Microsoft 365 Agents SDK.
Salida esperada:
- Un
docs/specs/contract-renewal/SPECIFICATION.mdcon seis requisitos EARS numerados, cada uno seguido por criterios de aceptación Given-When-Then. - Un GitHub issue por requisito creado a través del MCP de GitHub, enlazado al ancla del spec.
- Una sección de preguntas abiertas que enumera cuatro puntos que requieren una decisión antes de la aprobación.
Ejemplo 2: barrida de gobierno antes del merge
Entrada: Un spec de 28 requisitos para un upgrade de billing, ya earsificado en una pasada anterior.
Invocación: /review-spec.
Salida esperada:
- Un reporte de revisión que marca dos contradicciones entre los requisitos 7 y 14, un duplicado entre 19 y 22, y tres criterios de aceptación huérfanos no adjuntos a ningún requisito.
- Un comentario en el pull request con sugerencias enlazadas a anclas.
- Un merge bloqueado hasta que el autor resuelva las tres categorías.
Anti-patrones
- Escribir specs como prosa. Los párrafos esconden contradicciones y no pueden ser consumidos por agentes. Mitigación: forzar EARS vía el hook
pre-commity el prompt/earsify. - Saltarse los criterios de aceptación. Un requisito sin Given-When-Then no es testable. Mitigación:
/link-acceptancese niega a cerrar el ciclo y el hook bloquea el commit. - Ítems del backlog sin anclas al spec. Si el ticket no enlaza a un requisito numerado, el alcance va a derivar. Mitigación: el MCP de GitHub auto-inyecta la URL del ancla al crear el issue.
- Release notes generadas desde commits. Los stakeholders ven ruido técnico. Mitigación: las release notes se generan a partir del diff del spec mediante las instrucciones con alcance.
- Verbos ambiguos. Palabras como “soportar”, “manejar”, “mejorar” están prohibidas por las instrucciones del spec. Mitigación: el hook
pre-commitlas rechaza.
KPIs y métricas de impacto
| KPI | Línea base | Meta | Medición |
|---|---|---|---|
| Lead time del spec, de toma a aprobado | 5 días | < 1 día | Timestamps del PR de SPECIFICATION.md en GitHub |
| Requisitos en forma EARS | 20 por ciento | 100 por ciento | Reporte del linter de spec en GitHub Actions |
| Cobertura de aceptación, requisitos con Given-When-Then | 40 por ciento | 100 por ciento | Matriz de trazabilidad |
| Tasa de cambios de alcance post-aprobación | 35 por ciento | < 10 por ciento | Conteo de PRs de spec reabiertos |
| Tiempo para responder una consulta de auditoría | 2 días | < 1 hora | Log de consultas a la matriz de trazabilidad |
| Satisfacción de stakeholders con la claridad | Desconocida | > 4.2 de 5 | Encuesta trimestral vía Microsoft Forms |
Madurez en cuatro niveles
| Nivel | Nombre | Marcadores |
|---|---|---|
| L1 | Manual | Tickets en prosa, sin EARS, sin aceptación, alcance negociado en review |
| L2 | Asistido | GitHub Copilot usado para pulir el texto del ticket, sin spec legible por máquina |
| L3 | Aumentado | Agente Spec Scribe, cuatro slash prompts, instrucciones con alcance, uno o dos MCPs, EARS forzado |
| L4 | Autónomo | Kit completo de primitivas, hooks forzados, trazabilidad auto-generada, release notes desde el diff del spec, digest a stakeholders automatizado |
Integración con otras personas
- Hacia Requirements Engineer:
SPECIFICATION.mdaprobado con requisitos EARS numerados como entrada canónica para la descomposición detallada - Hacia Business Manager: hooks de KPI a nivel de requisito para que los resultados puedan amarrarse a la historia de valor
- Hacia Enterprise Architect: cláusulas del spec que disparan un nuevo ADR o invocan un principio existente
- Hacia Software Architect: superficie de contrato usada para derivar
CODEMAP.mdy los contratos de API - Hacia QA Engineer: aceptación Given-When-Then como fuente directa de los casos de prueba
- Hacia Developer: ancla del spec en cada pull request para implementación trazable
- Hacia Tech Writer: release notes generadas a partir del diff del spec, no del diff de commits
Glosario
- EARS: Easy Approach to Requirements Syntax. La forma canónica
WHEN ... THE system SHALL ...usada enSPECIFICATION.md. - Given-When-Then: formato de criterio de aceptación que une una precondición, una acción y un resultado observable.
- Ancla del spec: ancla markdown estable sobre el ID de un requisito, usada como objetivo canónico de enlace desde issues, PRs y pruebas.
- Matriz de trazabilidad: tabla generada que mapea cada requisito a sus pruebas, pull requests y artefactos desplegados.
- Hipótesis de resultado: el resultado de negocio medible que la feature se supone debe producir, distinto de la lista de salidas.
- Backlog: la lista ordenada de work items en GitHub Projects o Azure Boards, cada uno enlazado a un ancla del spec.
Referencias
- GitHub Projects documentation — planificación y seguimiento de specs y backlog
- Azure Boards documentation — seguimiento de work items cuando el equipo usa Azure DevOps
- GitHub Copilot documentation — fuente autoritativa para features de Copilot, agent mode e instructions
- Microsoft 365 Agents SDK overview — integración de Teams y superficies de Microsoft 365
- EARS notation reference, Microsoft Learn — guía sobre calidad de requisitos y alineación arquitectónica