DeveloperDeveloperDeveloper
Implementation, TDD, bug fix.Implementação, TDD, correção de bugs.Implementación, TDD, corrección de bugs.
The Developer is the persona that writes, fixes, and evolves code. In an AI-native SDLC, the Developer operates a stack of validated primitives, not a code editor.
Executive summary
The Developer turns an approved specification into working, tested, reviewed code that ships to production. In an AI-native SDLC, the Developer operates inside the Implementation phase with a fixed set of primitives: one implementation agent, four slash prompts, scoped instructions, schema-validated hooks, and a curated list of validated MCPs. The primary outputs are code changes, passing test suites, pull requests with traceable context, and updated documentation.
Role and responsibilities
Think of the Developer like a structural engineer on a construction site. The architect hands over drawings that satisfy the zoning constraints. The engineer does not rewrite the drawings, but they also do not execute them mechanically: they choose the concrete mix, the rebar layout, and the sequence of pours that make the structure stand up. In an AI-native SDLC the specification, architecture decisions, and acceptance criteria are upstream artifacts, and the Developer is accountable for translating them into code that survives production without rework.
Primary responsibilities:
- Implement features described in
SPECIFICATION.mdusing the EARS requirements and Given-When-Then acceptance criteria - Practice Test-Driven Development end-to-end, starting from the failing test suggested by the spec
- Fix bugs with the understand-reproduce-fix-verify loop, never jumping to the fix
- Review code from peers and AI agents with equal rigor
- Update the
CODEMAP.mdand developer docs whenever a public API changes - Keep dependency hygiene, resolve vulnerabilities within SLA
- Operate the Implementer agent and the
/implement,/fix-bug,/tdd,/refactorprompts
Jobs to be done
- As a Developer, I want to convert an approved spec into a merged pull request within one working day, so that the team keeps a daily delivery cadence.
- As a Developer, I want the AI agent to write the failing test first, so that every feature has a machine-verifiable acceptance criterion.
- As a Developer, I want to reproduce a production bug in a local test, so that the fix is protected against regression.
- As a Developer, I want to refactor without changing behavior, so that the code base stays coherent as it grows.
- As a Developer, I want the PR description to be auto-generated from my changes, so that reviewers have full context without asking me.
- As a Developer, I want to know which dependency upgrade will break which test, so that security patches land without manual triage.
Pain points before AI-native
- Spec drift. The feature in the ticket is not the feature that shipped. Without a machine-readable spec linked to tests, every sprint silently redefines scope.
- Copy-paste debugging. Bugs are fixed by pattern matching on the stack trace instead of by reproducing the root cause. The same class of bug returns every quarter.
- Review fatigue. Reviewers cannot hold the whole system in their head, so they rubber-stamp or nitpick, never both at the same time.
- Test gaps invisible until production. Coverage reports lie because they count lines, not branches or behaviors. Risk lives in the untested 15 percent.
- Documentation lag. The
README.mdand API docs describe last quarter’s architecture. New team members ramp slowly and ask senior engineers the same questions every week.
AI-native daily workflow
The Developer 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
- Pull the latest
mainand rebase the feature branch. - Open the repo in Visual Studio Code. GitHub Copilot Chat loads the
AGENTS.mdand the scoped.github/instructions/*.instructions.md. - Run
/audit-contextfrom the Technical Lead kit (installed as a dependency) to confirm the context budget is under threshold. - Read the active ticket, open the linked
SPECIFICATION.md, confirm the EARS requirements and acceptance criteria.
Core work cycle
Each work cycle is a single unit of change, typically 1 to 4 hours of focused work.
- Spec to failing test. Invoke
/tddwith the acceptance criteria. The Implementer agent writes a failing test that encodes the Given-When-Then and refuses to proceed until the test is committed. - Implement. Invoke
/implement. The agent writes the minimum code to pass the failing test. Copilot inline completions handle boilerplate; the developer owns decisions. - Self-review. Run the test suite, lint, type-check. If any hook fires, fix before moving on. Hooks are zero-token governance.
- Refactor. Invoke
/refactorto improve structure without changing behavior. The agent runs the test suite before and after to prove behavioral equivalence. - Pull request. The PR description is composed from the commit messages and the linked spec. Copilot Code Review and the Quality Reviewer agent scan the diff.
Bug cycle
When a bug is reported, the Developer invokes /fix-bug, which runs the understand-reproduce-fix-verify loop:
- Understand. Read the error, the stack trace, and the related code. The agent summarizes the hypothesis.
- Reproduce. Write a failing test that reproduces the bug. No fix is allowed before this step.
- Fix. Minimum change to make the failing test pass.
- Verify. Run the full test suite, not just the new test. Confirm no regression.
End of day
- Push the branch. GitHub Actions runs the CI pipeline.
- Update the ticket with the link to the PR and the tests that encode the acceptance criteria.
- If the feature touched a public API, verify the
CODEMAP.mdand the generated docs are up to date.
Recommended primitives
Agents
| Agent | File | Purpose |
|---|---|---|
implementer | .github/agents/implementer.agent.md | Implementation, TDD, bug fixing with understand-reproduce-fix-verify |
The Implementer agent uses claude-sonnet-4-6 by default. It holds tools read, edit, search, grep, glob, bash. Extended thinking is disabled because iterative implementation tasks lose quality with deep think loops.
Prompts
| Command | File | Purpose |
|---|---|---|
/implement | .github/prompts/implement.prompt.md | Implement a feature against a spec, minimum code to pass the test |
/fix-bug | .github/prompts/fix-bug.prompt.md | Four-step bug fix loop, never skips reproduction |
/tdd | .github/prompts/tdd.prompt.md | Write the failing test first, enforced |
/refactor | .github/prompts/refactor.prompt.md | Behavior-preserving structural improvement |
Instructions
Scoped applyTo reduces token cost by approximately 68 percent compared to global instructions.
Scope (applyTo) | File | Purpose |
|---|---|---|
src/**/*.ts,src/**/*.tsx | .github/instructions/typescript.instructions.md | TypeScript conventions, strict mode, no any |
tests/**/* | .github/instructions/tests.instructions.md | AAA pattern, meaningful names, no brittle snapshots |
**/*.sql | .github/instructions/sql.instructions.md | Migrations are up-and-down, no schema drift |
Skills
Skills are lazy-loaded, so the developer can install many and pay tokens only for the ones that trigger.
tdd-enforcer: refuses to write implementation code if the failing test is missingdep-risk-scan: calls the GitHub MCP to read Dependabot alerts and CodeQL results on every dependency upgrade
Hooks
Hooks cost zero LLM tokens. They are the strongest governance layer.
pre-commit: lint, type-check, secret scanpost-commit: regenerateCODEMAP.mdif public API surfaces changedpre-push: run the fast test lane
Validated MCPs
Every MCP below is registered in the MCP catalog. Do not reference any MCP that is not in the catalog.
| MCP | Status | Use in this persona |
|---|---|---|
| GitHub MCP Server | Official | Read the repo, manage PRs and issues, read Actions runs |
| Microsoft Learn Docs MCP | Official | Fetch current Microsoft documentation when implementing on Azure stacks |
| Azure MCP Server | Official (Microsoft) | Pull Application Insights and Azure Monitor errors into the fix-bug loop; query Azure resources during implementation |
| Azure DevOps MCP Server | Official (Microsoft) | Read the active work item from Azure Boards, update it after PR merge (when the team uses Azure DevOps instead of GitHub Issues) |
| Playwright MCP | Official (Microsoft) | Drive end-to-end tests against the running feature |
| Microsoft 365 Agents SDK MCP | Official (Microsoft) | Integrate the feature with Teams, Copilot, and Microsoft 365 surfaces when the product requires it |
Real examples
Scenario A: implement a new endpoint
Input: SPECIFICATION.md contains the EARS requirement WHEN a user submits a rental claim with a valid contract ID, THE system SHALL return the claim status within 300 ms.
Invocation: /tdd followed by /implement.
Expected output:
- A failing integration test
tests/claims/returns-status-under-300ms.spec.tsthat asserts response time and payload shape. - A new route handler
src/claims/status.controller.tswith minimal code to pass the test. - A PR titled
feat(claims): return claim status within 300 mslinked to the spec section and the new test.
Scenario B: fix a production bug
Input: An Application Insights alert (via Azure Monitor) reports a null pointer in ContractService.findById triggered by concurrent requests.
Invocation: /fix-bug.
Expected output:
- A failing unit test
tests/contracts/find-by-id-concurrency.spec.tsthat reproduces the race condition. - A fix in
ContractServicethat introduces optimistic locking, with no other behavioral change. - A PR titled
fix(contracts): eliminate race in ContractService.findByIdlinked to the Application Insights incident and the new test. - A post-merge resolution of the Application Insights alert with the PR URL recorded in the incident timeline.
Scenario C: behavior-preserving refactor
Input: A monolithic orders.service.ts of 1,200 lines needs to be split into cohesive modules.
Invocation: /refactor.
Expected output:
- The full test suite runs green before the refactor.
orders.service.tsis split intoorders/pricing.ts,orders/validation.ts,orders/persistence.tswith identical public surface.- The full test suite runs green after the refactor.
- A PR titled
refactor(orders): split service into pricing, validation, persistencewith a diff summary and a test parity report.
Anti-patterns
- Skipping the failing test. Writing the implementation first and adding a test that happens to pass defeats TDD. Mitigation: the
tdd-enforcerskill refuses to generate implementation code when no failing test exists. - Trusting coverage percentage as the signal for quality. Line coverage is a vanity metric. Mitigation: track mutation score or branch coverage, and include negative-path assertions in every test file.
- Letting Copilot choose naming without context. Names hallucinated from patterns outside the repo produce inconsistent code. Mitigation: scope instructions with
applyToand teach Copilot the domain vocabulary. - One-shot large refactors. Refactors that touch dozens of files at once cannot be reviewed safely. Mitigation: split into a sequence of small, behavior-preserving commits, each green on the test suite.
- Ignoring hooks. A pre-commit hook that fails is a gift, not a blocker. Mitigation: treat hook output as the first review; fix before committing.
KPIs and impact metrics
The Developer persona is evaluated with a mix of DORA, SPACE, and Agentic DevOps metrics.
| Metric | Baseline (manual) | Target (agentic) | Measurement |
|---|---|---|---|
| PR lead time | 3 days | < 1 day | GitHub API |
| Deployment frequency | Weekly | Multiple per day | GitHub Deployments |
| Change failure rate | 20 percent | < 5 percent | Application Insights or incidents post deploy |
| Mean time to restore | 4 hours | < 1 hour | Incident tracker |
| Test suite reliability | 85 percent | > 99 percent | Flake rate |
| Mutation score | Unknown | > 70 percent | Stryker, Pitest, or equivalent |
| Rework rate | 30 percent | < 10 percent | Percent of merged code rewritten within 30 days |
| Token efficiency | N/A | < 1M tokens per merged PR | Copilot usage report |
Maturity in four levels
| Level | Name | Markers |
|---|---|---|
| L1 | Manual | Copy-paste from Stack Overflow, no standard prompt, no scoped instructions, no MCPs |
| L2 | Assisted | GitHub Copilot autocomplete only, no agent, AGENTS.md missing or generic |
| L3 | Augmented | One Implementer agent, four slash prompts, scoped instructions, one or two MCPs, TDD workflow |
| L4 | Agentic | Full primitives kit, hooks enforced, validated MCPs in the catalog only, PR narrative auto-generated, maturity scorecard above 80 percent |
Integration with other personas
Handoffs:
- From Technical Lead: routing table, scoped instructions,
AGENTS.md, project baseline - From Software Architect:
CODEMAP.md,IMPLEMENTATION_PLAN.mdwith parallel markers, API contracts - To QA Engineer: merged PR with passing tests, test matrix updated
- To Tech Writer: updated
CODEMAP.md, new public API surfaces, changelog entry - To SRE: deployment-ready artifact, feature flag configuration, runbook updates
Glossary
- Agent: a configured LLM role with tools, instructions, and a defined output shape. Lives in
.github/agents/<name>.agent.md. - Prompt: a reusable slash command that invokes an agent with a specific task. Lives in
.github/prompts/<name>.prompt.md. - Instructions: scoped guidance applied by pattern match on file paths via
applyTo. Lives in.github/instructions/<name>.instructions.md. - Skill: a lazy-loaded capability that activates on keyword match. Costs tokens only when triggered.
- Hook: a zero-token rule enforced at a specific lifecycle event (pre-commit, post-commit, pre-push, pre-merge).
- MCP: Model Context Protocol server that exposes external systems (GitHub, Azure, Azure DevOps, etc.) to the agent.
- EARS: Easy Approach to Requirements Syntax. Format used in
SPECIFICATION.md. - TDD: Test-Driven Development. Write the failing test first, then the minimum code to pass it.
- CODEMAP: A generated document that describes the program skeleton for the LLM and for humans.
References
- GitHub Copilot documentation — authoritative source for Copilot features, agent mode, and instructions
- Claude Code overview — Anthropic’s agentic CLI used for long-running tasks
- Spec-Kit open source reference — spec-driven development scaffolding
- Model Context Protocol specification — the protocol that binds agents to external systems
- Effective context engineering for AI agents, Anthropic — canonical guidance for token-efficient agent design
- DORA metrics research — the empirical foundation behind four key metrics for software delivery
- SPACE framework, Microsoft Research — developer productivity dimensions beyond velocity
O Developer é a persona que escreve, corrige e evolui código. Em um SDLC AI-nativo, o Developer opera uma pilha de primitivas validadas, não um editor de código.
Resumo executivo
O Developer transforma uma especificação aprovada em código funcional, testado e revisado que vai para produção. Em um SDLC AI-nativo, o Developer opera dentro da fase de Implementação com um conjunto fixo de primitivas: um agente de implementação, quatro slash prompts, instruções com escopo, hooks validados por schema e uma lista curada de MCPs validados. As saídas primárias são mudanças de código, suítes de teste passando, pull requests com contexto rastreável e documentação atualizada.
Papel e responsabilidades
Pense no Developer como um engenheiro estrutural em um canteiro de obras. O arquiteto entrega as plantas que satisfazem as restrições de zoneamento. O engenheiro não reescreve as plantas, mas também não as executa mecanicamente: ele escolhe a mistura de concreto, o arranjo das armaduras e a sequência das concretagens que fazem a estrutura ficar em pé. Em um SDLC AI-nativo, a especificação, as decisões de arquitetura e os critérios de aceitação são artefatos upstream, e o Developer é responsável por traduzi-los em código que sobrevive em produção sem retrabalho.
Responsabilidades primárias:
- Implementar features descritas no
SPECIFICATION.mdusando requisitos EARS e critérios de aceitação Given-When-Then - Praticar Test-Driven Development ponta a ponta, começando pelo teste em falha sugerido pela spec
- Corrigir bugs com o loop entender-reproduzir-corrigir-verificar, nunca pulando para a correção
- Revisar código de pares e agentes de IA com igual rigor
- Atualizar o
CODEMAP.mde docs de desenvolvedor sempre que uma API pública mudar - Manter higiene de dependências, resolver vulnerabilidades dentro do SLA
- Operar o agente Implementer e os prompts
/implement,/fix-bug,/tdd,/refactor
Jobs to be done
- Como Developer, quero converter uma spec aprovada em pull request merged em um dia útil, para que o time mantenha a cadência diária de entrega.
- Como Developer, quero que o agente de IA escreva primeiro o teste em falha, para que toda feature tenha um critério de aceitação verificável por máquina.
- Como Developer, quero reproduzir um bug de produção em um teste local, para que a correção esteja protegida contra regressão.
- Como Developer, quero refatorar sem mudar comportamento, para que a base de código permaneça coerente à medida que cresce.
- Como Developer, quero que a descrição do PR seja auto-gerada a partir das minhas mudanças, para que os revisores tenham contexto completo sem me perguntar.
- Como Developer, quero saber qual atualização de dependência vai quebrar qual teste, para que patches de segurança entrem sem triagem manual.
Dores antes do AI-nativo
- Deriva de spec. A feature no ticket não é a feature que subiu. Sem uma spec legível por máquina ligada a testes, cada sprint redefine silenciosamente o escopo.
- Debugging por copy-paste. Bugs são corrigidos por pattern matching na stack trace, não pela reprodução da causa raiz. A mesma classe de bug volta a cada trimestre.
- Fadiga de revisão. Revisores não conseguem manter todo o sistema na cabeça, então ou aprovam sem ler ou implicam em detalhes, nunca os dois ao mesmo tempo.
- Gaps de teste invisíveis até produção. Relatórios de cobertura mentem porque contam linhas, não branches ou comportamentos. O risco mora nos 15 por cento não testados.
- Atraso de documentação. O
README.mde os docs de API descrevem a arquitetura do trimestre passado. Novos membros do time levam semanas para pegar ritmo.
Fluxo diário AI-nativo
O Developer 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 matinal
- Puxe a última
maine rebase a branch da feature. - Abra o repo no Visual Studio Code. GitHub Copilot Chat carrega o
AGENTS.mde as.github/instructions/*.instructions.mdcom escopo. - Rode
/audit-contextdo kit do Technical Lead (instalado como dependência) para confirmar que o orçamento de contexto está abaixo do limiar. - Leia o ticket ativo, abra o
SPECIFICATION.mdlinkado, confirme os requisitos EARS e critérios de aceitação.
Ciclo de trabalho principal
Cada ciclo de trabalho é uma unidade de mudança, tipicamente de 1 a 4 horas de trabalho focado.
- Spec para teste em falha. Invoque
/tddcom os critérios de aceitação. O agente Implementer escreve um teste em falha que codifica o Given-When-Then e se recusa a prosseguir até o teste ser commitado. - Implementar. Invoque
/implement. O agente escreve o mínimo de código para passar o teste em falha. Completions inline do Copilot cuidam do boilerplate; o developer é dono das decisões. - Auto-revisão. Rode a suíte de testes, lint, type-check. Se algum hook disparar, corrija antes de seguir. Hooks são governança de zero tokens.
- Refatorar. Invoque
/refactorpara melhorar a estrutura sem mudar comportamento. O agente roda a suíte antes e depois para provar equivalência comportamental. - Pull request. A descrição do PR é composta a partir das mensagens de commit e da spec linkada. Copilot Code Review e o agente Quality Reviewer escaneiam o diff.
Ciclo de bug
Quando um bug é reportado, o Developer invoca /fix-bug, que roda o loop entender-reproduzir-corrigir-verificar:
- Entender. Leia o erro, a stack trace e o código relacionado. O agente resume a hipótese.
- Reproduzir. Escreva um teste em falha que reproduz o bug. Nenhuma correção é permitida antes deste passo.
- Corrigir. Mudança mínima para fazer o teste em falha passar.
- Verificar. Rode a suíte completa, não só o teste novo. Confirme que não há regressão.
Fim do dia
- Dê push na branch. GitHub Actions roda o pipeline de CI.
- Atualize o ticket com o link para o PR e os testes que codificam os critérios de aceitação.
- Se a feature tocou uma API pública, verifique que o
CODEMAP.mde os docs gerados estão atualizados.
Primitivas recomendadas
Agentes
| Agente | Arquivo | Propósito |
|---|---|---|
implementer | .github/agents/implementer.agent.md | Implementação, TDD, correção de bugs com entender-reproduzir-corrigir-verificar |
O agente Implementer usa claude-sonnet-4-6 por padrão. Detém as ferramentas read, edit, search, grep, glob, bash. Extended thinking está desabilitado porque tarefas iterativas de implementação perdem qualidade com loops de deep think.
Prompts
| Comando | Arquivo | Propósito |
|---|---|---|
/implement | .github/prompts/implement.prompt.md | Implementar uma feature contra uma spec, mínimo código para passar o teste |
/fix-bug | .github/prompts/fix-bug.prompt.md | Loop de 4 passos para correção de bug, nunca pula a reprodução |
/tdd | .github/prompts/tdd.prompt.md | Escrever primeiro o teste em falha, obrigatório |
/refactor | .github/prompts/refactor.prompt.md | Melhoria estrutural preservando comportamento |
Instruções
applyTo com escopo reduz o custo em tokens em aproximadamente 68 por cento comparado a instruções globais.
Escopo (applyTo) | Arquivo | Propósito |
|---|---|---|
src/**/*.ts,src/**/*.tsx | .github/instructions/typescript.instructions.md | Convenções TypeScript, strict mode, sem any |
tests/**/* | .github/instructions/tests.instructions.md | Padrão AAA, nomes significativos, sem snapshots frágeis |
**/*.sql | .github/instructions/sql.instructions.md | Migrações up-and-down, sem schema drift |
Skills
Skills são carregadas sob demanda, então o developer pode instalar muitas e pagar tokens só pelas que disparam.
tdd-enforcer: se recusa a escrever código de implementação se o teste em falha estiver ausentedep-risk-scan: chama o GitHub MCP para ler alertas do Dependabot e resultados do CodeQL em toda atualização de dependência
Hooks
Hooks custam zero tokens de LLM. São a camada de governança mais forte.
pre-commit: lint, type-check, scan de segredospost-commit: regenera oCODEMAP.mdse a superfície de API pública mudoupre-push: roda a fast test lane
MCPs validados
Todo MCP abaixo está registrado no catálogo de MCPs. Não referencie nenhum MCP que não esteja no catálogo.
| MCP | Status | Uso nesta persona |
|---|---|---|
| GitHub MCP Server | Oficial | Ler o repo, gerenciar PRs e issues, ler runs do Actions |
| Microsoft Learn Docs MCP | Oficial | Puxar documentação atualizada da Microsoft ao implementar em stacks Azure |
| Azure MCP Server | Oficial (Microsoft) | Trazer erros do Application Insights e Azure Monitor para o loop de fix-bug; consultar recursos Azure durante a implementação |
| Azure DevOps MCP Server | Oficial (Microsoft) | Ler o work item ativo no Azure Boards e atualizá-lo após o merge do PR (quando o time usa Azure DevOps em vez de GitHub Issues) |
| Microsoft 365 Agents SDK MCP | Oficial (Microsoft) | Integrar a feature com Teams, Copilot e outras superfícies do Microsoft 365 quando o produto exigir |
| Playwright MCP | Oficial (Microsoft) | Dirigir testes end-to-end contra a feature rodando |
Exemplos reais
Cenário A: implementar um novo endpoint
Entrada: SPECIFICATION.md contém o requisito EARS WHEN um usuário submete um sinistro de aluguel com um ID de contrato válido, THE system SHALL retornar o status do sinistro em até 300 ms.
Invocação: /tdd seguido de /implement.
Saída esperada:
- Um teste de integração em falha
tests/claims/returns-status-under-300ms.spec.tsque assegura tempo de resposta e shape do payload. - Um novo route handler
src/claims/status.controller.tscom código mínimo para passar o teste. - Um PR intitulado
feat(claims): return claim status within 300 mslinkado à seção da spec e ao teste novo.
Cenário B: corrigir um bug de produção
Entrada: Um alerta do Application Insights (via Azure Monitor) reporta null pointer em ContractService.findById disparado por requisições concorrentes.
Invocação: /fix-bug.
Saída esperada:
- Um teste unitário em falha
tests/contracts/find-by-id-concurrency.spec.tsque reproduz a race condition. - Uma correção em
ContractServiceque introduz optimistic locking, sem nenhuma outra mudança comportamental. - Um PR intitulado
fix(contracts): eliminate race in ContractService.findByIdlinkado ao incidente do Application Insights e ao teste novo. - Uma resolução pós-merge do alerta do Application Insights com a URL do PR registrada na linha do tempo do incidente.
Cenário C: refactor preservando comportamento
Entrada: Um orders.service.ts monolítico de 1.200 linhas precisa ser dividido em módulos coesos.
Invocação: /refactor.
Saída esperada:
- A suíte de testes completa roda verde antes do refactor.
orders.service.tsé dividido emorders/pricing.ts,orders/validation.ts,orders/persistence.tscom superfície pública idêntica.- A suíte de testes completa roda verde depois do refactor.
- Um PR intitulado
refactor(orders): split service into pricing, validation, persistencecom resumo do diff e relatório de paridade de testes.
Anti-padrões
- Pular o teste em falha. Escrever a implementação primeiro e adicionar um teste que por acaso passa derrota o TDD. Mitigação: o skill
tdd-enforcerse recusa a gerar código de implementação quando não existe teste em falha. - Confiar em percentual de cobertura como sinal de qualidade. Cobertura de linha é métrica de vaidade. Mitigação: trackeie mutation score ou branch coverage, e inclua asserções de caminho negativo em todo arquivo de teste.
- Deixar o Copilot escolher nomes sem contexto. Nomes alucinados a partir de padrões de fora do repo produzem código inconsistente. Mitigação: dê escopo nas instruções com
applyToe ensine o vocabulário de domínio ao Copilot. - Refactors grandes one-shot. Refactors que tocam dezenas de arquivos de uma vez não podem ser revisados com segurança. Mitigação: divida em uma sequência de commits pequenos, preservando comportamento, cada um verde na suíte.
- Ignorar hooks. Um pre-commit hook falhando é um presente, não um bloqueador. Mitigação: trate a saída do hook como a primeira revisão; corrija antes de commitar.
KPIs e métricas de impacto
A persona Developer é avaliada com uma mistura de DORA, SPACE e métricas Agentic DevOps.
| Métrica | Baseline (manual) | Alvo (agêntico) | Medição |
|---|---|---|---|
| Lead time de PR | 3 dias | < 1 dia | GitHub API |
| Frequência de deploy | Semanal | Várias por dia | GitHub Deployments |
| Taxa de falha de mudança | 20 por cento | < 5 por cento | Application Insights ou incidentes pós-deploy |
| Tempo médio de restauração | 4 horas | < 1 hora | Rastreador de incidentes |
| Confiabilidade da suíte | 85 por cento | > 99 por cento | Flake rate |
| Mutation score | Desconhecido | > 70 por cento | Stryker, Pitest ou equivalente |
| Taxa de retrabalho | 30 por cento | < 10 por cento | Percentual de código merged reescrito em 30 dias |
| Eficiência de tokens | N/A | < 1M tokens por PR merged | Relatório de uso do Copilot |
Maturidade em quatro níveis
| Nível | Nome | Marcadores |
|---|---|---|
| L1 | Manual | Copy-paste de Stack Overflow, sem prompt padrão, sem instruções com escopo, sem MCPs |
| L2 | Assistido | Apenas autocomplete do GitHub Copilot, sem agente, AGENTS.md ausente ou genérico |
| L3 | Aumentado | Um agente Implementer, quatro slash prompts, instruções com escopo, um ou dois MCPs, fluxo TDD |
| L4 | Agêntico | Kit completo de primitivas, hooks enforçados, MCPs validados somente do catálogo, narrativa de PR auto-gerada, scorecard de maturidade acima de 80 por cento |
Integração com outras personas
Entregas:
- Do Technical Lead: tabela de roteamento, instruções com escopo,
AGENTS.md, baseline do projeto - Do Software Architect:
CODEMAP.md,IMPLEMENTATION_PLAN.mdcom marcadores paralelos, contratos de API - Para QA Engineer: PR merged com testes passando, matriz de testes atualizada
- Para Tech Writer:
CODEMAP.mdatualizado, novas superfícies de API pública, entrada no changelog - Para SRE: artefato pronto para deploy, configuração de feature flag, atualizações de runbook
Glossário
- Agente: um papel de LLM configurado com ferramentas, instruções e um shape de saída definido. Vive em
.github/agents/<nome>.agent.md. - Prompt: um slash command reutilizável que invoca um agente com uma tarefa específica. Vive em
.github/prompts/<nome>.prompt.md. - Instruções: orientação com escopo aplicada por pattern match em paths de arquivo via
applyTo. Vive em.github/instructions/<nome>.instructions.md. - Skill: capacidade carregada sob demanda que ativa por match de palavra-chave. Custa tokens apenas quando dispara.
- Hook: regra de zero tokens enforçada em um evento específico de ciclo de vida (pre-commit, post-commit, pre-push, pre-merge).
- MCP: servidor Model Context Protocol que expõe sistemas externos (GitHub, Azure, Azure DevOps, etc.) ao agente.
- EARS: Easy Approach to Requirements Syntax. Formato usado no
SPECIFICATION.md. - TDD: Test-Driven Development. Escreva primeiro o teste em falha, depois o mínimo de código para passá-lo.
- CODEMAP: Documento gerado que descreve o esqueleto do programa para o LLM e para humanos.
Referências
- Documentação do GitHub Copilot — fonte autoritativa para features do Copilot, modo agent e instruções
- Visão geral do Claude Code — CLI agêntico da Anthropic usado para tarefas longas
- Spec-Kit referência open source — scaffolding de desenvolvimento spec-driven
- Especificação do Model Context Protocol — o protocolo que liga agentes a sistemas externos
- Effective context engineering for AI agents, Anthropic — guia canônico para design de agentes eficiente em tokens
- Pesquisa DORA — fundação empírica por trás das quatro métricas-chave de entrega de software
- Framework SPACE, Microsoft Research — dimensões de produtividade de desenvolvedor além de velocidade
El Developer es la persona que escribe, corrige y evoluciona código. En un SDLC AI-nativo, el Developer opera una pila de primitivas validadas, no un editor de código.
Resumen ejecutivo
El Developer convierte una especificación aprobada en código funcional, probado y revisado que llega a producción. En un SDLC AI-nativo, el Developer opera dentro de la fase de Implementación con un conjunto fijo de primitivas: un agente de implementación, cuatro slash prompts, instrucciones con alcance, hooks validados por schema y una lista curada de MCPs validados. Las salidas primarias son cambios de código, suites de prueba que pasan, pull requests con contexto rastreable y documentación actualizada.
Rol y responsabilidades
Piensa en el Developer como un ingeniero estructural en una obra. El arquitecto entrega los planos que satisfacen las restricciones de zonificación. El ingeniero no reescribe los planos, pero tampoco los ejecuta mecánicamente: elige la mezcla de concreto, la disposición del refuerzo y la secuencia de vertidos que hacen que la estructura se mantenga en pie. En un SDLC AI-nativo, la especificación, las decisiones de arquitectura y los criterios de aceptación son artefactos upstream, y el Developer es responsable de traducirlos a código que sobreviva en producción sin retrabajo.
Responsabilidades primarias:
- Implementar features descritas en
SPECIFICATION.mdusando requisitos EARS y criterios de aceptación Given-When-Then - Practicar Test-Driven Development de punta a punta, comenzando por la prueba en falla sugerida por la spec
- Corregir bugs con el loop entender-reproducir-corregir-verificar, nunca saltando a la corrección
- Revisar código de pares y agentes de IA con el mismo rigor
- Actualizar el
CODEMAP.mdy docs de desarrollador siempre que cambie una API pública - Mantener higiene de dependencias, resolver vulnerabilidades dentro del SLA
- Operar el agente Implementer y los prompts
/implement,/fix-bug,/tdd,/refactor
Jobs to be done
- Como Developer, quiero convertir una spec aprobada en un pull request mergeado en un día hábil, para que el equipo mantenga la cadencia diaria de entrega.
- Como Developer, quiero que el agente de IA escriba primero la prueba en falla, para que cada feature tenga un criterio de aceptación verificable por máquina.
- Como Developer, quiero reproducir un bug de producción en una prueba local, para que la corrección esté protegida contra regresión.
- Como Developer, quiero refactorizar sin cambiar comportamiento, para que la base de código permanezca coherente a medida que crece.
- Como Developer, quiero que la descripción del PR sea auto-generada a partir de mis cambios, para que los revisores tengan contexto completo sin preguntarme.
- Como Developer, quiero saber qué actualización de dependencia va a romper qué prueba, para que los parches de seguridad entren sin triage manual.
Dolores antes del AI-nativo
- Deriva de spec. La feature en el ticket no es la feature que salió. Sin una spec legible por máquina ligada a pruebas, cada sprint redefine silenciosamente el alcance.
- Debugging por copy-paste. Los bugs se corrigen por pattern matching en la stack trace, no reproduciendo la causa raíz. La misma clase de bug vuelve cada trimestre.
- Fatiga de revisión. Los revisores no pueden mantener todo el sistema en la cabeza, así que o aprueban sin leer o se quejan de detalles, nunca ambas a la vez.
- Gaps de prueba invisibles hasta producción. Los reportes de cobertura mienten porque cuentan líneas, no branches ni comportamientos. El riesgo vive en el 15 por ciento no probado.
- Retraso de documentación. El
README.mdy los docs de API describen la arquitectura del trimestre pasado. Los nuevos miembros del equipo tardan semanas en ponerse al día.
Flujo diario AI-nativo
El Developer 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 matinal
- Trae la última
mainy haz rebase de la branch de la feature. - Abre el repo en Visual Studio Code. GitHub Copilot Chat carga el
AGENTS.mdy las.github/instructions/*.instructions.mdcon alcance. - Ejecuta
/audit-contextdel kit del Technical Lead (instalado como dependencia) para confirmar que el presupuesto de contexto está bajo el umbral. - Lee el ticket activo, abre el
SPECIFICATION.mdenlazado, confirma los requisitos EARS y criterios de aceptación.
Ciclo de trabajo principal
Cada ciclo de trabajo es una unidad de cambio, típicamente de 1 a 4 horas de trabajo enfocado.
- Spec a prueba en falla. Invoca
/tddcon los criterios de aceptación. El agente Implementer escribe una prueba en falla que codifica el Given-When-Then y se rehúsa a avanzar hasta que la prueba esté commiteada. - Implementar. Invoca
/implement. El agente escribe el mínimo código para pasar la prueba en falla. Los completions inline de Copilot manejan el boilerplate; el developer es dueño de las decisiones. - Auto-revisión. Ejecuta la suite de pruebas, lint, type-check. Si algún hook dispara, corrige antes de seguir. Los hooks son gobernanza de cero tokens.
- Refactorizar. Invoca
/refactorpara mejorar la estructura sin cambiar el comportamiento. El agente ejecuta la suite antes y después para demostrar equivalencia comportamental. - Pull request. La descripción del PR se compone a partir de los mensajes de commit y la spec enlazada. Copilot Code Review y el agente Quality Reviewer escanean el diff.
Ciclo de bug
Cuando se reporta un bug, el Developer invoca /fix-bug, que ejecuta el loop entender-reproducir-corregir-verificar:
- Entender. Lee el error, la stack trace y el código relacionado. El agente resume la hipótesis.
- Reproducir. Escribe una prueba en falla que reproduce el bug. No se permite corrección antes de este paso.
- Corregir. Cambio mínimo para hacer pasar la prueba en falla.
- Verificar. Ejecuta la suite completa, no solo la prueba nueva. Confirma que no haya regresión.
Fin del día
- Haz push de la branch. GitHub Actions ejecuta el pipeline de CI.
- Actualiza el ticket con el enlace al PR y las pruebas que codifican los criterios de aceptación.
- Si la feature tocó una API pública, verifica que el
CODEMAP.mdy los docs generados estén actualizados.
Primitivas recomendadas
Agentes
| Agente | Archivo | Propósito |
|---|---|---|
implementer | .github/agents/implementer.agent.md | Implementación, TDD, corrección de bugs con entender-reproducir-corregir-verificar |
El agente Implementer usa claude-sonnet-4-6 por defecto. Mantiene las herramientas read, edit, search, grep, glob, bash. Extended thinking está deshabilitado porque las tareas iterativas de implementación pierden calidad con loops de deep think.
Prompts
| Comando | Archivo | Propósito |
|---|---|---|
/implement | .github/prompts/implement.prompt.md | Implementar una feature contra una spec, mínimo código para pasar la prueba |
/fix-bug | .github/prompts/fix-bug.prompt.md | Loop de 4 pasos para corrección de bug, nunca salta la reproducción |
/tdd | .github/prompts/tdd.prompt.md | Escribir primero la prueba en falla, obligatorio |
/refactor | .github/prompts/refactor.prompt.md | Mejora estructural preservando el comportamiento |
Instrucciones
applyTo con alcance reduce el costo en tokens aproximadamente un 68 por ciento comparado con instrucciones globales.
Alcance (applyTo) | Archivo | Propósito |
|---|---|---|
src/**/*.ts,src/**/*.tsx | .github/instructions/typescript.instructions.md | Convenciones TypeScript, strict mode, sin any |
tests/**/* | .github/instructions/tests.instructions.md | Patrón AAA, nombres significativos, sin snapshots frágiles |
**/*.sql | .github/instructions/sql.instructions.md | Migraciones up-and-down, sin schema drift |
Skills
Los skills se cargan bajo demanda, así el developer puede instalar muchos y pagar tokens solo por los que disparan.
tdd-enforcer: se rehúsa a escribir código de implementación si la prueba en falla está ausentedep-risk-scan: llama al GitHub MCP para leer alertas de Dependabot y resultados de CodeQL en cada actualización de dependencia
Hooks
Los hooks cuestan cero tokens de LLM. Son la capa de gobernanza más fuerte.
pre-commit: lint, type-check, scan de secretospost-commit: regenera elCODEMAP.mdsi la superficie de API pública cambiópre-push: ejecuta la fast test lane
MCPs validados
Cada MCP abajo está registrado en el catálogo de MCPs. No hagas referencia a ningún MCP que no esté en el catálogo.
| MCP | Estado | Uso en esta persona |
|---|---|---|
| GitHub MCP Server | Oficial | Leer el repo, gestionar PRs e issues, leer runs de Actions |
| Microsoft Learn Docs MCP | Oficial | Traer documentación actualizada de Microsoft al implementar en stacks Azure |
| Azure MCP Server | Oficial (Microsoft) | Traer errores de Application Insights y Azure Monitor al loop de fix-bug; consultar recursos Azure durante la implementación |
| Azure DevOps MCP Server | Oficial (Microsoft) | Leer el work item activo en Azure Boards y actualizarlo tras el merge del PR (cuando el equipo usa Azure DevOps en lugar de GitHub Issues) |
| Microsoft 365 Agents SDK MCP | Oficial (Microsoft) | Integrar la feature con Teams, Copilot y otras superficies de Microsoft 365 cuando el producto lo requiera |
| Playwright MCP | Oficial (Microsoft) | Dirigir pruebas end-to-end contra la feature corriendo |
Ejemplos reales
Escenario A: implementar un nuevo endpoint
Entrada: SPECIFICATION.md contiene el requisito EARS WHEN un usuario envía un reclamo de alquiler con un ID de contrato válido, THE system SHALL devolver el estado del reclamo en menos de 300 ms.
Invocación: /tdd seguido de /implement.
Salida esperada:
- Una prueba de integración en falla
tests/claims/returns-status-under-300ms.spec.tsque asegura tiempo de respuesta y shape del payload. - Un nuevo route handler
src/claims/status.controller.tscon código mínimo para pasar la prueba. - Un PR titulado
feat(claims): return claim status within 300 msenlazado a la sección de la spec y a la prueba nueva.
Escenario B: corregir un bug de producción
Entrada: Una alerta de Application Insights (vía Azure Monitor) reporta null pointer en ContractService.findById disparado por solicitudes concurrentes.
Invocación: /fix-bug.
Salida esperada:
- Una prueba unitaria en falla
tests/contracts/find-by-id-concurrency.spec.tsque reproduce la race condition. - Una corrección en
ContractServiceque introduce optimistic locking, sin ningún otro cambio comportamental. - Un PR titulado
fix(contracts): eliminate race in ContractService.findByIdenlazado al incidente de Application Insights y a la prueba nueva. - Una resolución post-merge de la alerta de Application Insights con la URL del PR registrada en la línea de tiempo del incidente.
Escenario C: refactor preservando comportamiento
Entrada: Un orders.service.ts monolítico de 1.200 líneas necesita dividirse en módulos cohesivos.
Invocación: /refactor.
Salida esperada:
- La suite de pruebas completa corre verde antes del refactor.
orders.service.tsse divide enorders/pricing.ts,orders/validation.ts,orders/persistence.tscon superficie pública idéntica.- La suite de pruebas completa corre verde después del refactor.
- Un PR titulado
refactor(orders): split service into pricing, validation, persistencecon resumen del diff y reporte de paridad de pruebas.
Anti-patrones
- Saltar la prueba en falla. Escribir la implementación primero y agregar una prueba que por casualidad pasa derrota el TDD. Mitigación: el skill
tdd-enforcerse rehúsa a generar código de implementación cuando no existe prueba en falla. - Confiar en el porcentaje de cobertura como señal de calidad. La cobertura de línea es métrica de vanidad. Mitigación: trackea mutation score o branch coverage, e incluye aserciones de camino negativo en cada archivo de prueba.
- Dejar que Copilot elija nombres sin contexto. Nombres alucinados a partir de patrones fuera del repo producen código inconsistente. Mitigación: da alcance a las instrucciones con
applyToy enseña el vocabulario de dominio a Copilot. - Refactors grandes one-shot. Los refactors que tocan decenas de archivos a la vez no se pueden revisar con seguridad. Mitigación: divide en una secuencia de commits pequeños, preservando comportamiento, cada uno verde en la suite.
- Ignorar hooks. Un pre-commit hook que falla es un regalo, no un bloqueador. Mitigación: trata la salida del hook como la primera revisión; corrige antes de commitear.
KPIs y métricas de impacto
La persona Developer se evalúa con una mezcla de DORA, SPACE y métricas de Agentic DevOps.
| Métrica | Baseline (manual) | Objetivo (agéntico) | Medición |
|---|---|---|---|
| Lead time de PR | 3 días | < 1 día | GitHub API |
| Frecuencia de deploy | Semanal | Varias por día | GitHub Deployments |
| Tasa de falla de cambio | 20 por ciento | < 5 por ciento | Application Insights o incidentes post-deploy |
| Tiempo medio de restauración | 4 horas | < 1 hora | Rastreador de incidentes |
| Confiabilidad de la suite | 85 por ciento | > 99 por ciento | Flake rate |
| Mutation score | Desconocido | > 70 por ciento | Stryker, Pitest o equivalente |
| Tasa de retrabajo | 30 por ciento | < 10 por ciento | Porcentaje de código mergeado reescrito en 30 días |
| Eficiencia de tokens | N/A | < 1M tokens por PR mergeado | Reporte de uso de Copilot |
Madurez en cuatro niveles
| Nivel | Nombre | Marcadores |
|---|---|---|
| L1 | Manual | Copy-paste de Stack Overflow, sin prompt estándar, sin instrucciones con alcance, sin MCPs |
| L2 | Asistido | Solo autocomplete de GitHub Copilot, sin agente, AGENTS.md ausente o genérico |
| L3 | Aumentado | Un agente Implementer, cuatro slash prompts, instrucciones con alcance, uno o dos MCPs, flujo TDD |
| L4 | Agéntico | Kit completo de primitivas, hooks enforzados, MCPs validados solo del catálogo, narrativa de PR auto-generada, scorecard de madurez por encima del 80 por ciento |
Integración con otras personas
Entregas:
- Del Technical Lead: tabla de routing, instrucciones con alcance,
AGENTS.md, baseline del proyecto - Del Software Architect:
CODEMAP.md,IMPLEMENTATION_PLAN.mdcon marcadores paralelos, contratos de API - Al QA Engineer: PR mergeado con pruebas pasando, matriz de pruebas actualizada
- Al Tech Writer:
CODEMAP.mdactualizado, nuevas superficies de API pública, entrada en el changelog - Al SRE: artefacto listo para deploy, configuración de feature flag, actualizaciones de runbook
Glosario
- Agente: un rol de LLM configurado con herramientas, instrucciones y un shape de salida definido. Vive en
.github/agents/<nombre>.agent.md. - Prompt: un slash command reutilizable que invoca un agente con una tarea específica. Vive en
.github/prompts/<nombre>.prompt.md. - Instrucciones: guía con alcance aplicada por pattern match en paths de archivo vía
applyTo. Vive en.github/instructions/<nombre>.instructions.md. - Skill: capacidad cargada bajo demanda que se activa por match de palabra clave. Cuesta tokens solo cuando dispara.
- Hook: regla de cero tokens enforzada en un evento específico del ciclo de vida (pre-commit, post-commit, pre-push, pre-merge).
- MCP: servidor Model Context Protocol que expone sistemas externos (GitHub, Azure, Azure DevOps, etc.) al agente.
- EARS: Easy Approach to Requirements Syntax. Formato usado en
SPECIFICATION.md. - TDD: Test-Driven Development. Escribe primero la prueba en falla, luego el mínimo código para pasarla.
- CODEMAP: Documento generado que describe el esqueleto del programa para el LLM y para humanos.
Referencias
- Documentación de GitHub Copilot — fuente autoritativa para features de Copilot, modo agent e instrucciones
- Visión general de Claude Code — CLI agéntico de Anthropic usado para tareas largas
- Spec-Kit referencia open source — scaffolding de desarrollo spec-driven
- Especificación del Model Context Protocol — el protocolo que liga agentes a sistemas externos
- Effective context engineering for AI agents, Anthropic — guía canónica para diseño de agentes eficiente en tokens
- Investigación DORA — fundación empírica detrás de las cuatro métricas clave de entrega de software
- Framework SPACE, Microsoft Research — dimensiones de productividad de desarrollador más allá de velocidad