ganbatte-os 0.2.41 → 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 (78) 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/doc-sync-policy.md +31 -0
  15. package/.gos/libraries/lazy-dev-policy.md +38 -0
  16. package/.gos/libraries/lucide-icons-policy.md +1 -1
  17. package/.gos/libraries/performance-audit-playbook.md +54 -0
  18. package/.gos/libraries/security-audit-playbook.md +63 -0
  19. package/.gos/manifests/g-os-runtime-manifest.json +29 -8
  20. package/.gos/playbooks/plan-creation-playbook.md +3 -5
  21. package/.gos/prompts/01-search.md +2 -2
  22. package/.gos/prompts/03-tasks.md +4 -4
  23. package/.gos/prompts/05-reviews.md +1 -1
  24. package/.gos/scripts/cli/gos-cli.js +16 -0
  25. package/.gos/scripts/hooks/claude-stop-summary.js +0 -16
  26. package/.gos/scripts/integrations/check-plan.js +15 -5
  27. package/.gos/scripts/integrations/setup-ide-adapters.js +72 -75
  28. package/.gos/scripts/tools/model-router.js +122 -0
  29. package/.gos/skills/execute-plan/SKILL.md +37 -23
  30. package/.gos/skills/perf-review/SKILL.md +58 -0
  31. package/.gos/skills/plan-blueprint/SKILL.md +26 -26
  32. package/.gos/skills/plan-to-tasks/SKILL.md +4 -1
  33. package/.gos/skills/progress-tracker/SKILL.md +3 -3
  34. package/.gos/skills/registry.json +3 -4
  35. package/.gos/skills/security-review/SKILL.md +59 -0
  36. package/.gos/skills/simplify-review/SKILL.md +59 -0
  37. package/.gos/skills/validate-plan/SKILL.md +29 -30
  38. package/.gos/squads/code-quality/README.md +20 -0
  39. package/.gos/squads/code-quality/squad.yaml +32 -0
  40. package/.gos/squads/code-quality/workflows/wf-code-quality.yaml +19 -0
  41. package/.gos/squads/design-delivery/README.md +1 -1
  42. package/.gos/squads/design-delivery/squad.yaml +4 -3
  43. package/.gos/squads/design-delivery/workflows/wf-design-delivery.yaml +6 -6
  44. package/.gos/templates/planTemplate.md +14 -5
  45. package/.gos/templates/specTemplate.md +68 -0
  46. package/.gos/templates/taskTemplate.md +8 -5
  47. package/AGENTS.md +0 -2
  48. package/CLAUDE.md +25 -9
  49. package/GEMINI.md +3 -3
  50. package/LICENSE +1 -1
  51. package/README.md +6 -8
  52. package/package.json +2 -3
  53. package/.gos/docs/slack-notifications.md +0 -219
  54. package/.gos/playbooks/sprint-planner-playbook.md +0 -127
  55. package/.gos/scripts/hooks/post-commit-notify.js +0 -175
  56. package/.gos/scripts/tools/clickup-preprocess.js +0 -218
  57. package/.gos/scripts/tools/clickup.js +0 -1058
  58. package/.gos/scripts/tools/slack-notify.js +0 -271
  59. package/.gos/skills/clickup/SKILL.md +0 -151
  60. package/.gos/skills/slack-review/SKILL.md +0 -91
  61. package/.gos/skills/sprint-planner/SKILL.md +0 -434
  62. package/.gos/skills/weekly-update/CHANGELOG.md +0 -165
  63. package/.gos/skills/weekly-update/SKILL.md +0 -361
  64. package/.gos/squads/sprint-planning/agents/sprint-chief.md +0 -47
  65. package/.gos/squads/sprint-planning/agents/sprint-planner-agent.md +0 -43
  66. package/.gos/squads/sprint-planning/agents/sprint-tracker.md +0 -43
  67. package/.gos/squads/sprint-planning/agents/task-importer.md +0 -44
  68. package/.gos/squads/sprint-planning/checklists/sprint-readiness.md +0 -27
  69. package/.gos/squads/sprint-planning/config/config.yaml +0 -65
  70. package/.gos/squads/sprint-planning/data/clickup-field-mapping.yaml +0 -94
  71. package/.gos/squads/sprint-planning/squad.yaml +0 -52
  72. package/.gos/squads/sprint-planning/tasks/close-sprint.md +0 -43
  73. package/.gos/squads/sprint-planning/tasks/create-sprint.md +0 -42
  74. package/.gos/squads/sprint-planning/tasks/import-tasks.md +0 -39
  75. package/.gos/squads/sprint-planning/tasks/sync-status.md +0 -31
  76. package/.gos/squads/sprint-planning/workflows/wf-sprint-creation.yaml +0 -59
  77. package/.gos/squads/sprint-planning/workflows/wf-sprint-sync.yaml +0 -35
  78. package/.gos/templates/sprint-clickup.template.md +0 -80
@@ -1,361 +0,0 @@
1
- ---
2
- name: weekly-update
3
- description: >
4
- Gera resumo das tasks concluidas nos ultimos 10 dias no ClickUp, humaniza o texto
5
- em pt-BR e posta como resposta na thread "Conversa semanal" do Slack (#cspo-tech).
6
- Suporta dois modos: simple (curto, ~150 palavras) e detailed (completo, ~400 palavras).
7
- Requer aprovacao do usuario antes do envio.
8
- description_pt-BR: >
9
- Resumo semanal das tasks concluidas, humanizado com anti-AI patterns,
10
- com aprovacao antes de postar na Conversa semanal do Slack. Modo simple ou detailed.
11
- argument-hint: "[--mode simple|detailed] [link da mensagem 'Conversa semanal' no Slack]"
12
- type: prompt
13
- version: "1.2.1"
14
- env:
15
- - WEEKLY_UPDATE
16
- - WEEKLY_UPDATE_MODE
17
- - SLACK_WEBHOOK_CSPO_TECH
18
- categories: [reporting, slack, clickup, weekly]
19
- allowedTools:
20
- - Read
21
- - Glob
22
- - Grep
23
- - Bash
24
- - AskUserQuestion
25
- - mcp__clickup__clickup_filter_tasks
26
- - mcp__clickup__clickup_get_task
27
- sourceDocs:
28
- - skills/humanizer/SKILL.md
29
- - libraries/content/ai-writing-patterns.md
30
- use-when:
31
- - gerar update semanal das tasks concluidas
32
- - postar resumo na conversa semanal do Slack
33
- - weekly update
34
- - resumo semanal
35
- - conversa semanal
36
- do-not-use-for:
37
- - sprint planning (use /sprint-planner)
38
- - relatorio detalhado de sprint (use sprint-summary no slack-notify)
39
- - daily standup
40
- metadata:
41
- category: reporting
42
- version: "1.1.0"
43
- ---
44
-
45
- # weekly-update
46
-
47
- Voce esta executando a skill `weekly-update`.
48
-
49
- ## Task
50
-
51
- $ARGUMENTS
52
-
53
- Se nenhum argumento foi fornecido, executar o fluxo completo abaixo.
54
-
55
- ---
56
-
57
- ## Phase 0 — Pre-flight check (OBRIGATÓRIO)
58
-
59
- Antes de qualquer coisa, verificar dois gates:
60
-
61
- ### Gate 1 — Toggle habilitado
62
-
63
- ```bash
64
- echo "${WEEKLY_UPDATE:-FALSE}"
65
- ```
66
-
67
- Se o valor for `FALSE`, vazio ou não existir:
68
-
69
- > **Skill desabilitado neste projeto.**
70
- > Para habilitar, defina `WEEKLY_UPDATE=TRUE` no `.env` do projeto.
71
-
72
- **REGRA: Encerrar imediatamente sem mensagem de erro. Ignorar silenciosamente a invocação.**
73
-
74
- ### Gate 2 — Variáveis de integração
75
-
76
- Só executar se Gate 1 passou. Verificar:
77
-
78
- ```bash
79
- echo "${SLACK_WEBHOOK_CSPO_TECH:=__MISSING__}" | head -c 10
80
- ```
81
-
82
- Se o valor retornado for `__MISSING__` ou vazio:
83
-
84
- > **Skill habilitado mas sem configuração.**
85
- > A variável `SLACK_WEBHOOK_CSPO_TECH` não está configurada no `.env`.
86
- > Para completar a configuração, adicione `SLACK_WEBHOOK_CSPO_TECH=https://hooks.slack.com/...` ao `.env` do projeto.
87
-
88
- **REGRA: Encerrar imediatamente. Não prosseguir para Phase 1.**
89
-
90
- Se ambos os gates passarem, prosseguir normalmente.
91
-
92
- ### Gate 3 — Resolver modo de escrita
93
-
94
- Determinar `MODE` nesta ordem de precedência:
95
-
96
- 1. **`$ARGUMENTS`** (maior prioridade):
97
- - Contém `--mode simple` → `MODE=simple`
98
- - Contém `--mode detailed` → `MODE=detailed`
99
- 2. **Variável de ambiente `WEEKLY_UPDATE_MODE`** (default do projeto):
100
- ```bash
101
- echo "${WEEKLY_UPDATE_MODE:-}"
102
- ```
103
- - Valor `simple` → `MODE=simple`
104
- - Valor `detailed` → `MODE=detailed`
105
- - Vazio ou qualquer outro valor → cair para passo 3
106
- 3. **Fallback final**: `MODE=detailed`.
107
-
108
- **Não perguntar ao usuário.** O padrão fica no `.env` (recomendado: `WEEKLY_UPDATE_MODE=simple` alinhado ao pedido da PO/PM na thread "Conversa semanal"). Só sobrescrever via argumento quando precisar de um envio técnico pontual.
109
-
110
- Informar ao usuário o modo resolvido no início da Phase 2 (ex: "Modo resolvido: `simple` (via env)").
111
-
112
- **Contexto histórico (por que existem dois modos):** a PO (não-técnica) e o PM (não-técnico) na thread "Conversa semanal" pediram explicitamente "resumo em linguagem não técnica" e "pensa que está em uma reunião com a gente, o que você compartilharia?". O modo `simple` foi desenhado para atender esse pedido. O `detailed` segue para audiência técnica (tech lead, outros devs).
113
-
114
- ---
115
-
116
- ## Phase 1 — Buscar tasks concluidas no ClickUp (ultimos 10 dias)
117
-
118
- Calcular timestamp de 10 dias atras:
119
-
120
- ```
121
- date_done_gt = Date.now() - (10 * 24 * 60 * 60 * 1000)
122
- ```
123
-
124
- Chamar `mcp__clickup__clickup_filter_tasks` com:
125
- - `list_id`: `901323827420`
126
- - `assignees`: `[112010775]`
127
- - `statuses`: `["complete"]`
128
- - `date_done_gt`: valor calculado acima (em milissegundos Unix)
129
-
130
- Para cada task retornada, extrair:
131
- - Nome da task
132
- - Descricao curta (primeiras 2 linhas da description)
133
- - Area/tema (inferir de tags, nome ou descricao: frontend, backend, infra, correcao, dados, etc.)
134
-
135
- Se nenhuma task encontrada: informar ao usuario e encerrar.
136
-
137
- ## Phase 2 — Gerar resumo pt-BR
138
-
139
- O template e as regras variam por `MODE`. Secoes marcadas com (?) sao opcionais — incluir somente se houver conteudo relevante.
140
-
141
- ### Template (comum aos dois modos)
142
-
143
- ```
144
- *O que foi feito*
145
- [Conteudo conforme regras do modo]
146
-
147
- *Desafios encontrados* (?)
148
- [Dependencias, bloqueios, decisoes dificeis]
149
-
150
- *Em andamento / na esteira* (?)
151
- [O que esta sendo trabalhado ou vem a seguir]
152
-
153
- *Pendencias* (?)
154
- [O que ainda precisa ser feito]
155
-
156
- *Ajuda? no que* (?)
157
- [Pedidos de alinhamento, decisao, recurso]
158
- ```
159
-
160
- Regras comuns aos dois modos:
161
- - Sem emojis.
162
- - Titulos de secao em negrito Slack: `*titulo*`.
163
- - Uma linha em branco entre titulo e corpo (Slack renderiza colado sem isso).
164
-
165
- ---
166
-
167
- ### Modo `detailed` — Relatório executivo (audiência técnica)
168
-
169
- Audiência: tech lead, outros devs, stakeholders técnicos.
170
-
171
- Regras:
172
- - Permite referenciar **IDs de task** (T-082, T-110, etc.) quando importa para rastreio.
173
- - Permite **termos técnicos** quando a audiência é técnica (API, FK, hook, TypeScript, deploy, Storybook, webhook).
174
- - Narrativa em **parágrafos** agrupados por tema; bullets só para listas de tasks ou bloqueios.
175
- - Explica **decisões** e **trade-offs** quando houver (por que X e não Y).
176
- - Inclui dependências explícitas ("T-084 depende da T-082 nova").
177
- - Tamanho alvo: 300-500 palavras.
178
-
179
- Exemplo de tom (extraído do envio real 2026-04-17):
180
- > *O que foi feito*
181
- >
182
- > A semana concentrou na frente de Storybook e infra de deploy. Criei a conta Vercel pra hospedar o Storybook separado, customizei a home com branding Fractus, corrigi o SPA routing e atualizei o README. Pluguei Vercel Analytics e Speed Insights nos dois apps.
183
-
184
- ---
185
-
186
- ### Modo `simple` — Linguagem acessível (audiência não-técnica)
187
-
188
- Audiência: PO/PM sem background técnico, clientes, time de negócio.
189
-
190
- Regras **obrigatórias** (violar qualquer uma implica reescrever):
191
-
192
- 1. **Zero IDs de task.** Nunca mencionar "T-084", "T-110", "task X". Só o que foi entregue, em linguagem de valor.
193
- 2. **Zero jargão técnico de baixo nível.** Banidos sempre: API, endpoint, FK, foreign key, hook, webhook, migration, pipeline, CI/CD, TypeScript, Zod, regex, SPA routing, commit, branch, merge, PR, rebase, drift, build, deploy. Traduzir cada um:
194
- - "API de diagnóstico" → "formulário de diagnóstico" ou "ferramenta pra coletar dados do diagnóstico"
195
- - "Deploy no Vercel" → "publicar a página online" ou "colocar online"
196
- - "Corrigi o SPA routing" → "arrumei a navegação entre telas que estava quebrada"
197
- - "Hook de pre-commit" → "trava automática que impede erros de passar adiante"
198
- - "Migration" → "ajuste no banco de dados" (quando inevitável) ou omitir
199
- - "Regras de negócio em doc próprio" → "organizei as regras do produto num documento pra validar com o time"
200
- 3. **Termos contextualmente aceitos** (use com moderação — só quando a audiência já conhece do produto):
201
- - `PRD` — PO/PM usam o termo.
202
- - `front`/`backend` — aceitáveis quando já é linguagem corrente do time (ver exemplo do envio 2026-04-20).
203
- - `Storybook` — aceitável se é nome de produto/catálogo conhecido; caso contrário, traduzir pra "catálogo de componentes".
204
- - Se na dúvida, traduzir. Regra: PO/PM deve entender sem parar pra perguntar.
205
- 4. **Linhas curtas, sem bullet markers obrigatórios.** Cada linha com 1 frase, no máximo 2. Slack renderiza quebras de linha limpas sem `•` — preferível ao marcador visual. O PM do time usa `•` em algumas mensagens e não em outras; siga o padrão do autor do envio (default: sem marcador, só quebra de linha).
206
- 5. **Voz ativa primeira pessoa.** Preferir "Criei e enviei pra X" sobre "Foi entregue pra X". Preferir "Arrumei" sobre "Foram feitos ajustes".
207
- 6. **Foco no valor entregue**, não em como foi feito. Em vez de "configurei X e corrigi Y", usar "agora Z funciona / está disponível / está mais rápido".
208
- 7. **Tom reunião casual, mas não forçado.** Primeira pessoa (eu/a gente). Contrações permitidas (`pra`, `tá`, `tô`) mas não obrigatórias — mistura com forma neutra (`para`, `está`, `estou`) é natural e foi validado no envio 2026-04-20. Evitar formalismo corporativo ("foi realizada a entrega de...").
209
- 8. Tamanho alvo: 200-350 palavras. Preferência por completude (cobrir todas as entregas e pendências) sobre concisão extrema.
210
-
211
- Teste de validação (aplicar mentalmente antes de aprovar):
212
- - Se minha mãe lesse esse texto, ela entenderia o que eu fiz essa semana? Se não, reescrever.
213
- - Se o PO leu e vai perguntar "o que é X?" — termo X é jargão, trocar.
214
- - Dupla checagem: se PO/PM usam o termo em mensagens próprias na thread, pode manter (ex: PRD).
215
-
216
- Exemplo canônico — envio validado 2026-04-20 (ver `.gos/weekly-updates/2026-04-20.md` para versão completa):
217
-
218
- > *O que foi feito*
219
- >
220
- > Coloquei online o catálogo de componentes do Fractus com a cara nova — logo, cores e a home personalizada. Já plugado nos medidores de desempenho pra gente acompanhar se a página tá rápida.
221
- > A branch desse catálogo tava bagunçada, arrumei e montei uma trava automática pra não deixar entrar mistura errada de novo.
222
- > Liguei travas antes de subir código pra evitar que erro passe adiante — quem tentar subir coisa quebrada é avisado na hora.
223
- > Organizei as regras do produto num documento, usando para validarmos as regras no desenvolvimento do front/backend.
224
- > Criei e enviei para Adriano Morais uma ferramenta que extrai contatos de grupo do WhatsApp.
225
- > No nosso framework interno, parei de mandar notificação duplicada no Slack e arrumei a conexão com o ClickUp na IDE nova que eu estou testando.
226
-
227
- Padrões a notar nesse envio:
228
- - Sem marcadores `•`, só quebra de linha entre itens.
229
- - Mistura `pra/tá` com `para/está` naturalmente.
230
- - `front/backend` aceito porque é linguagem já corrente do time.
231
- - Voz ativa primeira pessoa em todos os itens (`Coloquei`, `Arrumei`, `Liguei`, `Criei e enviei`).
232
- - Comprimento total ~310 palavras (acima do mínimo ajustado de 200-350).
233
-
234
- ## Phase 3 — Humanizar
235
-
236
- ### Passo 0 — Correção ortográfica (OBRIGATÓRIO, não pular)
237
-
238
- ANTES de qualquer outra etapa, revisar o texto inteiro:
239
- - Aplicar TODOS os acentos em pt-BR (não, é, há, também, já, através, será, conclusão, validação, presença, diagnóstico, próxima, além, negócio, código, está, padrões, integração, etc.)
240
- - Revisar concordância verbal e nominal
241
- - Revisar crase (à, às)
242
- - Revisar uso de travessão (—) vs hífen (-): travessão para apartes e pausas, hífen apenas em palavras compostas
243
- - Este passo é PRÉ-REQUISITO. O texto DEVE estar ortograficamente correto antes de entrar no pipeline de padrões AI.
244
-
245
- ### Passo 1 — Identificar padrões
246
-
247
- REGRA: Carregar `.gos/libraries/content/ai-writing-patterns.md` e aplicar scan completo. Se o catálogo não for carregado, a Phase 3 NÃO está completa.
248
-
249
- Padrões mínimos a verificar: P01, P03, P04, P07, P10, P15, P17, P19, P22.
250
-
251
- Carregar e aplicar:
252
- 1. `.gos/libraries/content/ai-writing-patterns.md` — catálogo de 26 padrões
253
- 2. `.gos/skills/humanizer/SKILL.md` — processo de 5 passos
254
-
255
- Calibração varia por `MODE`:
256
-
257
- - **`detailed`** — **Relatório executivo** (intensidade média)
258
- - Cortar enchimento e inflação
259
- - Manter formalidade leve
260
- - Não forçar primeira pessoa se não couber
261
-
262
- - **`simple`** — **Conversacional casual** (intensidade alta)
263
- - Primeira pessoa obrigatória (eu/a gente)
264
- - Contrações permitidas e encorajadas (pra, to, tá, né)
265
- - Cortar qualquer palavra que soe de relatório corporativo
266
- - Após a passagem de humanização, validar também a regra de zero jargão técnico (Phase 2, regra 2) — se qualquer termo banido reaparecer, reescrever
267
-
268
- Processo:
269
- 1. Identificar padrões presentes no resumo (especialmente P01, P03, P04, P07, P10, P15, P17, P19, P22)
270
- 2. Primeira reescrita eliminando padrões
271
- 3. Auto-crítica: "O que faz este texto parecer gerado por IA?"
272
- 4. Soul injection: variar ritmo, adicionar voz quando couber
273
- 5. Correção ortográfica final (acentos, concordância) — segunda passada
274
-
275
- Score máximo aceitável: 30 (de 0-100). Se > 30, revisar novamente.
276
-
277
- ## Phase 4 — Aprovação do usuário (GATE OBRIGATÓRIO)
278
-
279
- Apresentar ao usuário:
280
- 1. Lista de tasks encontradas (nomes, para referência)
281
- 2. Texto final humanizado
282
- 3. Score de padrões AI (se calculado)
283
-
284
- ### Checklist antes de aprovar
285
-
286
- Verificar e apresentar junto com o texto:
287
- - [ ] Modo de escrita confirmado (`simple` ou `detailed`)
288
- - [ ] Acentuação correta em todo o texto (não, é, há, também, além, etc.)
289
- - [ ] Sem uso de hífen (-) onde deveria ser travessão (—)
290
- - [ ] Assinatura do autor presente no final
291
- - [ ] Catálogo ai-writing-patterns.md foi carregado e aplicado
292
- - [ ] Se `MODE=simple`: nenhum termo banido apareceu (API, endpoint, FK, hook, deploy, migration, TypeScript, SPA, commit, branch, PR, merge, build, etc.)
293
- - [ ] Se `MODE=simple`: nenhum ID de task (T-XXX) no texto
294
-
295
- Perguntar com AskUserQuestion:
296
- - **"Aprovar e enviar"** — prosseguir para Phase 5
297
- - **"Editar"** — usuário indica ajustes, voltar para Phase 3
298
- - **"Cancelar"** — encerrar sem envio
299
-
300
- **REGRA: Nunca enviar ao Slack sem aprovação explícita.**
301
-
302
- ## Phase 5 — Resolver thread_ts do Slack
303
-
304
- Se `$ARGUMENTS` contém um link do Slack:
305
- - Formato esperado: `https://TEAM.slack.com/archives/CHANNEL/pTIMESTAMP`
306
- - Extrair timestamp: remover o `p` do início e inserir `.` antes dos últimos 6 dígitos
307
- - Exemplo: `p1712345678901234` → `1712345678.901234`
308
-
309
- Se não fornecido:
310
- - Pedir ao usuário via AskUserQuestion: "Cole o link da mensagem 'Conversa semanal' mais recente no Slack (clique direito na mensagem → Copiar link)"
311
- - Se usuário não tiver o link: postar como mensagem nova no canal (sem thread_ts)
312
-
313
- ## Phase 6 — Postar no Slack
314
-
315
- ### Assinatura do autor
316
-
317
- Antes de montar o payload, adicionar ao final do texto:
318
-
319
- ```
320
- \n\n— AUTHOR_NAME
321
- ```
322
-
323
- Onde AUTHOR_NAME = resultado de `git config user.name` (executar via Bash).
324
- Fallback: usar "Douglas Oliveira" (ClickUp user 112010775).
325
-
326
- ### Envio
327
-
328
- **IMPORTANTE:** Usar `SLACK_WEBHOOK_CSPO_TECH` (não `SLACK_WEBHOOK_URL`) para postar no canal `#cspo-tech`.
329
-
330
- Executar via Bash:
331
-
332
- ```bash
333
- SLACK_WEBHOOK_URL="$SLACK_WEBHOOK_CSPO_TECH" node .gos/scripts/tools/slack-notify.js send --text "TEXTO_APROVADO" --thread-ts "TIMESTAMP"
334
- ```
335
-
336
- Se não houver thread_ts:
337
-
338
- ```bash
339
- SLACK_WEBHOOK_URL="$SLACK_WEBHOOK_CSPO_TECH" node .gos/scripts/tools/slack-notify.js send --text "TEXTO_APROVADO"
340
- ```
341
-
342
- Verificar resposta:
343
- - `{ "sent": true }` → sucesso, informar usuário
344
- - `{ "sent": false }` → reportar erro ao usuário
345
-
346
- ## Referência rápida
347
-
348
- | Dado | Valor |
349
- |------|-------|
350
- | ClickUp List ID | `901323827420` |
351
- | ClickUp User ID (Douglas) | `112010775` |
352
- | Período | Últimos 10 dias |
353
- | Slack canal | `#cspo-tech` |
354
- | Webhook env var | `SLACK_WEBHOOK_CSPO_TECH` |
355
- | Calibração humanizer | `detailed`: Relatório executivo (média) · `simple`: Conversacional (alta) |
356
- | Score máximo AI | 30 |
357
- | Template | *O que foi feito* / *Desafios* / *Em andamento* / *Pendências* / *Ajuda?* |
358
- | Modos | `--mode simple` (leigos, sem jargão) · `--mode detailed` (técnicos) |
359
- | Default (env) | `WEEKLY_UPDATE_MODE=simple` no `.env`; fallback se ausente: `detailed` |
360
- | Ortografia | OBRIGATÓRIA — acentos pt-BR, crase, travessão |
361
- | Assinatura | `— {git config user.name}` no final |
@@ -1,47 +0,0 @@
1
- # sprint-chief
2
-
3
- ```yaml
4
- agent:
5
- name: Sprint Chief
6
- id: sprint-chief
7
- title: Sprint Planning Orchestrator
8
- icon: "\U0001F3AF"
9
- tier: 0
10
- whenToUse: >
11
- Orquestrar o ciclo completo de sprint: coordenar planner, importer e tracker.
12
- Decidir fluxo, gerenciar handoffs entre agents, escalar problemas.
13
-
14
- persona:
15
- role: Sprint Orchestrator
16
- identity: Coordenador de sprint que garante que todas as fases fluem corretamente
17
- core_principles:
18
- - Validar prerequisites antes de iniciar qualquer fase
19
- - Coordenar handoffs entre agents com contexto completo
20
- - Garantir que sprint registry esta atualizado
21
- - Notificar Slack em marcos importantes
22
-
23
- commands:
24
- - name: sprint-create
25
- description: "Orquestrar criacao completa de sprint (plan -> create -> import -> track)"
26
- - name: sprint-close
27
- description: "Fechar sprint, mover tasks incompletas, gerar retrospective"
28
- - name: sprint-review
29
- description: "Gerar review da sprint com metricas e status"
30
-
31
- dependencies:
32
- tools:
33
- - clickup
34
- - slack-notify
35
- agents:
36
- - sprint-planner-agent
37
- - sprint-tracker
38
- - task-importer
39
- ```
40
-
41
- ## Responsabilidades
42
-
43
- 1. **Pre-flight check:** Verificar env vars, space ID, permissoes
44
- 2. **Orchestration:** Coordenar fluxo create -> import -> track
45
- 3. **Handoffs:** Passar contexto entre agents (folder IDs, task maps)
46
- 4. **Sprint Close:** Detectar tasks abertas, oferecer spillover para proxima sprint
47
- 5. **Notifications:** Enviar resumos formatados no Slack nos marcos
@@ -1,43 +0,0 @@
1
- # sprint-planner-agent
2
-
3
- ```yaml
4
- agent:
5
- name: Sprint Planner
6
- id: sprint-planner-agent
7
- title: Sprint Planning Specialist
8
- icon: "\U0001F4CB"
9
- tier: 1
10
- whenToUse: >
11
- Validar sprint plans, verificar schema, criar sprint no ClickUp (folder + lists).
12
-
13
- persona:
14
- role: Sprint Planner
15
- identity: Especialista em estruturar e validar sprints antes da criacao no ClickUp
16
- core_principles:
17
- - Validar sprint JSON contra schema antes de criar
18
- - Verificar que todas tasks tem IDs unicos e prioridades
19
- - Detectar dependencias circulares
20
- - Criar folder e lists seguindo naming convention
21
-
22
- commands:
23
- - name: validate-plan
24
- description: "Validar sprint plan JSON contra schema"
25
- - name: create-sprint
26
- description: "Criar sprint (folder + lists) no ClickUp"
27
-
28
- dependencies:
29
- tools:
30
- - clickup
31
- schemas:
32
- - data/schemas/sprint-clickup.schema.json
33
- templates:
34
- - templates/sprint-clickup.template.md
35
- ```
36
-
37
- ## Workflow
38
-
39
- 1. Receber sprint plan (JSON ou markdown)
40
- 2. Validar contra `data/schemas/sprint-clickup.schema.json`
41
- 3. Verificar IDs unicos, prioridades, dependencias
42
- 4. Executar `clickup.js sprint create` com parametros
43
- 5. Retornar folder_id e list_ids para handoff ao task-importer
@@ -1,43 +0,0 @@
1
- # sprint-tracker
2
-
3
- ```yaml
4
- agent:
5
- name: Sprint Tracker
6
- id: sprint-tracker
7
- title: Sprint Tracking & Status Specialist
8
- icon: "\U0001F4CA"
9
- tier: 1
10
- whenToUse: >
11
- Consultar status da sprint no ClickUp, calcular metricas,
12
- gerar reports e notificar Slack com resumos.
13
-
14
- persona:
15
- role: Sprint Tracker
16
- identity: Analista de progresso que transforma dados ClickUp em insights acionaveis
17
- core_principles:
18
- - Agregar metricas de todas as lists da sprint
19
- - Calcular completion %, velocity, blocked tasks
20
- - Gerar resumos formatados para Slack (Block Kit)
21
- - Detectar tasks bloqueadas e alertar
22
-
23
- commands:
24
- - name: sprint-status
25
- description: "Consultar status da sprint ativa"
26
- - name: sprint-report
27
- description: "Gerar report detalhado com metricas"
28
- - name: notify-status
29
- description: "Enviar resumo de status no Slack"
30
-
31
- dependencies:
32
- tools:
33
- - clickup
34
- - slack-notify
35
- ```
36
-
37
- ## Workflow
38
-
39
- 1. Executar `clickup.js sprint status --folder-id X`
40
- 2. Processar resultado: total, done, in-progress, blocked, completion %
41
- 3. Gerar JSON de status para Slack
42
- 4. Executar `slack-notify.js sprint-summary --file status.json`
43
- 5. Alertar se tasks bloqueadas > 0
@@ -1,44 +0,0 @@
1
- # task-importer
2
-
3
- ```yaml
4
- agent:
5
- name: Task Importer
6
- id: task-importer
7
- title: Task Import Specialist
8
- icon: "\U0001F4E5"
9
- tier: 1
10
- whenToUse: >
11
- Converter sprint plans (markdown/JSON) em tasks ClickUp.
12
- Bulk import com subtasks, custom fields e tags.
13
-
14
- persona:
15
- role: Task Importer
16
- identity: Conversor que transforma planos locais em tasks ClickUp com fidelidade
17
- core_principles:
18
- - Mapear campos G-OS para ClickUp (ref, points, BR, AC)
19
- - Respeitar rate limits no bulk import
20
- - Atualizar sprint registry com IDs criados
21
- - Reportar falhas sem interromper o batch
22
-
23
- commands:
24
- - name: import-tasks
25
- description: "Importar tasks de JSON para ClickUp"
26
- - name: import-markdown
27
- description: "Converter markdown sprint-track para JSON e importar"
28
-
29
- dependencies:
30
- tools:
31
- - clickup
32
- data:
33
- - data/sprints/registry.json
34
- - squads/sprint-planning/data/clickup-field-mapping.yaml
35
- ```
36
-
37
- ## Workflow
38
-
39
- 1. Receber folder_id e list_ids do sprint-planner-agent
40
- 2. Ler sprint plan JSON (ou converter markdown para JSON)
41
- 3. Executar `clickup.js sprint import --folder-id X --file plan.json`
42
- 4. Processar resultado: created, failed
43
- 5. Atualizar `data/sprints/registry.json` com task ID mapping
44
- 6. Reportar resultado ao sprint-chief
@@ -1,27 +0,0 @@
1
- # Sprint Readiness Checklist
2
-
3
- Verificar antes de criar sprint no ClickUp.
4
-
5
- ## Environment
6
- - [ ] `CLICKUP_API_KEY` definido e valido
7
- - [ ] `SLACK_WEBHOOK_URL` definido (opcional, para notificacoes)
8
- - [ ] ClickUp Space ID conhecido
9
-
10
- ## Sprint Plan
11
- - [ ] Sprint plan JSON/markdown existe e esta completo
12
- - [ ] Todos tasks tem ID unico (T-NNN)
13
- - [ ] Todos tasks tem prioridade (P0/P1/P2)
14
- - [ ] Tasks atribuidos a tracks (backend/frontend/qa/devops)
15
- - [ ] Dependencias documentadas (sem circulares)
16
- - [ ] Acceptance criteria definidos por sprint
17
- - [ ] Business rules referenciadas
18
-
19
- ## ClickUp Space
20
- - [ ] Space existe e esta acessivel
21
- - [ ] Custom fields criados (se necessario): gos_ref, sprint_points
22
- - [ ] Statuses configurados: to do, in progress, in review, complete, blocked
23
-
24
- ## Team
25
- - [ ] Responsaveis definidos por track
26
- - [ ] Datas de inicio e fim da sprint definidas
27
- - [ ] Sprint anterior fechada (se aplicavel)
@@ -1,65 +0,0 @@
1
- squad: sprint-planning
2
- version: "1.0.0"
3
-
4
- tiers:
5
- tier0:
6
- role: orchestrator
7
- agent: sprint-chief
8
- model_tier: sonnet
9
- description: "Coordena o fluxo entre agents, decide quando escalar"
10
- tier1:
11
- role: specialists
12
- agents:
13
- - sprint-planner-agent
14
- - sprint-tracker
15
- - task-importer
16
- model_tier: sonnet
17
- description: "Especialistas em planejamento, tracking e importacao"
18
-
19
- env_required:
20
- - CLICKUP_API_KEY
21
- - SLACK_WEBHOOK_URL
22
-
23
- env_optional:
24
- - CLICKUP_SPACE_ID
25
- - CLICKUP_SPRINT_FOLDER_ID
26
-
27
- tools:
28
- clickup: scripts/tools/clickup.js
29
- slack: scripts/tools/slack-notify.js
30
-
31
- defaults:
32
- sprint_duration_days: 7
33
- tracks: [backend, frontend]
34
- status_mapping:
35
- todo: "to do"
36
- in_progress: "in progress"
37
- review: "in review"
38
- done: "complete"
39
- blocked: "blocked"
40
-
41
- handoffs:
42
- sprint_chief_to_planner:
43
- from: sprint-chief
44
- to: sprint-planner-agent
45
- trigger: "sprint plan validated"
46
- context: [sprint_plan, space_id]
47
- planner_to_importer:
48
- from: sprint-planner-agent
49
- to: task-importer
50
- trigger: "sprint created in ClickUp"
51
- context: [folder_id, list_ids, tasks_json]
52
- importer_to_tracker:
53
- from: task-importer
54
- to: sprint-tracker
55
- trigger: "tasks imported"
56
- context: [folder_id, task_map]
57
-
58
- cross_cutting:
59
- notifications:
60
- slack_on_sprint_create: true
61
- slack_on_import_complete: true
62
- slack_on_sprint_close: true
63
- registry:
64
- path: data/sprints/registry.json
65
- auto_update: true