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,219 +1,259 @@
1
1
  ---
2
2
  name: audit-screenshots
3
- description: Skill conversacional. Recebe N prints (anotados ou nao) da aplicacao em uma sessao. Mapeia print -> tela -> Figma frame via docs/figma-screen-map.md. Acumula divergencias entre inputs. Ao fechar, emite UM plano de correcao com tasks pendentes (sem executar). Mesmo template do *plan output e input direto pra *execute-plan.
4
- argument-hint: "<acao> [contexto] # acao: add | list | close [SLUG] | discard"
3
+ description: Skill conversacional de auditoria visual STREAMING. Abre UM plano de correcao (status aberto) e escreve cada task NA HORA por insumo (print/screenshot + Figma URL), em vez de enfileirar e processar no fim. Cada divergencia passa pelo gate de reuso de componente (design-to-code): mapeia -> checa biblioteca -> reuse/create/merge. Usa Figma MCP (expected), Playwright (actual), figma-print-diff (confronto). Modo validate confronta Figma x implementado varrendo figma-screen-map.md. check-plan.js roda so no finalize.
4
+ argument-hint: "<acao> [SLUG|tipo-tela] # acao: open | add | validate | list | finalize [SLUG] | discard"
5
5
  allowedTools: [Read, Glob, Grep, Bash, Write, Edit, AskUserQuestion]
6
6
  sourceDocs:
7
+ - skills/figma-print-diff/SKILL.md
8
+ - skills/component-dedup/SKILL.md
7
9
  - skills/plan-blueprint/SKILL.md
8
- - skills/plan-to-tasks/SKILL.md
10
+ - libraries/component-reuse-gate.md
11
+ - libraries/visual-diff-lenses.md
9
12
  - templates/planTemplate.md
10
13
  - templates/taskTemplate.md
14
+ - playbooks/audit-streaming-playbook.md
11
15
  use-when:
12
- - usuario cola print + diz "isso aqui esta errado"
13
- - usuario pede "compara essa tela com Figma e abre tasks"
14
- - usuario quer agrupar varias divergencias em UM plano de correcao
15
- - usuario menciona "auditoria visual" ou "tela X esta divergindo do Figma"
16
+ - usuario cola print + diz "isso aqui esta errado" (vira task na hora no plano aberto)
17
+ - usuario pede "compara essa tela com Figma e abre a correcao"
18
+ - usuario quer auditar varias telas de um tipo (validate) confrontando Figma x implementado
19
+ - acumular correcoes de N telas em UM plano de fix, com task escrita por insumo
16
20
  do-not-use-for:
17
- - executar correcao (use *execute-plan apos *audit-screenshots close)
18
- - planejar tela nova (use *plan)
21
+ - executar correcao (use *execute-plan apos *audit-screenshots finalize)
22
+ - planejar tela nova (use *plan / plan-blueprint)
19
23
  - validar plano executado (use *validate-plan)
20
24
  metadata:
21
25
  category: planning
22
26
  ---
23
27
 
24
- Voce esta executando como **Auditor Visual** via skill audit-screenshots. Acumula divergencias visuais detectadas pelo usuario em prints, mapeia cada uma pro Figma canonico, e ao fechar emite UM plano de correcao (OBJETIVO=correcao) com tasks pendentes — sem executar codigo.
28
+ Voce esta executando como **Auditor Visual Streaming** via skill `audit-screenshots`. Ao inves de
29
+ enfileirar prints e materializar o plano so no fim, voce **abre UM plano de correcao imediatamente**
30
+ (`status: aberto`) e **escreve cada task na hora** que recebe um insumo (print/screenshot + Figma URL +
31
+ contexto). Cada divergencia passa pelo **gate de reuso de componente** (design-to-code) antes de virar
32
+ task. O plano so e' fechado e validado por `check-plan.js` no `finalize`.
25
33
 
26
- ## Contrato de single-pass (CRITICO — fix do gargalo de contexto)
34
+ ## Por que streaming (pivot do modelo de fila)
27
35
 
28
- Comparacao print vs Figma deve ser SEMPRE single-pass dentro da acao `add`:
36
+ O modelo antigo (`add` acumula em `audit-session.json` -> `close` materializa tudo) perdia contexto e
37
+ nao funcionava bem. O modelo novo:
29
38
 
30
- 1. Ao receber print -> imagem fica em contexto.
39
+ - **Plano-primeiro**: `open` cria `plan.md` (draft) antes de qualquer insumo. O diretorio do plano E' o
40
+ estado — nao existe mais `audit-session.json`.
41
+ - **Task-por-insumo**: cada print/tela vira task `status: pendente` na hora, com sua evidencia anexada.
42
+ - **Gate de reuso por divergencia**: divergencia de table/card/form -> reusa primitiva existente ou cria
43
+ (nunca patch one-off). Ver `libraries/component-reuse-gate.md`.
44
+
45
+ ## Contrato atomico x streaming (CRITICO — nao quebrar check-plan.js)
46
+
47
+ `check-plan.js` exige todas as tasks `status: pendente` NA CRIACAO e e' byte-identico ao canonico.
48
+ NUNCA modificar o gate. A conciliacao e' por status do plano:
49
+
50
+ 1. `open` escreve `plan.md` com **`status: aberto`** (draft). **NAO** roda check-plan.
51
+ 2. `add`/`validate` escrevem cada `T-NN*.md` ja com **`status: pendente`** (eager).
52
+ 3. `finalize` flipa `plan.md` para **`status: pendente`** e **so entao** roda `check-plan.js`.
53
+
54
+ Plano `aberto` e' um estado valido intermediario; plano so vira input de `*execute-plan` apos `finalize`.
55
+
56
+ ## Contrato single-pass do `add` (CRITICO — fix do gargalo de contexto)
57
+
58
+ A comparacao actual vs Figma deve ser SEMPRE single-pass dentro de `add`, delegada a `figma-print-diff`:
59
+
60
+ 1. Capturar actual (print colado OU Playwright) -> imagem em disco + em contexto.
31
61
  2. Pull do frame Figma via MCP -> 2 imagens em contexto.
32
- 3. Lenses 1-6 (ver `libraries/visual-diff-lenses.md`) executadas IMEDIATAMENTE, com ambas imagens visiveis.
33
- 4. Divergencias materializadas em texto descritivo COMPLETO no JSON da sessao (`expected`, `actual`, `where`) — NUNCA "ver imagem", "comparar depois".
34
- 5. Imagens do print/figma ficam em disco para audit-evidence; texto da divergencia ja e self-contained.
35
- 6. Acao `close` NUNCA re-compara. Apenas le `audit-session.json` (puro texto) + agrupa + escreve plan/tasks.
62
+ 3. `figma-print-diff` aplica lenses 1-6 (`libraries/visual-diff-lenses.md`) IMEDIATAMENTE, ambas visiveis.
63
+ 4. Divergencias materializadas em texto COMPLETO (`where`, `expected`, `actual`) — NUNCA "ver imagem".
64
+ 5. Gate de reuso de componente roda sobre as divergencias estruturais.
65
+ 6. Task escrita na hora, self-contained. Imagens ficam em `audit-evidence/` para historico.
36
66
 
37
- Violacao -> bug. Se acao `close` perceber que alguma divergencia esta vazia/incompleta, abortar com instrucao para o usuario re-rodar `add` daquele print.
67
+ Violacao -> bug. Insumo cuja task ficar incompleta/vazia: re-rodar `add` daquele print.
38
68
 
39
69
  ## Input
40
70
 
41
71
  $ARGUMENTS
42
72
 
43
- Formato: <acao> [SLUG-opcional]
73
+ Formato: `<acao> [SLUG-ou-tipo-tela]`
44
74
 
45
75
  Acoes:
46
- - add (default quando o usuario cola imagem) registra 1+ prints na sessao corrente
47
- - listimprime resumo da sessao (prints, telas resolvidas, divergencias acumuladas)
48
- - close [SLUG]fecha sessao + emite plano PLAN-NNN-fix-audit-<SLUG-ou-iso>
49
- - discardzera sessao corrente (apaga audit-session.json + audit-images/)
76
+ - `open [SLUG]` abre o plano de correcao (draft). Default do SLUG: `<projeto>-<iso-date>`.
77
+ - `add` (default quando o usuario cola imagem) registra 1+ insumos -> 1 task cada, NA HORA.
78
+ - `validate <tipo-tela|--all>`sweep: varre `figma-screen-map.md`, captura+confronta cada tela do tipo.
79
+ - `list`resumo do plano aberto (telas, tasks, decisoes de componente).
80
+ - `finalize [SLUG]` — fecha + valida (`check-plan.js`).
81
+ - `discard` — aborta o plano aberto.
50
82
 
51
- Quando o usuario simplesmente cola imagem sem comando explicito, assumir add automaticamente.
83
+ Quando o usuario cola imagem sem comando explicito: se existe plano aberto -> `add`; senao -> `open`
84
+ (criar plano com SLUG default) e em seguida `add`.
52
85
 
53
86
  ## Pre-requisitos (gate)
54
87
 
55
- 1. Resolver paths via .gos-local/plan-paths.json. Ausente -> abortar e instruir rodar *plan ou criar manualmente o arquivo.
56
- 2. Resolver dirs.figma_screen_map (campo figma_screen_map em plan-paths.json; default: <dirs.docs>/figma-screen-map.md). Arquivo ausente -> abortar com mensagem clara: "rode *audit-screenshots apenas em projetos que mantenham docs/figma-screen-map.md (mapa canonico tela->Figma)".
57
- 3. Resolver dirs.audit_state (campo audit_session_file; default: <projeto>/.gos-local/audit-session.json).
58
- 4. Ler dirs.audit_state se existir sessao em curso. Senao, criar sessao nova ao primeiro add.
59
-
60
- ## Estado da sessao
61
-
62
- Persistido em <dirs.audit_state> (default .gos-local/audit-session.json):
63
-
64
- {
65
- "session_id": "audit-2026-05-06T14-22-03",
66
- "created_at": "<iso>",
67
- "screenshots": [
68
- {
69
- "n": 1,
70
- "image_path": ".gos-local/audit-images/01.png",
71
- "user_context": "tabela negocios mostrando coluna Area com -",
72
- "resolved_screen": "/dashboard/projetos/[id]?tab=negocios",
73
- "figma_node_id": "9140-25431",
74
- "figma_url": "https://www.figma.com/design/.../?node-id=9140-25431",
75
- "figma_image_path": ".gos-local/audit-images/01.figma.png",
76
- "divergences": [
77
- { "kind": "data-missing", "where": "coluna Area", "fix": "seed/endpoint deve popular project.area" },
78
- { "kind": "token", "where": "row hover", "fix": "bg-muted/50 (Figma) vs bg-transparent (atual)" }
79
- ]
80
- }
81
- ]
82
- }
88
+ 1. Resolver paths via `.gos-local/plan-paths.json`. Ausente -> abortar e instruir rodar `*plan` ou criar manualmente.
89
+ 2. Resolver `dirs.figma_screen_map` (campo `figma_screen_map`; default `<dirs.docs>/figma-screen-map.md`).
90
+ Arquivo ausente -> abortar: "rode *audit-screenshots apenas em projetos que mantenham docs/figma-screen-map.md".
91
+ 3. Resolver `dirs.audit_evidence` (campo `audit_evidence`; default `<plano>/audit-evidence`).
92
+ 4. Resolver **plano aberto corrente** via `progress.txt` (set-current). Se o plano corrente nao tem
93
+ `status: aberto`, `add`/`validate` exigem um `open` antes (ou abrem um novo).
94
+
95
+ ## Acao open [SLUG]
96
+
97
+ 1. **Resolver SLUG**: argumento explicito > `<projeto-name>-<iso-date>`. Sanitizar (lowercase, hifens).
98
+ 2. **Calcular PLAN-NNN**: ler `<dirs.planos>/` e pegar maior NNN + 1.
99
+ 3. **Escrever `<dirs.planos>/PLAN-NNN-fix-<SLUG>/plan.md`** de `templates/planTemplate.md`:
100
+ - Frontmatter: `objetivo: correcao`, **`status: aberto`**, `audit_streaming: true`, `created_at: <iso>`,
101
+ `figma_url:` (preenchido no primeiro `add`).
102
+ - Secoes vazias prontas para append: `## Contexto`, `## Componentes mapeados`, `## Interacoes & Estados`,
103
+ `## Page-level overrides`, `## Backend pendings`, `## Drift map`.
104
+ 4. **Escrever `context.md`** (template `contextTemplate.md`).
105
+ 5. **Criar `tasks/` vazio** e `audit-evidence/`.
106
+ 6. **progress-tracker set-current** apontando o plano novo (status aberto).
107
+ 7. **NAO rodar check-plan.js** (plano e' draft).
108
+ 8. Output:
109
+
110
+ [audit] PLAN-NNN-fix-<SLUG> ABERTO (status: aberto)
111
+ cole prints (add) ou rode *audit-screenshots validate <tipo-tela> | finalize
83
112
 
84
113
  ## Acao add
85
114
 
86
- 1. **Salvar imagem(s)** colada(s) pelo usuario em .gos-local/audit-images/NN.png (n = ultimo + 1; multiplas imagens na mesma mensagem viram NN, NN+1, ...). Criar diretorio se necessario.
87
- 2. **Identificar tela** (prioridade):
88
- a) Mencao explicita do usuario na mesma mensagem ("e a aba negocios", "/dashboard/projetos/123") -> matchar no figma-screen-map.md.
89
- b) Heuristica visual: ler titulo/breadcrumb/URL visivel no print (use modelo multimodal pra extrair texto). Match por substring contra a coluna "Rota app" do mapa.
90
- c) Ambiguo ou sem sinal: AskUserQuestion listando 5 candidatos top do mapa + opcao "outro" (usuario digita rota).
91
- 3. **Resolver figma_node_id + URL** via lookup no mapa.
92
- 4. **Pull do frame Figma** via Figma MCP get_image pelo node-id. Salvar em .gos-local/audit-images/NN.figma.png. Se Figma MCP indisponivel: registrar figma_image_path: null e seguir (comparacao fica baseada apenas no print + node-id).
93
- 5. **Comparacao single-pass** (lenses 1-6 com ambas imagens em contexto AGORA):
94
- - Aplicar lenses na ordem (layout -> tokens -> estados -> conteudo -> interacao -> a11y) — ver `libraries/visual-diff-lenses.md`.
95
- - Listar divergencias em divergences[] (kind: anatomy | token | behavior | data-missing | state-missing | cleanup-legacy).
96
- - **CADA divergencia DEVE ter** `where` (localizacao precisa), `expected` (do Figma), `actual` (do print). Sem qualquer um, NAO persistir — re-aplicar lens.
97
- - **Anotacoes em vermelho do usuario** = high-signal: cada item anotado vira divergencia com peso 2x (quase certamente vira task no close).
98
- - Comentarios livres do usuario (user_context) = high-signal igual.
99
- - Validar self-contained: usuario que ler so o JSON (sem ver imagem) entende cada item? Se nao -> reescrever.
100
- 6. **Persistir** entrada nova no audit-session.json (somente apos validar self-contained).
101
- 7. **Output ao usuario** (curto):
102
-
103
- [audit] +1 print (total: N) tela: <rota> (node-id: NNNN-NNNNN)
104
- divergencias detectadas: <K> (alta-confianca: <H>)
105
- proximo: cole outro print, *audit-screenshots list, ou *audit-screenshots close
115
+ Para cada insumo (print colado OU rota a capturar):
116
+
117
+ 1. **Identificar tela** (prioridade):
118
+ a) Mencao explicita do usuario ("aba negocios", "/dashboard/projetos/123") -> match no figma-screen-map.
119
+ b) Heuristica visual: ler titulo/breadcrumb/URL do print (multimodal) -> substring contra "Rota app".
120
+ c) Ambiguo: `AskUserQuestion` com 5 candidatos top do mapa + "outro".
121
+ 2. **Resolver figma_node_id + URL** via lookup no mapa.
122
+ 3. **Capturar ACTUAL**:
123
+ - Print colado pelo usuario -> salvar em `<audit_evidence>/NN.png`.
124
+ - Sem print -> **Playwright** captura a rota viva (`browser_navigate` + `browser_take_screenshot`,
125
+ headless) -> `<audit_evidence>/NN.png`. Casos interativos (hover/drawer aberto) -> browser-use.
126
+ 4. **Pull EXPECTED**: Figma MCP `get_image` pelo node-id -> `<audit_evidence>/NN.figma.png`. MCP
127
+ indisponivel: seguir so com actual + node-id (registrar `figma_image_path: null`).
128
+ 5. **Confrontar (single-pass)**: invocar `figma-print-diff <audit_evidence>/NN.png <figma-url>` -> JSON de
129
+ divergencias (lenses 1-6, cada uma com `where`/`expected`/`actual`/`kind`/`severity`/`fix`).
130
+ 6. **Gate de reuso de componente** (`libraries/component-reuse-gate.md`) por divergencia estrutural
131
+ (table/card/form/list/modal/toolbar):
132
+ - Mapear elemento -> componente DS candidato (indexar `dirs.components/` + `.stories.tsx`, estilo
133
+ `plan-blueprint` Fase 1.3).
134
+ - Rodar `component-dedup` (candidato vs biblioteca) -> decisao `reuse | create | merge` + score.
135
+ - Heuristica DataTable: divergencia de tabela -> `component_target` = primitiva existente (ex.:
136
+ `components/ui/data-table.tsx`); correcao e' nas `columns`/dados OU na primitiva — nunca `<table>` novo.
137
+ 7. **Escrever task(s) NA HORA** em `tasks/T-NN-<componente>-<fix-slug>.md` (1 task por divergencia,
138
+ agrupando triviais por componente), modelo **O QUE / ONDE / COMO / POR QUE**:
139
+ - Frontmatter: **`status: pendente`**, `priority` (high-signal/anotacao vermelha -> P0), `area`
140
+ (`ui-ux` token/anatomy | `frontend` behavior/data-missing), `audit_evidence: audit-evidence/NN.png`,
141
+ `figma_url:`, `component_decision: reuse|create|merge`, `component_target:`, e quando aplicavel
142
+ `interaction_target:` / `override_target:` / `depends_on_backend:`.
143
+ - `## Contexto` (por que: a divergencia), `## Objetivo`+`### Entrega` (o que), `## Arquivos` (onde: path
144
+ concreto criar/editar), `## Plano de execucao` (como). Task sem path concreto e' malformada.
145
+ - `create` gera task de criacao da primitiva ANTES da task de uso (`depends_on`).
146
+ 8. **Append no plano**: 1 linha em `## Componentes mapeados`, divergencia em `## Drift map`, behavior em
147
+ `## Interacoes & Estados`, token em `## Page-level overrides` (decisao a/b/c), data-missing em
148
+ `## Backend pendings`.
149
+ 9. **Output curto**:
150
+
151
+ [audit] +1 tela: <rota> (node-id NNNN-NNNNN) -> <T> task(s) escritas
152
+ divergencias: <K> (alta <H>) | reuso: <reuse>R <merge>M <create>C
153
+ proximo: cole outro print | *audit-screenshots validate <tipo> | list | finalize
154
+
155
+ ## Acao validate <tipo-tela|--all>
156
+
157
+ Sweep sistematico Figma x implementado, alimentando o mesmo fluxo de `add`:
158
+
159
+ 1. Ler `figma-screen-map.md` e filtrar telas por `tipo-tela` (coluna de secao/categoria) ou todas (`--all`).
160
+ 2. Para cada tela: resolver rota + node-id; **Playwright** captura actual; Figma MCP pull expected;
161
+ `figma-print-diff` confronta; gate de reuso; **escrever task(s) na hora** (passos 5-8 do `add`).
162
+ 3. Telas sem node-id no mapa -> warning, pular (registrar em `## Notas` do plano).
163
+ 4. Output: tabela tela x divergencias x tasks geradas + total.
164
+
165
+ Requer `open` previo (ou abre plano novo `PLAN-NNN-fix-validate-<tipo>`).
106
166
 
107
167
  ## Acao list
108
168
 
109
- Le audit-session.json e imprime tabela:
110
-
111
- [audit-session <session_id>] iniciada <created_at>
112
-
113
- # print tela divergencias
114
- 1 audit-images/01 /dashboard/projetos/[id]?tab=negocios 3 (1 alta)
115
- 2 audit-images/02 /dashboard/projetos 5 (3 alta)
116
- 3 audit-images/03 /dashboard/financiadores 2
117
-
118
- total: 10 divergencias em 3 telas
119
- proximo: *audit-screenshots close [SLUG-opcional] -> emite PLAN-NNN-fix-audit-<SLUG>
120
-
121
- Nao emite plano. Nao modifica estado.
122
-
123
- ## Acao close [SLUG]
124
-
125
- **REGRA CRITICA**: `close` opera SOMENTE sobre o JSON da sessao (texto). NUNCA re-le imagens. NUNCA re-aplica lenses. Se uma divergencia esta vazia/incompleta no JSON, abortar com mensagem ao usuario para re-rodar `add` daquele print especifico — close nao tenta consertar.
126
-
127
- 1. **Resolver SLUG**: argumento explicito > <projeto-name>-<iso-date>. Sanitizar (lowercase, hifens).
128
- 1.5. **Validar self-contained**: ler audit-session.json e verificar que cada divergencia tem `where`, `expected`, `actual`, `kind`, `fix`. Faltando -> abortar com lista de prints incompletos.
129
- 2. **Calcular PLAN-NNN**: ler <dirs.planos>/ e pegar maior NNN existente + 1.
130
- 3. **Agrupar divergencias por tela** (resolved_screen).
131
- 4. **Emitir <dirs.planos>/PLAN-NNN-fix-audit-<SLUG>/plan.md** baseado em templates/planTemplate.md:
132
- - Frontmatter: objetivo: correcao, audit_session: <session_id>, created_at: <iso>, status: pendente, figma_url: <primeiro figma_url da sessao>.
133
- - Secao ## Contexto: lista os prints com user_context resumido.
134
- - Secao ## Componentes mapeados: 1 linha por divergencia (Componente = inferir do where).
135
- - Secao ## Interacoes & Estados: 1 bullet por divergencia tipo behavior ou state-missing.
136
- - Secao ## Page-level overrides: 1 linha por divergencia tipo token (decisao default (a) className na pagina; usuario pode reclassificar depois).
137
- - Secao ## Backend pendings: 1 linha por divergencia tipo data-missing.
138
- - ## Drift map: copia das divergencias detectadas (usado por validate-plan no fechamento).
139
- - ## Cleanup de starter legado: divergencias tipo cleanup-legacy se houver.
140
- 5. **Emitir tasks/T-NN-<componente>-<fix-slug>.md** (1 task por divergencia, agrupando triviais por componente):
141
- - Frontmatter: status: pendente, priority: P1 (high-signal -> P0), area: ui-ux (token/anatomy) ou area: frontend (behavior/data-missing).
142
- - interaction_target: ou override_target: populado quando aplicavel.
143
- - Campo novo: audit_evidence: audit-evidence/NN.png apontando pro print original.
144
- 6. **Copiar evidencias** pra <dirs.planos>/PLAN-NNN-fix-audit-<SLUG>/audit-evidence/:
145
- - Prints originais (NN.png).
146
- - Figma frames capturados (NN.figma.png).
147
- - Cada um nomeado igual ao indice da sessao.
148
- 7. **Emitir context.md** padrao (template contextTemplate.md).
149
- 8. **Atualizar progress.txt** via progress-tracker set-current apontando pro plano novo.
150
- 9. **Rodar gate determistico** node <repo>/.gos/scripts/integrations/check-plan.js <plano>:
151
- - Exit 0 -> seguir.
152
- - Exit != 0 -> abortar e devolver saida do check-plan.
153
- 10. **Arquivar sessao**: mover audit-session.json pra .gos-local/audit-archive/<session_id>.json. NAO apagar imagens (ficam em audit-images/ pra historico).
154
- 11. **Output final**:
169
+ Le `tasks/` do plano aberto (NAO re-le imagens) e imprime:
170
+
171
+ [audit PLAN-NNN-fix-<SLUG>] status: aberto
172
+
173
+ # task tela decisao priority
174
+ 1 T-01-data-table-area-column /dashboard/projetos reuse P1
175
+ 2 T-02-stat-card-flat /dashboard merge P1
176
+
177
+ total: N tasks em K telas | reuso: R reuse / M merge / C create
178
+ proximo: *audit-screenshots finalize <SLUG> -> roda check-plan.js
155
179
 
156
- [audit-screenshots] PLAN-NNN-fix-audit-<SLUG> criado
180
+ ## Acao finalize [SLUG]
181
+
182
+ **REGRA**: `finalize` opera sobre os arquivos ja escritos (tasks + plan). NAO re-le imagens, NAO re-confronta.
183
+
184
+ 1. **Resolver plano aberto** (progress.txt set-current) ou pelo SLUG.
185
+ 2. **Validar self-contained**: cada `T-NN*.md` tem `## Arquivos` com path concreto, `## Objetivo`,
186
+ `## Plano de execucao`, e frontmatter `status: pendente`. Faltando -> abortar listando tasks incompletas
187
+ (instruir re-rodar `add` daquele insumo). `finalize` nao conserta.
188
+ 3. **Flip do plano**: `plan.md` frontmatter `status: aberto` -> **`status: pendente`**. Preencher `## Contexto`
189
+ consolidado (lista de telas auditadas).
190
+ 4. **Disparar `ui-guardrails <plano>`** — trava task de UI sem estados/responsivo/a11y/tokens.
191
+ 5. **progress-tracker set** (status pendente).
192
+ 6. **Rodar gate deterministico** `node <repo>/.gos/scripts/integrations/check-plan.js <plano>`:
193
+ - Exit 0 -> seguir.
194
+ - Exit != 0 -> abortar e devolver a saida literal do check-plan.
195
+ 7. Output final:
157
196
 
158
- prints processados: <N>
159
- telas afetadas: <K>
160
- tasks criadas: <T> (<P0> P0 / <P1> P1)
197
+ [audit-screenshots] PLAN-NNN-fix-<SLUG> FINALIZADO (status: pendente)
161
198
 
162
- plano: docs/plans/PLAN-NNN-fix-audit-<SLUG>/plan.md
163
- tasks: docs/plans/PLAN-NNN-fix-audit-<SLUG>/tasks/ (T tasks)
164
- progress: atualizado (status=pendente)
199
+ telas auditadas: <K>
200
+ tasks: <T> (<P0> P0 / <P1> P1) | reuso: <R>R <M>M <C>C
201
+ plano: docs/plans/PLAN-NNN-fix-<SLUG>/plan.md
202
+ progress: atualizado (status=pendente)
165
203
 
166
- proximo passo: *execute-plan PLAN-NNN-fix-audit-<SLUG> (Codex IDE)
204
+ proximo passo: *execute-plan PLAN-NNN-fix-<SLUG>
167
205
 
168
206
  ## Acao discard
169
207
 
170
- 1. Confirmacao inline obrigatoria: AskUserQuestion com 2 opcoes (Sim, descartar tudo / Nao, manter sessao).
171
- 2. Confirmado: apagar .gos-local/audit-session.json + diretorio .gos-local/audit-images/ (todos os prints + frames Figma da sessao corrente).
172
- 3. Output: [audit] sessao descartada (N prints removidos).
208
+ 1. Confirmacao inline (`AskUserQuestion`: Sim, descartar / Nao, manter).
209
+ 2. Confirmado: remover `<dirs.planos>/PLAN-NNN-fix-<SLUG>/` (plano + tasks + audit-evidence) e limpar
210
+ progress set-current. Output: `[audit] plano aberto descartado (T tasks, N evidencias removidas)`.
173
211
 
174
212
  ## Resolver de tela (parser do figma-screen-map.md)
175
213
 
176
- figma-screen-map.md e markdown com tabelas | Tela | ... | Rota app | node-id | ... |.
214
+ `figma-screen-map.md` e' markdown com tabelas `| Tela | ... | Rota app | node-id | ... |`.
177
215
 
178
- Algoritmo:
179
- 1. Ler arquivo.
180
- 2. Extrair todas tabelas via regex (linhas iniciando com |).
181
- 3. Pra cada tabela, identificar coluna Rota app e node-id (case-insensitive, varia entre tabelas).
182
- 4. Construir lookup {rota_normalizada: {node_id, secao, label}} (normalizar = lowercase, remover query strings opcionais).
183
- 5. Match por:
184
- - Equality exato: rota visivel no print bate com chave do lookup -> resolvido.
185
- - Substring: rota do print contem chave do lookup -> resolvido com warning.
186
- - Multiplos matches: AskUserQuestion listando candidatos.
187
- 6. Suportar query strings (?tab=negocios) como parte da rota (mapas separam abas).
216
+ 1. Ler arquivo. Extrair todas as tabelas (linhas iniciando com `|`).
217
+ 2. Identificar colunas `Rota app` e `node-id` por tabela (case-insensitive).
218
+ 3. Construir lookup `{rota_normalizada: {node_id, secao, label}}` (lowercase, query strings opcionais).
219
+ 4. Match: equality exato > substring (warning) > multiplos (`AskUserQuestion`).
220
+ 5. Suportar query strings (`?tab=negocios`) como parte da rota.
188
221
 
189
222
  ## Acoplamento com pipeline
190
223
 
191
- - Plano gerado e input direto pra *execute-plan e *validate-plan — segue 100% o template padrao + frontmatter compativel.
192
- - Sub-fases 1.5 (drift map) e 1.6 (cleanup legado) do plan-blueprint NAO rodam aqui (audit JA e o drift map empirico). Mas se legacy_starter_dirs declarado em plan-paths.json, divergencias tipo cleanup-legacy sao detectadas durante add e viram tasks T-NN-cleanup-legacy-<slug>.
193
- - Schema gate (Fase 2.4) NAO roda aqui divergencias tipo data-missing viram entrada em ## Backend pendings direto, sem confronto com Postman/Prisma (audit assume usuario sabe o que esta vendo).
194
- - progress-tracker segue identico plano de audit aparece no progress.txt como qualquer outro.
224
+ - Plano gerado e' input direto de `*execute-plan` e `*validate-plan` — segue o template padrao + frontmatter.
225
+ - `figma-print-diff` e' a primitiva de confronto (single-pass) esta skill nao reimplementa lenses.
226
+ - `component-dedup` + `libraries/component-reuse-gate.md` resolvem reuse/create/mergenao duplicar.
227
+ - Sub-fases 1.5 (drift) e 1.6 (cleanup legado) do `plan-blueprint` NAO rodam aqui (o audit JA e' drift
228
+ empirico). Se `legacy_starter_dirs` em plan-paths.json, divergencias `cleanup-legacy` viram task.
229
+ - Schema gate (Fase 2.4) NAO roda; divergencias `data-missing` viram `## Backend pendings` direto.
230
+ - `plan-blueprint` e' "1 tela = 1 plano"; o audit e' "N telas -> 1 plano de fix" (orquestracao por cima).
195
231
 
196
232
  ## Regras criticas
197
233
 
198
- - **Sem execucao**: skill NUNCA modifica codigo da aplicacao. Ela cria plano + tasks (status: pendente). User roda *execute-plan separado se quiser.
199
- - **Sessao persistente**: state em .gos-local/audit-session.json permite acumular prints entre invocacoes ate close. Sessao orfa (nao fechada por dias) eh ok — discard limpa.
200
- - **Mapeamento canonico obrigatorio**: sem figma-screen-map.md, skill aborta. Esse arquivo eh o contrato tela<->Figma do projeto.
201
- - **Anotacoes em vermelho = high-signal**: peso 2x na decisao de virar task. Sem anotacao, ainda detecta automaticamente, mas com peso menor.
202
- - **Output e input do pipeline existente**: nao reinventa template, usa templates/planTemplate.md + taskTemplate.md.
234
+ - **Sem execucao**: skill NUNCA modifica codigo da aplicacao. So cria plano + tasks (status: pendente).
235
+ User roda `*execute-plan` separado.
236
+ - **Plano-primeiro**: `open` antes de qualquer insumo. O diretorio do plano E' o estado (sem audit-session.json).
237
+ - **Eager + self-contained**: cada insumo vira task na hora, com evidencia textual completa. `finalize` so valida.
238
+ - **Gate de reuso obrigatorio**: divergencia estrutural sempre passa por reuse/create/merge antes de virar task.
239
+ - **check-plan.js so no finalize**: nunca na abertura. Nunca modificar o gate.
240
+ - **Mapeamento canonico obrigatorio**: sem `figma-screen-map.md`, skill aborta.
241
+ - **Anotacoes em vermelho = high-signal**: peso 2x (P0).
203
242
 
204
243
  ## Model guidance
205
244
 
206
245
  | Escopo | Modelo |
207
246
  |--------|--------|
208
247
  | add com 1-2 prints simples | sonnet |
209
- | add com print complexo (10+ divergencias visiveis) | opus |
210
- | close com 5+ telas / 20+ tasks geradas | opus |
248
+ | add com print complexo (10+ divergencias) / gate de reuso denso | opus |
249
+ | validate sweep (5+ telas) | opus |
211
250
  | list / discard | haiku |
212
251
 
213
252
  ## Instructions
214
253
 
215
- 1. Ao receber imagem sem comando explicito, assumir *audit-screenshots add.
254
+ 1. Ao receber imagem sem comando: plano aberto existe -> `add`; senao -> `open` + `add`.
216
255
  2. NUNCA executar codigo da aplicacao — skill so planeja.
217
- 3. Sessao persiste em .gos-local/ ate close ou discard.
218
- 4. Plano gerado SEMPRE roda check-plan.js antes de devolver controle ao usuario.
219
- 5. Ao final do close, instruir o usuario do proximo passo (*execute-plan PLAN-NNN-fix-audit-<SLUG>).
256
+ 3. Estado vive no diretorio do plano aberto (status: aberto) ate `finalize` ou `discard`.
257
+ 4. `add`/`validate` escrevem tasks `status: pendente` na hora; `finalize` flipa o plano e roda check-plan.js.
258
+ 5. Confronto visual delegado a `figma-print-diff`; reuso a `component-dedup` + `component-reuse-gate.md`.
259
+ 6. Ao final do `finalize`, instruir `*execute-plan PLAN-NNN-fix-<SLUG>`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: execute-plan
3
- description: Executa um plano (PLAN-NNN-<slug>) task-a-task aplicando state machine + visual gate contra Storybook canonico antes de marcar validacao. Non-blocking em backend gaps (abre tasks ClickUp + segue). Comando primario do ambiente Codex IDE.
4
- argument-hint: "<PLAN-NNN-slug> [--task T-NNN-NN] [--skip-visual-gate] [--skip-clickup]"
3
+ description: Executa um plano (PLAN-NNN-<slug>) task-a-task aplicando state machine + visual gate + verificacao de criterios de aceite (com loop de correcao) antes de marcar validacao. Backend-first e non-blocking em backend gaps (tracking local). Etapa execute do pipeline (Junior).
4
+ argument-hint: "<PLAN-NNN-slug> [--task T-NNN-NN] [--skip-visual-gate] [--skip-backend-tracking]"
5
5
  allowedTools: [Read, Glob, Grep, Bash, Write, Edit, Agent, AskUserQuestion]
6
6
  sourceDocs:
7
7
  - templates/taskTemplate.md
@@ -39,21 +39,26 @@ Formato esperado:
39
39
  - `<PLAN-NNN-slug>` — id do plano (ex.: `PLAN-001-pagina-projetos-inicial`)
40
40
  - `--task T-NNN-NN` — opcional, executa apenas a task especifica
41
41
  - `--skip-visual-gate` — opcional, pula visual gate (raro, registra warning)
42
+ - `--skip-backend-tracking` — opcional, nao registra/atualiza pendings de backend
43
+
44
+ **Modelo desta etapa**: resolver via `node .gos/scripts/tools/model-router.js get execute` (Junior — modelo mais barato adequado; Codex aceito). O executor analisa plano + tasks + `spec.md` antes de implementar.
42
45
 
43
46
  ## Pre-requisitos (gate)
44
47
 
45
48
  1. Resolver paths via `.gos-local/plan-paths.json`. Se ausente, abortar e instruir o usuario a rodar `*plan` primeiro.
46
49
  2. Localizar `<dirs.planos>/<PLAN-NNN-slug>/plan.md`. Se ausente, abortar.
47
- 3. Ler `plan.md` por completo: frontmatter + Componentes mapeados + Componentes ausentes + Aderencia a stack + Plano de execucao + Checklist de aceite + **Backend pendings**.
50
+ 3. Ler `plan.md` por completo: frontmatter + Componentes mapeados + Componentes ausentes + Aderencia a stack + Plano de execucao + Checklist de aceite + **Backend pendings**. Ler tambem `context.md` e **`spec.md`** (spec completa: o que/onde/como/por que + criterios de aceite globais) — sao o contrato que o Junior executa.
48
51
  4. Validar `stack_ref` do frontmatter contra `<dirs.stack>` (`docs/stack.md`):
49
52
  - Calcular sha-curto atual e comparar.
50
53
  - Drift detectado: ABORTAR e instruir `*stack drift` + replanejar com `*stack refresh`.
51
54
  5. Ler `<dirs.progress>` (progress.txt). Se aponta para outro plano ativo, perguntar se troca o foco antes de prosseguir.
52
- 6. **Backend pendings (non-blocking)**: ler tabela `## Backend pendings` do `plan.md`. Para cada linha:
53
- - Sem `ClickUp ID` -> criar task via `mcp__clickup__clickup_create_task` (assignee `112010775` salvo override `ASSIGNEE` no plano, list de `clickup.backend_list_id` em `plan-paths.json`, titulo `[Backend] PLAN-NNN: <gap>`). Gravar ID retornado de volta na coluna `ClickUp ID` do `plan.md`.
54
- - Com `ClickUp ID` -> consultar `mcp__clickup__clickup_get_task <ID>`. Atualizar coluna `Status`. Se ainda aberta, registrar em `progress.txt` como `blockers=<T-IDs>:<ClickUp-ID>:<gap-curto>` (uma linha por bloqueio ativo).
55
- - `--skip-clickup` desliga MCP; nesse caso so registra warning visivel mantendo o que ja esta no plano.
56
- - **Importante**: backend gap aberto NAO aborta o execute-plan. Tasks frontend que dependem do gap serao classificadas como `bloqueada-backend` no loop abaixo; tasks sem dependencia seguem normal.
55
+ 6. **Backend pendings (tracking LOCAL, non-blocking)**: ler tabela `## Backend pendings` do `plan.md`. Para cada linha:
56
+ - Cada pending tem `gap-key`, `Status` local (`aberto`/`em-andamento`/`concluido`) e, quando grande, um plano-irmao `PLAN-NNN-backend-<slug>`.
57
+ - Se existe plano-irmao de backend: seu estado (via `progress.txt`) e a fonte da verdade do `Status`. Atualizar a coluna `Status` do pending a partir dele.
58
+ - **Backend-first**: se ha pendings `aberto`/`em-andamento` que bloqueiam tasks frontend (via `depends_on_backend:`), o executor prioriza as tasks/planos de backend correspondentes ANTES das tasks frontend dependentes, para destravar.
59
+ - Pending ainda aberto: registrar em `progress.txt` como `blockers=<T-IDs>:<gap-key>:<gap-curto>` (uma linha por bloqueio ativo).
60
+ - `--skip-backend-tracking` desliga a atualizacao; nesse caso so registra warning mantendo o que ja esta no plano.
61
+ - **Importante**: backend gap aberto NAO aborta o execute-plan. Tasks frontend que dependem do gap E sem bypass declarado viram `bloqueada-backend` no loop abaixo; tasks sem dependencia (ou com `Bypass frontend` declarado) seguem normal.
57
62
 
58
63
  ## Pre-flight visual
59
64
 
@@ -93,14 +98,16 @@ Pre-flight smoke nao substitui o visual gate por task — ele captura gaps grand
93
98
 
94
99
  ## Loop por task
95
100
 
101
+ **Ordem backend-first**: dentro do `seq`, tasks e planos-irmaos de backend correm ANTES das tasks frontend que deles dependem — o objetivo e destravar o frontend o quanto antes.
102
+
96
103
  Iterar tasks em ordem de `seq`. Antes de executar cada task, **classificar**:
97
104
 
98
105
  - Ler frontmatter `depends_on_backend:` da task (campo opcional, default `[]`). Cada item referencia uma `gap-key` da tabela `## Backend pendings` do plano (ex.: `migration-20260501150000`, `endpoint-projetos-fields`).
99
- - Se a task referencia gap em aberto (status no ClickUp != `concluido`/`closed`):
106
+ - Se a task referencia gap com `Status` local != `concluido` E sem `Bypass frontend` declarado:
100
107
  - `*progress status T-NNN-NN bloqueada-backend` (transicao livre desde `pendente` ou `em-andamento`).
101
- - Anotar em `tasks/T-NNN-NN.notes.md` linha `## Bloqueada backend <iso>` com ClickUp IDs.
108
+ - Anotar em `tasks/T-NNN-NN.notes.md` linha `## Bloqueada backend <iso>` com as `gap-key`.
102
109
  - **PULAR** task — NAO falha o loop, segue pra proxima.
103
- - Se a task tem `depends_on_backend: []` ou todas as dependencias estao `concluido` no ClickUp -> seguir fluxo normal abaixo.
110
+ - Se a task tem `depends_on_backend: []`, ou todas as dependencias estao `concluido` localmente, ou ha `Bypass frontend` declarado -> seguir fluxo normal abaixo.
104
111
 
105
112
  Para cada task **executavel**:
106
113
 
@@ -127,9 +134,17 @@ Para cada task **executavel**:
127
134
  d) Output: relatorio curto em `tasks/T-NNN-NN.notes.md` (5 secoes: anatomia, tokens, variants, densidade, comportamentos + secao "Arvore vs Figma").
128
135
  e) Divergencia >= 1 item critico (anatomia, tokens nao-overrideados, ou comportamento mapeado sem implementacao) -> falha o gate.
129
136
 
130
- 5. **Resultado do gate**:
131
- - Sucesso -> invocar `*progress status T-NNN-NN validacao`. **Pos-condicao obrigatoria**: ler T-NNN-NN.md, confirmar `^status: validacao$` no frontmatter. Se nao mudou: ABORTAR a task com erro `progress-tracker-falhou: T-NNN-NN`. Preparar arquivos staged (sem commit) somente apos confirmacao.
132
- - Falha -> manter em `em-andamento`, gravar diff em `T-NNN-NN.notes.md`, retornar pra etapa 3.
137
+ 5. **Verificacao de criterios de aceite (AC)** — apos o visual gate passar:
138
+
139
+ Ler a secao `## Critérios de aceite` da task. Cada criterio e machine-checkable (comando + resultado esperado) OU verificavel por evidencia no diff. Rodar cada um e classificar o conjunto:
140
+ - **Todos OK** (cada AC atendido com evidencia) -> `ac=ok`.
141
+ - **Algum AC nao atendido** (comando falha / evidencia ausente) -> `ac=falha`.
142
+ - **AC inconclusivo** (nao da pra verificar de forma determinista — ex.: depende de ambiente externo indisponivel, dado que so existe em runtime real, backend em `bypass`) -> `ac=inconclusivo`.
143
+
144
+ 6. **Resultado do gate + loop de correcao (Ralph)**:
145
+ - **Visual gate OK + `ac=ok`** -> invocar `*progress status T-NNN-NN validacao`. **Pos-condicao obrigatoria**: ler T-NNN-NN.md, confirmar `^status: validacao$`. Se nao mudou: ABORTAR a task com erro `progress-tracker-falhou: T-NNN-NN`. Preparar arquivos staged (sem commit) apos confirmacao. Segue para a proxima task.
146
+ - **Visual gate falha OU `ac=falha`** -> manter em `em-andamento`, gravar o gap especifico em `T-NNN-NN.notes.md`, e **entrar em loop de correcao**: voltar pra etapa 3 (implementacao) e corrigir. Teto de `max_correcao_iteracoes = 3` por task. Anti-falso-positivo: a verificacao e **re-executada** a cada rodada (nunca auto-declarada "corrigido"). Se estourar o teto sem passar: manter `em-andamento`, registrar `ac=falha-persistente` e seguir pra proxima task (reportado no fechamento; NAO trava o loop).
147
+ - **`ac=inconclusivo`** -> **bypass com alerta**: marcar `*progress status T-NNN-NN validacao` com nota `ac=inconclusivo:<motivo>` em `T-NNN-NN.notes.md`, e adicionar a task a lista de **alertas ao usuario** do fechamento (o Senior no `*validate-plan` reavalia). Nao entra em loop.
133
148
 
134
149
  **Invariante por task**: ao terminar a iteracao, T-NNN-NN.md DEVE ter status diferente de `pendente`. Se ainda for `pendente` apos a iteracao, registrar como bug do executor em `progress.txt` (`notes=executor-skipped-progress: T-NNN-NN`) — mas **NAO abortar o loop**: continuar para a proxima task. O abort vai acontecer no fechamento (verificacao global).
135
150
 
@@ -154,13 +169,15 @@ Quando o loop terminar (toda task processada — em `validacao`, `concluido`, ou
154
169
  [execute-plan] PLAN-NNN-<slug>
155
170
 
156
171
  tasks validacao: <N> (T-..., T-...)
157
- bloqueada-backend: <K> (T-...:CU-..., ...)
158
- backend pendings: <X> abertas no ClickUp / <Y> concluidas
172
+ bloqueada-backend: <K> (T-...:<gap-key>, ...)
173
+ backend pendings: <X> abertas (local) / <Y> concluidas
159
174
  visual gate: passou / falhou em (T-...)
175
+ criterios de aceite: OK <N> / falha-persistente <M> / inconclusivo <P>
176
+ ALERTAS (AC inconclusivo, reavaliar no validate): (T-..., ...)
160
177
 
161
178
  proximo passo: *validate-plan PLAN-NNN-<slug>
162
179
  ```
163
- 4. Indicar que o turn seguinte e `*validate-plan PLAN-NNN-<slug>` (skill `validate-plan`, ambiente Opus 4.7). NAO marcar `concluido` automaticamente — `validate-plan` cuida disso.
180
+ 4. Indicar que o turn seguinte e `*validate-plan PLAN-NNN-<slug>` (skill `validate-plan`, etapa validate/Senior). NAO marcar `concluido` automaticamente — `validate-plan` cuida disso.
164
181
 
165
182
  ## Ambiente Codex IDE — observacoes
166
183
 
@@ -173,17 +190,14 @@ Quando o loop terminar (toda task processada — em `validacao`, `concluido`, ou
173
190
  - **Visual gate nao e opcional** salvo `--skip-visual-gate` explicito. Skill nao silencia o gate.
174
191
  - **Sem push automatico**: commit fica preparado. Push e responsabilidade do humano.
175
192
  - **State machine inviolavel**: transicao `concluido` ocorre via `*validate-plan` (auto-marca quando passa). Rollback humano: `*progress status T-NNN-NN pendente --rollback`.
176
- - **Non-blocking em backend gaps**: gap aberto no ClickUp NAO aborta. Tasks dependentes viram `bloqueada-backend`, demais seguem.
193
+ - **Backend-first + non-blocking**: gap de backend aberto (tracking local) NAO aborta. Backend corre antes do frontend dependente para destravar; tasks dependentes sem bypass viram `bloqueada-backend`, demais seguem.
194
+ - **Criterios de aceite sao vinculantes**: cada task so vai para `validacao` com AC OK (ou `inconclusivo` com alerta). AC `falha` entra em loop de correcao (teto 3, verificacao re-executada, sem falso-positivo).
177
195
  - **Storybook como contrato base; Figma da pagina vence em conflito cosmetico**: componente sem `.stories.tsx` em `<dirs.storybook>` bloqueia a task ate ser criado. Divergencia cosmetica entre story e Figma da pagina que ESTA registrada em `## Page-level overrides` do plano: gate confirma aplicacao do override (decisao a/b/c). Divergencia NAO registrada no plano: gate falha — voltar pra `*plan` (ou registrar override no plan.md antes de prosseguir).
178
196
  - **Comportamento mapeado e vinculante**: `interaction_target:` declarado na task DEVE ter handler/estado implementado e observavel no diff. Caso contrario, gate falha mesmo se anatomia + tokens passarem.
179
197
 
180
198
  ## Model guidance
181
199
 
182
- | Escopo | Modelo |
183
- |--------|--------|
184
- | Task simples (1 componente, sem novo padrao) | `sonnet` |
185
- | Task que toca multiplos componentes ou logica de fetching | `opus` |
186
- | Visual gate / comparacao com Figma | inherit (modelo do agent) |
200
+ Etapa **execute** (Junior). Resolver o modelo com `node .gos/scripts/tools/model-router.js get execute` (default `claude-sonnet-5`; Codex e modelos mais baratos adequados aceitos). O Junior le plano+tasks+spec e implementa; o Senior audita depois no `*validate-plan`. Se uma task especifica exigir julgamento acima do modelo da etapa, escalar pontualmente para o modelo de `validate` apenas naquela decisao.
187
201
 
188
202
  ## Instructions
189
203
 
@@ -23,6 +23,11 @@ metadata:
23
23
 
24
24
  Voce esta executando como **Visual Diff Auditor** via skill `figma-print-diff`. Faz UMA comparacao em UM unico passo, sem persistir sessao. Imagem do print + frame Figma DEVEM permanecer no contexto da inferencia ate o output final.
25
25
 
26
+ > **Primitiva de confronto**: esta skill e' o passo de confronto chamado por `audit-screenshots` (orquestrador
27
+ > streaming) a cada insumo. Mantem-se pura print<->Figma — nao abre plano, nao escreve task, nao decide reuso.
28
+ > O `actual` (print) pode ser um screenshot colado pelo usuario OU um PNG capturado por Playwright pelo
29
+ > orquestrador (rota viva); aqui e' so um `print-path` que ja existe em disco.
30
+
26
31
  ## Contrato critico
27
32
 
28
33
  1. **Single-pass**: ler print + Figma + comparar + emitir output em UMA chamada do agente. NAO enfileirar.