ganbatte-os 0.2.38 → 0.2.42

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 (82) hide show
  1. package/.gos/README.md +2 -6
  2. package/.gos/agents/profiles/ganbatte-os-master.md +91 -58
  3. package/.gos/agents/profiles/index.json +3 -1
  4. package/.gos/agents/profiles/perf-optimizer.md +10 -0
  5. package/.gos/agents/profiles/po.md +1 -1
  6. package/.gos/agents/profiles/security-auditor.md +11 -0
  7. package/.gos/agents/profiles/sm.md +4 -4
  8. package/.gos/agents/profiles/squad-creator.md +2 -2
  9. package/.gos/config.json +23 -2
  10. package/.gos/docs/curation.md +8 -6
  11. package/.gos/docs/gos_installation_guide.md +1 -1
  12. package/.gos/docs/plan-distribuicao-publica.md +2 -3
  13. package/.gos/docs/toolchain-map.md +2 -2
  14. package/.gos/libraries/component-reuse-gate.md +75 -0
  15. package/.gos/libraries/doc-sync-policy.md +31 -0
  16. package/.gos/libraries/lazy-dev-policy.md +38 -0
  17. package/.gos/libraries/lucide-icons-policy.md +1 -1
  18. package/.gos/libraries/performance-audit-playbook.md +54 -0
  19. package/.gos/libraries/security-audit-playbook.md +63 -0
  20. package/.gos/manifests/g-os-runtime-manifest.json +29 -8
  21. package/.gos/playbooks/audit-streaming-playbook.md +86 -0
  22. package/.gos/playbooks/plan-creation-playbook.md +3 -5
  23. package/.gos/prompts/01-search.md +2 -2
  24. package/.gos/prompts/03-tasks.md +4 -4
  25. package/.gos/prompts/05-reviews.md +1 -1
  26. package/.gos/scripts/cli/gos-cli.js +16 -0
  27. package/.gos/scripts/hooks/claude-stop-summary.js +0 -16
  28. package/.gos/scripts/integrations/check-plan.js +15 -5
  29. package/.gos/scripts/integrations/setup-ide-adapters.js +72 -75
  30. package/.gos/scripts/tools/model-router.js +122 -0
  31. package/.gos/skills/audit-screenshots/SKILL.md +195 -155
  32. package/.gos/skills/execute-plan/SKILL.md +37 -23
  33. package/.gos/skills/figma-print-diff/SKILL.md +5 -0
  34. package/.gos/skills/perf-review/SKILL.md +58 -0
  35. package/.gos/skills/plan-blueprint/SKILL.md +34 -26
  36. package/.gos/skills/plan-to-tasks/SKILL.md +13 -2
  37. package/.gos/skills/progress-tracker/SKILL.md +3 -3
  38. package/.gos/skills/registry.json +3 -4
  39. package/.gos/skills/security-review/SKILL.md +59 -0
  40. package/.gos/skills/simplify-review/SKILL.md +59 -0
  41. package/.gos/skills/validate-plan/SKILL.md +29 -30
  42. package/.gos/squads/code-quality/README.md +20 -0
  43. package/.gos/squads/code-quality/squad.yaml +32 -0
  44. package/.gos/squads/code-quality/workflows/wf-code-quality.yaml +19 -0
  45. package/.gos/squads/design-delivery/README.md +1 -1
  46. package/.gos/squads/design-delivery/squad.yaml +4 -3
  47. package/.gos/squads/design-delivery/workflows/wf-design-delivery.yaml +6 -6
  48. package/.gos/templates/planTemplate.md +35 -5
  49. package/.gos/templates/specTemplate.md +68 -0
  50. package/.gos/templates/taskTemplate.md +37 -10
  51. package/AGENTS.md +0 -2
  52. package/CLAUDE.md +25 -9
  53. package/GEMINI.md +3 -3
  54. package/LICENSE +1 -1
  55. package/README.md +6 -8
  56. package/package.json +2 -3
  57. package/.gos/docs/slack-notifications.md +0 -219
  58. package/.gos/playbooks/sprint-planner-playbook.md +0 -127
  59. package/.gos/scripts/hooks/post-commit-notify.js +0 -175
  60. package/.gos/scripts/tools/clickup-preprocess.js +0 -218
  61. package/.gos/scripts/tools/clickup.js +0 -1058
  62. package/.gos/scripts/tools/slack-notify.js +0 -271
  63. package/.gos/skills/clickup/SKILL.md +0 -151
  64. package/.gos/skills/slack-review/SKILL.md +0 -91
  65. package/.gos/skills/sprint-planner/SKILL.md +0 -434
  66. package/.gos/skills/weekly-update/CHANGELOG.md +0 -165
  67. package/.gos/skills/weekly-update/SKILL.md +0 -361
  68. package/.gos/squads/sprint-planning/agents/sprint-chief.md +0 -47
  69. package/.gos/squads/sprint-planning/agents/sprint-planner-agent.md +0 -43
  70. package/.gos/squads/sprint-planning/agents/sprint-tracker.md +0 -43
  71. package/.gos/squads/sprint-planning/agents/task-importer.md +0 -44
  72. package/.gos/squads/sprint-planning/checklists/sprint-readiness.md +0 -27
  73. package/.gos/squads/sprint-planning/config/config.yaml +0 -65
  74. package/.gos/squads/sprint-planning/data/clickup-field-mapping.yaml +0 -94
  75. package/.gos/squads/sprint-planning/squad.yaml +0 -52
  76. package/.gos/squads/sprint-planning/tasks/close-sprint.md +0 -43
  77. package/.gos/squads/sprint-planning/tasks/create-sprint.md +0 -42
  78. package/.gos/squads/sprint-planning/tasks/import-tasks.md +0 -39
  79. package/.gos/squads/sprint-planning/tasks/sync-status.md +0 -31
  80. package/.gos/squads/sprint-planning/workflows/wf-sprint-creation.yaml +0 -59
  81. package/.gos/squads/sprint-planning/workflows/wf-sprint-sync.yaml +0 -35
  82. package/.gos/templates/sprint-clickup.template.md +0 -80
@@ -1,434 +0,0 @@
1
- ---
2
- name: sprint-planner
3
- description: >
4
- Orquestra planejamento completo de sprint a partir de qualquer input (caminhos de projeto,
5
- designs Figma, transcricoes, documentos). Gera PRD, ADR, roadmap, schema DBML e backlog
6
- executavel com tasks decompostas. Trabalha em loops interativos de descoberta.
7
- argument-hint: "[caminho do projeto, arquivo de design, transcricao, ou descricao livre]"
8
- allowedTools: [Read, Glob, Grep, Bash, Write, Edit, Agent, AskUserQuestion]
9
- sourceDocs:
10
- - playbooks/sprint-planner-playbook.md
11
- - templates/adr-tmpl.yaml
12
- - playbooks/story-creation-playbook.md
13
- - playbooks/gsd-agent-decomposition-playbook.md
14
- use-when:
15
- - transformar ideia ou projeto em sprint completa
16
- - planejar sprint de projeto novo ou existente (greenfield ou brownfield)
17
- - gerar PRD + ADR + roadmap + tasks a partir de qualquer input
18
- - receber designs Figma, transcricoes ou documentacao e montar backlog
19
- - preparar ambiente completo (contas, credenciais, infra, DBML)
20
- do-not-use-for:
21
- - execucao de tasks ja planejadas — use /sdd ou /compose
22
- - refinamento de backlog existente — use @sm ou @po
23
- - hotfix ou ajuste pontual sem necessidade de planejamento formal
24
- - analise de um unico link — use /link-insight
25
- metadata:
26
- category: workflow-automation
27
- ---
28
-
29
- # sprint-planner
30
-
31
- Voce esta executando a skill `sprint-planner`.
32
-
33
- ## Conceito
34
-
35
- O Sprint Planner e um orquestrador que transforma qualquer input em uma sprint completa
36
- e executavel. Diferente do SDD (que assume requisitos claros), o Sprint Planner comeca
37
- com descoberta interativa e constroi o entendimento progressivamente.
38
-
39
- **Nao executa codigo** — para apos produzir o pacote completo da sprint.
40
- Para executar, use `/sdd <PRD.md>` ou `/compose <TASK-NNN>`.
41
-
42
- ## Task
43
-
44
- $ARGUMENTS
45
-
46
- Se nenhum input foi fornecido, solicite ao usuario imediatamente.
47
-
48
- ## Leitura Obrigatoria
49
-
50
- Antes de iniciar, leia:
51
- - `playbooks/sprint-planner-playbook.md` — workflow detalhado com checklists
52
- - `templates/adr-tmpl.yaml` — template de ADR para fase 3
53
- - `rules/spec-as-contract.md` — principios do contrato de especificacao
54
-
55
- ## Phase 0 — Triage & Input Normalization
56
-
57
- **Objetivo:** Classificar o input e preparar material para descoberta.
58
-
59
- 1. Classificar tipo de input recebido:
60
-
61
- | Tipo | Deteccao | Acao |
62
- |------|----------|------|
63
- | `project-path` | Caminho para codebase | Executar `/project-brief <path>` |
64
- | `design` | Screenshot, Figma frame, export Figma Make | Analise visual — extrair telas, fluxos, componentes |
65
- | `transcription` | Texto de reuniao, audio transcrito | Extrair requisitos, fluxos, restricoes, decisoes |
66
- | `document` | PRD, spec, briefing existente | Ler, sumarizar, identificar gaps |
67
- | `free-text` | Descricao livre do usuario | Iniciar discovery loop diretamente |
68
- | `mixed` | Combinacao de tipos acima | Processar cada tipo, consolidar |
69
-
70
- 2. Gerar `input-analysis.md` com:
71
- - Tipo(s) de input detectado(s)
72
- - Resumo do material (10-15 linhas)
73
- - Gaps identificados (o que falta para planejar)
74
- - Prerequisitos para discovery
75
-
76
- **Gate:** Input normalizado. Apresentar resumo ao usuario antes de continuar.
77
-
78
- ## Phase 1 — Discovery (Loops Interativos)
79
-
80
- **Objetivo:** Coletar requisitos via loops de 2-3 perguntas por vez.
81
-
82
- ### Motor de Tecnicas
83
-
84
- Em cada loop, selecionar 2-4 tecnicas conforme o estagio e tipo de incerteza:
85
-
86
- | Tecnica | Quando usar |
87
- |---------|-------------|
88
- | SCQA | Enquadrar contexto rapidamente (Situacao → Complicacao → Questao → Acao) |
89
- | Analise de Premissas | Quando houver "nao sei", lacunas, ambiguidades ou suposicoes |
90
- | ReAct | Quando faltar conhecimento de dominio — pesquisar, trazer fontes, confirmar |
91
- | Task-Oriented Thought | Para decompor entendimento em backlog |
92
- | Tree of Thoughts | Para gerar opcoes de caminho quando ha multiplas abordagens |
93
- | Brainstorming Estruturado | Para alternativas e decisoes de escopo |
94
- | Verificacao de Consistencia | Para checar lacunas entre requisitos e criterios de aceite |
95
- | Feynman | Para explicar de forma simples a quem nao e tecnico |
96
-
97
- ### Checklist de Coleta
98
-
99
- 1. **Contexto**: Qual produto/modulo/tela? Qual problema e por que agora?
100
- 2. **Objetivo**: Qual resultado esperado (metrica/impacto)?
101
- 3. **Usuarios**: Perfis, permissoes e stakeholders
102
- 4. **Escopo**: O que entra e o que NAO entra nesta Sprint
103
- 5. **Fluxos**: Passo a passo do usuario e telas envolvidas
104
- 6. **Regras de negocio**: Validacoes, estados, permissoes
105
- 7. **Dados**: Campos, integracoes, origem/destino, relatorios
106
- 8. **Restricoes**: Prazo, LGPD/compliance, performance, padroes
107
- 9. **Criterios de aceite**: Sucesso/erro/excecao
108
- 10. **Time/capacidade**: Papeis (FE/BE/QA/UX), duracao da Sprint, prioridades
109
-
110
- ### Formato de Cada Loop
111
-
112
- ```
113
- ### Tecnicas escolhidas
114
- - [Tecnica] — (1 frase do porque)
115
- - [Tecnica] — (1 frase do porque)
116
-
117
- ### Resultado parcial
118
- - (5-10 linhas com entendimento e pendencias)
119
- - Confirmado: [lista]
120
- - A confirmar: [lista]
121
- - Pesquisa necessaria: [lista]
122
-
123
- ### Perguntas
124
- 1. ...
125
- 2. ...
126
- 3. ...
127
- ```
128
-
129
- ### Diferenciar Fontes
130
-
131
- - Confirmado pelo usuario
132
- - Assumido como padrao de mercado (a confirmar)
133
- - Baseado em pesquisa (com referencia)
134
-
135
- **Gate:** Clarity >= 70% no checklist. Se < 70% apos 4 loops, consolidar o que tem e sinalizar gaps explicitamente no PRD.
136
-
137
- ## Phase 2 — Requirements Crystallization (PRD)
138
-
139
- **Objetivo:** Consolidar descobertas em PRD formal.
140
-
141
- 1. Gerar `sprint-planner/<slug>/PRD.md` contendo:
142
- - Visao geral e objetivo
143
- - Problema que resolve
144
- - Escopo: IN e OUT (explicito)
145
- - Usuarios e perfis
146
- - Requisitos funcionais (numerados)
147
- - Requisitos nao-funcionais
148
- - Criterios de aceite (Given/When/Then)
149
- - Dependencias externas
150
- - Riscos e assuncoes
151
- - **Decisoes Menores (Embedded ADR)**: decisoes que nao justificam arquivo separado, cada uma com contexto, opcoes, escolha e justificativa
152
-
153
- 2. Reuso: patterns do agente `@pm` (Morgan) e template `prd-for-ralph.template.md`
154
-
155
- **Gate:** Usuario aprova PRD antes de avancar. Se houver rejeicao, voltar a Phase 1 para refinar.
156
-
157
- ## Phase 3 — Architecture & Schema
158
-
159
- **Objetivo:** Definir arquitetura, decisoes estruturais e schema de dados.
160
-
161
- ### ADR (Architecture Decision Records)
162
-
163
- Para cada decisao arquitetural significativa (3+ opcoes com trade-offs):
164
- 1. Gerar `sprint-planner/<slug>/ADR-NNN.md` usando template de `templates/adr-tmpl.yaml`
165
- 2. Decisoes tipicas: stack tecnologico, banco de dados, autenticacao, hospedagem, arquitetura de API
166
-
167
- Decisoes menores (escolha obvia, < 3 opcoes) ficam embedded no PRD (Phase 2).
168
-
169
- ### Schema DBML
170
-
171
- Se o projeto envolve banco de dados:
172
- 1. Gerar `sprint-planner/<slug>/schema.dbml` em formato DBML
173
- 2. Incluir: tabelas, campos com tipos, relacoes (1:1, 1:N, N:N), indexes, enums
174
- 3. Anotar RLS policies quando aplicavel (Supabase/Postgres)
175
- 4. Exemplo de formato:
176
-
177
- ```dbml
178
- Table users {
179
- id uuid [pk, default: `gen_random_uuid()`]
180
- email varchar [unique, not null]
181
- created_at timestamp [default: `now()`]
182
- }
183
-
184
- Table projects {
185
- id uuid [pk]
186
- owner_id uuid [ref: > users.id]
187
- name varchar [not null]
188
- status project_status [default: 'draft']
189
- }
190
-
191
- Enum project_status {
192
- draft
193
- active
194
- archived
195
- }
196
- ```
197
-
198
- ### APIs
199
-
200
- Se o projeto envolve APIs:
201
- - Listar endpoints: metodo, path, request/response schema, autenticacao
202
-
203
- **Gate:** ADR(s) e schema revisados e aprovados pelo usuario.
204
-
205
- ## Phase 4 — Roadmap Generation
206
-
207
- **Objetivo:** Gerar roadmap com fases e prazos realistas.
208
-
209
- 1. Aplicar logica de `proposals/gerar-roadmap-por-fases-com-prazos`:
210
-
211
- | Complexidade | Fases | Duracao tipica |
212
- |-------------|-------|----------------|
213
- | Simples | 2-3 | Ate 15 dias |
214
- | Medio | 4-5 | 15-45 dias |
215
- | Complexo | 5-6 | 45+ dias |
216
-
217
- 2. Fases recomendadas por complexidade:
218
-
219
- **Simples (2-3 fases):**
220
- 1. Setup & Core
221
- 2. Testes & Deploy
222
-
223
- **Medio (4-5 fases):**
224
- 1. Descoberta & Briefing (3-5 dias)
225
- 2. Arquitetura & Setup (5-8 dias)
226
- 3. Desenvolvimento Core (10-15 dias)
227
- 4. Testes, QA & Deploy (5-10 dias)
228
-
229
- **Complexo (5-6 fases):**
230
- 1. Descoberta & Briefing (3-5 dias)
231
- 2. Design UX/UI — Figma (5-7 dias, apenas se ha interface)
232
- 3. Arquitetura & Setup (5-10 dias)
233
- 4. Desenvolvimento Core (10-20 dias)
234
- 5. Observabilidade & Integracoes (5-10 dias)
235
- 6. Testes, QA & Go-Live (5-10 dias)
236
-
237
- 3. Gerar `sprint-planner/<slug>/ROADMAP.md` com fases, duracoes, entregaveis e condicoes de inicio
238
-
239
- **Validacao:**
240
- - Soma das duracoes <= total + 20% margem
241
- - Cada fase tem pelo menos 1 entregavel concreto
242
- - Nenhuma fase com menos de 2 dias
243
-
244
- **Gate:** Roadmap com fases e prazos validados pelo usuario.
245
-
246
- ## Phase 5 — Task Decomposition
247
-
248
- **Objetivo:** Decompor roadmap em tasks executaveis e detalhadas o suficiente para que qualquer pessoa (tecnica ou nao) entenda o que deve ser feito.
249
-
250
- 1. Executar `/plan-to-tasks sprint-planner/<slug>/PRD.md`
251
- 2. Cada task segue formato padrao:
252
- - ID: `TASK-YYYYMM-NNN`
253
- - Titulo imperativo
254
- - Area: FE / BE / QA / UX / DevOps / General
255
- - Prioridade: P0 (bloqueante) / P1 (importante) / P2 (nice-to-have)
256
- - Estimativa: max 1 dia por task
257
- - DoD mensuravel
258
- 3. User stories em Given/When/Then (padrao `story-creation-playbook.md`)
259
- 4. Ordenar por dependencias — tasks sem dependencia primeiro
260
- 5. Scoring de complexidade (1-25) conforme playbook de story creation
261
-
262
- ### Regras de Enriquecimento Obrigatorio
263
-
264
- Cada task DEVE conter os seguintes campos com nivel de detalhe minimo:
265
-
266
- | Campo | Regra | Exemplo |
267
- |-------|-------|---------|
268
- | `description` | Min 2 sentencas: O QUE fazer + POR QUE fazer | "Inicializar o projeto Next.js com App Router. Necessario para estabelecer a base de codigo do projeto." |
269
- | `context` | Motivacao para leitor nao-tecnico. Por que esta task existe no contexto do projeto | "Primeiro passo do projeto. Todas as demais tasks dependem desta estrutura estar funcional." |
270
- | `acceptanceCriteria` | Formato DADO/QUANDO/ENTAO. Min 2 criterios verificaveis | "DADO que o repo foi clonado QUANDO rodar pnpm dev ENTAO o servidor sobe sem erros" |
271
- | `steps` | Passo a passo de implementacao (3-7 steps acionaveis) | "1. Rodar pnpm create next-app 2. Configurar Prettier 3. Criar estrutura de pastas" |
272
- | `points` | Story points obrigatorio (1, 2, 3, 5, 8, 13) | 3 |
273
- | `files` | Paths especificos, NAO diretorios genericos | `app/layout.tsx` em vez de `app/` |
274
- | `dependencies` | Array de T-IDs que bloqueiam esta task (vazio se nenhum) | `["T-005"]` ou `[]` |
275
- | `dod` | Definition of Done resumido em 1 linha | "Projeto roda localmente, estrutura match spec, preview Vercel OK" |
276
- | `subtasks` | Obrigatorio para tasks >5 pontos | Array de sub-items |
277
- | `businessRules` | IDs de regras de negocio (vazio se nenhuma) | `["BR-001"]` ou `[]` |
278
-
279
- ### Exemplo de Task Enriquecida
280
-
281
- ```json
282
- {
283
- "id": "T-006",
284
- "title": "Scaffold Next.js App Router",
285
- "description": "Inicializar o projeto Next.js com App Router, TypeScript, Tailwind v4, ESLint e Prettier. Configurar a estrutura de pastas conforme a especificacao arquitetural (secao 2.1 do ADR) para garantir consistencia e escalabilidade do codebase.",
286
- "context": "Este e o primeiro passo do projeto Fractus. Todos os demais tasks (backend e frontend) dependem desta estrutura base estar correta e funcional. A estrutura de pastas define convencoes que serao seguidas por toda a equipe.",
287
- "priority": "P0",
288
- "area": "backend",
289
- "points": 3,
290
- "assignee": "Douglas Oliveira",
291
- "steps": [
292
- "Rodar pnpm create next-app@latest com App Router, TypeScript, Tailwind, ESLint",
293
- "Configurar Prettier com regras do projeto (.prettierrc)",
294
- "Criar estrutura de pastas: app/, components/ui/, lib/, hooks/, types/, services/",
295
- "Configurar path aliases no tsconfig.json (@/ para src/)",
296
- "Adicionar scripts no package.json (dev, build, lint, format)",
297
- "Validar que pnpm dev sobe sem erros",
298
- "Fazer deploy preview no Vercel e confirmar que a pagina padrao renderiza"
299
- ],
300
- "acceptanceCriteria": [
301
- "DADO que o repo foi clonado QUANDO rodar pnpm install && pnpm dev ENTAO o servidor sobe em localhost:3000 sem erros",
302
- "DADO a estrutura de pastas QUANDO comparar com secao 2.1 do ADR ENTAO todos os diretorios listados existem",
303
- "DADO o projeto deployado QUANDO acessar a preview URL no Vercel ENTAO a pagina renderiza com status 200"
304
- ],
305
- "files": [
306
- "package.json", "tsconfig.json", "next.config.ts", "tailwind.config.ts",
307
- ".prettierrc", ".eslintrc.json", "app/layout.tsx", "app/page.tsx"
308
- ],
309
- "dependencies": [],
310
- "businessRules": [],
311
- "dod": "Projeto roda localmente, estrutura match spec, preview Vercel funcional"
312
- }
313
- ```
314
-
315
- ### Validacao Pre-Import
316
-
317
- O CLI `clickup.js sprint import` agora valida cada task automaticamente (score 0-100). Tasks com score < 30 bloqueiam o import. Use `--skip-validation` para bypass.
318
-
319
- **Gate:** Tasks acionaveis, detalhadas e sem interpretacao subjetiva.
320
-
321
- ## Phase 6 — Environment & Setup Tasks
322
-
323
- **Objetivo:** Gerar tasks de preparacao de ambiente que precedem o desenvolvimento.
324
-
325
- 1. Detectar necessidades de setup a partir do PRD e ADRs:
326
-
327
- | Categoria | Exemplos |
328
- |-----------|----------|
329
- | Contas de servicos | Supabase, Vercel, Cloudflare, APIs externas |
330
- | Credenciais | API keys, secrets, env vars, OAuth apps |
331
- | Repositorio | Criar repo, configurar branches, CI/CD |
332
- | Backend | Migrations iniciais, seeds, RLS policies |
333
- | Frontend | Scaffold, design tokens, tema base |
334
- | DBML | Gerar schema.dbml, validar com dbdiagram.io |
335
- | Infraestrutura | DNS, dominios, certificados, storage |
336
-
337
- 2. Gerar tasks com area `devops` ou `general`, prioridade P0
338
- 3. Marcar como pre-requisitos das tasks de desenvolvimento
339
- 4. Incluir instrucoes passo-a-passo (criar conta → obter credenciais → configurar .env)
340
-
341
- **Gate:** Nenhuma task de dev depende de setup nao planejado.
342
-
343
- ## Phase 7 — Sprint Assembly & Summary
344
-
345
- **Objetivo:** Consolidar todos os artefatos em visao geral da sprint.
346
-
347
- 1. Gerar `sprint-planner/<slug>/SPRINT-OVERVIEW.md` com:
348
- - Nome e objetivo da sprint
349
- - Entregaveis (com links para artefatos gerados)
350
- - Fora de escopo (explicito)
351
- - Assuncoes e riscos
352
- - Dependencias externas
353
- - Resumo do backlog (tabela com todas as tasks, area, prioridade, estimativa)
354
- - Ordem de execucao sugerida
355
- - Proximos passos (qual skill usar para executar)
356
-
357
- 2. Registrar decisoes em `.G-OS/memory/decision-log.json`
358
-
359
- ### ClickUp-Ready Output (Opcional)
360
-
361
- Se o projeto usa ClickUp para gestao, gerar tambem o JSON de import:
362
-
363
- 1. Gerar `sprint-planner/<slug>/sprint-import.json` no formato do schema `data/schemas/sprint-clickup.schema.json`
364
- 2. Cada task com TODOS os campos de enriquecimento obrigatorio (ver Phase 5):
365
- - `id`, `title`, `description`, `context`, `priority`, `area`, `points`
366
- - `assignee`, `steps`, `acceptanceCriteria` (DADO/QUANDO/ENTAO)
367
- - `files` (paths especificos), `dependencies`, `businessRules`, `dod`
368
- - `subtasks` (obrigatorio para tasks >5 pontos)
369
- - `estimatedHours` (0.5-16), `technicalNotes` (quando aplicavel)
370
- 3. Criterios de aceite viram checklist "Acceptance Criteria" no ClickUp automaticamente
371
- 4. Steps viram checklist "Implementation Steps" no ClickUp automaticamente
372
- 5. Campo `assignee` com nome do responsavel (resolvido pelo CLI via `--team-id`)
373
- 6. Textos passam por sanitizacao automatica (correcao de acentos + deteccao de padroes de IA)
374
- 7. Importar via: `node scripts/tools/clickup.js sprint import --folder-id <id> --file sprint-import.json --team-id <id>`
375
- 8. Para enriquecer tasks ja importadas: `node scripts/tools/clickup.js task enrich --file enriched.json`
376
-
377
- ### Artefatos Finais
378
-
379
- ```
380
- .G-OS/sprint-planner/<slug>/
381
- input-analysis.md
382
- PRD.md
383
- ADR-001.md (... ADR-NNN.md)
384
- schema.dbml (se aplicavel)
385
- ROADMAP.md
386
- SPRINT-OVERVIEW.md
387
- sprint-import.json (se ClickUp habilitado)
388
-
389
- .G-OS/tasks/
390
- TASK-YYYYMM-001.md
391
- TASK-YYYYMM-002.md
392
- ...
393
- ```
394
-
395
- ### Continuacao apos Sprint Planner
396
-
397
- | Objetivo | Comando |
398
- |----------|---------|
399
- | Executar spec-driven | `/sdd sprint-planner/<slug>/PRD.md` (pula fases 1-3 do SDD) |
400
- | Orquestrar execucao | `/compose TASK-YYYYMM-001` |
401
- | Refinar backlog | `@sm` ou `@po` revisam stories |
402
- | Implementar frontend | `/fe` com tasks geradas |
403
- | Implementar backend | `/be` com tasks geradas |
404
-
405
- ## Regras Criticas
406
-
407
- 1. **Nao executar codigo** — Sprint Planner para apos produzir o pacote da sprint.
408
- 2. **Nao assumir requisitos** — se faltar informacao, perguntar no loop de discovery.
409
- 3. **Nao pular gates** — cada fase precisa de aprovacao antes de avancar.
410
- 4. **Internalizar tudo** — nenhuma referencia a caminhos externos no output final.
411
- 5. **Priorizar setup** — tasks de ambiente sempre precedem desenvolvimento.
412
- 6. **DBML quando houver banco** — sempre gerar schema mesmo para projetos simples.
413
- 7. **ADR para decisoes grandes** — 3+ opcoes com trade-offs = ADR separado.
414
-
415
- ## Model Guidance
416
-
417
- | Escopo | Modelo recomendado |
418
- |--------|-------------------|
419
- | Projeto simples (escopo claro, 3-5 tasks) | `sonnet` |
420
- | Projeto medio (ambiguidade moderada, 5-15 tasks) | `opus` |
421
- | Projeto complexo (multi-dominio, 15+ tasks, Figma + backend) | `opus` (obrigatorio) |
422
- | Discovery apenas (fases 0-1) | `sonnet` |
423
- | Full pipeline (fases 0-7) | `opus` (recomendado) |
424
-
425
- ## When to Use
426
- - Use according to the triggers described in the description/use-when list.
427
-
428
- ## Do not use
429
- - Fora do escopo descrito; prefira a skill apropriada.
430
-
431
- ## Instructions
432
- 1) Siga o passo-a-passo principal da skill.
433
- 2) Valide saa com checklists desta skill ou do workflow.
434
- 3) Registre decises relevantes se aplic5vel.
@@ -1,165 +0,0 @@
1
- # weekly-update — Changelog
2
-
3
- ## 2026-04-20 — v1.2.1 (refinamento do modo simple após envio validado)
4
-
5
- Após o primeiro envio real em modo `simple` (mesma data), Douglas ajustou manualmente a versão gerada antes de enviar. Ajustes virando regras permanentes:
6
-
7
- ### Mudanças nas regras do modo simple
8
-
9
- 1. **Bullet markers opcionais**: removida obrigatoriedade de `•`. Quebra de linha entre itens é suficiente e preferível — Slack renderiza limpo.
10
- 2. **Tom casual/neutro misturado**: `pra/tá/tô` não são mais mandatórios. Mistura natural com `para/está/estou` é validada e soa melhor.
11
- 3. **Termos contextualmente aceitos** (nova categoria, entre banidos e permitidos):
12
- - `PRD` — PO/PM usam, mantém.
13
- - `front`/`backend` — aceitáveis quando linguagem corrente do time.
14
- - `Storybook` — aceitável se nome de produto; senão trocar por "catálogo de componentes".
15
- 4. **Voz ativa primeira pessoa obrigatória**: "Criei e enviei" > "Entreguei" > "Foi entregue". Evitar passiva.
16
- 5. **Tamanho alvo ajustado**: 200-350 palavras (antes 150-250). Completude vale mais que concisão extrema — cobrir todas as entregas e pendências.
17
-
18
- ### Exemplo canônico arquivado
19
-
20
- `.gos/weekly-updates/2026-04-20.md` — versão final enviada por Douglas com ajustes. Frontmatter documenta os ajustes aplicados. SKILL.md passa a referenciar esse arquivo como exemplo autoritativo (substitui o rascunho anterior curto).
21
-
22
- ### Diff vs v1.2.0
23
-
24
- - Regras 3/4/5 do modo simple reescritas.
25
- - Nova regra 3 (termos contextualmente aceitos) intercalada.
26
- - Alvo subiu de 150-250 para 200-350 palavras.
27
- - Exemplo canônico agora é o envio real, não um rascunho.
28
-
29
- ---
30
-
31
- ## 2026-04-20 — v1.2.0 (modos `simple` e `detailed`, controlados por env)
32
-
33
- Motivação: na thread "Conversa semanal" de 2026-04-17, PO (U07M07M6R42) e PM (U0ADE3FT9HB) pediram explicitamente resumo em linguagem não-técnica. Citações literais:
34
-
35
- - PM: "consegue trazer um resumo em linguem nao técnica pra mim ahaha, por favor?"
36
- - PO: "Pensa que está em uma reunião com a gente, o que você compartilharia?"
37
-
38
- ### Novo argumento e env var
39
-
40
- - `$ARGUMENTS --mode simple|detailed` sobrescreve via linha de comando.
41
- - `WEEKLY_UPDATE_MODE=simple|detailed` no `.env` define o padrão do projeto.
42
- - Se ambos ausentes, fallback para `detailed` (comportamento anterior).
43
- - Skill não pergunta mais — resolve via env/arg e informa o modo no início da Phase 2.
44
-
45
- ### Modo `simple` (novo)
46
-
47
- Audiência não-técnica (PO/PM/clientes). Regras obrigatórias:
48
-
49
- 1. Zero IDs de task (nada de T-084, T-110).
50
- 2. Zero jargão técnico. Lista banida: API, endpoint, FK, hook, webhook, migration, deploy, pipeline, CI/CD, TypeScript, Zod, backend, frontend, SPA routing, commit, branch, merge, PR, rebase, drift, build, pre-commit.
51
- 3. Bullets curtos em vez de parágrafos densos.
52
- 4. Foco no valor entregue, não em como foi feito.
53
- 5. Tom de reunião casual (primeira pessoa, contrações como "pra", "to", "tá").
54
- 6. Alvo: 150-250 palavras.
55
-
56
- Calibração humanizer: conversacional (intensidade alta), contra os 30 pontos de padrões AI.
57
-
58
- ### Modo `detailed` (comportamento anterior, preservado)
59
-
60
- Audiência técnica (tech lead, outros devs). Permite IDs de task, jargão apropriado, narrativa em parágrafos, dependências explícitas. Alvo: 300-500 palavras.
61
-
62
- ### Checklist de aprovação expandido
63
-
64
- Novos itens na Phase 4:
65
- - Modo confirmado antes do envio.
66
- - Em `simple`: nenhum termo banido aparece no texto final.
67
- - Em `simple`: nenhum ID de task (T-XXX) aparece no texto final.
68
-
69
- ### Arquivos afetados
70
-
71
- - `.gos/skills/weekly-update/SKILL.md` — Gate 3 novo, Phase 2 refatorada com templates por modo, Phase 3 com calibração por modo, Phase 4 checklist expandido.
72
- - `.env-example` — nova var `WEEKLY_UPDATE_MODE=simple`.
73
- - `.env` local Ganbatte — adicionado `WEEKLY_UPDATE_MODE=simple`.
74
-
75
- ### Companion: `slack-notify.js` ganhou `fetch-thread` e `find-thread`
76
-
77
- Comandos Web API via `SLACK_BOT_TOKEN` (scope `groups:history` para canais privados). Usado pela skill e disponível para auditoria de threads passadas. Allow-rules adicionadas em `~/.claude/settings.json`:
78
-
79
- - `Bash(node .gos/scripts/tools/slack-notify.js fetch-thread:*)`
80
- - `Bash(node .gos/scripts/tools/slack-notify.js find-thread:*)`
81
-
82
- ---
83
-
84
- ## 2026-04-17 — v2.0 (Web API, thread obrigatória, auto-descoberta)
85
-
86
- Mudanças estruturais motivadas por incidente em produção: o envio via incoming webhook caiu fora da thread "Conversa semanal" e gerou mensagem isolada no canal #cnpq-tech.
87
-
88
- ### Incidente
89
-
90
- - **O quê:** weekly-update postou como mensagem nova no canal em vez de dentro da thread.
91
- - **Causa raiz:** incoming webhook do Slack não suporta `thread_ts`. O skill (v1.x) tentava passar `--thread-ts` para `slack-notify.js send`, mas o script ignorava (webhook path).
92
- - **Impacto:** poluição do canal + confusão visual; mensagem correta teve que ser reenviada e a errada deletada manualmente (API rejeitou `chat.delete` com `cant_delete_message` porque webhook é identidade separada mesmo dentro do mesmo app).
93
-
94
- ### Migração obrigatória: Web API (chat.postMessage)
95
-
96
- - Weekly-update **não usa mais webhook**. Passa a usar `chat.postMessage` via Web API com bot token.
97
- - Env vars novas (ambas obrigatórias):
98
- - `SLACK_BOT_TOKEN=xoxb-...` — Bot User OAuth Token.
99
- - `SLACK_CHANNEL_ID_WEEKLY=C0ADYLL6W0K` — ID do canal #cnpq-tech.
100
- - Env var antiga `SLACK_WEBHOOK_CSPO_TECH` **não é mais usada pelo weekly-update** (continua viva para hooks de commit/task, sem impacto).
101
-
102
- ### Scopes necessários no bot (app Slack)
103
-
104
- - `chat:write` — postar mensagens.
105
- - `chat:write.public` — postar em canais públicos sem invite (opcional).
106
- - `groups:history` — ler histórico de canais privados (necessário para auto-descoberta de thread).
107
- - Após adicionar qualquer scope: **Reinstall to Ganbatte** no painel OAuth (sem reinstall o token não ganha o scope).
108
- - Bot precisa ser convidado no canal privado: `/invite @autocommit` em `#cnpq-tech`.
109
-
110
- ### Thread obrigatória
111
-
112
- - Skill cancela o envio se não conseguir resolver `thread_ts`. Nunca mais cai em "mensagem nova no canal".
113
- - Ordem de resolução do `thread_ts` (Phase 5):
114
- 1. Link do Slack em `$ARGUMENTS` → extrai ts.
115
- 2. **Auto-descoberta** via `slack-notify.js find-thread` (novo) — busca mensagem mais recente que bata com o regex.
116
- 3. Fallback: `AskUserQuestion` pedindo o link.
117
-
118
- ### Auto-descoberta de thread
119
-
120
- Novo comando no CLI:
121
-
122
- ```bash
123
- node .gos/scripts/tools/slack-notify.js find-thread \
124
- --channel-id "$SLACK_CHANNEL_ID_WEEKLY" \
125
- --pattern "CHECK-POINT ASSÍNCRONO|Conversa semanal"
126
- ```
127
-
128
- Retorno:
129
- ```json
130
- { "found": true, "ts": "1776445206.005489", "text_preview": "..." }
131
- ```
132
-
133
- Resolve o `thread_ts` da última mensagem que bate com o pattern — dispensa cole manual de link a cada semana.
134
-
135
- ### Anti-sobreposição entre updates (Phase 1)
136
-
137
- Dois mecanismos cumulativos:
138
-
139
- 1. **Arquivo de estado** `.gos/.weekly-update-last-run.json` — armazena `last_run_date` (YYYY-MM-DD). Skill usa como piso do filtro ClickUp (`date_done_from`). Gravado apenas após `sent: true`.
140
- 2. **Arquivo do update anterior** `.gos/weekly-updates/YYYY-MM-DD.md` — texto íntegro do último envio. Skill lê o mais recente em Phase 1 e cruza contra o draft em Phase 2/4, descartando menções duplicadas (cobre casos em que uma task foi reportada proativamente e só fechou no ClickUp na janela seguinte).
141
-
142
- ### Janela de busca default
143
-
144
- - Era 10 dias. Agora 7 (fallback quando não há `last_run_date`). Alinha com cadência semanal.
145
-
146
- ### Template — quebra visual entre título e corpo
147
-
148
- - Todas as seções (`*O que foi feito*`, `*Desafios encontrados*`, etc.) agora têm linha em branco entre título e primeiro parágrafo. Slack renderia colado antes.
149
-
150
- ### Novos comandos no `slack-notify.js`
151
-
152
- | Comando | Uso | Scope necessário |
153
- |---|---|---|
154
- | `send --channel-id C... --thread-ts TS` | Post via Web API em thread | `chat:write` |
155
- | `delete --channel-id C... --ts TS` | Apagar mensagem do próprio bot | `chat:write` (do app autor) |
156
- | `find-thread --channel-id C... --pattern REGEX` | Achar ts mais recente que bata com regex | `groups:history` (privado) |
157
-
158
- ### Limitações conhecidas
159
-
160
- - `chat.delete` só funciona para mensagens postadas pelo **mesmo token**. Webhook conta como identidade separada — mensagens antigas postadas via webhook não podem ser deletadas via API mesmo que o app seja o mesmo. Delete manual no Slack UI é o único caminho nesse caso.
161
-
162
- ### Coexistência com hooks de commit
163
-
164
- - Hooks pós-commit (`task-done`, `task-update`, `sprint-summary`) continuam em `SLACK_WEBHOOK_URL` via `sendWebhook`. Zero impacto.
165
- - Weekly-update é o único fluxo que migrou para Web API.