ganbatte-os 0.2.37 → 0.2.41

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 (38) hide show
  1. package/.gos/agents/profiles/ganbatte-os-master.md +100 -0
  2. package/.gos/libraries/caveman-rules.md +58 -0
  3. package/.gos/libraries/cloudflare-stack-kb.md +161 -0
  4. package/.gos/libraries/component-reuse-gate.md +75 -0
  5. package/.gos/libraries/default-stack-kb.md +98 -0
  6. package/.gos/libraries/engineering-best-practices.md +208 -0
  7. package/.gos/libraries/gos-compress-setup.md +62 -0
  8. package/.gos/libraries/intake-questions-mom-test.md +91 -0
  9. package/.gos/libraries/lucide-icons-policy.md +174 -0
  10. package/.gos/libraries/security-best-practices.md +138 -0
  11. package/.gos/libraries/supabase-stack-kb.md +124 -0
  12. package/.gos/libraries/timer-pattern-spec.md +252 -0
  13. package/.gos/libraries/typeform-pattern-spec.md +204 -0
  14. package/.gos/libraries/ui-guardrails-checklist.md +144 -0
  15. package/.gos/libraries/visual-diff-lenses.md +114 -0
  16. package/.gos/playbooks/audit-streaming-playbook.md +86 -0
  17. package/.gos/skills/adr-tech-decisions/SKILL.md +166 -0
  18. package/.gos/skills/audit-screenshots/SKILL.md +200 -142
  19. package/.gos/skills/cloudflare-pages-setup/SKILL.md +180 -0
  20. package/.gos/skills/figma-print-diff/SKILL.md +170 -0
  21. package/.gos/skills/gos-caveman/SKILL.md +110 -0
  22. package/.gos/skills/gos-compress/SKILL.md +134 -0
  23. package/.gos/skills/gos-compress/scripts/compress.py +346 -0
  24. package/.gos/skills/gos-compress/scripts/setup.py +91 -0
  25. package/.gos/skills/idea-intake/SKILL.md +147 -0
  26. package/.gos/skills/plan-blueprint/SKILL.md +18 -3
  27. package/.gos/skills/plan-to-tasks/SKILL.md +37 -1
  28. package/.gos/skills/prd-from-intake/SKILL.md +94 -0
  29. package/.gos/skills/prototype-orchestrator/SKILL.md +120 -0
  30. package/.gos/skills/registry.json +12 -1
  31. package/.gos/skills/timer-component-pattern/SKILL.md +245 -0
  32. package/.gos/skills/typeform-form-pattern/SKILL.md +210 -0
  33. package/.gos/skills/ui-guardrails/SKILL.md +111 -0
  34. package/.gos/templates/intakeTemplate.md +41 -0
  35. package/.gos/templates/planTemplate.md +25 -4
  36. package/.gos/templates/prdLeanTemplate.md +40 -0
  37. package/.gos/templates/taskTemplate.md +29 -5
  38. package/package.json +1 -1
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: ui-guardrails
3
+ description: >
4
+ Pre-flight obrigatorio antes de codar uma tela. Verifica que cada task de tela tem
5
+ estados (loading/empty/error/success), responsividade, a11y e tokens declarados.
6
+ Bloqueia codegen se faltar — evita que erros de UI sejam descobertos tarde.
7
+ Pensado para reduzir o "trabalho extra de corrigir o que nao foi previsto".
8
+ argument-hint: "<plan-id-ou-task-path>"
9
+ allowedTools: [Read, Glob, Grep, Edit, AskUserQuestion]
10
+ sourceDocs:
11
+ - libraries/ui-guardrails-checklist.md
12
+ use-when:
13
+ - antes de design-to-code/figma-implement-design rodar
14
+ - validar plano de UI antes de execute-plan
15
+ - usuario reclama "esqueceram do estado vazio de novo"
16
+ do-not-use-for:
17
+ - tasks de backend (sem UI)
18
+ - bug fixes pontuais (use react-doctor)
19
+ metadata:
20
+ category: validation
21
+ ---
22
+
23
+ Voce esta executando como **UI Guardrails Validator** via skill `ui-guardrails`. Verifica que cada task de UI tem cobertura completa antes de codegen — bloqueia execucao se faltar.
24
+
25
+ ## Contrato
26
+
27
+ 1. Le um plano (`docs/plans/PLAN-NNN/`) ou task individual (`tasks/T-NN-...md`).
28
+ 2. Para cada task com `area: ui-ux` ou `area: frontend`, aplica checklist (ver `libraries/ui-guardrails-checklist.md`).
29
+ 3. Se faltar item -> output structured com gaps + sugestao de adicao + opcao de `AskUserQuestion` para corrigir inline OU abortar.
30
+ 4. Se passar -> output curto "OK, N tasks validadas, codegen liberado".
31
+
32
+ ## Checklist (resumo — detalhe na library)
33
+
34
+ Para CADA task de UI:
35
+
36
+ ### A. Estados visuais (5 obrigatorios)
37
+ - [ ] Loading: **skeleton OBRIGATORIO** (shadcn `Skeleton`) para listas/cards/tabelas; spinner Lucide `Loader2` so para botoes ou acoes pontuais.
38
+ - [ ] Empty: copy + Lucide icon (h-12 w-12 text-muted-foreground) + CTA primario.
39
+ - [ ] Error: mensagem + Lucide `AlertTriangle` + recovery action (botao retry).
40
+ - [ ] Success (quando aplicavel): Lucide `CheckCircle2` em toast/inline.
41
+ - [ ] Default (renderizado normal).
42
+
43
+ **Regra critica**: **SEMPRE skeleton ao carregar dados**, **SEMPRE empty state quando lista vazia**. Sem excecoes mesmo em descartavel.
44
+
45
+ ### B. Responsividade (3 breakpoints minimos)
46
+ - [ ] Mobile (<768px): layout declarado
47
+ - [ ] Tablet (768-1024px): comportamento declarado
48
+ - [ ] Desktop (>1024px): default
49
+
50
+ ### C. A11y (4 minimos)
51
+ - [ ] Roles ARIA quando aplicavel (button, dialog, listbox)
52
+ - [ ] Labels em inputs (htmlFor + id ou aria-label)
53
+ - [ ] Focus order definido se mais de 3 elementos interativos
54
+ - [ ] Contraste AA verificado (lens 6 do figma-print-diff)
55
+
56
+ ### D. Tokens do DS (todos via referencia)
57
+ - [ ] Cores via tokens (`bg-primary`, NUNCA hex direto)
58
+ - [ ] Spacing via scale (`gap-4`, NUNCA `gap-[17px]`)
59
+ - [ ] Typography via classes (`text-base`, NUNCA `text-[15px]`)
60
+ - [ ] Border-radius via scale (`rounded-md`, NUNCA `rounded-[7px]`)
61
+
62
+ ### F. Lucide React (zero-emoji policy)
63
+ - [ ] Import de icones SO de `lucide-react` (nunca FontAwesome/Heroicons/outra lib).
64
+ - [ ] **Zero emoji unicode em strings de UI** (regex `/[\u{1F300}-\u{1FAFF}\u{2600}-\u{27BF}]/u`).
65
+ - [ ] Icon-only button com `aria-label` obrigatorio.
66
+ - [ ] Tamanhos canonicos: `h-3.5 w-3.5` inline, `h-4 w-4` button, `h-5 w-5` heading, `h-12 w-12` empty state, `h-16 w-16` hero.
67
+
68
+ Detalhe: `libraries/lucide-icons-policy.md`.
69
+
70
+ ### E. Interacao (quando aplicavel)
71
+ - [ ] Trigger -> acao -> resultado declarado em `## Interacoes & Estados`
72
+ - [ ] Edge case: o que acontece se trigger duplicar (debounce)?
73
+ - [ ] Edge case: o que acontece se backend demorar >3s?
74
+
75
+ ## Niveis de violacao
76
+
77
+ | Tipo | Severidade | Acao |
78
+ |------|-----------|------|
79
+ | A faltando (estado) | high | Bloqueia codegen. Pede correcao via AskUserQuestion. |
80
+ | B faltando (responsivo) | high | Bloqueia se task e tela full. Warning se componente isolado. |
81
+ | C faltando (a11y) | medium | Warning. Codegen continua mas adiciona TODO no codigo. |
82
+ | D faltando (tokens) | medium | Warning. Codegen pode prosseguir mas relatorio ao final. |
83
+ | E faltando (interacao) | high (se ha trigger) | Bloqueia. plan-blueprint ja exige isso — caso aqui e detectar regressao. |
84
+ | F faltando (Lucide/emoji) | high | Bloqueia. Recusar codigo com emoji em UI ou icone nao-Lucide. |
85
+
86
+ ## Output
87
+
88
+ ```
89
+ [ui-guardrails] PLAN-NNN — N tasks de UI validadas
90
+
91
+ [OK] T-01: cards-projeto-list A B C D E
92
+ [FAIL] T-02: drawer-edit-projeto A . C D E (faltando: empty state, hover focus)
93
+ [WARN] T-03: tooltip-status A B . D E (a11y: sem aria-label)
94
+
95
+ bloqueado: 1 task (T-02). Corrija antes de design-to-code.
96
+ warnings: 1 (T-03 — a11y).
97
+ ```
98
+
99
+ ## Hook em pipeline
100
+
101
+ `prototype-orchestrator` (fase 5 -> 6) e `plan-blueprint` (apos plan-to-tasks) DEVEM chamar `ui-guardrails` automaticamente em produtos NAO-descartaveis. Para descartaveis, oferecer skip via flag `--no-guardrails`.
102
+
103
+ ## Regras criticas
104
+
105
+ - **Descartavel relax**: se plan tem `descartavel: true` no frontmatter, A/B viram warning (nao block).
106
+ - **Codegen sem guardrails**: violacao da regra do dono ("muito trabalho corrigindo erros nao previstos"). Bloqueia.
107
+ - **Self-update**: se task tem `interaction_target` mas falta `## Interacoes & Estados` no plano, sugerir patch automatico.
108
+
109
+ ## Input
110
+
111
+ $ARGUMENTS
@@ -0,0 +1,41 @@
1
+ ---
2
+ intake_id: INTAKE-<NNN>-<slug>
3
+ status: pronto-para-prd
4
+ descartavel: <true|false>
5
+ created_at: <iso>
6
+ ---
7
+
8
+ # <Titulo curto da ideia>
9
+
10
+ ## Problema (em uma frase)
11
+ <sintese feita pelo agente>
12
+
13
+ ## Historias reais coletadas
14
+ - <bullet 1>
15
+ - <bullet 2>
16
+
17
+ ## Persona
18
+ <descricao em prosa, contexto incluido>
19
+
20
+ ## Jobs-to-be-done
21
+ - Quando <situacao>, eu quero <acao>, para que <resultado>.
22
+
23
+ ## Limites (o que NAO fazer)
24
+ - <bullet>
25
+
26
+ ## Telas-chave (visao bruta)
27
+ 1. <tela 1 — descricao em palavras leigas>
28
+ 2. <tela 2>
29
+
30
+ ## Inspiracoes
31
+ - <link ou nome>
32
+
33
+ ## Escopo
34
+ - Descartavel: <sim|nao>
35
+ - Vida util esperada: <uma vez|semanas|meses|continuo>
36
+
37
+ ## Metrica de sucesso (linguagem humana)
38
+ <frase do usuario>
39
+
40
+ ## Proximo passo
41
+ - Rodar `*prd-from-intake INTAKE-<NNN>-<slug>` para gerar PRD lean.
@@ -15,7 +15,13 @@ validated_at: null
15
15
 
16
16
  # <Título da tela>
17
17
 
18
- ## Contexto
18
+ > **Modelo O QUE / ONDE / COMO / POR QUE** — este plano (e cada task que ele gera) responde às 4 perguntas:
19
+ > - **POR QUE** → `## Contexto` (motivação, PRD/ticket, problema).
20
+ > - **O QUE** → `## Componentes mapeados` + `## Interações & Estados` + `## Checklist de aceite` (o entregável).
21
+ > - **ONDE** → `context.md` (`## Arquivos relevantes`) + coluna de paths nas tasks (`## Arquivos`).
22
+ > - **COMO** → `## Aderência à Stack` + `## Plano de execução` (abordagem técnica, fetching, composição).
23
+
24
+ ## Contexto (POR QUE)
19
25
 
20
26
  <Por que esta tela existe — referência ao PRD, ticket, decisão de produto.>
21
27
 
@@ -140,10 +146,11 @@ Decisões possíveis:
140
146
  > Gaps detectados confrontando Postman/regras-de-negocio com a necessidade da tela. Cada item vira task ClickUp atribuída ao Douglas (default) ou ao `ASSIGNEE` informado. Vazio = backend completo para esta tela.
141
147
 
142
148
  > Coluna `Bloqueia tasks` lista os T-IDs frontend cujo frontmatter declara `depends_on_backend:` apontando para a `gap-key` desta linha (ex.: `migration-20260501150000`).
149
+ > Coluna `Bypass frontend` declara COMO o frontend entrega sem o backend pronto (fallback, mock, toast "em breve", cast + null-coalesce). Sem bypass declarado, a tarefa frontend fica `bloqueada-backend`. **Princípio: frontend nunca bloqueado por gap de backend — sempre há bypass OU a task é explicitamente bloqueada.**
143
150
 
144
- | gap-key | Gap | Endpoint/Coleção esperada | ClickUp ID | Status | Bloqueia tasks |
145
- |---------|-----|---------------------------|------------|--------|----------------|
146
- | | | | | | |
151
+ | gap-key | Gap | Bypass frontend | Endpoint/Coleção esperada | ClickUp ID | Status | Bloqueia tasks |
152
+ |---------|-----|-----------------|---------------------------|------------|--------|----------------|
153
+ | | | | | | | |
147
154
 
148
155
  ## Mock strategy
149
156
 
@@ -157,6 +164,20 @@ Decisões possíveis:
157
164
  - **Postman**: `<lista de coleções/endpoints relevantes em docs/postman/>`
158
165
  - **Stack ref**: `<sha de stack.md>`
159
166
 
167
+ ## Tabela de regressão
168
+
169
+ > Fluxos/telas existentes que este plano NÃO pode quebrar. `validate-plan` confere que nenhum item regrediu. Vazio = plano greenfield sem superfície a preservar.
170
+
171
+ - <rota/fluxo 1 — o que deve continuar funcionando (fetching + markup preservados)>
172
+ - <rota/fluxo 2>
173
+
174
+ ## Anti-padrões
175
+
176
+ > Proibições explícitas desta entrega. O executor recusa qualquer task que viole. Derivado das memórias do projeto + decisões deste plano.
177
+
178
+ - ❌ <ação proibida 1 — ex.: criar primitiva nova quando componente X já cobre; estender via prop>
179
+ - ❌ <ação proibida 2 — ex.: hardcode de RBAC inline em JSX; centralizar em helper>
180
+
160
181
  ## Riscos & Rollback
161
182
 
162
183
  - <risco>
@@ -0,0 +1,40 @@
1
+ ---
2
+ prd_id: PRD-<NNN>-<slug>
3
+ intake_ref: INTAKE-<NNN>-<slug>
4
+ descartavel: <bool>
5
+ status: pronto-para-adr
6
+ created_at: <iso>
7
+ ---
8
+
9
+ # <Titulo>
10
+
11
+ ## TL;DR (1 paragrafo, max 4 linhas)
12
+ <problema + persona + solucao + metrica>
13
+
14
+ ## Quem usa
15
+ <persona em 2 linhas>
16
+
17
+ ## Por que existe
18
+ <problema em 2 linhas, citando 1 historia real>
19
+
20
+ ## O que faz (3-7 bullets)
21
+ - <feature 1>
22
+ - <feature 2>
23
+
24
+ ## Telas-chave
25
+ | # | Tela | Proposito | Inputs | Outputs |
26
+ |---|------|-----------|--------|---------|
27
+ | 1 | <nome> | <verbo + objeto> | <dado entrada> | <dado saida> |
28
+
29
+ ## Criterios de aceite (do nao-tecnico)
30
+ - [ ] Usuario consegue <acao primaria> em menos de <X> passos
31
+ - [ ] <criterio mensurivel>
32
+
33
+ ## Metrica de sucesso
34
+ <copia da metrica humana + 1 metrica quantitativa derivada>
35
+
36
+ ## NAO faz parte (escopo negativo)
37
+ - <bullet>
38
+
39
+ ## Proximo passo
40
+ - Rodar `*adr-tech-decisions PRD-<NNN>-<slug>` para definir arquitetura.
@@ -17,15 +17,39 @@ assignees: []
17
17
  links: []
18
18
  ---
19
19
 
20
- ## Contexto
20
+ <!--
21
+ MODELO DE TASK: toda task DEVE responder às 4 perguntas, nesta ordem:
22
+ POR QUE → ## Contexto
23
+ O QUE → ## Objetivo + ## Entrega
24
+ ONDE → ## Arquivos
25
+ COMO → ## Plano de execução
26
+ Nenhuma seção pode ficar com placeholder. Se não há resposta para uma das 4, a task não está pronta para execução.
27
+ -->
21
28
 
22
- <Por que esta task existe — referência direta ao plano pai e ao critério de aceite.>
29
+ ## Contexto (POR QUE)
23
30
 
24
- ## Objetivo
31
+ <Por que esta task existe — referência direta ao plano pai e ao critério de aceite. Qual problema/gap motiva.>
25
32
 
26
- <Resultado esperado em 1-2 frases.>
33
+ ## Objetivo (O QUE)
27
34
 
28
- ## Plano de execução
35
+ <Resultado esperado em 1-2 frases — o entregável concreto, observável.>
36
+
37
+ ### Entrega
38
+
39
+ - <artefato 1 que esta task produz (componente, action, migration, story...)>
40
+ - <artefato 2>
41
+
42
+ ## Arquivos (ONDE)
43
+
44
+ > Caminhos exatos. Marque a operação. Sem isso o executor adivinha — proibido.
45
+
46
+ | Operação | Path | Nota |
47
+ |----------|------|------|
48
+ | criar | `src/.../novo.tsx` | <o que é> |
49
+ | editar | `src/.../existente.ts:NN` | <o que muda> |
50
+ | deletar | `src/.../legado.tsx` | <só se `cleanup_target`> |
51
+
52
+ ## Plano de execução (COMO)
29
53
 
30
54
  - [ ] Passo 1
31
55
  - [ ] Passo 2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ganbatte-os",
3
- "version": "0.2.37",
3
+ "version": "0.2.41",
4
4
  "description": "Framework operacional para design-to-code, squads de entrega e sprint sync com ClickUp.",
5
5
  "bin": {
6
6
  "gos": ".gos/scripts/cli/gos-cli.js"