sdd-layer 0.14.1

Spec-Driven Development CLI and agent harness
sdd-layer-0.14.1 is not a library.

Camada de orquestração SDD para agentes de código

Adapta um sistema multiagente Spec-Driven Development (Project Discovery → Memória) para CLI, Codex, Claude Code, opencode, Cursor, Devin, Antigravity e Trae. O fluxo inclui Project Discovery, Risk Classification, as etapas de produto/engenharia, Refinement opcional entre Tasks e Execution e ADR pós-execução para registrar decisões arquiteturais confirmadas, criadas ou alteradas pela implementação.

O nome canônico do fluxo completo é orchestration. orchestrator continua aceito apenas como alias legado.

Instalação

Instale o CLI nativo no repositório da camada:

cargo install --path .

O binário sdd funciona em Windows, Linux e macOS. Para compilar no Windows é preciso um linker C: ou o toolchain MSVC (Visual Studio Build Tools, recomendado) ou, se usar o toolchain x86_64-pc-windows-gnu, um MinGW-w64 com dlltool/gcc no PATH (ex.: WinLibs). Linux/macOS já trazem o linker pelo build-essential/Xcode CLT.

Inicialização recomendada dentro de outro projeto:

cd /caminho/do/projeto
sdd init
sdd doctor
sdd clients doctor
sdd init "minha-orquestracao"

Durante sdd init, se codegraph estiver disponível no PATH e ainda não houver .codegraph/, o CLI executa codegraph init -i . em modo best-effort. Sem CodeGraph instalado, a instalação continua normalmente com fallback git/rg.

Também é possível instalar apontando para outro diretório:

sdd init --root /caminho/do/projeto
sdd install /caminho/do/projeto --preset generic

Para atualizar um projeto que já tem .sdd/ instalado com as mudanças mais recentes do pacote:

sdd update
sdd clients doctor

sdd upgrade é alias de sdd update. O update mescla AGENTS.md e CLAUDE.md quando já existem no projeto, inserindo ou atualizando um bloco gerenciado do SDD sem apagar instruções locais; também atualiza as superfícies gerenciadas pelo pacote (.agents/, .claude/, .codex/, .cursor/, .devin/, .opencode/, .trae/ e .sdd/), preserva sdd.config.yaml por padrão e mantém artefatos em docs/<orquestracao>/. Use --update-config --preset <preset> apenas quando quiser regenerar a configuração a partir de um preset.

Presets disponíveis em .sdd/presets/ no projeto instalado: generic, frontend-react, backend-node, hono-api, python-api, rust-api, monorepo e infra.

python-api é um preset para projetos alvo FastAPI; a camada SDD em si continua usando somente o binário Rust sdd para regras determinísticas, hooks e validações locais.

O layout padrão é compact: somente os arquivos que as ferramentas precisam descobrir ficam na raiz; o restante vai para .sdd/.

seu-projeto/
├── AGENTS.md
├── CLAUDE.md
├── sdd.config.yaml
├── .agents/
├── .claude/
├── .codex/
├── .cursor/
├── .devin/
├── .opencode/
├── .trae/
└── .sdd/
    ├── adapters/
    ├── clients/
    ├── docs/
    ├── presets/
    ├── schemas/
    └── templates/

Use --layout flat somente para desenvolvimento da própria camada ou instalações legadas que já esperam schemas/, templates/, adapters/ e presets/ na raiz.

Use --with-ci para instalar também tests/ e .github/workflows/sdd.yml no projeto alvo. Use --with-examples para copiar examples/.

Por padrão o installer não copia .claude/skills/orchestration-plugin, porque os comandos de projeto já cobrem o fluxo e isso evita duplicidade no autocomplete. Use --with-claude-plugin apenas quando quiser testar o plugin Claude empacotado dentro do projeto alvo.

Para Claude Code, copie a pasta .claude/ e o arquivo CLAUDE.md para a raiz do seu projeto:

seu-projeto/
├── .claude/
│   ├── agents/        # os subagents (um por etapa; refinement é opcional)
│   ├── commands/      # /sdd + etapas + team/automation helpers
│   ├── skills/        # bdd-gherkin, code-review e skills SDD complementares
│   ├── rules/         # princípios, importados pelo CLAUDE.md
│   └── settings.json  # permissões, Agent Teams e hooks vazios por padrão
└── CLAUDE.md

Para Codex, mantenha AGENTS.md, .codex/agents/, .codex/rules/ e .agents/skills/ na raiz. Arquivos de suporte ficam em .sdd/.

Para Cursor, use AGENTS.md, .cursor/model-routing.yaml, .cursor/rules/, .cursor/commands/, .cursor/agents/ e .cursor/skills/. Para opencode, use AGENTS.md, .opencode/commands/ e .opencode/agents/. Para Devin, use AGENTS.md, .devin/config.json, .devin/rules/, .devin/agents/, .devin/skills/, .devin/workflows/ e .agents/skills/. Para Trae, use AGENTS.md, .trae/commands/, .trae/rules/ e .trae/skills/. Para Antigravity, use também .agents/rules/sdd.md.

Gere ou valide essas superfícies com:

sdd clients list
sdd clients sync --targets all
sdd clients doctor

Opcionalmente, use plugins/orchestration/ como plugin Codex repo-local: ele empacota a skill central de orquestração SDD e pode ser publicado num marketplace local quando você quiser distribuí-lo. Use plugins/design/ quando quiser um plugin Codex repo-local para design minimalista moderno ancorado na stack real do projeto.

Se você editar os arquivos de agente/comando direto no disco, reinicie a sessão do Claude Code para carregá-los (ou crie-os pela interface /agents). Rode /memory (built-in) para conferir quais instruções foram carregadas e /agents para gerenciar os subagents.

Uso

  • Fluxo completo: /sdd orchestration "quero um botão de exportar CSV no relatório". O fluxo delega cada etapa ao subagent certo e PARA nos checkpoints (após PRD, após Tech Spec, após Refinement quando houver risco, antes do merge/deploy) para sua aprovação. /sdd orchestrator é alias legado.
  • Preparação do projeto: /sdd discover gera Project Discovery; /sdd risk "<feature>" classifica risco; /sdd doctor valida se a instalação/configuração está pronta.
  • Dry-run: /dry-run "<feature>" simula Project Discovery, risco, PRD, Tech Spec, Tasks e Refinement sem tocar código.
  • Etapa individual: por exemplo /prd (usa a visão mais recente), /techspec, /tasks, /refinement (opcional — condensa o backlog num documento de grooming enxuto), /execution TASK-003, /review (revisa o diff atual), /memory.
  • Agent Teams: /team-techspec, /team-execution, /team-review.
  • Automations: /automation para planejar acompanhamento de PR, CI, deploy, Jira ou Slack.

Por padrão, cada orquestração deve ter um fallback local em docs/<slug-da-orquestracao>/. Esse diretório guarda os artefatos aprovados/registrados e o traceability-map.yaml quando Jira/Confluence/etc. ainda não estão configurados por completo.

Notas de design

Cada subagent roda em seu próprio contexto, com ferramentas no escopo do papel: as etapas de planejamento são read-only para código e só podem gravar o artefato canônico do próprio stage; execution tem escrita e bash; review tem bash de leitura (diff/test), com os comandos seguros pré-aprovados em settings.json. Os modelos seguem a carga cognitiva em sdd.config.yaml e nos arquivos de roteamento dos clients: etapas leves usam modelos médios, enquanto techspec, execution e review usam modelos/efforts mais fortes.

As skills carregam sozinhas pela descrição: bdd-gherkin para critérios de aceite, code-review para merge, traceability para links entre artefatos, checkpoints para gates humanos, integrations para Jira/Confluence/Bitbucket e memory para o fechamento do ciclo.

Para uso em qualquer projeto, a camada agora também inclui project-discovery, risk-classifier, artifact-schemas, test-strategy, release-readiness, security-privacy, data-contracts e repo-adapter.

Configuração por projeto

Cada projeto deve ter um sdd.config.yaml, criado a partir de .sdd/sdd.config.example.yaml. Ele declara stack, sistemas, paths, comandos, políticas de qualidade, regras de risco e adapters. Rode:

sdd doctor

Providers, segurança e memória

O CLI aceita seleção determinística de provider sem chamar rede por padrão:

sdd providers list
sdd providers doctor --json
sdd orchestration --provider claude --model claude-sonnet-4-6 --effort high --dry-run "minha ideia"
sdd prd --provider custom --model local-test --effort medium --name "meu ciclo" "entrada"

A precedência é: flags (--provider, --model, --effort, --offline), env (SDD_PROVIDER, SDD_MODEL, SDD_EFFORT/SDD_REASONING_EFFORT, SDD_OFFLINE), modelos declarados nos agents/routings do projeto, sdd.config.yaml e defaults embutidos. O override do agent só é aplicado quando o modelo existe no catálogo models do provider. Cada provider também declara auth_methods seguros: claude aceita Claude Code ou API, codex aceita Codex CLI ou API, opencode usa o CLI/credenciais Go-Zen, antigravity usa o Antigravity CLI (agy) ou Google AI API, cursor usa Cursor Agent, e rig é um adapter opcional via rig-core para roteamento futuro de providers/tools, mantendo auth nas env vars do provider real. gemini continua aceito como alias legado para antigravity; rig-core continua aceito como alias de rig. providers list usa detecção rápida de PATH/env; providers doctor valida login real com comandos como agy models, cursor agent status, claude auth status, opencode providers list ou codex login status e env vars como OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY ou RIG_PROVIDER_API_KEY para Rig. Se estiver ausente, o doctor mostra login_command quando houver, como agy, cursor agent login, claude auth login, opencode providers login ou codex login. Tokens ficam apenas em variáveis de ambiente; providers doctor mostra método, origem e present: true/false, mas nunca imprime valores. Logs, artifacts e eventos passam pelo scrubber central antes de registrar comandos ou mensagens que possam conter API keys.

No TUI, a seleção de provider aparece antes da lista de orquestrações. Use ←/→ para modelo inicial e [/] para effort inicial. Gerar uma etapa ou apertar r para regenerar tenta usar o adapter direto do provider e mostra o trace; os adapters diretos atuais cobrem codex exec, claude --print, opencode run, cursor agent --print e agy --prompt, todos salvando o Markdown via sdd artifact --root <root> save .... Execução real de tasks que edita o workspace permanece restrita ao adapter Codex nesta versão.

O MCP Rust nativo permanece em stdio e expõe tools/resources/prompts read-only. A feature opcional mcp-rmcp compila metadata tipada com rmcp, e a tool/resource sdd_runtime_adapters (sdd://runtime/adapters) informa se rmcp e rig-core estão presentes no binário atual.

A memória incremental é derivada e reconstruível:

sdd memory learn --name "meu ciclo"
sdd memory status --json

O índice padrão é .sdd/memory/learnings.jsonl, com source_artifact e source_hash apontando para arquivos em docs/<slug>/. Ele é cache auditável, não fonte primária.

A Project Intelligence Layer amplia esse contrato com Context Packs por etapa e índices derivados em .sdd/intelligence/:

sdd intelligence learn --name "meu ciclo"
sdd intelligence learn --all
sdd intelligence status --json
sdd intelligence health --json --fail-on high
sdd context build --name "meu ciclo" --stage execution --write
sdd optimize status --json

sdd context build monta um pacote auditável para o stage, citando fontes incluídas, excluídas, obsoletas e conflitos. Ele considera automaticamente a orquestração atual, fontes globais e histórico em docs/*/traceability-map.yaml, com ranking para priorizar a feature em andamento. sdd intelligence learn/status/health ajuda a reconstruir aprendizados, inspecionar obsolescência e verificar sinais objetivos de saúde, sem substituir docs/<slug>/ nem traceability-map.yaml como fonte canônica.

O Optimization Wrapper é opcional e provider-neutral: detecta CodeGraph, RTK e Caveman quando presentes, expõe fallback explícito e injeta um Context Handoff curto em sdd context build. Use sdd optimize compress --kind trace|handoff|memory-derived para compactar relato operacional sem reescrever PRD, Tech Spec, Tasks, ADR ou Review.

Os contratos de artefato vivem em .sdd/schemas/artifact-sections.json, e podem ser validados com:

sdd validate-artifact techspec docs/minha-techspec.md

O projeto e o artifact store local são criados e atualizados com a CLI:

sdd init
sdd init "exportacao-csv"
sdd artifact save "exportacao-csv" prd --file prd.md --state approved
sdd artifact status "exportacao-csv"

A documentação completa de operação está em docs/USAGE.md, docs/PROJECT-INTELLIGENCE.md, docs/PROJECT-ONBOARDING.md, docs/PACKAGING.md, docs/ARTIFACTS.md, docs/ARTIFACT-STORE.md, docs/AUTOMATIONS.md e docs/ADAPTERS.md.

docs/CLIENTS.md descreve as superfícies por cliente e o comando sdd context recommend --write, que usa os sinais do discovery para sugerir novas skills específicas de tecnologia, rules, seções de AGENTS.md e deltas de CLAUDE.md.

Distribuição

  • src/main.rs: CLI Rust sdd, fonte canônica para doctor, CI, artifact store, risco, validação, scaffolds de etapa e hooks.
  • build.rs: empacota os recursos SDD no binário para sdd init, sdd install e sdd update funcionarem fora do repositório da camada.
  • .sdd/presets/: configurações iniciais por tipo de projeto.
  • .sdd/adapters/: mapeia Jira/Confluence/Bitbucket, GitHub, GitLab, Linear/Notion e Markdown-only.
  • .sdd/clients/: documenta superfícies por cliente geradas por sdd clients sync.
  • examples/export-csv-feature/: exemplo completo de feature.
  • cargo test: regressão do CLI, artifact store, risk classifier e hooks.
  • .github/workflows/sdd.yml: workflow de validação.
  • VERSION e CHANGELOG.md: versionamento da camada.

Agent Teams

settings.json habilita CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 e teammateMode: auto. Use teams apenas quando houver trabalho independente:

  • TechSpec complexa: architecture-reviewer, security-reviewer, data-contract-reviewer, qa-strategist.
  • Execução paralela: frontend-implementer, backend-implementer, test-implementer, com ownership explícito de arquivos.
  • Review não trivial: security-reviewer, performance-reviewer, test-reviewer, architecture-reviewer, data-contract-reviewer.

O lead sintetiza os pareceres e preserva o checkpoint humano; teammates não aprovam merge, deploy, PRD ou Tech Spec.

Hooks e plugin

.claude/settings.json mantém os eventos de hook declarados, mas vazios por padrão. O objetivo é não interromper loops automáticos com PreToolUse, TaskCreated, TaskCompleted ou gates pós-escrita enquanto o agente está trabalhando. Guardrails determinísticos continuam disponíveis como comandos explícitos de CLI/CI:

  • sdd hook write-guard
  • sdd hook bash-guard
  • sdd hook task-gate
  • sdd hook artifact-gate
  • sdd hook trace-log
  • sdd hook subagent-audit
  • sdd hook notify

Use esses hooks quando o harness quiser uma checagem deliberada ou um modo estrito. No fluxo automático padrão, checkpoints humanos continuam acontecendo nas etapas de produto/release, não como bloqueio de ferramenta a cada ação do agente.

O diretório .claude/skills/orchestration-plugin/ empacota a mesma política como plugin de projeto do Claude Code. Ele é útil para desenvolver/distribuir o plugin, mas em projetos instalados via sdd install o caminho canônico é usar /sdd ....

O diretório plugins/orchestration/ empacota a política como plugin Codex validado, sem hooks no manifest porque hooks ainda não são aceitos pelo validador de plugin Codex usado neste scaffold. O diretório plugins/design/ adiciona uma skill e comandos Codex para brief e review de design minimalista moderno, mantendo o handoff preso à tecnologia descoberta no projeto.

Automations

Use esta ordem de preferência:

  1. Channels/webhooks quando CI, Jira, Slack, Bitbucket ou deploy puderem empurrar eventos.
  2. Scheduled tasks (/loop ou CronCreate) para polling temporário de PR/CI/deploy.
  3. Hooks para regras locais determinísticas antes/depois de tool use, subagents e Agent Teams.

Scheduled tasks são de sessão; para automação durável, mova o evento para CI, rotina externa ou orquestrador durável.

Validação da camada

Rode:

cargo fmt --check
cargo clippy -- -D warnings
cargo test
cargo build --release
sdd ci

Esses comandos validam formatação, lint, testes Rust unitários/de integração, JSONs, schemas, hooks, doctor e smoke checks do CLI.