mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-14 08:53:11 +00:00
refactor(OPS114): bloco do sub-agente Designer, dono da gravação e links da doutrina (Related #1057)
This commit is contained in:
parent
f9de050061
commit
18d706d85d
4 changed files with 19 additions and 9 deletions
|
|
@ -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/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>.md` no disco
|
||||
4. Se UI: dispatcha o sub-agente `designer` (paralelo, 1 por ideia UI) para produzir `docs/plans/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>-ui-design.html` e confirme as cenas 390/1280 + estados críticos
|
||||
- Para cada item UI: aponte o link de `docs/plans/<slug>-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
|
||||
|
||||
|
|
|
|||
|
|
@ -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/<slug>.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/<slug>-ui-design.html` + `docs/plans/<slug>-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/<slug>-ui-design.html` + `docs/plans/<slug>-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/`.
|
||||
|
|
|
|||
|
|
@ -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 <base>...HEAD` → **nenhum arquivo antigo** de `docs/plans/`/`docs/changelog/`; as únicas adições são este `ops114-…-impl.md` e `docs/changelog/<data>-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.
|
||||
|
|
|
|||
Loading…
Reference in a new issue