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.
- 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/component-reuse-gate.md +75 -0
- 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/audit-streaming-playbook.md +86 -0
- 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/audit-screenshots/SKILL.md +195 -155
- package/.gos/skills/execute-plan/SKILL.md +37 -23
- package/.gos/skills/figma-print-diff/SKILL.md +5 -0
- package/.gos/skills/perf-review/SKILL.md +58 -0
- package/.gos/skills/plan-blueprint/SKILL.md +34 -26
- package/.gos/skills/plan-to-tasks/SKILL.md +13 -2
- 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 +35 -5
- package/.gos/templates/specTemplate.md +68 -0
- package/.gos/templates/taskTemplate.md +37 -10
- package/AGENTS.md +0 -2
- package/CLAUDE.md +25 -9
- package/GEMINI.md +3 -3
- package/LICENSE +1 -1
- package/README.md +6 -8
- 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,219 +1,259 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: audit-screenshots
|
|
3
|
-
description: Skill conversacional.
|
|
4
|
-
argument-hint: "<acao> [
|
|
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
|
-
-
|
|
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
|
|
14
|
-
- usuario quer
|
|
15
|
-
-
|
|
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
|
|
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
|
|
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
|
-
##
|
|
34
|
+
## Por que streaming (pivot do modelo de fila)
|
|
27
35
|
|
|
28
|
-
|
|
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
|
-
|
|
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.
|
|
33
|
-
4. Divergencias materializadas em texto
|
|
34
|
-
5.
|
|
35
|
-
6.
|
|
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.
|
|
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:
|
|
73
|
+
Formato: `<acao> [SLUG-ou-tipo-tela]`
|
|
44
74
|
|
|
45
75
|
Acoes:
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
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
|
|
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
|
|
56
|
-
2. Resolver dirs.figma_screen_map (campo figma_screen_map
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
|
110
|
-
|
|
111
|
-
[audit-
|
|
112
|
-
|
|
113
|
-
#
|
|
114
|
-
1
|
|
115
|
-
2
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
-
|
|
204
|
+
proximo passo: *execute-plan PLAN-NNN-fix-<SLUG>
|
|
167
205
|
|
|
168
206
|
## Acao discard
|
|
169
207
|
|
|
170
|
-
1. Confirmacao inline
|
|
171
|
-
2. Confirmado:
|
|
172
|
-
|
|
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
|
|
214
|
+
`figma-screen-map.md` e' markdown com tabelas `| Tela | ... | Rota app | node-id | ... |`.
|
|
177
215
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
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/merge — nao 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.
|
|
199
|
-
|
|
200
|
-
- **
|
|
201
|
-
- **
|
|
202
|
-
- **
|
|
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
|
|
210
|
-
|
|
|
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
|
|
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.
|
|
218
|
-
4.
|
|
219
|
-
5.
|
|
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
|
|
4
|
-
argument-hint: "<PLAN-NNN-slug> [--task T-NNN-NN] [--skip-visual-gate] [--skip-
|
|
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
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
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
|
|
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
|
|
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: []
|
|
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. **
|
|
131
|
-
|
|
132
|
-
|
|
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
|
|
158
|
-
backend pendings: <X> abertas
|
|
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`,
|
|
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
|
-
- **
|
|
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
|
-
|
|
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.
|