ganbatte-os 0.2.33 → 0.2.34

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.
@@ -93,6 +93,11 @@ comprehension_gate:
93
93
  protocol:
94
94
  step_0_scan: "Read relevant files, docs, recent commits related to the request"
95
95
  step_0_5_stack: "If routing to planning/implementation: load docs/stack.md (path from .gos-local/plan-paths.json). If absent, abort and dispatch stack-profiler refresh."
96
+ step_0_55_storybook: "If routing to plan/execute: resolve dirs.storybook and index .stories.tsx files. Absent storybook = abort plan-blueprint until path provided."
97
+ step_0_56_project: "Resolve PROJETO from cwd. If ambiguous (monorepo root), check ~/.claude/.gos-state/last-project.json; if absent ask once and persist there for silent reuse."
98
+ step_0_57_branch: "Auto-resolve WORK_BRANCH: tela bate com dirs.storybook → feat/storybook; senão → dev. Não pedir ao usuário."
99
+ step_0_58_knowledge: "On *plan: index <PROJETO>/docs/regras-de-negocio/ and <PROJETO>/docs/postman/ (when present). Register inventory in progress.txt under '## Knowledge mapped — PLAN-NNN'. Ausência não bloqueia (apenas Storybook bloqueia)."
100
+ step_0_59_backend_gaps: "On *plan: detected backend gaps (endpoint não existe no Postman, RLS incompleto, migration ausente para o shape exigido) → criar task ClickUp via mcp__clickup__clickup_create_task, assignee Douglas Oliveira (112010775) salvo override ASSIGNEE no prompt. Título: '[Backend] PLAN-NNN: <gap>'. Registrar IDs em progress.txt e plan.md (## Backend pendings). Flag --skip-clickup desliga."
96
101
  step_0_6_progress: "If progress.txt exists at the configured path: read it for active plan/task context (memória L1)."
97
102
  step_1_document: "State what exists (current state, patterns, constraints) in factual terms"
98
103
  step_2_assess: "Determine which agent/skill/workflow is appropriate based on evidence, not assumption"
@@ -199,13 +204,28 @@ routing_matrix:
199
204
  triggers: [plan, plano, screen plan, tela, criar plano, blueprint, plano de tela]
200
205
  target: skill:plan-blueprint
201
206
  pre_action: Validate docs/stack.md exists; if not, dispatch stack-profiler first
202
- notes: 1 tela = 1 plano. Subdivide automaticamente quando há múltiplas seções autônomas
207
+ notes: |
208
+ 1 tela = 1 plano. OBJETIVO obrigatório no prompt:
209
+ - implantacao → criar do zero (fluxo padrão)
210
+ - correcao → cirúrgico, diff vs Storybook, 1 task por componente
211
+ - refactor → implica --allow-arch-change + ADR
212
+ Auto-resolve PROJETO/WORK_BRANCH/BUSINESS_RULES/POSTMAN no comprehension gate.
213
+ Backend gaps → tasks ClickUp automáticas pro Douglas (--skip-clickup desliga).
203
214
 
204
215
  progress_tracking:
205
216
  triggers: [progress, status, progress.txt, memoria curta, l1]
206
217
  target: skill:progress-tracker
207
218
  notes: State machine pendente → em-andamento → validacao → concluido
208
219
 
220
+ execute_plan:
221
+ triggers: [execute, executar plano, run plan, "*execute-plan", execute plan, executar PLAN]
222
+ target: skill:execute-plan
223
+ pre_action: Validate PLAN-NNN-<slug>/plan.md exists; load stack.md; index dirs.storybook stories
224
+ notes: |
225
+ Comando primário do ambiente Codex IDE Extension.
226
+ Ciclo Opus(plan) → Codex(execute). Roda task-a-task com state machine
227
+ e visual gate obrigatório contra Storybook canônico antes de validacao.
228
+
209
229
  product_decisions:
210
230
  triggers: [PRD, requirements, product decision, scope, feature priority]
211
231
  target: agent:po
@@ -292,6 +312,9 @@ commands:
292
312
  - name: progress
293
313
  args: "[init|show|set <plan>|status <task> <novo-status>|compact|read]"
294
314
  description: Gerencia progress.txt (memória L1) e state machine de status
315
+ - name: execute-plan
316
+ args: "<PLAN-NNN-slug> [--task T-NNN-NN] [--skip-visual-gate]"
317
+ description: Executa plano task-a-task com visual gate obrigatório (comando primário do Codex IDE)
295
318
 
296
319
  # Quality
297
320
  - name: check
@@ -328,7 +351,7 @@ available_squads:
328
351
  - name: git-operations
329
352
  purpose: SSH setup, quality gate, safe commit+push
330
353
 
331
- # ─── AVAILABLE SKILLS (18) ────────────────────────────────────
354
+ # ─── AVAILABLE SKILLS (19) ────────────────────────────────────
332
355
  available_skills:
333
356
  - design-to-code
334
357
  - figma-implement-design
@@ -348,6 +371,7 @@ available_skills:
348
371
  - stack-profiler
349
372
  - plan-blueprint
350
373
  - progress-tracker
374
+ - execute-plan
351
375
 
352
376
  # ─── PLAYBOOKS ────────────────────────────────────────────────
353
377
  available_playbooks:
@@ -449,7 +473,8 @@ security:
449
473
  **Plan pipeline (stack-aware):**
450
474
 
451
475
  - `*stack [refresh|show|drift]` - Mantém docs/stack.md
452
- - `*plan <tela|figma-url|descrição>` - Cria plano por tela
476
+ - `*plan <tela|figma-url|descrição>` - Cria plano por tela (Opus, planejamento)
477
+ - `*execute-plan <PLAN-NNN-slug>` - Executa plano com visual gate (Codex IDE, execução)
453
478
  - `*progress [show|set|status|compact]` - Gerencia progress.txt (L1)
454
479
 
455
480
  **Framework:**
@@ -13,7 +13,7 @@
13
13
  "antigravity": { "workspaceDir": ".antigravity", "skillsDir": ".antigravity/skills", "adapter": "integrations/antigravity", "status": "active" },
14
14
  "gemini-cli": { "workspaceDir": ".gemini", "contextFile": "GEMINI.md", "status": "active" },
15
15
  "cursor": { "workspaceDir": ".cursor", "ruleFile": ".cursor/rules/g-os.mdc", "status": "active" },
16
- "codex": { "workspaceDir": ".codex", "skillsDir": ".agents/skills", "adapter": "integrations/codex", "status": "active" },
16
+ "codex": { "workspaceDir": ".codex", "skillsDir": ".codex/skills", "agentsDir": ".codex/agents", "commandsDir": ".codex/commands", "configFile": ".codex/config.toml", "rulesFile": ".codex/AGENTS.md", "adapter": "integrations/codex", "status": "active" },
17
17
  "opencode": { "workspaceDir": ".opencode", "adapter": "integrations/opencode", "status": "active" },
18
18
  "kilo-code": { "workspaceDir": ".kilocode", "ruleFile": ".kilocode/rules/g-os.md", "status": "active" },
19
19
  "qwen-code": { "workspaceDir": ".qwen", "skillsDir": ".qwen/skills", "commandsDir": ".qwen/commands/gos", "agentsDir": ".qwen/agents", "adapter": "integrations/qwen", "status": "active" }
@@ -39,19 +39,31 @@ Se houver drift, decidir entre:
39
39
  ### 2. Criar plano
40
40
 
41
41
  ```
42
- *plan <tela|figma-url|descrição>
42
+ *plan <tela>
43
+
44
+ OBJETIVO = implantacao | correcao | refactor # obrigatório
45
+ FIGMA = <url-frame>
46
+ FIGMA+ = [<url-comp>, ...] # opcional
47
+ NOTAS = """<prosa livre>""" # opcional
48
+ ASSIGNEE = <user-id> # opcional, default 112010775 (Douglas)
43
49
  ```
44
50
 
51
+ `gos-master` resolve no comprehension gate (não pedir ao usuário):
52
+ - `PROJETO` (cwd, ou `~/.claude/.gos-state/last-project.json`)
53
+ - `WORK_BRANCH` (`dev` para app, `feat/storybook` quando em Storybook)
54
+ - Indexação de `<PROJETO>/docs/regras-de-negocio/` e `docs/postman/` (registrada em `progress.txt`)
55
+
45
56
  `plan-blueprint` executa:
46
57
  1. Fase 1 — Mapeamento Visual & Componentização
47
58
  2. Fase 2 — Aderência à Stack (sem redefinir arquitetura)
59
+ 2.5 Fase 2.5 — Backend gaps → criar tasks ClickUp pro Douglas (`--skip-clickup` desliga)
48
60
  3. Fase 3 — Plano de Execução
49
61
 
50
62
  Saídas:
51
- - `<dirs.planos>/PLAN-NNN-<slug>/plan.md`
63
+ - `<dirs.planos>/PLAN-NNN-<slug>/plan.md` (com seções `## Backend pendings` e `## Knowledge mapped`)
52
64
  - `<dirs.planos>/PLAN-NNN-<slug>/context.md`
53
65
  - `<dirs.planos>/PLAN-NNN-<slug>/tasks/T-NNN-NN-*.md`
54
- - `progress.txt` atualizado com plano ativo
66
+ - `progress.txt` atualizado com plano ativo + inventário de knowledge + backend pendings
55
67
 
56
68
  ### 3. Revisar e aceitar
57
69
 
@@ -62,19 +74,29 @@ Humano revisa:
62
74
 
63
75
  Se aprovado, prosseguir. Caso contrário: ajustar manualmente ou rerodar `*plan` com refinamento.
64
76
 
65
- ### 4. Executar tasks
66
-
67
- Para cada task, dev (humano ou LLM):
77
+ ### 3.5. Pre-flight visual (antes de executar)
68
78
 
69
79
  ```
70
- *progress status T-NNN-NN em-andamento
80
+ *execute-plan PLAN-NNN-<slug>
71
81
  ```
72
82
 
73
- Implementa, commita localmente (sem push), atualiza:
83
+ A skill `execute-plan` resolve `dirs.storybook`, indexa `.stories.tsx` disponíveis e confronta cada componente da tabela "Componentes mapeados" do plano. Componente sem story → bloqueia e propõe task de criação ANTES das tasks de implementação.
74
84
 
75
- ```
76
- *progress status T-NNN-NN validacao
77
- ```
85
+ > Ambiente recomendado: **Codex IDE Extension** (executor). O `*plan` da etapa 2 roda em Opus 4.7 (planejador). Adapter Codex é gerado por `npm run sync:ides`.
86
+
87
+ ### 4. Executar tasks (orquestrado por execute-plan)
88
+
89
+ `execute-plan` itera as tasks em ordem de `seq`:
90
+
91
+ 1. `*progress status T-NNN-NN em-andamento` (state machine).
92
+ 2. Despacha agent (`labels: [agent:<slug>]`, default `dev`) para implementar.
93
+ 3. **Visual gate** antes de marcar `validacao`:
94
+ - Compara cada componente alterado com `<Componente>.stories.tsx` em 4 dimensões (anatomia, tokens, variants, densidade).
95
+ - Cruza JSX da tela com Figma MCP (árvore vs hierarquia).
96
+ - Falha → task volta a `em-andamento` com diff em `tasks/T-NNN-NN.notes.md`.
97
+ 4. Sucesso → `*progress status T-NNN-NN validacao`.
98
+
99
+ Para rodar uma task específica fora do loop: `*execute-plan PLAN-NNN-<slug> --task T-NNN-NN`.
78
100
 
79
101
  ### 5. Validação
80
102
 
@@ -116,7 +138,8 @@ Validação humana + QA. Se aprovado:
116
138
  ## Skills relacionadas
117
139
 
118
140
  - `stack-profiler` — produz/mantém `stack.md`
119
- - `plan-blueprint` — cria plano por tela
141
+ - `plan-blueprint` — cria plano por tela (Opus, planejamento)
120
142
  - `plan-to-tasks` — decompõe plano em tasks (chamada automaticamente)
143
+ - `execute-plan` — executa plano com visual gate (Codex IDE, execução)
121
144
  - `progress-tracker` — gerencia `progress.txt`
122
145
  - `clickup` — sync opcional para tracking externo (não obrigatório)
@@ -103,13 +103,23 @@ function main() {
103
103
  const agentTarget = relativeTarget(qwenAgent, agentProfilePath);
104
104
  const safeDesc = agentDesc.replace(/"/g, '\\"').replace(/\n/g, ' ').slice(0, 200);
105
105
  writeFile(qwenAgent, `---\nname: "gos-${agent.id}"\ndescription: "${safeDesc}"\nmodel: inherit\ntools:\n - Read\n - Glob\n - Grep\n - Bash\n - Edit\n - Write\n---\n\nFonte canonica: \`${agentTarget}\`\nLeia e siga o perfil em \`${agentTarget}\`.`);
106
+
107
+ // Codex commands (slash commands no Codex IDE Extension)
108
+ const codexCmd = path.join(root, '.codex', 'commands', 'gos', 'agents', `${agent.id}.md`);
109
+ writeFile(codexCmd, claudeCommandWrapper(`gos-${agent.id}`, agentDesc, relativeTarget(codexCmd, agentProfilePath)));
110
+
111
+ // Codex sub-agents (Codex IDE espera .codex/agents/<id>.md)
112
+ const codexAgent = path.join(root, '.codex', 'agents', `gos-${agent.id}.md`);
113
+ const codexAgentTarget = relativeTarget(codexAgent, agentProfilePath);
114
+ writeFile(codexAgent, `---\nname: "gos-${agent.id}"\ndescription: "${safeDesc}"\nmodel: inherit\ntools:\n - Read\n - Glob\n - Grep\n - Bash\n - Edit\n - Write\n---\n\nFonte canonica: \`${codexAgentTarget}\`\nLeia e siga o perfil em \`${codexAgentTarget}\`.`);
106
115
  }
107
116
 
108
117
  for (const skill of skills) {
109
118
  const skillTargetPath = skill.skillFile || skill.path;
110
119
  const canonicalPath = path.join(root, '.gos', skillTargetPath);
111
120
  const claudeSkill = path.join(root, '.claude', 'commands', 'gos', 'skills', `${skill.slug}.md`);
112
- const codexSkill = path.join(root, '.agents', 'skills', `gos-${skill.slug}`, 'SKILL.md');
121
+ const codexSkill = path.join(root, '.codex', 'skills', `gos-${skill.slug}`, 'SKILL.md');
122
+ const codexSkillCmd = path.join(root, '.codex', 'commands', 'gos', 'skills', `${skill.slug}.md`);
113
123
  const antigravitySkill = path.join(root, '.antigravity', 'skills', `gos-${skill.slug}`, 'SKILL.md');
114
124
  const geminiSkill = path.join(root, '.gemini', 'skills', `gos-${skill.slug}`, 'SKILL.md');
115
125
  const opencodeSkill = path.join(root, '.opencode', 'skills', `gos-${skill.slug}`, 'SKILL.md');
@@ -129,6 +139,7 @@ function main() {
129
139
  writeFile(qwenSkill, skillWrapper(skill.slug, relativeTarget(qwenSkill, canonicalPath), skillDesc));
130
140
 
131
141
  writeFile(qwenCmd, qwenCommandWrapper(`gos-${skill.slug}`, skillDesc, relativeTarget(qwenCmd, canonicalPath)));
142
+ writeFile(codexSkillCmd, claudeCommandWrapper(`gos-${skill.slug}`, skillDesc, relativeTarget(codexSkillCmd, canonicalPath), skillArgHint));
132
143
  writeFile(claudeSkill, claudeCommandWrapper(`gos-${skill.slug}`, skillDesc, relativeTarget(claudeSkill, canonicalPath), skillArgHint));
133
144
  }
134
145
 
@@ -169,7 +180,98 @@ function main() {
169
180
  )
170
181
  );
171
182
 
183
+ // Codex IDE Extension — AGENTS.md + config.toml
184
+ // Codex e o ambiente de EXECUCAO (Opus planeja, Codex executa). Bloco abaixo garante
185
+ // que slash commands e subagents estao disponiveis ao abrir o projeto no Codex.
186
+ const codexAgentsMd = [
187
+ '# G-OS no Codex IDE Extension',
188
+ '',
189
+ 'Este arquivo e auto-gerado por `npm run sync:ides`. Nao edite a mao.',
190
+ '',
191
+ 'Codex IDE Extension e o ambiente de EXECUCAO do G-OS. Opus 4.7 planeja em outra IDE/sessao;',
192
+ 'Codex executa task-a-task com `*execute-plan`.',
193
+ '',
194
+ 'Leia sempre:',
195
+ '- `../AGENTS.md` (raiz do projeto)',
196
+ '- `../CLAUDE.md`',
197
+ '- `../.gos/docs/toolchain-map.md`',
198
+ '',
199
+ '## Execucao de planos (comando primario do Codex)',
200
+ '',
201
+ '```',
202
+ '*execute-plan PLAN-NNN-<slug>',
203
+ '```',
204
+ '',
205
+ 'Ciclo: pre-flight visual -> loop por task com state machine -> visual gate -> validacao -> humano marca concluido.',
206
+ 'Detalhes: `../.gos/skills/execute-plan/SKILL.md`.',
207
+ '',
208
+ '## Agents disponiveis',
209
+ '',
210
+ ...agents.map((agent) => `- \`gos-${agent.id}\` -> \`../.gos/agents/profiles/${agent.path}\``),
211
+ '',
212
+ '## Skills curadas',
213
+ '',
214
+ '| Slug | Arquivo canonico |',
215
+ '|------|------------------|',
216
+ ...skills.map((skill) => `| \`gos-${skill.slug}\` | \`../.gos/${skill.skillFile || skill.path}\` |`),
217
+ '',
218
+ '## Como o Codex consome',
219
+ '',
220
+ '- Slash commands em `.codex/commands/gos/{agents,skills}/<id>.md` -> Codex carrega o canonico apontado em CANONICAL-SOURCE e executa.',
221
+ '- Subagents em `.codex/agents/gos-<id>.md` -> referencia o profile em `.gos/agents/profiles/`.',
222
+ '- Skills em `.codex/skills/gos-<slug>/SKILL.md` -> wrapper fino que aponta para `.gos/skills/<slug>/SKILL.md`.',
223
+ ''
224
+ ].join('\n');
225
+ writeFile(path.join(root, '.codex', 'AGENTS.md'), codexAgentsMd);
226
+
227
+ const codexConfigToml = [
228
+ '# G-OS Codex IDE Extension config (auto-gerado por npm run sync:ides).',
229
+ '# Edite os arquivos canonicos em .gos/ ao inves deste.',
230
+ '',
231
+ 'project = "g-os"',
232
+ '',
233
+ '[instructions]',
234
+ 'files = [',
235
+ ' "AGENTS.md",',
236
+ ' "../AGENTS.md",',
237
+ ' "../CLAUDE.md",',
238
+ ' "../.gos/docs/toolchain-map.md",',
239
+ ']',
240
+ '',
241
+ '[execution]',
242
+ 'primary_command = "*execute-plan"',
243
+ 'planning_command = "*plan"',
244
+ 'progress_command = "*progress"',
245
+ 'stack_command = "*stack"',
246
+ ''
247
+ ].join('\n');
248
+ writeFile(path.join(root, '.codex', 'config.toml'), codexConfigToml);
249
+
250
+ // Validacao final: garantir que os arquivos do Codex foram gerados.
251
+ // Evita regressoes silenciosas que ja quebraram a IDE no passado.
252
+ const codexFailures = [];
253
+ for (const agent of agents) {
254
+ const expectedAgent = path.join(root, '.codex', 'agents', `gos-${agent.id}.md`);
255
+ const expectedCmd = path.join(root, '.codex', 'commands', 'gos', 'agents', `${agent.id}.md`);
256
+ if (!fs.existsSync(expectedAgent)) codexFailures.push(expectedAgent);
257
+ if (!fs.existsSync(expectedCmd)) codexFailures.push(expectedCmd);
258
+ }
259
+ for (const skill of skills) {
260
+ const expectedSkill = path.join(root, '.codex', 'skills', `gos-${skill.slug}`, 'SKILL.md');
261
+ const expectedCmd = path.join(root, '.codex', 'commands', 'gos', 'skills', `${skill.slug}.md`);
262
+ if (!fs.existsSync(expectedSkill)) codexFailures.push(expectedSkill);
263
+ if (!fs.existsSync(expectedCmd)) codexFailures.push(expectedCmd);
264
+ }
265
+ if (!fs.existsSync(path.join(root, '.codex', 'AGENTS.md'))) codexFailures.push('.codex/AGENTS.md');
266
+ if (!fs.existsSync(path.join(root, '.codex', 'config.toml'))) codexFailures.push('.codex/config.toml');
267
+ if (codexFailures.length > 0) {
268
+ console.error(`[sync:ides] Codex IDE adapters incompletos. Faltando ${codexFailures.length} arquivos:`);
269
+ for (const f of codexFailures) console.error(` - ${path.relative(root, f)}`);
270
+ process.exit(1);
271
+ }
272
+
172
273
  console.log(`Adapters generated for ${agents.length} agents and ${skills.length} skills.`);
274
+ console.log(`Codex IDE: ${agents.length} agents + ${skills.length} skills + AGENTS.md + config.toml.`);
173
275
  }
174
276
 
175
277
  main();
@@ -0,0 +1,117 @@
1
+ ---
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. Comando primario do ambiente Codex IDE.
4
+ argument-hint: "<PLAN-NNN-slug> [--task T-NNN-NN] [--skip-visual-gate]"
5
+ allowedTools: [Read, Glob, Grep, Bash, Write, Edit, Agent, AskUserQuestion]
6
+ sourceDocs:
7
+ - templates/taskTemplate.md
8
+ - playbooks/plan-creation-playbook.md
9
+ - skills/figma-implement-design/SKILL.md
10
+ - skills/plan-blueprint/SKILL.md
11
+ use-when:
12
+ - executar plano ja criado por *plan
13
+ - rodar tasks de um PLAN-NNN com state machine e visual gate
14
+ - ambiente Codex IDE Extension (comando primario)
15
+ do-not-use-for:
16
+ - criar plano novo (use plan-blueprint)
17
+ - decompor plano em tasks (use plan-to-tasks)
18
+ - gerenciar progress.txt isoladamente (use progress-tracker)
19
+ metadata:
20
+ category: execution
21
+ ---
22
+
23
+ Voce esta executando como **Executor de Planos** via skill `execute-plan`. No ambiente Codex IDE Extension este e o comando primario do ciclo `Opus(plan) -> Codex(execute)`.
24
+
25
+ ## Input
26
+
27
+ $ARGUMENTS
28
+
29
+ Formato esperado:
30
+ - `<PLAN-NNN-slug>` — id do plano (ex.: `PLAN-001-pagina-projetos-inicial`)
31
+ - `--task T-NNN-NN` — opcional, executa apenas a task especifica
32
+ - `--skip-visual-gate` — opcional, pula visual gate (raro, registra warning)
33
+
34
+ ## Pre-requisitos (gate)
35
+
36
+ 1. Resolver paths via `.gos-local/plan-paths.json`. Se ausente, abortar e instruir o usuario a rodar `*plan` primeiro.
37
+ 2. Localizar `<dirs.planos>/<PLAN-NNN-slug>/plan.md`. Se ausente, abortar.
38
+ 3. Ler `plan.md` por completo: frontmatter + Componentes mapeados + Componentes ausentes + Aderencia a stack + Plano de execucao + Checklist de aceite.
39
+ 4. Validar `stack_ref` do frontmatter contra `<dirs.stack>` (`docs/stack.md`):
40
+ - Calcular sha-curto atual e comparar.
41
+ - Drift detectado: ABORTAR e instruir `*stack drift` + replanejar com `*stack refresh`.
42
+ 5. Ler `<dirs.progress>` (progress.txt). Se aponta para outro plano ativo, perguntar se troca o foco antes de prosseguir.
43
+
44
+ ## Pre-flight visual
45
+
46
+ (Pulado quando `--skip-visual-gate` presente — registrar warning em `tasks/T-NNN-NN.notes.md` da primeira task.)
47
+
48
+ 1. Resolver `<dirs.storybook>` via `plan-paths.json`. Path absoluto fora do repo do projeto e valido (ex.: `E:\Github\Ganbatte\tmp\fractus-storybook`).
49
+ 2. Indexar todos `.stories.tsx` disponiveis em `<dirs.stories>` ou `<dirs.components>`.
50
+ 3. Para cada linha da tabela "Componentes mapeados" do plano:
51
+ - Confirmar que a coluna `Story (path)` aponta para arquivo existente.
52
+ - Se ausente: gerar task de criacao do componente ANTES das tasks de implementacao. Renumerar `seq` das tasks restantes.
53
+ 4. Output do pre-flight: bloco em `progress.txt` campo `notes=` com numero de stories indexadas e tasks de criacao geradas.
54
+
55
+ ## Loop por task
56
+
57
+ Iterar tasks em ordem de `seq`. Para cada `tasks/T-NNN-NN-*.md`:
58
+
59
+ 1. **Mover para em-andamento**: `*progress status T-NNN-NN em-andamento`. State machine valida transicao.
60
+ 2. **Despachar agent**: ler `labels: [agent:<slug>]` da task. Default: `dev`. Invocar via Agent tool com prompt completo (objetivo, plano de execucao, DoD, paths relevantes).
61
+ 3. **Implementacao**: agent edita arquivos seguindo o plano de execucao da task. Stack como contrato — nada fora de `docs/stack.md` salvo se `arch_change=true` no frontmatter do plano pai.
62
+ 4. **Visual gate** (antes de propor `validacao`):
63
+
64
+ Para cada componente alterado/criado pela task:
65
+
66
+ a) Localizar `<Componente>.stories.tsx` em `<dirs.storybook>`.
67
+ b) Comparar implementacao vs story canonica em 4 dimensoes textuais:
68
+ - **Anatomia**: ordem de slots/elementos (header -> corpo -> footer; icones esquerda/direita; campos do form na ordem do design).
69
+ - **Tokens**: classes Tailwind/variaveis CSS batem com DS (cor, raio, espacamento, tipografia).
70
+ - **Variants**: props expostos cobrem variants da story.
71
+ - **Densidade**: padding/gap dentro de +-1 step da escala do DS.
72
+ c) Para a tela como um todo: invocar Figma MCP no `figma_url` do plano e cruzar com o JSX renderizado em arvore (mesmo numero de secoes, mesma hierarquia, mesmas labels).
73
+ d) Output: relatorio curto em `tasks/T-NNN-NN.notes.md` (4 secoes: anatomia, tokens, variants, densidade + secao "Arvore vs Figma").
74
+ e) Divergencia >= 1 item critico (anatomia ou tokens) -> falha o gate.
75
+
76
+ 5. **Resultado do gate**:
77
+ - Sucesso -> `*progress status T-NNN-NN validacao`. Preparar arquivos staged (sem commit).
78
+ - Falha -> manter em `em-andamento`, gravar diff em `T-NNN-NN.notes.md`, retornar pra etapa 3.
79
+
80
+ ## Fechamento
81
+
82
+ Quando todas as tasks atingirem `validacao` E o checklist de aceite do plano estiver marcado:
83
+
84
+ 1. Listar arquivos modificados via `git diff --name-only`.
85
+ 2. Preparar commit (NAO push). Mensagem segue Conventional Commits + referencia ao `PLAN-NNN-slug`.
86
+ 3. Resumo final ao usuario:
87
+ - Path do plano + numero de tasks concluidas.
88
+ - Lista de componentes que passaram/falharam o visual gate.
89
+ - Comando exato para o humano marcar `concluido`: `*progress status T-NNN-NN concluido` (apos validacao humana + smoke E2E).
90
+
91
+ ## Ambiente Codex IDE — observacoes
92
+
93
+ - O usuario invoca `*execute-plan` direto no Codex. A skill carrega via wrapper em `.codex/skills/gos-execute-plan/SKILL.md`.
94
+ - Toda chamada a outros agents/skills do G-OS dentro do execute-plan deve usar o adapter Codex correspondente (`.codex/agents/`, `.codex/commands/`).
95
+ - Se a chamada cair pra outro adapter (Claude/Qwen/etc) a sessao quebra — abortar com mensagem clara.
96
+
97
+ ## Regras criticas
98
+
99
+ - **Visual gate nao e opcional** salvo `--skip-visual-gate` explicito. Skill nao silencia o gate.
100
+ - **Sem push automatico**: commit fica preparado. Push e responsabilidade do humano.
101
+ - **State machine inviolavel**: transicao `concluido` so apos humano validar + checklist.
102
+ - **Storybook como contrato**: componente sem `.stories.tsx` em `<dirs.storybook>` bloqueia a task ate ser criado.
103
+
104
+ ## Model guidance
105
+
106
+ | Escopo | Modelo |
107
+ |--------|--------|
108
+ | Task simples (1 componente, sem novo padrao) | `sonnet` |
109
+ | Task que toca multiplos componentes ou logica de fetching | `opus` |
110
+ | Visual gate / comparacao com Figma | inherit (modelo do agent) |
111
+
112
+ ## Instructions
113
+
114
+ 1. NUNCA pular o pre-flight visual sem flag explicita.
115
+ 2. Resolver TODOS os paths via `plan-paths.json`.
116
+ 3. Visual gate produz relatorio em `T-NNN-NN.notes.md` mesmo em caso de sucesso.
117
+ 4. Status final esperado: todas as tasks em `validacao`, commit preparado, humano notificado.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: plan-blueprint
3
3
  description: Cria um plano padronizado para uma tela (1 plano = 1 tela) seguindo a stack-of-record do projeto. Produz {plano, tasks, contexto, entrada-progress.txt} em três fases (Mapeamento → Aderência à stack → Execução). Pré-requisito duro: docs/stack.md existir. Subdivide automaticamente telas com seções autônomas múltiplas.
4
- argument-hint: "<tela|figma-url|descrição> [--from-figma-mcp] [--allow-arch-change]"
4
+ argument-hint: "<tela> OBJETIVO=<implantacao|correcao|refactor> FIGMA=<url> [FIGMA+=...] [--from-figma-mcp] [--allow-arch-change] [--skip-clickup]"
5
5
  allowedTools: [Read, Glob, Grep, Bash, Write, Edit, Agent, AskUserQuestion]
6
6
  sourceDocs:
7
7
  - templates/planTemplate.md
@@ -25,14 +25,35 @@ Você está executando como **Tech Lead Frontend / Arquiteto Sênior** via skill
25
25
 
26
26
  $ARGUMENTS
27
27
 
28
- Auto-detecção de input:
29
- - URL `https://www.figma.com/...` ativa modo Figma MCP
30
- - caminho de arquivo `.md`/`.png`/`.jpg` modo descrição com referência visual
31
- - texto livre → modo descrição
28
+ Campos obrigatórios no prompt:
29
+ - `OBJETIVO` `implantacao` | `correcao` | `refactor`
30
+ - `FIGMA` URL do frame principal (auto-ativa Figma MCP)
31
+
32
+ Opcionais:
33
+ - `FIGMA+` — lista de URLs de componentes
34
+ - `NOTAS` — prosa livre (comportamento, edge cases, invioláveis)
35
+ - `ASSIGNEE` — override do user_id ClickUp para tasks de backend (default: 112010775)
36
+
37
+ Auto-resolvido pelo `gos-master` (comprehension gate, NÃO pedir ao usuário):
38
+ - `PROJETO` — `cwd`; ambíguo → `~/.claude/.gos-state/last-project.json`
39
+ - `WORK_BRANCH` — tela em Storybook → `feat/storybook`; senão → `dev`
40
+ - `STORYBOOK_DIR/BRANCH` — `plan-paths.json`
41
+ - `BUSINESS_RULES` — `<PROJETO>/docs/regras-de-negocio/` (indexar e registrar em progress.txt)
42
+ - `POSTMAN` — `<PROJETO>/docs/postman/` (idem)
43
+ - `BACKEND/RLS/SEED/SMOKE_E2E` — derivado de `stack.md` + regras + Postman
44
+
45
+ OBJETIVO muda postura:
46
+
47
+ | Valor | Comportamento |
48
+ |-------|---------------|
49
+ | `implantacao` | Cria do zero — Fase 1 → 2 → 3 padrão |
50
+ | `correcao` | Modo cirúrgico — diff vs Storybook canônico, 1 task por componente, sem reescrever |
51
+ | `refactor` | Implica `--allow-arch-change` + ADR obrigatória |
32
52
 
33
53
  Flags:
34
- - `--from-figma-mcp` — força leitura via Figma MCP
35
- - `--allow-arch-change` — libera Fase 2 propositiva (gera ADR)
54
+ - `--from-figma-mcp` — força leitura via Figma MCP (default quando `FIGMA=` é Figma URL)
55
+ - `--allow-arch-change` — libera Fase 2 propositiva (gera ADR); implícito em `OBJETIVO=refactor`
56
+ - `--skip-clickup` — não cria tasks de backend automaticamente
36
57
 
37
58
  ## Pré-requisitos (gate)
38
59
 
@@ -41,6 +62,9 @@ Flags:
41
62
  - Se ausente: ABORTAR. Despachar `stack-profiler refresh` e instruir o usuário a re-executar.
42
63
  - Se presente: ler integralmente. Verificar drift via `*stack drift` antes de prosseguir.
43
64
  3. Ler `progress.txt` se existir (memória L1).
65
+ 4. **Verificar `dirs.storybook`** (caminho do `plan-paths.json`):
66
+ - Se ausente OU diretório não existe: ABORTAR. Pedir caminho ao usuário (path absoluto fora do repo é válido, ex.: `E:\Github\Ganbatte\tmp\fractus-storybook`) e gravar em `plan-paths.json`.
67
+ - Se presente: indexar `.stories.tsx` disponíveis (lista usada na Fase 1.3).
44
68
 
45
69
  ## Fase 1 — Mapeamento Visual & Componentização
46
70
 
@@ -60,8 +84,10 @@ Caso contrário: trabalhar pela descrição/screenshot fornecido.
60
84
 
61
85
  Produzir tabela:
62
86
 
63
- | Elemento (Figma/descrição) | Componente do DS | Variant | Props relevantes |
64
- |----------------------------|------------------|---------|-------------------|
87
+ | Elemento (Figma/descrição) | Componente do DS | Story (path) | Variant | Props relevantes |
88
+ |----------------------------|------------------|--------------|---------|-------------------|
89
+
90
+ A coluna `Story (path)` aponta para `.stories.tsx` indexado no gate. Componente sem story correspondente NÃO entra na tabela — vai pra "Componentes ausentes" e gera task de criação.
65
91
 
66
92
  Listar **componentes ausentes** separadamente — sinalizar como bloqueio ou candidato a criação (vai virar task própria).
67
93
 
@@ -77,6 +103,22 @@ Saída desta fase é uma seção **"Aderência à Stack"** no plano — não red
77
103
 
78
104
  **Modo `--allow-arch-change`**: pode propor alteração. Gerar ADR em `dirs.adr` (template `templates/adr-tmpl.yaml`) ANTES de prosseguir. Plano referencia o ADR e marca `arch_change: true` no frontmatter.
79
105
 
106
+ ### 2.5 Backend gaps → ClickUp automático
107
+
108
+ Postman é o **contrato backend**. Para cada dado/ação da tela:
109
+
110
+ 1. Confrontar com `<PROJETO>/docs/postman/` (já indexado no comprehension gate).
111
+ 2. Se o endpoint não existir, ou existir com shape divergente, ou faltar RLS/migration para suportar a tela → registrar como **backend pending**.
112
+ 3. Para cada pending, criar task ClickUp via `mcp__clickup__clickup_create_task`:
113
+ - **Assignee**: `ASSIGNEE` do prompt OU default `112010775` (Douglas Oliveira).
114
+ - **List**: `clickup.backend_list_id` de `plan-paths.json`. Ausente → registrar pending no plano com `clickup: pending` e seguir.
115
+ - **Título**: `[Backend] PLAN-NNN: <gap em uma linha>`
116
+ - **Descrição**: o que a tela precisa, qual coleção/endpoint do Postman cobre (ou não), referência ao plano (`docs/plans/PLAN-NNN/plan.md`), shape esperado.
117
+ 4. Registrar IDs criados em:
118
+ - `plan.md` → seção `## Backend pendings` (lista com `clickup_id`, status, link).
119
+ - `progress.txt` → bloco `## Backend pendings — PLAN-NNN`.
120
+ 5. Flag `--skip-clickup` desliga a criação (pending fica registrado apenas no plano).
121
+
80
122
  ## Fase 3 — Plano de Execução
81
123
 
82
124
  Para cada elemento mapeado:
@@ -127,6 +169,7 @@ Próximos passos:
127
169
  - **Backend read-only respeitado**: se `stack.md` declara backend read-only, plano NUNCA propõe schema novo.
128
170
  - **Next.js App Router**: decisão server vs client é explícita por elemento.
129
171
  - **Sem prosa decorativa**: plano deve ser executável, denso, com critérios mensuráveis.
172
+ - **Storybook como contrato**: cada componente do DS na tabela DEVE apontar `.stories.tsx` existente em `dirs.storybook`. Sem story → componente vai pra "Componentes ausentes" e gera task de criação. Sem essa disciplina, o visual gate do `*execute-plan` quebra.
130
173
 
131
174
  ## Model guidance
132
175
 
@@ -139,6 +182,7 @@ Próximos passos:
139
182
  ## Instructions
140
183
 
141
184
  1. NUNCA prosseguir sem `stack.md` válido.
142
- 2. Resolver TODOS os paths via `plan-paths.json`.
185
+ 2. Resolver TODOS os paths via `plan-paths.json`. PROJETO/WORK_BRANCH são auto-resolvidos pelo `gos-master` — não perguntar ao usuário.
143
186
  3. Status inicial do plano e tasks: `pendente`.
144
187
  4. Não pushar nada — apenas escrever arquivos locais.
188
+ 5. Backend pendings só criam tasks ClickUp se o `mcp__clickup__*` estiver disponível na sessão E `--skip-clickup` não for passado. Caso contrário, registrar apenas no plano.
@@ -22,6 +22,7 @@
22
22
  { "slug": "slack-review", "path": "skills/slack-review/SKILL.md" },
23
23
  { "slug": "stack-profiler", "path": "skills/stack-profiler/SKILL.md" },
24
24
  { "slug": "plan-blueprint", "path": "skills/plan-blueprint/SKILL.md" },
25
- { "slug": "progress-tracker", "path": "skills/progress-tracker/SKILL.md" }
25
+ { "slug": "progress-tracker", "path": "skills/progress-tracker/SKILL.md" },
26
+ { "slug": "execute-plan", "path": "skills/execute-plan/SKILL.md" }
26
27
  ]
27
28
  }
@@ -1,12 +1,14 @@
1
1
  ---
2
2
  id: PLAN-<NNN>-<slug>
3
3
  tela: <nome da tela>
4
+ objetivo: <implantacao | correcao | refactor>
4
5
  figma_url: <url ou null>
5
6
  status: pendente
6
7
  parent_plan: <PLAN-NNN ou null>
7
8
  children_plans: []
8
9
  stack_ref: docs/stack.md@<sha-curto>
9
10
  arch_change: false
11
+ work_branch: <dev | feat/storybook>
10
12
  created_at: <iso>
11
13
  validated_at: null
12
14
  ---
@@ -19,9 +21,9 @@ validated_at: null
19
21
 
20
22
  ## Componentes mapeados
21
23
 
22
- | Elemento | Componente do DS | Variant | Props |
23
- |----------|------------------|---------|-------|
24
- | | | | |
24
+ | Elemento | Componente do DS | Story (path) | Variant | Props |
25
+ |----------|------------------|--------------|---------|-------|
26
+ | | | | | |
25
27
 
26
28
  ## Componentes ausentes
27
29
 
@@ -68,9 +70,28 @@ validated_at: null
68
70
  - [ ] Sem console errors/warnings
69
71
  - [ ] TypeScript válido (`tsc --noEmit`)
70
72
  - [ ] Reutilização ≥ X% de componentes do DS
73
+ - [ ] **Visual gate**: cada componente mapeado tem story em `dirs.stories/`
74
+ - [ ] **Visual gate**: anatomia, tokens e densidade batem com a story canônica (≤ 1 desvio menor documentado em `T-NNN-NN.notes.md`)
75
+ - [ ] **Visual gate**: árvore JSX da tela espelha hierarquia do Figma (mesmas seções, mesma ordem)
71
76
  - [ ] <critério específico da tela 1>
72
77
  - [ ] <critério específico da tela 2>
73
78
 
79
+ ## Backend pendings
80
+
81
+ > 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.
82
+
83
+ | Gap | Endpoint/Coleção esperada | ClickUp ID | Status |
84
+ |-----|---------------------------|------------|--------|
85
+ | | | | |
86
+
87
+ ## Knowledge mapped
88
+
89
+ > Inventário denso do que foi indexado no comprehension gate (regras-de-negocio + Postman).
90
+
91
+ - **Regras de negócio**: `<lista de arquivos relevantes em docs/regras-de-negocio/>`
92
+ - **Postman**: `<lista de coleções/endpoints relevantes em docs/postman/>`
93
+ - **Stack ref**: `<sha de stack.md>`
94
+
74
95
  ## Riscos & Rollback
75
96
 
76
97
  - <risco>
@@ -30,6 +30,7 @@ links: []
30
30
  ## Critérios de aceitação (DoD)
31
31
 
32
32
  - [ ] Implementação atende `valida_em` do plano
33
+ - [ ] **Visual gate aprovado** (relatório em `T-NNN-NN.notes.md` com 4 seções: anatomia, tokens, variants, densidade)
33
34
  - [ ] Tests/CI verdes
34
35
  - [ ] Sem regressões
35
36
  - [ ] <métrica específica>
package/CLAUDE.md CHANGED
@@ -48,17 +48,21 @@ Todo texto gerado deve passar por correcao ortografica e remocao de padroes de I
48
48
  gos-master | architect | dev | devops | po | qa | sm | squad-creator | ux-design-expert
49
49
 
50
50
  ### Skills (invoke via /gos:skills:{slug})
51
- design-to-code | figma-implement-design | figma-make-analyzer | make-code-triage | make-version-diff | component-dedup | frontend-dev | interface-design | react-best-practices | react-doctor | sprint-planner | clickup | plan-to-tasks | agent-teams | git-ssh-setup | stack-profiler | plan-blueprint | progress-tracker
51
+ design-to-code | figma-implement-design | figma-make-analyzer | make-code-triage | make-version-diff | component-dedup | frontend-dev | interface-design | react-best-practices | react-doctor | sprint-planner | clickup | plan-to-tasks | agent-teams | git-ssh-setup | stack-profiler | plan-blueprint | progress-tracker | execute-plan
52
+
53
+ ### IDEs suportadas (npm run sync:ides gera adapters)
54
+ Claude Code | Cursor | Gemini CLI | Qwen Code | Antigravity | Opencode | Kilo Code | **Codex IDE Extension** (ambiente de execucao, comando primario `*execute-plan`)
52
55
 
53
56
  ## Plan Pipeline (stack-aware)
54
57
 
55
- Pipeline padronizado para criacao de planos por tela. Toda tela = 1 plano. Stack-of-record (`docs/stack.md`) e contrato — alteracoes de stack exigem ADR.
58
+ Pipeline padronizado para criacao de planos por tela. Toda tela = 1 plano. Stack-of-record (`docs/stack.md`) e contrato — alteracoes de stack exigem ADR. Divisao de trabalho: **Opus 4.7 planeja, Codex IDE executa**.
56
59
 
57
- | Comando | Skill | Funcao |
58
- |---------|-------|--------|
59
- | `*stack [refresh|show|drift]` | `stack-profiler` | Mantem `docs/stack.md` (canonico do projeto) |
60
- | `*plan <tela>` | `plan-blueprint` | Cria plano + tasks + context + atualiza `progress.txt` |
61
- | `*progress [show|set|status]` | `progress-tracker` | Memoria L1 + state machine de status |
60
+ | Comando | Skill | IDE / Modelo | Funcao |
61
+ |---------|-------|--------------|--------|
62
+ | `*stack [refresh|show|drift]` | `stack-profiler` | qualquer | Mantem `docs/stack.md` (canonico do projeto) |
63
+ | `*plan <tela>` | `plan-blueprint` | Opus 4.7 (planejador) | Cria plano + tasks + context + atualiza `progress.txt` |
64
+ | `*execute-plan <PLAN-NNN>` | `execute-plan` | **Codex IDE Extension** (executor) | Executa task-a-task com visual gate vs Storybook canonico |
65
+ | `*progress [show|set|status]` | `progress-tracker` | qualquer | Memoria L1 + state machine de status |
62
66
 
63
67
  State machine: `pendente -> em-andamento -> validacao -> concluido` (concluido somente apos validacao humana).
64
68
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ganbatte-os",
3
- "version": "0.2.33",
3
+ "version": "0.2.34",
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"