ganbatte-os 0.2.32 → 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.
- package/.gos/agents/profiles/ganbatte-os-master.md +28 -3
- package/.gos/integrations/registry.json +1 -1
- package/.gos/playbooks/plan-creation-playbook.md +35 -12
- package/.gos/scripts/cli/gos-cli.js +382 -40
- package/.gos/scripts/integrations/setup-ide-adapters.js +103 -1
- package/.gos/skills/execute-plan/SKILL.md +117 -0
- package/.gos/skills/plan-blueprint/SKILL.md +54 -10
- package/.gos/skills/registry.json +2 -1
- package/.gos/templates/planTemplate.md +24 -3
- package/.gos/templates/taskTemplate.md +1 -0
- package/CLAUDE.md +11 -7
- package/README.md +124 -25
- package/package.json +2 -1
|
@@ -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|
|
|
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
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
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
|
-
| `*
|
|
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/README.md
CHANGED
|
@@ -43,50 +43,149 @@ Após rodar o install, o framework criará uma estrutura limpa na sua raiz:
|
|
|
43
43
|
|
|
44
44
|
### 3. Comandos do Workspace
|
|
45
45
|
|
|
46
|
-
A partir da raiz do seu projeto:
|
|
47
|
-
|
|
48
46
|
| Comando | Equivalente CLI | O que faz |
|
|
49
47
|
|---------|-----------------|-----------|
|
|
50
|
-
| `npm run gos:init` | `gos init` | Setup pos-clone: configura `upstream`, cria
|
|
51
|
-
| `npm run gos:update` | `gos update` |
|
|
52
|
-
| `npm run gos:doctor` | `gos doctor` |
|
|
53
|
-
| `npm run gos:version` | `gos version` |
|
|
48
|
+
| `npm run gos:init` | `gos init` | Setup pos-clone: configura `upstream`, cria `.gos-local/`, gera IDE adapters |
|
|
49
|
+
| `npm run gos:update` | `gos update` | Fetch + merge do upstream (**apenas em fork/clone do g-os**) |
|
|
50
|
+
| `npm run gos:doctor` | `gos doctor` | Health-check (42+ checks: skills, agents, IDE adapters, upstream alcançável, stashes acumulados, modo workspace) |
|
|
51
|
+
| `npm run gos:version` | `gos version` | Versão instalada, modo do workspace e atualizações pendentes |
|
|
52
|
+
| `npm run gos:rescue` | `gos rescue` | Lista/recupera stashes acumulados de updates falhos |
|
|
54
53
|
| `npm run sync:ides` | — | Regenera apenas os IDE adapters (`.claude/`, `.qwen/`, `.gemini/`, `.cursor/`, `.agents/`) |
|
|
55
|
-
| `npm run check:ides` | — | Valida que
|
|
56
|
-
| `npm run clickup` | — | CLI ClickUp
|
|
54
|
+
| `npm run check:ides` | — | Valida que adapters estão consistentes com `.gos/skills/registry.json` |
|
|
55
|
+
| `npm run clickup` | — | CLI ClickUp |
|
|
56
|
+
|
|
57
|
+
## Atualizar o ganbatte-os
|
|
58
|
+
|
|
59
|
+
Existem **três níveis distintos** de versão. Saiba qual atualizar antes de rodar qualquer comando.
|
|
60
|
+
|
|
61
|
+
### Descobrir em que cenário você está
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npm run gos:version
|
|
65
|
+
# imprime: versão local + modo (framework workspace | projeto consumidor)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
| Modo detectado | Significa | Como atualizar |
|
|
69
|
+
|----------------|-----------|----------------|
|
|
70
|
+
| `framework workspace` | Você clonou/forkou o repo `g-os` para contribuir | `npm run gos:update` |
|
|
71
|
+
| `projeto consumidor` | Seu projeto usa o G-OS (rodou `gos install` aqui) | `gos install --force` |
|
|
72
|
+
| (CLI global) | O comando `gos` instalado via `npm install -g` | `npm install -g ganbatte-os@latest` |
|
|
57
73
|
|
|
58
|
-
|
|
74
|
+
### Nível 1 — CLI global (`gos`)
|
|
59
75
|
|
|
60
76
|
```bash
|
|
77
|
+
# Versão atual instalada vs publicada no registry:
|
|
78
|
+
npm list -g ganbatte-os
|
|
79
|
+
npm view ganbatte-os version
|
|
80
|
+
|
|
81
|
+
# Atualizar:
|
|
82
|
+
npm install -g ganbatte-os@latest
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Nível 2 — Projeto consumidor
|
|
86
|
+
|
|
87
|
+
Seu projeto NÃO é fork do G-OS, mas usa o framework via `gos install`. O `.gos/` mora dentro do seu repo.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Pré-checagem (uma vez):
|
|
91
|
+
git remote -v
|
|
92
|
+
# Se houver "upstream" apontando para g-os.git, REMOVA:
|
|
93
|
+
# git remote remove upstream
|
|
94
|
+
# (essa configuração só faz sentido em fork do framework)
|
|
95
|
+
|
|
96
|
+
# Atualizar o framework dentro do seu projeto:
|
|
97
|
+
gos install --force
|
|
98
|
+
# Sobrescreve .gos/ com a última versão do pacote ganbatte-os global,
|
|
99
|
+
# preservando seus arquivos (packages/, docs/, .gos-local/).
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
> [!WARNING]
|
|
103
|
+
> NÃO use `npm run gos:update` em projeto consumidor. O CLI agora detecta esse cenário e aborta com instruções, mas em versões antigas ele tentava `git fetch upstream main` e quebrava de forma confusa.
|
|
104
|
+
|
|
105
|
+
### Nível 3 — Framework workspace (fork/clone do g-os)
|
|
106
|
+
|
|
107
|
+
Você está contribuindo com o próprio framework.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Pré-checagem (sempre antes de update):
|
|
111
|
+
npm run gos:doctor
|
|
112
|
+
# Valida 42+ pontos. Aborta se upstream estiver com URL quebrada
|
|
113
|
+
# ou se houver stashes acumulados de updates anteriores falhos.
|
|
114
|
+
|
|
115
|
+
# Ver quantos commits faltam:
|
|
116
|
+
npm run gos:version
|
|
117
|
+
|
|
118
|
+
# Aplicar (lê dev branch do .gos/config.json#defaultBranches.development):
|
|
61
119
|
npm run gos:update
|
|
62
|
-
# equivalente a: git fetch upstream && git merge upstream/main && npm install && npm run sync:ides
|
|
63
120
|
```
|
|
64
121
|
|
|
65
|
-
|
|
122
|
+
`gos:update` agora é **fail-safe**:
|
|
123
|
+
|
|
124
|
+
1. Bloqueia se modo for `consumer`
|
|
125
|
+
2. Valida `upstream` reachable (`git ls-remote`) ANTES de stashar
|
|
126
|
+
3. Lê branch de desenvolvimento do `.gos/config.json` (não hardcoded)
|
|
127
|
+
4. Faz fetch primeiro; se nada mudou, sai sem stash
|
|
128
|
+
5. Stash recebe label timestamped único
|
|
129
|
+
6. Auto-resolve conflitos em arquivos do framework (`frameworkManaged` no manifest); aborta em conflitos do usuário
|
|
130
|
+
|
|
131
|
+
Override de branch (debug):
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
GOS_UPSTREAM_BRANCH=beta npm run gos:update
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### Caso especial: "histórias não relacionadas"
|
|
138
|
+
|
|
139
|
+
Workspaces criados via `gos install` no passado podem ter `.git` próprio sem ancestor comum com o repo do framework. Nesse caso o merge falha com `fatal: refusing to merge unrelated histories`. O CLI detecta e instrui:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
npm run gos:update -- --allow-unrelated
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Isso une as duas histórias num commit de merge único. Faça uma vez; depois disso updates normais funcionam.
|
|
146
|
+
|
|
147
|
+
#### Caso especial: untracked files que conflitam com o merge
|
|
148
|
+
|
|
149
|
+
Se você tem arquivos não-versionados em paths que o framework gera (`.claude/`, `.qwen/`, `.gemini/`, `.cursor/`, `.agents/`, etc), o git recusa o merge para evitar perda. O CLI detecta e oferece:
|
|
66
150
|
|
|
67
151
|
```bash
|
|
68
|
-
npm run gos:
|
|
69
|
-
git fetch upstream # ver mudancas sem aplicar
|
|
70
|
-
git log HEAD..upstream/main --oneline
|
|
152
|
+
npm run gos:update -- --clobber-untracked
|
|
71
153
|
```
|
|
72
154
|
|
|
73
|
-
**
|
|
155
|
+
Isso renomeia os arquivos conflitantes para `.bak.<timestamp>` antes do merge. Como esses paths são **sempre regenerados** por `npm run sync:ides`, o backup é só por garantia — você pode deletar depois.
|
|
156
|
+
|
|
157
|
+
Combinar com `--allow-unrelated` quando ambos os casos ocorrerem (típico de workspaces antigos):
|
|
74
158
|
|
|
75
159
|
```bash
|
|
76
|
-
npm run gos:
|
|
160
|
+
npm run gos:update -- --allow-unrelated --clobber-untracked
|
|
77
161
|
```
|
|
78
162
|
|
|
79
|
-
|
|
163
|
+
Alternativa segura (não toca seu git, apenas atualiza `.gos/`):
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
gos install --force
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Resgate de stashes presos
|
|
170
|
+
|
|
171
|
+
Se você teve falhas anteriores que deixaram stashes:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npm run gos:rescue # lista todos com stat
|
|
175
|
+
npm run gos:rescue -- --pop-latest # aplica o mais recente
|
|
176
|
+
npm run gos:rescue -- --drop-all # remove todos (após revisão)
|
|
177
|
+
```
|
|
80
178
|
|
|
81
|
-
|
|
179
|
+
### Resumo (qual comando para qual cenário)
|
|
82
180
|
|
|
83
|
-
|
|
|
84
|
-
|
|
85
|
-
| `gos
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
181
|
+
| Cenário | Comando |
|
|
182
|
+
|---------|---------|
|
|
183
|
+
| Atualizar CLI `gos` global | `npm install -g ganbatte-os@latest` |
|
|
184
|
+
| Atualizar G-OS num projeto consumidor | `gos install --force` |
|
|
185
|
+
| Atualizar G-OS num fork/clone do repo | `npm run gos:update` |
|
|
186
|
+
| Stashes presos de updates falhos | `npm run gos:rescue` |
|
|
187
|
+
| Saber em qual cenário você está | `npm run gos:version` |
|
|
188
|
+
| Validar tudo de uma vez | `npm run gos:doctor` |
|
|
90
189
|
|
|
91
190
|
> [!NOTE]
|
|
92
191
|
> A pasta `.agent/` que pode aparecer na raiz do workspace e criada pela IDE Google Antigravity / Gemini Code Assist — nao faz parte do setup padrao do ganbatte-os.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ganbatte-os",
|
|
3
|
-
"version": "0.2.
|
|
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"
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"gos:update": "node .gos/scripts/cli/gos-cli.js update",
|
|
11
11
|
"gos:doctor": "node .gos/scripts/cli/gos-cli.js doctor",
|
|
12
12
|
"gos:version": "node .gos/scripts/cli/gos-cli.js version",
|
|
13
|
+
"gos:rescue": "node .gos/scripts/cli/gos-cli.js rescue",
|
|
13
14
|
"clickup": "node .gos/scripts/tools/clickup.js",
|
|
14
15
|
"sync:ides": "node .gos/scripts/integrations/setup-ide-adapters.js",
|
|
15
16
|
"check:ides": "node .gos/scripts/integrations/check-ide-compat.js",
|