diff --git a/.agents/skills/plan-issue/SKILL.md b/.agents/skills/plan-issue/SKILL.md index 3e9cf620..51598e04 100644 --- a/.agents/skills/plan-issue/SKILL.md +++ b/.agents/skills/plan-issue/SKILL.md @@ -23,7 +23,7 @@ parse (main agent) 1. **Nada no tracker antes do gate.** Antes da confirmação: proibido `pnpm agent:register`, criar Issue/PR. 2. **Register com `--plan` nasce `blocked`.** Promote só depois do plano em `main`. 3. **Planos de Issues `in-progress`/`done`/`in-prod` são imutáveis.** -4. **Design UI (obrigatório se muda UI):** o sub-agente `designer` produz `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg` (doutrina: `ui-design-html.md`). Classe A/sem UI → sem design. +4. **Design UI (obrigatório se muda UI):** o sub-agente `designer` produz o design hi-fi; o orquestrador grava `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg` (doutrina: `ui-design-html.md`). Classe A/sem UI → sem design. ## Decomposição em sub-agentes @@ -50,6 +50,13 @@ Cada fase pesada é delegada a um sub-agente com contexto mínimo. O agente prin **Task:** Rodar `pnpm agent:register` para cada plano. Atualizar headers `Issue: #N`. Criar PR `Related #N`. **Output:** Issues registradas + links de PR. +### Sub-agente: Designer + +**Quando:** Passo 3d, paralelo (1 por ideia UI). +**Input:** plano de intenção aprovado (B/C/D) + `ui-design-html.md` (doutrina) + `.opencode/agent/designer.md` (papel) +**Task:** Produzir o design hi-fi do item — tokens/brand reais, cenas 390/1280, estados críticos. **Não escrever código de app nem nomear componente final.** +**Output:** o design hi-fi — `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg`; o orquestrador garante a gravação no disco. + ## Checklist ``` @@ -57,7 +64,7 @@ Cada fase pesada é delegada a um sub-agente com contexto mínimo. O agente prin - [ ] 2. Reserva de IDs - [ ] 3. Dispatch sub-agente explorador → receber findings - [ ] 4. Dispatch sub-agentes escritores (paralelo) → receber planos -- [ ] 5. GATE: overview + design UI (se muda UI) + decisão de dados → literais no plano → confirmar +- [ ] 5. GATE: overview + Design UI (se muda UI) + decisão de dados → literais no plano → confirmar - [ ] 6. Dispatch sub-agente registrador → PR → merge → promote ``` @@ -108,14 +115,14 @@ O agente principal: 1. Valida cada plano contra `shaping.md` (self-score ≥4) 2. Aplica melhorias se necessário 3. Cria os arquivos `docs/plans/.md` no disco -4. Se UI: dispatcha o sub-agente `designer` (paralelo, 1 por ideia UI) para produzir `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg`; o orquestrador grava os arquivos retornados no disco +4. Se UI: dispatcha o sub-agente `designer` (paralelo, 1 por ideia UI) para produzir `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg`; o orquestrador grava os arquivos no disco e preenche/valida o campo `Design UI:` + a seção do plano ## Passo 4 — GATE Antes de criar Issues: - Overview: ID, título, prio, depends, appetite, link do plano -- Para cada item UI: aponte o link de `docs/plans/-ui-design.html` e confirme as cenas 390/1280 + estados críticos +- Para cada item UI: aponte o link de `docs/plans/-ui-design.html` e confirme as cenas da doutrina (390/1280, quando o fluxo tocar os dois) + estados críticos - Decisão de dados → valores literais presentes no plano? (bloco "Dados da decisão (literais)" — nunca só narrativa) - Perguntas acumuladas, recomendação de produto primeiro diff --git a/.agents/skills/plan-issue/skills-map.md b/.agents/skills/plan-issue/skills-map.md index 03b6183f..dc1e70d7 100644 --- a/.agents/skills/plan-issue/skills-map.md +++ b/.agents/skills/plan-issue/skills-map.md @@ -27,7 +27,7 @@ No Teqo: **idea-refine / interview** antes se vago; **spec + plan + tasks** = es | **doubt-driven-development** | Em decisão **cara** (schema/access/Consent/URL imutável): CLAIM curto + adversarial self-check (ou Task) antes de travar | Doubt em cada bullet; cross-model CLI; doubt pós-código | | **source-driven-development** | Se a Abordagem depende de API Payload/Next/WebAuthn: anotar “verificar docs na implementação” + versão em `package.json` | Fetch de docs e citações no plano | | **documentation-and-adrs** | Decisões travadas = ADR-lite do item (contexto + rejeitadas). Repo-wide → apontar follow-up em `docs/` | Criar `docs/decisions/` novo sem precedente | -| **design-code-architecture** | Já destilado em [decision-quality.md](decision-quality.md) (caro/barato, depth, appetite) | Jornada de 8 fases / `ARCHITECTURE.md` | +| **design-code-architecture** | Já destilado em [decision-quality.md](../work-issue/decision-quality.md) (caro/barato, depth, appetite) | Jornada de 8 fases / `ARCHITECTURE.md` | | **37signals-way** | Appetite, rabbit holes, no-gos (= Não escopo), shaped pitch | Betting table / cool-down / abolir backlog GitHub | | **continuous-discovery** / **mom-test** / **jobs-to-be-done** | Só se o item depende de evidência de usuário ainda inexistente → Issue `blocked` ou defer+gatilho | Rodar discovery / OST no fluxo de registro | | **domain-driven-design** / **clean-architecture** / **software-design-philosophy** | Vocabulário, Dependency Rule, deep modules — via decision-quality sob demanda | Modelar bounded contexts do zero num item de lista | @@ -44,6 +44,6 @@ No Teqo: **idea-refine / interview** antes se vago; **spec + plan + tasks** = es ## Precedência quando conflita 1. Convenções Teqo (`AGENTS.md`, access, migrations, Consent fail-closed) -2. Este skill + [decision-quality.md](decision-quality.md) + [data-presentation.md](data-presentation.md) +2. Este skill + [decision-quality.md](../work-issue/decision-quality.md) + [data-presentation.md](data-presentation.md) 3. Princípios das skills acima 4. Templates genéricos (`tasks/plan.md`, etc.) — **não** usamos; o artefato canônico é `docs/plans/.md` diff --git a/docs/changelog/2026-09-16-ops114.md b/docs/changelog/2026-09-16-ops114.md index b05cc9df..ace0538e 100644 --- a/docs/changelog/2026-09-16-ops114.md +++ b/docs/changelog/2026-09-16-ops114.md @@ -1 +1 @@ -**OPS114 — `plan-issue`: design hi-fi obrigatório no gate (substitui o rascunho low-fi) (2026-09-16):** o gate do `plan-issue` aposenta o rascunho UI low-fi e passa a exigir o design hi-fi produzido pelo sub-agente `designer` (OPS113): item que muda UI (B/C/D) entrega `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg`, e o escritor do plano não recebe mais doutrina de UI. `SKILL.md` atualizado nos seis pontos (regra dura 4, input do escritor, checklist, Passo 3c, Passo 3d — dispatch do `designer` em paralelo + gravação pelo orquestrador —, GATE com link do HTML e cenas 390/1280/estados) e `description` do frontmatter. `intention-template.md` troca o campo `Rascunho UI:` por `Design UI:` e a seção `### Rascunho UI (B/C/D)` por `### Design UI (B/C/D)`, remove a exigência de PNG embutido (renderizador removido em 2026-08-21) e aponta os assets; `shaping.md:56` e `skills-map.md:42` corrigem o link quebrado para `ui-design-html.md`; a nota transitória de `ui-design-html.md:93` é finalizada no campo novo. Sweep duplo (nome + vocabulário) zerado em `.agents/**`/`.opencode/**`; resíduo `ui-draft` global é só o set do painel/CLI/testes (OPS116). Doc-only: sem migration, sem tocar `docs/plans/**`/`docs/changelog/**` existentes nem `src/`. +**OPS114 — `plan-issue`: design hi-fi obrigatório no gate (substitui o rascunho low-fi) (2026-09-16):** o gate do `plan-issue` aposenta o rascunho UI low-fi e passa a exigir o design hi-fi produzido pelo sub-agente `designer` (OPS113): item que muda UI (B/C/D) entrega `docs/plans/-ui-design.html` + `docs/plans/-ui-design-assets/*.svg`, e o escritor do plano não recebe mais doutrina de UI. `SKILL.md` atualizado em sete pontos (regra dura 4 — dono da gravação explícito: o `designer` produz, o orquestrador grava —, input do escritor, checklist, Passo 3c, Passo 3d — dispatch do `designer` em paralelo + gravação e preenchimento do campo pelo orquestrador —, GATE com link do HTML e cenas 390/1280/estados), mais um bloco `### Sub-agente: Designer` no catálogo e a `description` do frontmatter. `intention-template.md` troca o campo `Rascunho UI:` por `Design UI:` e a seção `### Rascunho UI (B/C/D)` por `### Design UI (B/C/D)`, remove a exigência de PNG embutido (renderizador removido em 2026-08-21) e aponta os assets; `shaping.md:56` e `skills-map.md:42` corrigem o link quebrado para `ui-design-html.md` (e os links pré-existentes para `decision-quality.md` em `skills-map.md` passam a `../work-issue/`); a nota transitória de `ui-design-html.md:93` é finalizada no campo novo. Sweep duplo (nome + vocabulário) zerado em `.agents/**`/`.opencode/**`; resíduo `ui-draft` global é só o set do painel/CLI/testes (OPS116). Doc-only: sem migration, sem tocar `docs/plans/**`/`docs/changelog/**` existentes nem `src/`. diff --git a/docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md b/docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md index f017acfa..5366b8ba 100644 --- a/docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md +++ b/docs/plans/ops114-plan-issue-design-hifi-no-gate-impl.md @@ -95,12 +95,13 @@ N/A — mudança de doutrina de ferramenta de agentes; nenhuma superfície de da 1. **F1 — `SKILL.md` (owner).** Aplicar os 6 pontos + `description`: regra dura 4 (l.26), input do escritor (l.42), checklist (l.60), Passo 3c (l.100, remove a linha de UI), Passo 3d (l.112, dispatch do `designer` + gravação), Passo 4/GATE (l.119, link `-ui-design.html` + cenas). Quota: metade do appetite. 2. **F2 — Template e vizinhos.** `intention-template.md` (campo/seção/paths/notas), `shaping.md:56`, `skills-map.md:42` e finalizar `ui-design-html.md:93`. Quota: a outra metade. 3. **F3 — Sweep + prova.** - - `rg -n "ui-draft|Rascunho UI|rascunho UI" .agents .opencode` → **vazio**. - - `rg -n "ui-draft|Rascunho UI|rascunho UI"` fora de `docs/plans/**`, `docs/changelog*/**`, `docs/CHANGELOG-AGENTS-HISTORY.md`, `node_modules`, `.git` → conjunto **exatamente** `scripts/lib/issues-panel.mjs`, `scripts/issues-tui.mjs`, `tests/unit/issuesPanel.unit.spec.ts` (OPS116); qualquer hit fora disso é falha. + - `grep -rnE "ui-draft|Rascunho UI|rascunho UI" .agents .opencode` → **vazio**. + - `grep -rnE "ui-draft|Rascunho UI|rascunho UI"` fora de `docs/plans/**`, `docs/changelog*/**`, `docs/CHANGELOG-AGENTS-HISTORY.md`, `node_modules`, `.git` → conjunto **exatamente** `scripts/lib/issues-panel.mjs`, `scripts/issues-tui.mjs`, `tests/unit/issuesPanel.unit.spec.ts` (OPS116); qualquer hit fora disso é falha. - `git diff --name-only ...HEAD` → **nenhum arquivo antigo** de `docs/plans/`/`docs/changelog/`; as únicas adições são este `ops114-…-impl.md` e `docs/changelog/-ops114.md`. Nenhum caminho `-ui-draft` no diff (planos antigos intactos). - `.opencode/commands/plan-issue.md` **ausente** do diff. - `pnpm format:check` verde (os markdown editados entram no check). - Leitura do `SKILL.md` final: escritor sem doutrina de UI; 3d dispatcha `designer`; gate exibe `-ui-design.html` + cenas. + - Walkthrough estático de um item UI fictício pelo fluxo novo: explorador → escritor (plano sem UI) → 3d dispatcha `designer` → orquestrador grava os arquivos e preenche `Design UI:`/seção → gate abre o `.html` com as cenas. - Push via `pnpm push`. ## Rabbit holes / Não escopo (engenharia) @@ -131,3 +132,5 @@ N/A — mudança de doutrina de ferramenta de agentes; nenhuma superfície de da - [ ] Invariantes AGENTS/engineering-standards: doc-only, sem migration, sem editar `docs/plans/**`/`docs/changelog/**` existentes, sem tocar painel/CLI/tests. - [ ] `.opencode/commands/plan-issue.md` inalterado (confirmado por `git diff --name-only`). - [ ] `pnpm format:check` verde; push via `pnpm push`. + +Self-score decision-quality: 5/5 — decisões caras com alternativas rejeitadas; cabe no appetite (~0,5 dia, doc-only); rabbit holes nomeados; reusa a doutrina `ui-design-html.md` e os shells existentes sem twinar; aceite de produto da intenção preservado.