Initialize the SPEC-driven documentation system v2 (features-based) in a workspace. Creates docs/ (RULES.md, INDEX.md, features/, active/, future/, archive/, discard/) and scripts/ (generate-index.sh, lint-docs.sh, audit-docs.sh). Creates or updates CLAUDE.md at project root to orient AI. Use when the user says "inicializar sistema de documentação", "setup specs", "init doc system", "bootstrap docs", or is starting a new project that needs disciplined spec-based documentation.
Resources
7Install
npx skillscat add b2cexpress/wynk-scp Install via the SkillsCat registry.
spec-system-init v2
Inicializa o sistema de documentação SPEC-driven v2 (features-based) no workspace atual.
Principais diferenças da v1:
- IDs de SPEC são timestamp (
SPEC-YYYYMMDD-HHMM-slug), não sequenciais - Cada SPEC vive em uma pasta com 3 arquivos (
main.md+state.md+memory.md) docs/features/substituimemory.mdraiz como índice vivo por áreadocs/INDEX.mdgerado por CI a partir dos cabeçalhos das features- Zero
memory.md/history.mdraiz — conteúdo migra para features/ e SPECs - Scripts de apoio criados em
scripts/(generate-index.sh,lint-docs.sh,audit-docs.sh) - Invariante:
docs/active/emmainé sempre vazio (SPECs ativas vivem em branches) - Regras imperativas (DEVE/PROIBIDO/OBRIGATÓRIO) com mitigações de riscos R1-R4
Quando disparar
Sinais de intenção do usuário:
- "inicialize/inicializar o sistema de documentação"
- "setup/bootstrap specs"
- "init doc system"
- "criar a estrutura de documentação"
- "começar novo projeto com specs"
O que esta skill cria
<workspace-root>/
├── CLAUDE.md ← criado ou mesclado
├── scripts/
│ ├── generate-index.sh
│ ├── lint-docs.sh
│ └── audit-docs.sh
└── docs/
├── RULES.md ← processo completo (imperativo)
├── INDEX.md ← template inicial (será preenchido pelo CI)
├── features/ ← vazia (populada quando SPECs criarem features)
├── active/ ← vazia (SPECs ativas vivem em branches)
├── future/ ← vazia
├── archive/ ← vazia
└── discard/ ← vaziaExecução
Step 1 — Inspecionar estado atual
Usar Bash ls e Read com try-catch para detectar:
docs/já existe? → PARAR. Perguntar: "Já existedocs/. Abortar (A) ou continuar mesclando (M)?" Default: abortar.CLAUDE.mdno root existe? → marcar para MERGE (append-section), não sobrescrever.scripts/já existe? → se sim, não sobrescrever scripts homônimos; apenas adicionar os que faltam e avisar.- Diretório de trabalho atual = target workspace root.
Step 2 — Auto-analisar projeto (NÃO perguntar o que já está documentado)
ANTES de fazer qualquer pergunta, ler o que já existe no workspace para inferir valores dos placeholders. O usuário não deve redigitar o que já está documentado.
Fontes de inferência (tentar nesta ordem, parar ao achar):
Nome do projeto ({{PROJECT_NAME}}):
CLAUDE.md→ primeiro heading# CLAUDE.md — <NAME>ou# <NAME>README.md/readme.md→ primeiro# headingpackage.json→"name"(se monorepo, usar nome root ou pedir confirmação)pyproject.toml→[project] nameou[tool.poetry] nameCargo.toml→[package] namego.mod→module <name>(última parte após/)composer.json→"name"Gemfile/*.gemspec→ padrão específico- Fallback: nome da pasta-raiz (basename do cwd)
Descrição ({{PROJECT_DESC}}):
CLAUDE.md→ primeiro parágrafo após o headingREADME.md→ primeiro parágrafo após o heading (pulando badges)package.json→"description"pyproject.toml→descriptionCargo.toml→description- Fallback:
"_(adicionar descrição)_"
Stack ({{STACK}}):
Combinar múltiplas fontes:
package.json→ detectar"type": "module", deps principais (react, vue, svelte, next, nuxt, astro, express, fastify, nest, hono, elysia), devDeps (typescript, vite, webpack). Formar string tipo "Node.js + TypeScript + React + Vite".pyproject.toml/requirements.txt→ Python + frameworks (fastapi, flask, django, pydantic)Cargo.toml→ Rust + frameworks (axum, actix, rocket, tokio)go.mod→ Go + libs (gin, echo, fiber)*.csproj/*.sln→ .NETpom.xml/build.gradle→ Java/Kotlin + Spring/etc.Gemfile→ Ruby + Rails/etc.Dockerfile/docker-compose.yml→ adicionar "Docker"- Bancos detectáveis em
.env.example,docker-compose.yml, deps (mysql2,pg,mongodb,mssql,@prisma/client,typeorm) - Fallback: analisar extensões de arquivo mais frequentes
Comandos ({{DEV_COMMANDS}}):
package.json→"scripts". Selecionar relevantes:install/ci,dev/start,build,test,lint.Makefile→ targets comuns (install,dev,test,build,run)pyproject.toml→[tool.poetry.scripts]ou comandos comunsREADME.md→ seção "Installation" / "Getting started" — extrair blocos```bash/sh/shellCLAUDE.md→ se tiver seção "Comandos" / "Commands", copiar- Fallback: bloco placeholder
```bash\n# (adicionar comandos)\n```
Step 3 — Apresentar valores detectados e pedir confirmação
Mostrar ao usuário em UMA mensagem os valores pré-preenchidos com as fontes, e pedir para confirmar ou editar:
Detectei os seguintes valores no workspace:
📦 Nome: <valor> (fonte: <arquivo>)
📝 Descrição: <valor> (fonte: <arquivo>)
🛠️ Stack: <valor> (fonte: <arquivo(s)>)
⚡ Comandos:
<bloco>
(fonte: <arquivo>)
Confirme com "ok" ou "tudo certo" para usar esses valores, OU
edite os que quiser ajustar (ex.: "stack: Bun + React + Elysia").Se responder "ok" → prossegue. Se editar um campo → aplica e reusa o resto. Se nenhum achou nada → fazer as 4 perguntas clássicas uma a uma, sinalizando.
Step 4 — Criar estrutura de pastas
Rodar via Bash:
mkdir -p docs/features docs/active docs/future docs/archive docs/discard scriptsStep 5 — Escrever arquivos a partir dos templates
Ler cada template de templates/ dentro da skill e escrever no workspace, substituindo placeholders:
| Template | Destino |
|---|---|
templates/RULES.md |
docs/RULES.md |
templates/INDEX.md |
docs/INDEX.md |
templates/CLAUDE.md |
CLAUDE.md (apenas se não existe) |
templates/scripts/generate-index.sh |
scripts/generate-index.sh |
templates/scripts/lint-docs.sh |
scripts/lint-docs.sh |
templates/scripts/audit-docs.sh |
scripts/audit-docs.sh |
Placeholders a substituir:
{{PROJECT_NAME}}→ detectado{{PROJECT_DESC}}→ detectado{{STACK}}→ detectado{{DEV_COMMANDS}}→ detectado, envolvido em```bash ... ```{{TODAY}}→ data atualYYYY-MM-DD{{NOW}}→ timestamp atualYYYY-MM-DD HH:MM
Usar data/hora real do sistema — NUNCA placeholders fictícios (2024-01-01, etc.). Se necessário, rodar date +"%Y-%m-%d %H:%M" via Bash.
Step 6 — Tornar scripts executáveis
chmod +x scripts/generate-index.sh scripts/lint-docs.sh scripts/audit-docs.sh 2>/dev/null || true(Inofensivo em Windows puro; útil em WSL/git bash/Linux/macOS.)
Step 7 — Tratar CLAUDE.md existente (merge mode)
Se CLAUDE.md já existe no root:
Read atual.
Procurar cabeçalho "Primeira coisa" ou "Documentação SPEC-driven" — se existir, avisar que há seção parecida e perguntar se usuário quer sobrescrever.
Se não existir: appendar (não substituir) seção nova no fim:
## Documentação SPEC-driven v2 — OBRIGATÓRIO Antes de qualquer código nesta sessão, ler (nesta ordem): 1. [docs/RULES.md](docs/RULES.md) — processo completo v2 (imperativo) 2. [docs/INDEX.md](docs/INDEX.md) — mapa de features do projeto Listar `docs/active/` localmente para ver SPECs ativas na branch. Resumo do processo: - Documentação é para IA, não humanos. Exceção: `main.md` (contrato validado pelo dev). - SPEC = pasta `SPEC-<timestamp>-<slug>/` com `main.md` + `state.md` + `memory.md` - Toda SPEC se vincula a pelo menos 1 feature (criando se não existir) - `docs/active/` em `main` é sempre VAZIO (gate CI). SPECs ativas vivem em branches. - Timestamps `YYYY-MM-DD HH:MM` em TODA atualização (checkbox, status, decisão, etc.) - Ao arquivar SPEC, features tocadas DEVEM ser atualizadas no mesmo PR (R.7) - Protocolo de escalação: Nível 0 (auto) → Nível 1 (sob confirmação) → Nível 2 (sob pergunta) → Nível 3 (casos especiais) Fonte da verdade para qualquer dúvida: [docs/RULES.md](docs/RULES.md).Usar Edit tool (old_string = final do arquivo, new_string = final + nova seção).
Step 8 — Report
Listar em uma única mensagem:
- Arquivos criados (com caminhos)
- Arquivos modificados (se CLAUDE.md foi mesclado)
- Scripts criados e tornados executáveis
- Próximos passos sugeridos:
- "Revise
CLAUDE.mdedocs/RULES.mdpara detalhes específicos do seu projeto" - "Configure CI para rodar
scripts/generate-index.shem push/merge namaincom mudanças emdocs/features/**" - "Configure CI/pre-commit para rodar
scripts/lint-docs.sh(falha bloqueia commit/PR)" - "Configure CI para rodar
scripts/audit-docs.sh --prem todos os PRs (bloqueia se R.7 violado)" - "Opcional: configurar git hook server-side ou CI check que rejeita merge com mudança em
docs/active/(invariante R.2)" - "Quando tiver o primeiro trabalho, crie
docs/active/SPEC-<timestamp>-<slug>/com os 3 arquivos (main, state, memory) seguindo formato emdocs/RULES.md §3"
- "Revise
Anti-patterns (desta skill)
- ❌ Sobrescrever
docs/ouCLAUDE.mdexistentes sem confirmação - ❌ Usar timestamps do treinamento em vez de
datedo sistema - ❌ Perguntar info que já está em arquivo existente — sempre inferir de
package.json,README.md,CLAUDE.md, etc. antes - ❌ Apresentar perguntas em branco ou em várias mensagens — mostrar tudo pré-preenchido em uma mensagem
- ❌ Commitar arquivos criados (deixar para o usuário decidir)
- ❌ Criar SPECs ou features de exemplo — pastas ficam vazias; usuário cria conforme demanda
- ❌ Preservar
memory.mdehistory.mdraiz de v1 — v2 migra conteúdo parafeatures/earchive/SPEC-*/
Templates location
Os templates ficam em templates/ ao lado deste SKILL.md: