ganbatte-os 0.2.41 → 0.2.43
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.
- package/.gos/README.md +2 -6
- package/.gos/agents/profiles/ganbatte-os-master.md +91 -58
- package/.gos/agents/profiles/index.json +3 -1
- package/.gos/agents/profiles/perf-optimizer.md +10 -0
- package/.gos/agents/profiles/po.md +1 -1
- package/.gos/agents/profiles/security-auditor.md +11 -0
- package/.gos/agents/profiles/sm.md +4 -4
- package/.gos/agents/profiles/squad-creator.md +2 -2
- package/.gos/config.json +23 -2
- package/.gos/docs/curation.md +8 -6
- package/.gos/docs/gos_installation_guide.md +1 -1
- package/.gos/docs/plan-distribuicao-publica.md +2 -3
- package/.gos/docs/toolchain-map.md +2 -2
- package/.gos/libraries/doc-sync-policy.md +31 -0
- package/.gos/libraries/lazy-dev-policy.md +38 -0
- package/.gos/libraries/lucide-icons-policy.md +1 -1
- package/.gos/libraries/performance-audit-playbook.md +54 -0
- package/.gos/libraries/security-audit-playbook.md +63 -0
- package/.gos/manifests/g-os-runtime-manifest.json +29 -8
- package/.gos/playbooks/plan-creation-playbook.md +3 -5
- package/.gos/prompts/01-search.md +2 -2
- package/.gos/prompts/03-tasks.md +4 -4
- package/.gos/prompts/05-reviews.md +1 -1
- package/.gos/scripts/cli/gos-cli.js +16 -0
- package/.gos/scripts/hooks/claude-stop-summary.js +0 -16
- package/.gos/scripts/integrations/check-plan.js +15 -5
- package/.gos/scripts/integrations/setup-ide-adapters.js +72 -75
- package/.gos/scripts/tools/model-router.js +122 -0
- package/.gos/skills/execute-plan/SKILL.md +37 -23
- package/.gos/skills/perf-review/SKILL.md +58 -0
- package/.gos/skills/plan-blueprint/SKILL.md +26 -26
- package/.gos/skills/plan-to-tasks/SKILL.md +4 -1
- package/.gos/skills/progress-tracker/SKILL.md +3 -3
- package/.gos/skills/registry.json +3 -4
- package/.gos/skills/security-review/SKILL.md +59 -0
- package/.gos/skills/simplify-review/SKILL.md +59 -0
- package/.gos/skills/validate-plan/SKILL.md +29 -30
- package/.gos/squads/code-quality/README.md +20 -0
- package/.gos/squads/code-quality/squad.yaml +32 -0
- package/.gos/squads/code-quality/workflows/wf-code-quality.yaml +19 -0
- package/.gos/squads/design-delivery/README.md +1 -1
- package/.gos/squads/design-delivery/squad.yaml +4 -3
- package/.gos/squads/design-delivery/workflows/wf-design-delivery.yaml +6 -6
- package/.gos/templates/planTemplate.md +14 -5
- package/.gos/templates/specTemplate.md +68 -0
- package/.gos/templates/taskTemplate.md +8 -5
- package/AGENTS.md +30 -40
- package/CLAUDE.md +36 -14
- package/GEMINI.md +11 -5
- package/LICENSE +1 -1
- package/README.md +74 -442
- package/package.json +2 -3
- package/.gos/docs/slack-notifications.md +0 -219
- package/.gos/playbooks/sprint-planner-playbook.md +0 -127
- package/.gos/scripts/hooks/post-commit-notify.js +0 -175
- package/.gos/scripts/tools/clickup-preprocess.js +0 -218
- package/.gos/scripts/tools/clickup.js +0 -1058
- package/.gos/scripts/tools/slack-notify.js +0 -271
- package/.gos/skills/clickup/SKILL.md +0 -151
- package/.gos/skills/slack-review/SKILL.md +0 -91
- package/.gos/skills/sprint-planner/SKILL.md +0 -434
- package/.gos/skills/weekly-update/CHANGELOG.md +0 -165
- package/.gos/skills/weekly-update/SKILL.md +0 -361
- package/.gos/squads/sprint-planning/agents/sprint-chief.md +0 -47
- package/.gos/squads/sprint-planning/agents/sprint-planner-agent.md +0 -43
- package/.gos/squads/sprint-planning/agents/sprint-tracker.md +0 -43
- package/.gos/squads/sprint-planning/agents/task-importer.md +0 -44
- package/.gos/squads/sprint-planning/checklists/sprint-readiness.md +0 -27
- package/.gos/squads/sprint-planning/config/config.yaml +0 -65
- package/.gos/squads/sprint-planning/data/clickup-field-mapping.yaml +0 -94
- package/.gos/squads/sprint-planning/squad.yaml +0 -52
- package/.gos/squads/sprint-planning/tasks/close-sprint.md +0 -43
- package/.gos/squads/sprint-planning/tasks/create-sprint.md +0 -42
- package/.gos/squads/sprint-planning/tasks/import-tasks.md +0 -39
- package/.gos/squads/sprint-planning/tasks/sync-status.md +0 -31
- package/.gos/squads/sprint-planning/workflows/wf-sprint-creation.yaml +0 -59
- package/.gos/squads/sprint-planning/workflows/wf-sprint-sync.yaml +0 -35
- 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
|