---
name: reversa-coding
description: Conduz a execução do actions.md em código. Atualiza checkboxes para [X], escreve progress.jsonl, gera legacy-impact.md e regression-watch.md. Use quando o usuário digitar "/reversa-coding", "reversa-coding", "executar plano" ou pedir para começar a codar a feature ativa. Último skill do ciclo forward, depois de `/reversa-to-do` (e opcionalmente `/reversa-audit` ou `/reversa-quality`).
license: MIT
compatibility: Claude Code, Codex, Cursor, Gemini CLI e demais agentes compatíveis com Agent Skills.
metadata:
  author: sandeco
  version: "1.0.0"
  framework: reversa
  phase: forward
  stage: coding
---

Você é o executor. Sua missão é transformar `actions.md` em código real, fase por fase, respeitando paralelismo e dependências. Ao terminar, deixar dois rastros para auditoria futura: `legacy-impact.md` (o que foi mexido no legado) e `regression-watch.md` (o que precisa continuar verdadeiro nas próximas extrações).

## Antes de começar

1. Leia `.reversa/state.json` para resolver `output_folder` e `forward_folder`
2. Use os valores reais nos lugares onde o texto mencionar `_reversa_sdd/` ou `_reversa_forward/`

## Pré-requisito inegociável: extração reversa

Esse skill **EXIGE** que a pipeline reversa tenha sido executada antes pelo menos uma vez. Sem `_reversa_sdd/`, os dois artefatos centrais do skill (`legacy-impact.md` e `regression-watch.md`) ficam sem âncora e perdem completamente o valor, o ciclo forward vira um framework genérico qualquer. O Reversa só faz sentido com a ponte legado-código viva.

A verificação é estrita: `_reversa_sdd/` precisa existir como diretório E conter pelo menos `architecture.md` E `domain.md`. Se qualquer condição falhar, o skill aborta com mensagem clara, NÃO oferece opção de prosseguir mesmo assim, NÃO escreve nada em disco.

## Verificações Iniciais

1. Leia `.reversa/active-requirements.json`
   1.1. Se ausente, aborte com mensagem apontando `/reversa-requirements`
2. Verifique a existência de `feature-dir/actions.md`
   2.1. Se ausente, aborte com mensagem apontando `/reversa-to-do`
3. Verifique o pré-requisito da extração reversa:
   3.1. Se `_reversa_sdd/` não existir como diretório, aborte com a mensagem:

       > 🛑 `/reversa-coding` exige a pipeline reversa executada antes. A pasta `_reversa_sdd/` não foi encontrada.
       >
       > Execute `/reversa` para gerar a extração do legado e depois volte para cá. Sem esse contexto, `legacy-impact.md` e `regression-watch.md` ficariam sem âncora e o ciclo forward perderia seu diferencial.

   3.2. Se `_reversa_sdd/` existir mas faltar `architecture.md`, aborte com a mensagem:

       > 🛑 `/reversa-coding` exige `_reversa_sdd/architecture.md` (gerado pelo Architect na pipeline reversa). O arquivo está ausente, talvez a extração tenha sido parcial.
       >
       > Execute `/reversa` em modo completo (mínimo `essencial`) e volte para cá.

   3.3. Se `_reversa_sdd/architecture.md` existir mas faltar `_reversa_sdd/domain.md`, aborte com a mensagem:

       > 🛑 `/reversa-coding` exige `_reversa_sdd/domain.md` (gerado pelo Detective na pipeline reversa). O arquivo está ausente.
       >
       > Execute `/reversa` para completar a extração e volte para cá.

   3.4. Em todos os casos do passo 3, NÃO crie `legacy-impact.md`, NÃO crie `regression-watch.md`, NÃO toque em `actions.md`, NÃO escreva `progress.jsonl`. Apenas relate e encerre.

4. Aplique `before-coding` da forma padrão

## Escopo da rodada

1. Se o argumento livre indicar fase ou intervalo de IDs (ex.: "só Núcleo", "T001-T005"), restrinja a execução a esse escopo
2. Caso contrário, execute em ordem todas as ações `[ ]` ainda não concluídas

## Loop de execução por fase

Para cada fase, na ordem Preparação, Testes, Núcleo, Integração, Polimento:

1. Selecione todas as ações da fase com status `[ ]`
2. Calcule o conjunto independente (ações sem dependência aberta)
3. Para o conjunto independente, identifique sub-conjunto marcado `[//]`
   3.1. Execute esse sub-conjunto pensando em cada ação como bloco coerente, mas relate à parte
4. Execute as demais ações do conjunto sequencialmente
5. Após cada ação:
   5.1. Atualize `feature-dir/actions.md` mudando `[ ]` para `[X]`
   5.2. Escreva linha em `feature-dir/progress.jsonl` com timestamp ISO 8601, ID da ação, status final, arquivos tocados
6. Se uma ação falhar:
   6.1. Mantenha `[ ]` no actions
   6.2. Registre `status: failed` no progress
   6.3. Pare a fase e relate ao usuário

## Geração do legacy-impact.md

Após executar (mesmo que parcialmente):

1. Para cada arquivo do projeto tocado, mapeie ao componente correspondente em `_reversa_sdd/architecture.md` quando possível
2. Para cada componente afetado, classifique o tipo de impacto: `regra-alterada`, `regra-removida`, `regra-nova`, `componente-novo`, `componente-extinto`, `delta-de-dados`, `delta-de-contrato-externo`
3. Atribua severidade alinhada com `/reversa-audit` (CRITICAL, HIGH, MEDIUM, LOW)
4. Liste regras 🟢 do `_reversa_sdd/domain.md` que continuam intactas (vão para a seção "Preservadas")
5. Liste regras 🟢 que foram alteradas ou removidas (vão para a seção "Modificadas")

Estrutura do arquivo:

1. Cabeçalho com data e identificador da feature
2. Tabela `Arquivo afetado | Componente | Tipo | Severidade | Justificativa`
3. Diff conceitual por componente, em prosa
4. Seção "Preservadas"
5. Seção "Modificadas"

Grave em `feature-dir/legacy-impact.md` com escrita atômica, rewrite completo.

## Geração do regression-watch.md

1. Para cada regra na seção "Modificadas" do `legacy-impact.md`, gere um watch item
2. Para regras explicitamente removidas, gere watch item do tipo `ausência`
3. Para regras alteradas, gere watch item do tipo `redação` ou `presença` conforme o caso
4. Para regras com confidência rebaixada, gere watch item do tipo `confidência`
5. Atribua ID estável `W001`, `W002`, ..., reciclando IDs antigos do arquivo se já existir

Estrutura:

1. Cabeçalho com identificador da feature
2. Tabela `ID | Origem (arquivo, seção) | Regra esperada após mudança | Tipo de verificação | Sinal de violação`
3. Seção "Histórico de re-extrações" inicialmente vazia, será preenchida pelo agente reverso quando rodar `/reversa` de novo
4. Seção "Arquivadas" inicialmente vazia

NUNCA inclua no watch principal regras que originalmente eram 🟡 ou 🔴, essas vão para uma seção "Observações" sem peso de regressão.

Grave em `feature-dir/regression-watch.md`. A primeira execução cria o arquivo; execuções seguintes fazem append nas seções de itens novos, jamais reescrevendo histórico ou IDs antigos.

## Atualização do progress.jsonl

Cada linha deve ter, no mínimo:

```json
{"ts":"2026-05-05T16:30:00Z","action":"T003","status":"done","files":["src/x/y.js"]}
```

Append-only. Jamais reescreva linhas anteriores, mesmo se descobrir que ficaram erradas. Para corrigir, adicione nova linha `status: corrected` com o ID alvo.

## Ganchos Pós-execução

Aplique `after-coding` da forma padrão.

## Relatório final ao usuário

1. Quantas ações executadas com sucesso
2. Quantas falharam (se houver)
3. Caminho absoluto de `actions.md`, `progress.jsonl`, `legacy-impact.md`, `regression-watch.md`
4. Quantos watch items foram criados nessa rodada
5. Aviso explícito: para fechar o ciclo, rode `/reversa` (extração reversa) novamente em algum momento futuro
6. Se a execução foi parcial, indique a próxima fase ou ação pendente

NUNCA dispare a re-extração sozinho, isso é decisão do usuário.

Termine com:

> Digite **CONTINUAR** para prosseguir com `/reversa` (re-extração) ou outra ação que o usuário quiser.
