@daniel-da-silva-alves/sddk 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +21 -0
  3. package/README.md +260 -0
  4. package/bin/cli.js +430 -0
  5. package/package.json +49 -0
  6. package/sddk/plugin.json +12 -0
  7. package/sddk/skills/code-review/SKILL.md +185 -0
  8. package/sddk/skills/code-review/references/anti-ai-design-patterns.md +185 -0
  9. package/sddk/skills/code-review/references/refactoring-severity-guide.md +96 -0
  10. package/sddk/skills/code-review/references/security-checklist.md +131 -0
  11. package/sddk/skills/fullstack-development/SKILL.md +128 -0
  12. package/sddk/skills/fullstack-development/references/clean-code-rules.md +146 -0
  13. package/sddk/skills/fullstack-development/references/self-review-checklist.md +64 -0
  14. package/sddk/skills/implementation-planning/SKILL.md +102 -0
  15. package/sddk/skills/implementation-planning/references/manual-tests-template.md +95 -0
  16. package/sddk/skills/implementation-planning/references/microtask-template.md +66 -0
  17. package/sddk/skills/software-requirements-specification/SKILL.md +80 -0
  18. package/sddk/skills/software-requirements-specification/references/checklist-template.md +65 -0
  19. package/sddk/skills/software-requirements-specification/references/ieee-830-template.md +151 -0
  20. package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md +96 -0
  21. package/sddk/skills/system-design-document/SKILL.md +164 -0
  22. package/sddk/skills/system-design-document/references/architecture-patterns.md +105 -0
  23. package/sddk/skills/system-design-document/references/documentation-sources-guide.md +126 -0
  24. package/sddk/skills/system-design-document/references/sdd-template.md +259 -0
  25. package/sddk/skills/system-design-document/references/standards-api-template.md +128 -0
  26. package/sddk/skills/system-design-document/references/standards-architecture-template.md +76 -0
  27. package/sddk/skills/system-design-document/references/standards-coding-template.md +114 -0
  28. package/sddk/skills/system-design-document/references/standards-design-system-template.md +137 -0
  29. package/sddk/skills/system-design-document/references/standards-naming-template.md +96 -0
  30. package/sddk/skills/system-design-document/references/standards-onboarding-guide.md +119 -0
  31. package/sddk/skills/system-design-document/references/tech-stack-analysis.md +84 -0
@@ -0,0 +1,96 @@
1
+ # Template: Convenções de Nomenclatura do Projeto
2
+
3
+ Use este template para gerar `.specs/standards/naming-conventions.md`. Preencha com as respostas do onboarding.
4
+
5
+ ```markdown
6
+ # Convenções de Nomenclatura
7
+
8
+ **Projeto**: {nome do projeto}
9
+ **Última atualização**: {data}
10
+
11
+ ---
12
+
13
+ ## 1. Banco de Dados
14
+
15
+ | Elemento | Convenção | Exemplo | Anti-exemplo |
16
+ |:---|:---|:---|:---|
17
+ | Tabelas | {ex: snake_case, plural} | {ex: `auth_users`} | {ex: `User`, `authUser`} |
18
+ | Colunas | {ex: snake_case, singular} | {ex: `first_name`} | {ex: `firstName`, `FirstName`} |
19
+ | Primary Keys | {ex: `id` (UUID v4)} | {ex: `id`} | {ex: `user_id`, `ID`} |
20
+ | Foreign Keys | {ex: `{tabela_singular}_id`} | {ex: `user_id`} | {ex: `fk_user`, `userId`} |
21
+ | Índices | {ex: `idx_{tabela}_{colunas}`} | {ex: `idx_users_email`} | {ex: `index1`} |
22
+ | Enums (valores) | {ex: UPPER_SNAKE_CASE} | {ex: `PENDING_PAYMENT`} | {ex: `pendingPayment`} |
23
+ | Timestamps | {ex: `created_at`, `updated_at`} | — | {ex: `createdAt`, `date_created`} |
24
+ | Soft delete | {ex: `deleted_at` nullable} | — | {ex: `is_deleted`} |
25
+ | Booleanos | {ex: `is_` prefix} | {ex: `is_active`} | {ex: `active`, `status`} |
26
+
27
+ ### Prefixos de Módulo (se aplicável)
28
+ | Módulo | Prefixo | Exemplo |
29
+ |:---|:---|:---|
30
+ | {ex: Autenticação} | {ex: `auth_`} | {ex: `auth_users`, `auth_sessions`} |
31
+ | {ex: Pagamentos} | {ex: `pay_`} | {ex: `pay_transactions`} |
32
+
33
+ ---
34
+
35
+ ## 2. Código ({linguagem})
36
+
37
+ ### Variáveis
38
+
39
+ | Tipo | Convenção | Exemplo | Anti-exemplo |
40
+ |:---|:---|:---|:---|
41
+ | Variáveis locais | {ex: camelCase} | {ex: `userName`} | {ex: `user_name`, `UserName`} |
42
+ | Constantes | {ex: UPPER_SNAKE_CASE} | {ex: `MAX_RETRIES`} | {ex: `maxRetries`} |
43
+ | Booleanos | {ex: prefixo is/has/can/should} | {ex: `isAuthenticated`} | {ex: `authenticated`, `auth`} |
44
+ | Arrays/Coleções | {ex: plural} | {ex: `activeUsers`} | {ex: `userList`, `data`} |
45
+
46
+ ### Funções
47
+
48
+ | Tipo | Convenção | Exemplo | Anti-exemplo |
49
+ |:---|:---|:---|:---|
50
+ | Funções gerais | {ex: verbo + substantivo, camelCase} | {ex: `calculateTotal`} | {ex: `calc`, `doStuff`} |
51
+ | Handlers | {ex: handle + evento específico} | {ex: `handleLoginSubmit`} | {ex: `handleClick`} |
52
+ | Getters | {ex: get + o quê} | {ex: `getUserOrders`} | {ex: `getData`} |
53
+ | Validadores | {ex: is/validate + o quê} | {ex: `isValidEmail`} | {ex: `check`} |
54
+ | Transformadores | {ex: formato + To + formato} | {ex: `dtoToEntity`} | {ex: `convert`} |
55
+
56
+ ### Classes e Types
57
+
58
+ | Tipo | Convenção | Exemplo | Anti-exemplo |
59
+ |:---|:---|:---|:---|
60
+ | Classes | {ex: PascalCase, substantivo} | {ex: `UserService`} | {ex: `userService`} |
61
+ | Interfaces | {ex: PascalCase, sem prefixo I} | {ex: `UserProfile`} | {ex: `IUserProfile`} |
62
+ | Types | {ex: PascalCase} | {ex: `OrderStatus`} | {ex: `TOrderStatus`} |
63
+ | Enums | {ex: PascalCase singular} | {ex: `PaymentMethod`} | {ex: `PaymentMethods`} |
64
+
65
+ ### Componentes (Frontend)
66
+
67
+ | Tipo | Convenção | Exemplo | Anti-exemplo |
68
+ |:---|:---|:---|:---|
69
+ | Componentes | {ex: PascalCase, específico} | {ex: `ProductCard`} | {ex: `Card`} |
70
+ | Hooks | {ex: use + contexto} | {ex: `useOrderData`} | {ex: `useData`} |
71
+ | Context | {ex: PascalCase + Context} | {ex: `AuthContext`} | {ex: `ctx`} |
72
+
73
+ ---
74
+
75
+ ## 3. Arquivos e Diretórios
76
+
77
+ | Tipo | Convenção | Exemplo |
78
+ |:---|:---|:---|
79
+ | Componentes | {ex: PascalCase.tsx} | {ex: `ProductCard.tsx`} |
80
+ | Hooks | {ex: camelCase.ts} | {ex: `useAuth.ts`} |
81
+ | Utils | {ex: camelCase.ts} | {ex: `formatCurrency.ts`} |
82
+ | Types | {ex: camelCase.ts} | {ex: `userTypes.ts`} |
83
+ | Services | {ex: camelCase.service.ts} | {ex: `auth.service.ts`} |
84
+ | Repositories | {ex: camelCase.repository.ts} | {ex: `user.repository.ts`} |
85
+ | Migrations | {ex: NNN_descricao.sql} | {ex: `001_create_users.sql`} |
86
+
87
+ ---
88
+
89
+ ## 4. Git
90
+
91
+ | Tipo | Convenção | Exemplo |
92
+ |:---|:---|:---|
93
+ | Branches | {ex: tipo/descricao-curta} | {ex: `feat/user-auth`, `fix/login-redirect`} |
94
+ | Commits | {ex: Conventional Commits} | {ex: `feat(auth): add login endpoint`} |
95
+ | Tags | {ex: semver} | {ex: `v1.2.3`} |
96
+ ```
@@ -0,0 +1,119 @@
1
+ # Guia de Onboarding de Padrões do Projeto
2
+
3
+ ## Propósito
4
+
5
+ Este guia instrui o agente a conduzir uma entrevista de onboarding para definir os padrões do projeto. Os padrões são salvos em `.specs/standards/` e funcionam como **memória estática persistente** — consultados por TODAS as features do projeto.
6
+
7
+ ## Quando Executar
8
+
9
+ O onboarding é acionado pela **Skill SDD (Skill 2)** nos seguintes cenários:
10
+
11
+ | Cenário | Ação |
12
+ |:---|:---|
13
+ | `.specs/standards/` **não existe** | Conduzir onboarding completo |
14
+ | `.specs/standards/` **existe mas incompleto** | Perguntar se quer completar |
15
+ | `.specs/standards/` **existe e completo** | Ler e respeitar, propor adições se necessário |
16
+
17
+ ## Estrutura de Standards
18
+
19
+ ```
20
+ .specs/
21
+ └── standards/
22
+ ├── architecture.md ← Padrões arquiteturais (DDD, CQRS, BFF, etc.)
23
+ ├── naming-conventions.md ← Nomenclatura (funções, tabelas, variáveis)
24
+ ├── design-system.md ← Tokens, paleta, tipografia, componentes
25
+ ├── api-conventions.md ← Padrões de API (REST, GraphQL, error format)
26
+ └── coding-standards.md ← Boas práticas e princípios (SSOT, DRY, etc.)
27
+ ```
28
+
29
+ ## Fluxo do Onboarding
30
+
31
+ ### Passo 1: Verificação
32
+
33
+ Verificar se `.specs/standards/` existe no projeto:
34
+ - Se NÃO existe → prosseguir para Passo 2
35
+ - Se existe → ler todos os arquivos e prosseguir diretamente para a entrevista técnica do SDD
36
+
37
+ ### Passo 2: Anúncio
38
+
39
+ Anunciar ao usuário:
40
+ > "Este projeto ainda não tem padrões definidos em `.specs/standards/`. Vou conduzir uma entrevista rápida para definir os padrões do projeto. Esses padrões serão usados como referência em TODAS as features futuras."
41
+
42
+ ### Passo 3: Entrevista por Categoria
43
+
44
+ Para cada categoria, conduzir uma mini-entrevista via `ask_question`:
45
+
46
+ #### 3.1 Arquitetura
47
+ Perguntas a fazer:
48
+ 1. "Qual padrão arquitetural o projeto segue?" (opções: MVC, Clean Architecture, DDD, Hexagonal, Feature-Based, ou descrever)
49
+ 2. "Usa algum padrão avançado?" (opções: Event Sourcing, CQRS, BFF, Microserviços, Monolito, ou descrever)
50
+ 3. "Qual a estrutura de camadas/módulos?"
51
+ 4. "Há regras de dependência entre camadas?" (ex: Domain nunca importa Infrastructure)
52
+
53
+ Gerar: `.specs/standards/architecture.md` usando template `references/standards-architecture-template.md`
54
+
55
+ #### 3.2 Nomenclatura
56
+ Perguntas a fazer:
57
+ 1. "Convenção para tabelas de banco?" (snake_case plural, PascalCase singular, etc.)
58
+ 2. "Convenção para colunas?" (snake_case, camelCase)
59
+ 3. "Convenção para chaves estrangeiras?" ({tabela}_id, fk_{tabela}, etc.)
60
+ 4. "Convenção para variáveis/funções JS/TS?" (camelCase, verbo+substantivo para funções)
61
+ 5. "Convenção para componentes React/Vue?" (PascalCase, kebab-case)
62
+ 6. "Convenção para arquivos?" (PascalCase para componentes, camelCase para utils, etc.)
63
+
64
+ Gerar: `.specs/standards/naming-conventions.md` usando template `references/standards-naming-template.md`
65
+
66
+ #### 3.3 Design System (se o projeto tem frontend)
67
+ Perguntas a fazer:
68
+ 1. "O projeto tem design system definido?" (se sim, quais tokens)
69
+ 2. "Paleta de cores?" (primária, secundária, surface, error, etc.)
70
+ 3. "Tipografia?" (fonte principal, headings, sizes)
71
+ 4. "Espaçamentos?" (escala de spacing)
72
+ 5. "Border radius e shadows?" (tokens de forma)
73
+ 6. "Componentes base?" (Card, Button, Input — quais tokens usam)
74
+
75
+ Gerar: `.specs/standards/design-system.md` usando template `references/standards-design-system-template.md`
76
+
77
+ Se não tem frontend, marcar como "N/A — projeto backend-only".
78
+
79
+ #### 3.4 Convenções de API (se tem API)
80
+ Perguntas a fazer:
81
+ 1. "Padrão de API?" (REST, GraphQL, tRPC, gRPC)
82
+ 2. "Formato de response?" (envelope `{data, error, meta}`, flat, etc.)
83
+ 3. "Versionamento de API?" (/v1/, header, query param)
84
+ 4. "Padrão de erro?" (HTTP status + body padronizado)
85
+ 5. "Paginação?" (cursor, offset, keyset)
86
+ 6. "Autenticação em API?" (Bearer token, cookie, API key)
87
+
88
+ Gerar: `.specs/standards/api-conventions.md` usando template `references/standards-api-template.md`
89
+
90
+ #### 3.5 Boas Práticas e Princípios
91
+ Perguntas a fazer:
92
+ 1. "Quais princípios o projeto adota?" (SSOT, DRY, KISS, YAGNI, SOLID — selecionar os relevantes)
93
+ 2. "Há regras de abstração?" (quando extrair função, componente, hook)
94
+ 3. "Tratamento de erros?" (custom exceptions, error boundary, etc.)
95
+ 4. "Logging?" (structured logging, níveis, o que logar)
96
+ 5. "Testes?" (estratégia, cobertura mínima, tipos de teste)
97
+
98
+ Gerar: `.specs/standards/coding-standards.md` usando template `references/standards-coding-template.md`
99
+
100
+ ### Passo 4: Apresentação
101
+
102
+ 1. Apresentar resumo de todos os padrões definidos
103
+ 2. Perguntar: "Os padrões estão corretos? Deseja ajustar algo?"
104
+ 3. Salvar todos os arquivos em `.specs/standards/`
105
+
106
+ ### Passo 5: Continuar para SDD
107
+
108
+ Após o onboarding, prosseguir normalmente com a Fase 1 do SDD (Análise do Contexto).
109
+
110
+ ---
111
+
112
+ ## Evolução Incremental
113
+
114
+ Durante SDDs de features futuras, o agente pode propor adições aos standards:
115
+
116
+ 1. Se uma decisão técnica nova não está coberta pelos standards existentes
117
+ 2. Perguntar: "Essa decisão deve virar um padrão do projeto para futuras features?"
118
+ 3. Se sim, atualizar o arquivo de standards relevante
119
+ 4. Se não, documentar apenas no SDD da feature
@@ -0,0 +1,84 @@
1
+ # Guia de Análise e Sugestão de Stack Tecnológica
2
+
3
+ ## Como Detectar a Stack Existente
4
+
5
+ Antes de sugerir qualquer tecnologia, analise o projeto existente do usuário:
6
+
7
+ ### Arquivos Indicadores
8
+
9
+ | Arquivo | Indica |
10
+ |:---|:---|
11
+ | `package.json` | Node.js / JavaScript / TypeScript |
12
+ | `tsconfig.json` | TypeScript |
13
+ | `requirements.txt` / `pyproject.toml` | Python |
14
+ | `Cargo.toml` | Rust |
15
+ | `go.mod` | Go |
16
+ | `pom.xml` / `build.gradle` | Java/Kotlin |
17
+ | `Gemfile` | Ruby |
18
+ | `composer.json` | PHP |
19
+
20
+ ### Dentro do `package.json` — Detectar Framework
21
+
22
+ | Dependência | Framework |
23
+ |:---|:---|
24
+ | `next` | Next.js |
25
+ | `nuxt` | Nuxt.js |
26
+ | `react` (sem next) | React SPA (provavelmente Vite) |
27
+ | `vue` (sem nuxt) | Vue.js SPA |
28
+ | `@angular/core` | Angular |
29
+ | `express` | Express.js |
30
+ | `@nestjs/core` | NestJS |
31
+ | `fastify` | Fastify |
32
+
33
+ ### Dentro do `requirements.txt` / `pyproject.toml` — Detectar Framework Python
34
+
35
+ | Dependência | Framework |
36
+ |:---|:---|
37
+ | `django` | Django |
38
+ | `fastapi` | FastAPI |
39
+ | `flask` | Flask |
40
+ | `sqlalchemy` | ORM SQLAlchemy |
41
+
42
+ ---
43
+
44
+ ## Como Sugerir Stack (Quando Não Há Projeto)
45
+
46
+ Se o usuário está começando do zero, use estas perguntas para guiar a sugestão:
47
+
48
+ ### Pergunta 1: Tipo de Aplicação
49
+
50
+ | Tipo | Stack Sugerida |
51
+ |:---|:---|
52
+ | **Web fullstack (SSR)** | Next.js + TypeScript + Prisma + PostgreSQL |
53
+ | **Web SPA + API separada** | Vite + React + TypeScript (front) + NestJS ou FastAPI (back) |
54
+ | **API/Backend only** | NestJS (TS) ou FastAPI (Python) |
55
+ | **Mobile** | React Native + Expo ou Flutter |
56
+ | **CLI tool** | Node.js + Commander ou Python + Click |
57
+
58
+ ### Pergunta 2: Prioridades do Projeto
59
+
60
+ | Prioridade | Influência na Stack |
61
+ |:---|:---|
62
+ | **Performance** | Considerar Rust, Go, ou otimizações específicas |
63
+ | **Velocidade de desenvolvimento** | Frameworks com mais abstrações (Next.js, Django) |
64
+ | **Escalabilidade** | Microserviços, filas, cache distribuído |
65
+ | **Simplicidade** | Monolito, ORM, framework full-featured |
66
+
67
+ ### Pergunta 3: Equipe
68
+
69
+ | Contexto | Influência |
70
+ |:---|:---|
71
+ | Dev solo | Menos abstrações, full-stack frameworks |
72
+ | Equipe pequena (2-5) | Monorepo, TypeScript end-to-end |
73
+ | Equipe grande (5+) | Módulos bem definidos, CI/CD robusto |
74
+
75
+ ---
76
+
77
+ ## Regras para Sugestão
78
+
79
+ 1. **NUNCA sugira uma stack sem justificativa** — sempre explique o "porquê"
80
+ 2. **Considere a experiência do usuário** — não sugira Rust se o usuário é iniciante
81
+ 3. **Apresente no máximo 3 opções** — excesso de escolha paralisa
82
+ 4. **Inclua prós e contras** de cada opção
83
+ 5. **Use `ask_question`** para que o usuário escolha formalmente
84
+ 6. **Registre a decisão** com justificativa no SDD