Paula Silva Software Global Black Belt
LinkedIn
01 product · Planning

Product OwnerProduct OwnerProduct Owner

Writes and governs the spec.Escreve e governa a spec.Escribe y gobierna el spec.


The Product Owner is the persona that writes, governs, and closes the loop on the specification. In an AI-native SDLC, the Product Owner operates a stack of validated primitives that turn intent into a machine-readable contract.

Executive summary

The Product Owner converts ambiguous business intent into an approved, testable specification that the rest of the SDLC can execute without translation loss. In an AI-native SDLC the Product Owner operates inside the Planning phase with a fixed set of primitives: one specification agent, four slash prompts, scoped instructions, schema-validated hooks, and a curated list of validated MCPs. Primary outputs are SPECIFICATION.md documents in EARS form, acceptance criteria in Given-When-Then, traceability links from requirement to test, and decision records for every scope change.

Role and responsibilities

Think of the Product Owner like a civil engineer authoring the specification of a bridge. The builders, inspectors, and regulators all read the same document and derive their work from it. The Product Owner does not pour concrete, but they are accountable for the fact that every pour, weld, and cable matches a numbered clause that someone can verify under load. In an AI-native SDLC the specification is the contract between humans and agents, and the Product Owner is its editor in chief.

Primary responsibilities:

  • Author and maintain SPECIFICATION.md for every feature, using EARS requirements and Given-When-Then acceptance criteria
  • Govern the backlog in GitHub Projects or Azure Boards, ensuring every item links to a spec section
  • Define and protect the product outcome hypothesis, not the output list
  • Resolve scope conflicts between stakeholders before they reach the Developer
  • Operate the Spec Scribe agent and the /draft-spec, /earsify, /review-spec, /link-acceptance prompts
  • Close the loop by confirming acceptance on merged pull requests in GitHub
  • Maintain the traceability matrix from requirement to test to deployed artifact
  • Publish release notes from the specification diff, not from the code diff

Jobs to be done

  1. As a Product Owner, I want to convert a stakeholder conversation into a draft spec within one hour, so that the team never waits on me to start discovery.
  2. As a Product Owner, I want every requirement in EARS form, so that agents can parse it without interpretation.
  3. As a Product Owner, I want every acceptance criterion in Given-When-Then, so that the QA Engineer can generate tests directly from the spec.
  4. As a Product Owner, I want a live traceability link from each requirement to its test and its deployed artifact, so that I can answer audit questions in minutes.
  5. As a Product Owner, I want the spec to refuse merge when acceptance is missing, so that scope drift is caught before code is written.
  6. As a Product Owner, I want release notes to be generated from the spec diff, so that stakeholders see value delivered, not commits shipped.

Pain points before AI-native

  1. Ambiguous tickets. Free-form descriptions in a tracker force every reader to guess intent. Developers implement the easiest interpretation; QA tests the most defensive one.
  2. Verbal handoffs. Scope lives in meeting memory. When the meeting is over, the scope quietly forks.
  3. Acceptance criteria invented at review time. Reviewers negotiate the definition of done after the code is written, so rework is inevitable.
  4. Traceability built by hand in spreadsheets. The matrix is obsolete the day it is published, and auditors know it.
  5. Release notes written by the release manager from commit logs. Stakeholders see technical churn, not product outcomes, and trust erodes.

AI-native daily workflow

The Product Owner operates a fixed loop each day. The loop uses GitHub Copilot primitives inside Visual Studio Code and Claude Code at the terminal, plus a small catalog of validated MCPs for external context.

Morning setup

  1. Open the repository in Visual Studio Code. GitHub Copilot Chat loads AGENTS.md and the scoped spec instructions.
  2. Pull the latest main and open the active feature branch for the spec in progress.
  3. Review overnight stakeholder input captured in Microsoft Teams threads and Outlook via the Microsoft 365 Agents SDK MCP.
  4. Run /review-spec on the previous day’s draft to catch EARS violations and missing acceptance.

Midday execution

  1. Stakeholder intake. Invoke /draft-spec with the meeting transcript or Teams thread. The Spec Scribe agent produces a first draft with numbered requirements and open questions flagged.
  2. EARS conversion. Invoke /earsify on any free-form statements. The agent rewrites each one in WHEN ... THE system SHALL ... form and refuses to emit requirements without a triggering condition.
  3. Acceptance linking. Invoke /link-acceptance to attach Given-When-Then criteria to every requirement. The agent blocks the spec from moving to review until every requirement has at least one criterion.
  4. Backlog sync. Use the GitHub MCP or the Azure DevOps MCP to create or update work items that reference spec section anchors, not prose summaries.

Afternoon review

  1. Invoke /review-spec to run the final governance sweep. The agent checks for testability, contradictions, duplicates, and orphaned requirements.
  2. Open a pull request on SPECIFICATION.md. GitHub Copilot Code Review comments on structural issues; human stakeholders approve content.
  3. Update the traceability matrix. A post-merge hook regenerates the matrix from spec anchors, test IDs, and deployment records in GitHub Actions.
  4. Publish the daily spec digest to the Teams channel via Microsoft 365 Agents SDK, summarizing accepted requirements and open questions.

Agent

AgentFilePurpose
spec-scribe.github/agents/spec-scribe.agent.mdDraft, earsify, review, and link acceptance for SPECIFICATION.md

The Spec Scribe uses claude-sonnet-4-6 by default. Tools: read, edit, search, grep, glob. No bash access, because the Product Owner persona never executes code. Extended thinking is enabled for /review-spec only, where contradiction detection benefits from deep reasoning.

Slash prompts

CommandFilePurpose
/draft-spec.github/prompts/draft-spec.prompt.mdTurn a raw stakeholder input into a numbered draft spec
/earsify.github/prompts/earsify.prompt.mdRewrite free-form requirements into EARS syntax
/review-spec.github/prompts/review-spec.prompt.mdGovernance sweep for testability, contradictions, orphans
/link-acceptance.github/prompts/link-acceptance.prompt.mdAttach Given-When-Then criteria to every requirement

Instructions scoped

Scoped applyTo reduces token cost by approximately 68 percent compared to global instructions.

Scope (applyTo)FilePurpose
docs/specs/**/*.md.github/instructions/specs.instructions.mdEARS format, numbering, anchors, and banned vague verbs
docs/adr/**/*.md.github/instructions/adr.instructions.mdDecision record format when a spec requires an architectural choice
docs/releases/**/*.md.github/instructions/release-notes.instructions.mdRelease notes generated from spec diff, not commit log

Hooks

Hooks cost zero LLM tokens. They are the strongest governance layer for specifications.

  • pre-commit: reject any spec file with a requirement missing an EARS trigger or an orphaned acceptance criterion
  • post-commit: regenerate the traceability matrix from spec anchors and test IDs
  • pre-merge: block merge of any spec change that does not include a changelog entry and a linked work item

Validated MCPs

MCPPurposeOwner
GitHub MCP ServerRead and update GitHub Projects, issues, and PRs for backlog governanceGitHub (official)
Azure DevOps MCP ServerRead and update Azure Boards work items when the team uses Azure DevOpsMicrosoft (official)
Microsoft Learn Docs MCPFetch current Microsoft product documentation when writing specs for M365 or Azure featuresMicrosoft (official)
Microsoft 365 Agents SDK MCPPull Teams threads, Outlook decisions, and SharePoint artifacts into the spec intakeMicrosoft (official)
Azure MCP ServerQuery Application Insights and Azure Monitor to ground specs in production behaviorMicrosoft (official)

Real examples

Example 1: draft a spec from a Teams conversation

Input: A 45-minute Microsoft Teams thread between sales and support proposing a self-service contract renewal flow.

Invocation: /draft-spec with the thread exported via the Microsoft 365 Agents SDK MCP.

Expected output:

  1. A docs/specs/contract-renewal/SPECIFICATION.md with six numbered EARS requirements, each followed by Given-When-Then acceptance criteria.
  2. A GitHub issue per requirement created through the GitHub MCP, linked to the spec anchor.
  3. An open-questions section listing four points that require a decision before approval.

Example 2: governance sweep before merge

Input: A 28-requirement spec for a billing upgrade, already earsified by an earlier pass.

Invocation: /review-spec.

Expected output:

  1. A review report flagging two contradictions between requirements 7 and 14, one duplicate between 19 and 22, and three orphaned acceptance criteria not attached to any requirement.
  2. A pull request comment with anchor-linked suggestions.
  3. A blocked merge until the author resolves all three categories.

Anti-patterns

  1. Writing specs as prose. Paragraphs hide contradictions and cannot be consumed by agents. Mitigation: enforce EARS via the pre-commit hook and the /earsify prompt.
  2. Skipping acceptance criteria. A requirement without Given-When-Then is not testable. Mitigation: /link-acceptance refuses to close the loop, and the hook blocks commit.
  3. Backlog items without spec anchors. If the ticket does not link to a numbered requirement, scope will drift. Mitigation: the GitHub MCP auto-injects the anchor URL on issue creation.
  4. Release notes generated from commits. Stakeholders see technical noise. Mitigation: release notes are generated from the spec diff via the scoped instructions.
  5. Ambiguous verbs. Words like “support”, “handle”, “improve” are banned by the spec instructions. Mitigation: the pre-commit hook rejects them.

KPIs and impact metrics

KPIBaselineTargetMeasurement
Spec lead time, intake to approved5 days< 1 dayGitHub PR timestamps on SPECIFICATION.md
Requirements in EARS form20 percent100 percentSpec linter report in GitHub Actions
Acceptance coverage, requirements with Given-When-Then40 percent100 percentTraceability matrix
Scope change rate post-approval35 percent< 10 percentCount of reopened spec PRs
Time to answer an audit query2 days< 1 hourTraceability matrix query log
Stakeholder satisfaction on clarityUnknown> 4.2 of 5Quarterly survey via Microsoft Forms

Maturity in four levels

LevelNameMarkers
L1ManualProse tickets, no EARS, no acceptance, scope negotiated at review
L2AssistedGitHub Copilot used to polish ticket text, still no machine-readable spec
L3AugmentedSpec Scribe agent, four slash prompts, scoped instructions, one or two MCPs, EARS enforced
L4AutonomousFull primitives kit, hooks enforced, traceability auto-generated, release notes from spec diff, stakeholder digest automated

Integration with other personas

  • To Requirements Engineer: approved SPECIFICATION.md with numbered EARS requirements as the canonical input for detailed decomposition
  • To Business Manager: requirement-level KPI hooks so outcomes can be tied to the value story
  • To Enterprise Architect: spec clauses that trigger a new ADR or invoke an existing principle
  • To Software Architect: contract surface area used to derive CODEMAP.md and API contracts
  • To QA Engineer: Given-When-Then acceptance as the direct source of test cases
  • To Developer: spec anchor on every pull request for traceable implementation
  • To Tech Writer: release notes generated from the spec diff, not the commit diff

Glossary

  • EARS: Easy Approach to Requirements Syntax. The canonical WHEN ... THE system SHALL ... form used in SPECIFICATION.md.
  • Given-When-Then: acceptance criterion format that binds a precondition, an action, and an observable outcome.
  • Spec anchor: stable markdown anchor on a requirement ID, used as the canonical link target from issues, PRs, and tests.
  • Traceability matrix: generated table that maps each requirement to its tests, pull requests, and deployed artifacts.
  • Outcome hypothesis: the measurable business result the feature is supposed to produce, distinct from the output list.
  • Backlog: the ordered list of work items in GitHub Projects or Azure Boards, each linked to a spec anchor.

References

O Product Owner é a persona que escreve, governa e fecha o loop da especificação. Em um SDLC AI-native, o Product Owner opera uma pilha de primitivas validadas que transforma intenção em um contrato legível por máquina.

Resumo executivo

O Product Owner converte intenção de negócio ambígua em uma especificação aprovada e testável que o resto do SDLC pode executar sem perda de tradução. Em um SDLC AI-native, o Product Owner opera dentro da fase de Planning com um conjunto fixo de primitivas: um agente de specification, quatro slash prompts, instruções escopadas, hooks validados por schema e uma lista curada de MCPs validados. As saídas primárias são documentos SPECIFICATION.md em formato EARS, critérios de aceitação em Given-When-Then, links de rastreabilidade de requisito para teste e registros de decisão para toda mudança de escopo.

Papel e responsabilidades

Pense no Product Owner como um engenheiro civil que escreve a especificação de uma ponte. Os construtores, inspetores e reguladores leem todos o mesmo documento e derivam seu trabalho a partir dele. O Product Owner não despeja concreto, mas é responsável pelo fato de cada despejo, solda e cabo corresponder a uma cláusula numerada que alguém pode verificar sob carga. Em um SDLC AI-native, a especificação é o contrato entre humanos e agentes, e o Product Owner é seu editor-chefe.

Responsabilidades primárias:

  • Escrever e manter o SPECIFICATION.md para toda feature, usando requisitos EARS e critérios de aceitação Given-When-Then
  • Governar o backlog no GitHub Projects ou Azure Boards, garantindo que todo item aponte para uma seção da spec
  • Definir e proteger a hipótese de outcome do produto, não a lista de outputs
  • Resolver conflitos de escopo entre stakeholders antes que cheguem ao Developer
  • Operar o agente Spec Scribe e os prompts /draft-spec, /earsify, /review-spec, /link-acceptance
  • Fechar o loop confirmando aceitação em pull requests merged no GitHub
  • Manter a matriz de rastreabilidade de requisito para teste para artefato implantado
  • Publicar release notes a partir do diff da especificação, não do diff de código

Jobs to be done

  1. Como Product Owner, eu quero converter uma conversa com stakeholder em um draft de spec em até uma hora, para que o time nunca fique esperando por mim para iniciar a descoberta.
  2. Como Product Owner, eu quero todo requisito em formato EARS, para que os agentes possam parseá-lo sem interpretação.
  3. Como Product Owner, eu quero todo critério de aceitação em Given-When-Then, para que o QA Engineer possa gerar testes direto da spec.
  4. Como Product Owner, eu quero um link de rastreabilidade ao vivo de cada requisito para seu teste e seu artefato implantado, para que eu consiga responder a questões de auditoria em minutos.
  5. Como Product Owner, eu quero que a spec recuse merge quando a aceitação estiver ausente, para que o desvio de escopo seja pego antes de o código ser escrito.
  6. Como Product Owner, eu quero release notes geradas a partir do diff da spec, para que stakeholders vejam valor entregue, não commits enviados.

Dores antes da era AI-native

  1. Tickets ambíguos. Descrições em texto livre em um tracker forçam todo leitor a adivinhar a intenção. Developers implementam a interpretação mais fácil; QA testa a mais defensiva.
  2. Handoffs verbais. O escopo vive na memória da reunião. Quando a reunião termina, o escopo silenciosamente bifurca.
  3. Critérios de aceitação inventados na hora do review. Revisores negociam a definição de pronto depois que o código já foi escrito, então retrabalho é inevitável.
  4. Rastreabilidade construída à mão em planilhas. A matriz está obsoleta no dia em que é publicada, e os auditores sabem disso.
  5. Release notes escritas pelo release manager a partir de logs de commit. Stakeholders veem churn técnico, não outcomes de produto, e a confiança se deteriora.

Fluxo diário AI-native

O Product Owner opera um loop fixo todo dia. O loop usa primitivas do GitHub Copilot dentro do Visual Studio Code e Claude Code no terminal, além de um pequeno catálogo de MCPs validados para contexto externo.

Setup da manhã

  1. Abra o repositório no Visual Studio Code. GitHub Copilot Chat carrega o AGENTS.md e as instruções escopadas da spec.
  2. Puxe o último main e abra a branch ativa da feature para a spec em andamento.
  3. Revise inputs noturnos de stakeholders capturados em threads do Microsoft Teams e no Outlook via o Microsoft 365 Agents SDK MCP.
  4. Rode /review-spec no draft do dia anterior para capturar violações de EARS e aceitação ausente.

Execução no meio do dia

  1. Coleta de stakeholder. Invoque /draft-spec com a transcrição da reunião ou thread do Teams. O agente Spec Scribe produz um primeiro draft com requisitos numerados e questões em aberto sinalizadas.
  2. Conversão para EARS. Invoque /earsify em qualquer declaração em texto livre. O agente reescreve cada uma no formato WHEN ... THE system SHALL ... e se recusa a emitir requisitos sem uma condição de disparo.
  3. Vinculação de aceitação. Invoque /link-acceptance para anexar critérios Given-When-Then a todo requisito. O agente bloqueia a spec de ir para review até que todo requisito tenha pelo menos um critério.
  4. Sincronização do backlog. Use o GitHub MCP ou o Azure DevOps MCP para criar ou atualizar work items que referenciem âncoras de seções da spec, não resumos em prosa.

Revisão no fim da tarde

  1. Invoque /review-spec para rodar a varredura final de governança. O agente verifica testabilidade, contradições, duplicatas e requisitos órfãos.
  2. Abra um pull request no SPECIFICATION.md. GitHub Copilot Code Review comenta em problemas estruturais; stakeholders humanos aprovam o conteúdo.
  3. Atualize a matriz de rastreabilidade. Um hook de post-merge regenera a matriz a partir das âncoras da spec, IDs de teste e registros de deploy no GitHub Actions.
  4. Publique o digest diário da spec no canal do Teams via Microsoft 365 Agents SDK, resumindo requisitos aceitos e questões em aberto.

Primitivas recomendadas

Agente

AgenteArquivoPropósito
spec-scribe.github/agents/spec-scribe.agent.mdEscrever, earsify, revisar e vincular aceitação para o SPECIFICATION.md

O Spec Scribe usa claude-sonnet-4-6 por padrão. Ferramentas: read, edit, search, grep, glob. Sem acesso a bash, porque a persona Product Owner nunca executa código. Extended thinking é habilitado apenas para /review-spec, onde a detecção de contradições se beneficia de raciocínio profundo.

Slash prompts

ComandoArquivoPropósito
/draft-spec.github/prompts/draft-spec.prompt.mdTransformar um input cru de stakeholder em um draft numerado de spec
/earsify.github/prompts/earsify.prompt.mdReescrever requisitos em texto livre na sintaxe EARS
/review-spec.github/prompts/review-spec.prompt.mdVarredura de governança para testabilidade, contradições, órfãos
/link-acceptance.github/prompts/link-acceptance.prompt.mdAnexar critérios Given-When-Then a todo requisito

Instruções escopadas

applyTo com escopo reduz o custo em tokens em aproximadamente 68 por cento comparado a instruções globais.

Escopo (applyTo)ArquivoPropósito
docs/specs/**/*.md.github/instructions/specs.instructions.mdFormato EARS, numeração, âncoras e verbos vagos banidos
docs/adr/**/*.md.github/instructions/adr.instructions.mdFormato do registro de decisão quando uma spec exige uma escolha arquitetural
docs/releases/**/*.md.github/instructions/release-notes.instructions.mdRelease notes geradas a partir do diff da spec, não do log de commits

Hooks

Hooks custam zero tokens de LLM. São a camada de governança mais forte para especificações.

  • pre-commit: rejeitar qualquer arquivo de spec com um requisito sem trigger EARS ou um critério de aceitação órfão
  • post-commit: regenerar a matriz de rastreabilidade a partir das âncoras da spec e IDs de teste
  • pre-merge: bloquear o merge de qualquer mudança de spec que não inclua uma entrada de changelog e um work item vinculado

MCPs validados

MCPPropósitoDono
GitHub MCP ServerLer e atualizar GitHub Projects, issues e PRs para governança de backlogGitHub (oficial)
Azure DevOps MCP ServerLer e atualizar work items do Azure Boards quando o time usa Azure DevOpsMicrosoft (oficial)
Microsoft Learn Docs MCPBuscar documentação atualizada de produtos Microsoft ao escrever specs para features M365 ou AzureMicrosoft (oficial)
Microsoft 365 Agents SDK MCPPuxar threads do Teams, decisões do Outlook e artefatos do SharePoint para dentro da coleta da specMicrosoft (oficial)
Azure MCP ServerConsultar Application Insights e Azure Monitor para ancorar specs em comportamento de produçãoMicrosoft (oficial)

Exemplos reais

Exemplo 1: escrever uma spec a partir de uma conversa no Teams

Entrada: Uma thread de 45 minutos no Microsoft Teams entre vendas e suporte propondo um fluxo de renovação de contrato self-service.

Invocação: /draft-spec com a thread exportada via o Microsoft 365 Agents SDK MCP.

Saída esperada:

  1. Um docs/specs/contract-renewal/SPECIFICATION.md com seis requisitos EARS numerados, cada um seguido por critérios de aceitação Given-When-Then.
  2. Uma issue do GitHub por requisito criada através do GitHub MCP, vinculada à âncora da spec.
  3. Uma seção de perguntas em aberto listando quatro pontos que exigem decisão antes da aprovação.

Exemplo 2: varredura de governança antes do merge

Entrada: Uma spec de 28 requisitos para um upgrade de billing, já earsified em uma passagem anterior.

Invocação: /review-spec.

Saída esperada:

  1. Um relatório de review sinalizando duas contradições entre os requisitos 7 e 14, uma duplicata entre 19 e 22, e três critérios de aceitação órfãos não anexados a nenhum requisito.
  2. Um comentário de pull request com sugestões vinculadas por âncoras.
  3. Um merge bloqueado até que o autor resolva as três categorias.

Anti-padrões

  1. Escrever specs como prosa. Parágrafos escondem contradições e não podem ser consumidos por agentes. Mitigação: enforçar EARS via o hook de pre-commit e o prompt /earsify.
  2. Pular critérios de aceitação. Um requisito sem Given-When-Then não é testável. Mitigação: /link-acceptance se recusa a fechar o loop, e o hook bloqueia o commit.
  3. Itens de backlog sem âncoras de spec. Se o ticket não aponta para um requisito numerado, o escopo vai derivar. Mitigação: o GitHub MCP auto-injeta a URL da âncora na criação da issue.
  4. Release notes geradas a partir de commits. Stakeholders veem ruído técnico. Mitigação: release notes são geradas a partir do diff da spec via as instruções escopadas.
  5. Verbos ambíguos. Palavras como “suportar”, “tratar”, “melhorar” são banidas pelas instruções da spec. Mitigação: o hook de pre-commit as rejeita.

KPIs e métricas de impacto

KPILinha baseMetaMedição
Lead time da spec, coleta até aprovada5 dias< 1 diaTimestamps de PR do SPECIFICATION.md no GitHub
Requisitos em formato EARS20 por cento100 por centoRelatório do spec linter no GitHub Actions
Cobertura de aceitação, requisitos com Given-When-Then40 por cento100 por centoMatriz de rastreabilidade
Taxa de mudança de escopo pós-aprovação35 por cento< 10 por centoContagem de PRs de spec reabertos
Tempo de resposta a uma consulta de auditoria2 dias< 1 horaLog de consultas da matriz de rastreabilidade
Satisfação de stakeholder sobre clarezaDesconhecido> 4.2 de 5Pesquisa trimestral via Microsoft Forms

Maturidade em quatro níveis

NívelNomeMarcadores
L1ManualTickets em prosa, sem EARS, sem aceitação, escopo negociado no review
L2AssistidoGitHub Copilot usado para polir o texto do ticket, ainda sem spec legível por máquina
L3AumentadoAgente Spec Scribe, quatro slash prompts, instruções escopadas, um ou dois MCPs, EARS enforçado
L4AutônomoKit completo de primitivas, hooks enforçados, rastreabilidade auto-gerada, release notes a partir do diff da spec, digest de stakeholder automatizado

Integração com outras personas

  • Para o Requirements Engineer: SPECIFICATION.md aprovado com requisitos EARS numerados como input canônico para decomposição detalhada
  • Para o Business Manager: hooks de KPI em nível de requisito para que outcomes possam ser atados à história de valor
  • Para o Enterprise Architect: cláusulas da spec que disparam um novo ADR ou invocam um princípio existente
  • Para o Software Architect: superfície de contrato usada para derivar CODEMAP.md e contratos de API
  • Para o QA Engineer: aceitação Given-When-Then como fonte direta de casos de teste
  • Para o Developer: âncora da spec em todo pull request para implementação rastreável
  • Para o Tech Writer: release notes geradas a partir do diff da spec, não do diff do commit

Glossário

  • EARS: Easy Approach to Requirements Syntax. A forma canônica WHEN ... THE system SHALL ... usada no SPECIFICATION.md.
  • Given-When-Then: formato de critério de aceitação que vincula uma pré-condição, uma ação e um outcome observável.
  • Âncora da spec: âncora markdown estável sobre um ID de requisito, usada como alvo canônico de link a partir de issues, PRs e testes.
  • Matriz de rastreabilidade: tabela gerada que mapeia cada requisito para seus testes, pull requests e artefatos implantados.
  • Hipótese de outcome: o resultado de negócio mensurável que a feature deve produzir, distinto da lista de outputs.
  • Backlog: a lista ordenada de work items no GitHub Projects ou Azure Boards, cada um vinculado a uma âncora da spec.

Referências

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.md para 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

  1. 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.
  2. Como Product Owner, quiero cada requisito en forma EARS, para que los agentes puedan parsearlo sin interpretación.
  3. 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.
  4. 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.
  5. 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.
  6. 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

  1. 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.
  2. Handoffs verbales. El alcance vive en la memoria de la reunión. Cuando termina la reunión, el alcance se bifurca silenciosamente.
  3. 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.
  4. Trazabilidad construida a mano en hojas de cálculo. La matriz queda obsoleta el día que se publica, y los auditores lo saben.
  5. 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

  1. Abrir el repositorio en Visual Studio Code. GitHub Copilot Chat carga AGENTS.md y las instrucciones de spec con alcance.
  2. Hacer pull del último main y abrir el branch activo de la feature para el spec en curso.
  3. Revisar los aportes nocturnos de stakeholders capturados en hilos de Microsoft Teams y Outlook a través del MCP del Microsoft 365 Agents SDK.
  4. Ejecutar /review-spec sobre el borrador del día anterior para detectar violaciones a EARS y aceptaciones faltantes.

Ejecución al mediodía

  1. Toma de aportes de stakeholders. Invocar /draft-spec con 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.
  2. Conversión a EARS. Invocar /earsify sobre cualquier enunciado en forma libre. El agente reescribe cada uno en la forma WHEN ... THE system SHALL ... y se niega a emitir requisitos sin una condición disparadora.
  3. Vinculación de aceptación. Invocar /link-acceptance para 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.
  4. 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

  1. Invocar /review-spec para correr la barrida final de gobierno. El agente verifica testabilidad, contradicciones, duplicados y requisitos huérfanos.
  2. Abrir un pull request sobre SPECIFICATION.md. GitHub Copilot Code Review comenta sobre problemas estructurales; los stakeholders humanos aprueban el contenido.
  3. 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.
  4. 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

AgenteArchivoPropósito
spec-scribe.github/agents/spec-scribe.agent.mdRedactar, 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

ComandoArchivoPropósito
/draft-spec.github/prompts/draft-spec.prompt.mdConvertir una entrada cruda de stakeholders en un borrador numerado de spec
/earsify.github/prompts/earsify.prompt.mdReescribir requisitos en forma libre a sintaxis EARS
/review-spec.github/prompts/review-spec.prompt.mdBarrida de gobierno por testabilidad, contradicciones y huérfanos
/link-acceptance.github/prompts/link-acceptance.prompt.mdAdjuntar 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)ArchivoPropósito
docs/specs/**/*.md.github/instructions/specs.instructions.mdFormato EARS, numeración, anclas y verbos vagos prohibidos
docs/adr/**/*.md.github/instructions/adr.instructions.mdFormato del registro de decisión cuando un spec requiere una elección arquitectónica
docs/releases/**/*.md.github/instructions/release-notes.instructions.mdRelease 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érfano
  • post-commit: regenerar la matriz de trazabilidad a partir de las anclas del spec y los IDs de prueba
  • pre-merge: bloquear el merge de cualquier cambio de spec que no incluya una entrada en el changelog y un work item enlazado

MCPs validados

MCPPropósitoDueño
GitHub MCP ServerLeer y actualizar GitHub Projects, issues y PRs para el gobierno del backlogGitHub (oficial)
Azure DevOps MCP ServerLeer y actualizar work items de Azure Boards cuando el equipo usa Azure DevOpsMicrosoft (oficial)
Microsoft Learn Docs MCPObtener documentación vigente de productos Microsoft al escribir specs para features de M365 o AzureMicrosoft (oficial)
Microsoft 365 Agents SDK MCPTraer hilos de Teams, decisiones de Outlook y artefactos de SharePoint a la toma de aportes del specMicrosoft (oficial)
Azure MCP ServerConsultar Application Insights y Azure Monitor para anclar specs en el comportamiento de producciónMicrosoft (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:

  1. Un docs/specs/contract-renewal/SPECIFICATION.md con seis requisitos EARS numerados, cada uno seguido por criterios de aceptación Given-When-Then.
  2. Un GitHub issue por requisito creado a través del MCP de GitHub, enlazado al ancla del spec.
  3. 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:

  1. 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.
  2. Un comentario en el pull request con sugerencias enlazadas a anclas.
  3. Un merge bloqueado hasta que el autor resuelva las tres categorías.

Anti-patrones

  1. 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-commit y el prompt /earsify.
  2. Saltarse los criterios de aceptación. Un requisito sin Given-When-Then no es testable. Mitigación: /link-acceptance se niega a cerrar el ciclo y el hook bloquea el commit.
  3. Í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.
  4. 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.
  5. Verbos ambiguos. Palabras como “soportar”, “manejar”, “mejorar” están prohibidas por las instrucciones del spec. Mitigación: el hook pre-commit las rechaza.

KPIs y métricas de impacto

KPILínea baseMetaMedición
Lead time del spec, de toma a aprobado5 días< 1 díaTimestamps del PR de SPECIFICATION.md en GitHub
Requisitos en forma EARS20 por ciento100 por cientoReporte del linter de spec en GitHub Actions
Cobertura de aceptación, requisitos con Given-When-Then40 por ciento100 por cientoMatriz de trazabilidad
Tasa de cambios de alcance post-aprobación35 por ciento< 10 por cientoConteo de PRs de spec reabiertos
Tiempo para responder una consulta de auditoría2 días< 1 horaLog de consultas a la matriz de trazabilidad
Satisfacción de stakeholders con la claridadDesconocida> 4.2 de 5Encuesta trimestral vía Microsoft Forms

Madurez en cuatro niveles

NivelNombreMarcadores
L1ManualTickets en prosa, sin EARS, sin aceptación, alcance negociado en review
L2AsistidoGitHub Copilot usado para pulir el texto del ticket, sin spec legible por máquina
L3AumentadoAgente Spec Scribe, cuatro slash prompts, instrucciones con alcance, uno o dos MCPs, EARS forzado
L4AutónomoKit 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.md aprobado 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.md y 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 en SPECIFICATION.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

Paula Silva | Software Global Black Belt

Start with the platform, not the agents. Comece pela plataforma, não pelos agentes. Comience por la plataforma, no por los agentes.

Building the future of software development with AI and Agentic DevOps.

Knowledge Hub · v3.4.0 · 2026-06-17
paulasilva · 2026-06-17 EN · PT-BR · ES