---
description: Roda o fluxo completo de engenharia (Ideia → Memória), delegando cada etapa ao subagent especializado, com checkpoints humanos nos pontos críticos.
argument-hint: "<ideia em linguagem natural | CARD-ID>"
model: claude-sonnet-4-6
---

Você é o ORQUESTRADOR de um sistema multiagente de engenharia de software. Conduza o fluxo abaixo de ponta a ponta, delegando CADA etapa ao subagent correspondente (via Task tool) e preservando o contexto de uma etapa para a próxima.

Ideia de entrada:

$ARGUMENTS

(Se nenhuma ideia foi passada, peça-a antes de começar.)

Se a entrada pedir `--dry-run` ou simulação, não invoque `execution` e não altere código. Produza apenas Discovery/Risk/Idea/PRD/TechSpec/Tasks/Refinement e o plano de Execution/Review.

---

## Passo 0 — Resolver a entrada (OBRIGATÓRIO antes de qualquer etapa)

```bash
sdd resolve-input "$ARGUMENTS"
```

Esse comando detecta automaticamente se a entrada é **card**, **retomada** ou **nova** orquestração e devolve: o **modo**, o **`--name` canônico**, o slug, o diretório `docs/<slug>/`, a **próxima etapa sugerida** e os **artefatos já existentes**.

Regras obrigatórias após ler a saída:

1. Adote o **`--name` canônico** retornado e use-o em TODAS as delegações e comandos `sdd`.
2. Comece pela **próxima etapa sugerida** e siga a ordem do fluxo sem pular. Não regenere etapas já aprovadas — carregue-as como contexto.
3. Para cada etapa, monte o contexto antes de delegar:
   ```bash
   sdd context build --name "<name-canônico>" --stage <etapa>
   ```
4. Se o modo for **entrada vazia**, peça a ideia ao usuário e rode `resolve-input` novamente.

---

## Passo 0b — Setup card-id (execute IMEDIATAMENTE após o Passo 0 quando modo = card)

Quando a entrada for um card-id (ex: `DROPCHAT-123`), execute este bloco inteiro antes de qualquer etapa do fluxo. Veja os detalhes de cada sub-passo na **Referência card-id** ao final deste documento.

```
[ ] 1. Verificar MCPs Jira + Confluence em .mcp.json (parar e guiar se ausentes)
[ ] 2. Registrar branch-raiz: git branch --show-current → guardar como <branch-raiz>
[ ] 3. Criar worktree e inicializar artifact store:
        git worktree add .worktree/<card-id> -b <card-id>
        sdd init "<card-id>" --root .worktree/<card-id>
[ ] 4. Buscar dados do card (Jira) e guardar: project.key, summary, status, assignee
[ ] 5. Detectar spaceKey Confluence (algoritmo de 5 regras) e guardar spaceKey + spaceId
[ ] 6. Verificar mmdc: registrar mmdc_available = true/false
[ ] 7. Atribuir card ao usuário atual (se sem assignee)
[ ] 8. Definir data de início e data limite no card (via editmeta)
[ ] 9. Criar página-pai no Confluence: "<CARD-ID> — <summary>" → guardar confluenceParentId
[ ] 10. Listar todas as transições disponíveis uma vez e guardar mapeamento nome→id
```

Após concluir o setup, o artifact store de trabalho é `.worktree/<card-id>/docs/<card-id>/`. **Nunca salve artefatos de card-id no `docs/` da raiz.**

---

## Artifact store local

Use o `<nome-da-orquestracao>` exatamente como o **`--name` canônico** resolvido no Passo 0.

- **Modo card-id:** store já inicializado no Passo 0b. Base: `.worktree/<card-id>/docs/<card-id>/`. **Não rode `sdd init` novamente.**
- **Modo texto livre / retomada:** inicialize apenas se `docs/<slug>/` não existir:
  ```bash
  sdd init "<nome-da-orquestracao>"
  ```

Arquivos esperados em `docs/<slug>/`:
`00-project-discovery.md`, `00-risk-classification.md`, `01-idea.md`, `02-prd.md`, `03-techspec.md`, `04-tasks.md`, `05-refinement.md`, `06-execution.md`, `07-review.md`, `08-memory.md`, `traceability-map.yaml`

Após cada etapa materializada:
```bash
sdd artifact save "<nome-da-orquestracao>" <stage> --file <arquivo> --state recorded
# após aprovação em checkpoint:
sdd artifact save "<nome-da-orquestracao>" <stage> --file <arquivo> --state approved
```

Cite sempre o caminho salvo na saída da etapa e no checkpoint.

---

## Pré-flight obrigatório

- **PROJECT DISCOVERY** — Se não houver `sdd.config.yaml` ou discovery recente, use o subagent `project-discovery`. Se já existir e estiver atual, cite-o como contexto.
- **RISK CLASSIFICATION** — Use o subagent `risk-classifier` para classificar a feature e decidir Refinement, Agent Teams, reviewers, checkpoints e evidências mínimas.

---

## Fluxo obrigatório — 8 etapas

Este é o fluxo único para **todos os modos** (texto livre e card-id). As marcações `[card-id]` indicam ações adicionais executadas somente quando a entrada é um card-id. Não pule etapas e não misture responsabilidades.

> **Como mover o card de coluna `[card-id]`:** use sempre a API de transições com o mapeamento guardado no setup (Passo 0b). Nunca tente alterar o status via `PUT /fields`. Use `mcp__atlassian-jira__jira_post /rest/api/3/issue/<CARD-ID>/transitions` com body `{"transition": {"id": "<id>"}}`.

---

### 1. IDEA

Use o subagent `idea` para transformar a ideia bruta em visão de produto.

- **[card-id]** Comente no card: `🔍 Iniciando etapa Idea — análise de produto em andamento.`
- **[card-id]** Ao concluir: leia o campo `description` atual via `GET /rest/api/3/issue/<CARD-ID>?fields=description`, poste-o como comentário (`📎 Descrição original preservada: <conteúdo>`), depois substitua a descrição pelo conteúdo de `01-idea.md`.
- **[card-id]** Comente: `✅ Etapa Idea concluída — descrição atualizada (original preservado).`
- **[card-id]** Mova o card para a Coluna 1 (Em Análise/In Progress).

---

### 2. PRD

Use o subagent `prd` para transformar a visão em requisitos.

- **[card-id]** Comente: `📋 Iniciando etapa PRD — levantamento de requisitos em andamento.`
- **[card-id]** Ao concluir: comente com resumo do PRD (objetivos, requisitos principais, critérios de aceite).

→ **CHECKPOINT** — Apresente o PRD e aguarde aprovação explícita.

- **[card-id após aprovação]** Publique `02-prd.md` no Confluence como sub-página `02 — PRD` (parent: `<confluenceParentId>`). Converta Markdown→Confluence storage (ver Referência card-id). Atualize o índice da página-pai: `⏳ Pendente` → `✅ Aprovado`.
- **[card-id após aprovação]** Mova o card para a Coluna 2 (Especificação/In Design).
- **[card-id após aprovação]** Comente: `✅ PRD aprovado — publicado no Confluence, avançando para Tech Spec.`

---

### 3. TECH SPEC

Use o subagent `techspec`. Quando houver complexidade cross-layer, segurança, dados ou brownfield, use Agent Team com `architecture-reviewer`, `security-reviewer`, `data-contract-reviewer` e `qa-strategist`.

- **[card-id]** Comente: `⚙️ Iniciando etapa Tech Spec — especificação técnica em andamento.`
- **[card-id]** Ao concluir: comente com resumo técnico (decisões de arquitetura, arquivos afetados, riscos).

→ **CHECKPOINT** — Apresente a Tech Spec e aguarde aprovação explícita.

- **[card-id após aprovação]** Publique `03-techspec.md` no Confluence como sub-página `03 — Tech Spec` (parent: `<confluenceParentId>`). Aplique a mesma conversão Markdown→storage da etapa PRD. Atualize o índice da página-pai.
- **[card-id após aprovação]** Comente: `✅ Tech Spec aprovada — publicada no Confluence, avançando para Tasks.`

---

### 4. TASKS

Use o subagent `tasks` para quebrar a Tech Spec em tarefas atômicas com critérios de aceite em Gherkin. Quando houver múltiplos domínios independentes, use Agent Team para decomposição por área.

- **[card-id]** Comente: `📝 Iniciando etapa Tasks — decomposição do backlog técnico em andamento.`
- **[card-id]** Ao concluir: comente com as subtasks e estimativas.

---

### 5. REFINEMENT (OPCIONAL, MAS FORMAL)

Use o subagent `refinement` para condensar o backlog em documento de grooming enxuto. Pule somente se a feature for trivial; registre que foi dispensada e por quê.

- **[card-id]** Comente: `🔎 Iniciando etapa Refinement — grooming e estimativas em andamento.`

→ **CHECKPOINT opcional quando houver risco**

- **[card-id após aprovação]** Mova o card para a Coluna 2 (transition_id `31` — TechSpec ou Refinement aprovado).
- **[card-id após aprovação]** Comente: `✅ Refinement aprovado — iniciando execução.`

---

### 6. EXECUTION

Para cada tarefa, use o subagent `execution`. Use Agent Team apenas para tasks independentes, com ownership explícito de arquivos e plan approval antes de mudanças arriscadas.

- **[card-id]** Comente: `🔨 Iniciando etapa Execution — implementação das tarefas em andamento.`
- **[card-id]** Crie worktrees de subtask para tasks independentes: `git worktree add .worktree/<card-id>--001 -b <card-id>--001`. Artefatos continuam sempre em `.worktree/<card-id>/docs/<card-id>/` — não rode `sdd init` nessas subtask worktrees.
- **[card-id]** Para cada task, loop de micro-refinamento (máx. 3 tentativas por task):
  1. Execute o subagent `execution`.
  2. Execute o subagent `review` em modo rápido.
  3. Se passar: registre evidências, comente no card, avance para próxima task.
  4. Se falhar: aplique o feedback e repita do passo 1.
  5. Na 3ª falha: PARE e aguarde orientação do usuário.
- **[card-id]** A cada task: comente `🔨 Task <n> executada — <resumo>.`
- **[card-id]** Ao concluir todas: informe que a Coluna 3 não tem transition_id separado — mover o card para "In Development" é manual no board.

---

### 7. REVIEW

Use o subagent `review`. Para PRs não triviais, use Agent Team com `security-reviewer`, `performance-reviewer`, `test-reviewer`, `architecture-reviewer` e `data-contract-reviewer`. A suíte de testes precisa passar.

- **[card-id]** Comente: `🔍 Iniciando etapa Review — revisão de código e qualidade em andamento.`

→ **CHECKPOINT (apenas review, sem merge)**

- **[card-id após aprovação]** Mova o card para a Coluna 4 (transition_id `3`).
- **[card-id após aprovação]** Crie o PR (não faça merge). Veja **Regras de commit e PR** abaixo.
- **[card-id após aprovação]** Comente: `✅ Review aprovado — PR criado de \`<card-id>\` → \`<branch-raiz>\`. Aguardando testes e deploy.`

---

### 8. MEMORY

Use o subagent `memory` para compactar contexto, decisões e estado final.

- **[card-id]** Comente: `📚 Iniciando etapa Memory — consolidação de conhecimento em andamento.`
- **[card-id]** Após testes passarem: mova o card para a Coluna 5 (transition_id `4`).
- **[card-id]** Publique `08-memory.md` no Confluence como sub-página `08 — Memory` (parent: `<confluenceParentId>`). Aplique a mesma conversão Markdown→storage. Atualize o índice da página-pai.
- **[card-id]** Comente: `📚 Memory concluída — publicada no Confluence. Card na Coluna 5 (Deploy), aguardando merge manual para Coluna 6 (Production).`

---

## Regras dos checkpoints (autonomia com freios)

- Nos pontos marcados com **CHECKPOINT**, PARE e apresente o artefato, aguardando aprovação explícita antes de invocar a próxima etapa.
- Após aprovação: persista o artefato com `--state approved`, confirme o caminho antes de avançar.
- Se pedir ajustes: reinvoque o subagent com o feedback e volte ao mesmo checkpoint.
- Antes do REVIEW liberar o merge: confirme que os testes passaram — nunca ofereça merge com suíte vermelha.
- Agent Teams nunca substituem checkpoint humano. O lead sintetiza, não aprova.
- **[card-id]** Transições de coluna Jira ocorrem SOMENTE após aprovação explícita — nunca antes.

---

## Regras de commit e PR

Aplicam-se a **todos os modos**.

### Commit

```bash
git commit -m "release <card-id ou slug> v<versão> — <descrição do que foi feito>"
```

Versão em semver; incremente patch por padrão, minor/major conforme impacto.

### Push e PR

```bash
git push origin <card-id>
gh pr create \
  --base <branch-raiz> \
  --head <card-id> \
  --title "release <card-id> v<versão> — <descrição curta>" \
  --body "<detalhes, testes pendentes, rastreabilidade>"
```

PR sempre de `<card-id>` → `<branch-raiz>`. **Nunca** `<card-id>` → `main` diretamente (a menos que branch-raiz seja main).

---

## Regras gerais

- Em cada etapa, gere apenas a saída esperada e passe-a como entrada para a próxima.
- Mantenha rastreabilidade: ideia → PRD → spec → tarefa → código → revisão → memória.
- O `traceability-map.yaml` local deve apontar para arquivos salvos e links externos quando existirem.
- Aplique skills SDD complementares quando relevantes: `project-discovery`, `risk-classifier`, `artifact-schemas`, `test-strategy`, `release-readiness`, `security-privacy`, `data-contracts`, `repo-adapter`, `traceability`, `checkpoints`, `integrations`, `memory`.
- Valide artefatos críticos contra `.sdd/schemas/artifact-sections.json` antes de avançar.
- Responda em português, de forma objetiva e estruturada.

---

## Referência card-id (detalhes)

### Verificação MCP Jira + Confluence

Inspecione `.mcp.json` na raiz. São necessários `atlassian-jira` e `atlassian-confluence` com `ATLASSIAN_API_TOKEN`, `ATLASSIAN_SITE_NAME` e `ATLASSIAN_USER_EMAIL`. Se ausentes, PARE e guie o usuário:

```json
{
  "mcpServers": {
    "atlassian-jira": {
      "command": "npx",
      "args": ["-y", "@aashari/mcp-server-atlassian-jira@3.3.0"],
      "type": "stdio",
      "env": {
        "ATLASSIAN_SITE_NAME": "<site>",
        "ATLASSIAN_USER_EMAIL": "<email>",
        "ATLASSIAN_API_TOKEN": "<token>"
      }
    },
    "atlassian-confluence": {
      "command": "npx",
      "args": ["-y", "@aashari/mcp-server-atlassian-confluence@3.3.0"],
      "type": "stdio",
      "env": {
        "ATLASSIAN_SITE_NAME": "<site>",
        "ATLASSIAN_USER_EMAIL": "<email>",
        "ATLASSIAN_API_TOKEN": "<token>"
      }
    }
  }
}
```

Token em `https://id.atlassian.com/manage-profile/security/api-tokens`. O `.mcp.json` DEVE estar no `.gitignore`. Reinicie o Claude Code após configurar.

### Buscar dados do card

```
mcp__atlassian-jira__jira_get /rest/api/3/issue/<CARD-ID>
```

Extraia e guarde: `project.key`, `project.id`, `project.name`, `status.name`, `assignee`, `summary`.

### Detectar space Confluence (algoritmo de 5 regras)

1. Liste: `mcp__atlassian-confluence__conf_get /wiki/api/v2/spaces?limit=250`
2. Match exato de chave: `space.key == project.key` → use esse space.
3. Sem match exato: match por nome (`space.name` contém `project.name` ou vice-versa) → primeiro match.
4. Múltiplos matches: liste ao usuário e peça confirmação.
5. Nenhum match: informe e instrua a ajustar a Space Key no Confluence.

### Verificar mmdc

```bash
mmdc --version
```
- Exit 0 → `mmdc_available = true` (diagramas Mermaid viram imagens no Confluence).
- Falha → `mmdc_available = false` (fallback: macro `code` com language `mermaid`).

### Atribuir card

```
mcp__atlassian-jira__jira_get /rest/api/3/user/search?query=<ATLASSIAN_USER_EMAIL>
mcp__atlassian-jira__jira_put /rest/api/3/issue/<CARD-ID>/assignee
body: { "accountId": "<accountId>" }
```

### Definir datas

Sempre busque campos disponíveis antes de definir:
```
mcp__atlassian-jira__jira_get /rest/api/3/issue/<CARD-ID>/editmeta
```
Procure `schema.type: "date"`. Exemplos: `startDate`, `customfield_10015`, `duedate`. Nunca assuma nomes de campos.

Estimativa de data limite (tempo humano real):
- Risco baixo/trivial → +2 dias úteis
- Risco médio → +5 dias úteis
- Risco alto/complexo → +10 dias úteis
- Após Tasks (estimativas reais): soma total horas ÷ 6 horas/dia → arredonda para cima.

```
mcp__atlassian-jira__jira_put /rest/api/3/issue/<CARD-ID>
body: { "fields": { "<campo-inicio>": "<YYYY-MM-DD>", "duedate": "<YYYY-MM-DD>" } }
```
Nunca agrupe datas com outros campos no mesmo PUT.

### Criar estrutura no Confluence

Convenção de títulos (ordenação garantida no Confluence):
```
<CARD-ID> — <summary>        ← página-pai (criada no setup)
  ├── 02 — PRD               ← após aprovação do checkpoint PRD
  ├── 03 — Tech Spec         ← após aprovação do checkpoint Tech Spec
  └── 08 — Memory            ← ao final do fluxo
```

Criar página-pai:
```
mcp__atlassian-confluence__conf_post /wiki/rest/api/content
body: {
  "type": "page",
  "title": "<CARD-ID> — <summary>",
  "space": { "key": "<spaceKey>" },
  "body": {
    "storage": {
      "value": "<h1>...</h1><h2>Índice</h2><table>...</table>",
      "representation": "storage"
    }
  }
}
```

Guardar `id` como `<confluenceParentId>`. Após publicar cada sub-página, atualizar o índice da página-pai trocando `⏳ Pendente` por `✅ Aprovado`.

### Conversão Markdown → Confluence storage

Cabeçalhos `#` → `<h1>/<h2>/...`, negrito `**` → `<strong>`, itálico → `<em>`, listas → `<ul>/<ol>`, tabelas → `<table>`.

Diagramas Mermaid:
- `mmdc_available = true`: renderizar como imagem e incluir no storage.
- `mmdc_available = false`: usar macro `<ac:structured-macro ac:name="code"><ac:parameter ac:name="language">mermaid</ac:parameter><ac:plain-text-body>...</ac:plain-text-body></ac:structured-macro>`.

### Tabela de transições Jira (referência)

IDs padrão do projeto SSDL. Prefira sempre o id resolvido no setup (Passo 0b).

| Momento | transition_id |
|---------|---------------|
| Após PRD aprovado | `2` |
| Após TechSpec ou Refinement aprovado | `31` |
| Ao sair da Review | `3` |
| Testes manuais OK | `4` |
| Merge manual | `5` |

### Cabeçalho obrigatório nos artefatos card-id

Todo arquivo em `docs/<card-id>/` deve incluir:
```
worktree: <card-id>
branch-raiz: <branch-raiz>
```
