@fontdata/ai-harness 2.0.0 → 2.2.0
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +9 -2
- package/LICENSE +21 -0
- package/README.md +175 -140
- package/{src → dist}/catalog.js +5 -12
- package/dist/cli.js +180 -0
- package/dist/comentarios/command.js +74 -0
- package/dist/comentarios/instalar.js +33 -0
- package/dist/config/config.js +99 -0
- package/dist/contratos/artefatos.js +284 -0
- package/dist/contratos/eventos.js +103 -0
- package/dist/doctor/checks.js +424 -0
- package/dist/init.js +240 -0
- package/dist/install/atomic.js +51 -0
- package/dist/install/flags.js +99 -0
- package/dist/install/hooks.js +47 -0
- package/dist/install/lock.js +39 -0
- package/dist/install/plan.js +209 -0
- package/dist/install/selection.js +77 -0
- package/dist/install/settings.js +112 -0
- package/dist/memoria/indice.js +195 -0
- package/dist/migrar/migrar.js +426 -0
- package/dist/rastro/command.js +46 -0
- package/dist/run.js +86 -0
- package/dist/trabalhos/conflitos.js +115 -0
- package/dist/types.js +1 -0
- package/dist/update/legado.js +74 -0
- package/dist/update/update.js +284 -0
- package/package.json +17 -8
- package/templates/CLAUDE.md +59 -30
- package/templates/agents/auditor-plano.md +44 -0
- package/templates/agents/investigador.md +32 -0
- package/templates/agents/qa.md +44 -0
- package/templates/agents/revisor-testes.md +40 -0
- package/templates/catalog.json +24 -61
- package/templates/commands/atualizar-deps.md +43 -9
- package/templates/commands/diagrama.md +35 -10
- package/templates/commands/gerar-env.md +39 -10
- package/templates/commands/gerar-testes.md +42 -10
- package/templates/commands/git-commit-push.md +0 -0
- package/templates/commands/onboarding.md +44 -15
- package/templates/commands/refatorar.md +50 -10
- package/templates/commands/revisar-pr.md +56 -12
- package/templates/commands/sincronizar-claude-md.md +177 -9
- package/templates/commands/versao.md +0 -0
- package/templates/hooks/comentarios/check.mjs +210 -0
- package/templates/hooks/hooks.json +34 -0
- package/templates/hooks/lembrete.mjs +29 -0
- package/templates/hooks/lib/config.mjs +40 -0
- package/templates/hooks/lib/hook.mjs +85 -0
- package/templates/hooks/lib/rastro.mjs +144 -0
- package/templates/hooks/lib/segredos.mjs +91 -0
- package/templates/hooks/lib/temas.mjs +111 -0
- package/templates/hooks/lib/trabalho.mjs +94 -0
- package/templates/hooks/proteger-contratos.mjs +80 -0
- package/templates/hooks/segredo-no-commit.mjs +76 -0
- package/templates/hooks/sem-jargao.mjs +58 -0
- package/templates/hooks/task-so-fecha-verde.mjs +33 -0
- package/templates/legado/manifesto.json +1267 -0
- package/templates/rules/comentarios.md +166 -0
- package/templates/rules/harness-projeto.md +41 -0
- package/templates/skills/auditar-performance/SKILL.md +53 -0
- package/templates/skills/auditar-performance/references/pontos-quentes.md +35 -0
- package/templates/skills/auditar-performance/templates/relatorios/CLIENTE.md +26 -0
- package/templates/skills/auditar-performance/templates/relatorios/TECNICO.md +27 -0
- package/templates/skills/auditar-seguranca/SKILL.md +67 -0
- package/templates/skills/auditar-seguranca/references/seguranca-tecnica.md +23 -0
- package/templates/skills/auditar-seguranca/templates/relatorios/CLIENTE.md +30 -0
- package/templates/skills/auditar-seguranca/templates/relatorios/TECNICO.md +38 -0
- package/templates/skills/auditar-ui/SKILL.md +64 -0
- package/templates/skills/auditar-ui/references/lentes.md +33 -0
- package/templates/skills/auditar-ui/templates/relatorios/CLIENTE.md +26 -0
- package/templates/skills/auditar-ui/templates/relatorios/TECNICO.md +31 -0
- package/templates/skills/evoluir-harness/SKILL.md +81 -0
- package/templates/skills/evoluir-harness/references/agent.md +83 -0
- package/templates/skills/evoluir-harness/references/auditoria.md +107 -0
- package/templates/skills/evoluir-harness/references/code-reviewer.md +68 -0
- package/templates/skills/evoluir-harness/references/design-system.md +56 -0
- package/templates/skills/evoluir-harness/references/hook.md +95 -0
- package/templates/skills/evoluir-harness/references/rule.md +67 -0
- package/templates/skills/evoluir-harness/references/skill.md +63 -0
- package/templates/skills/executar-plan/SKILL.md +130 -0
- package/templates/skills/executar-plan/references/delegacao.md +43 -0
- package/templates/skills/executar-plan/references/retomada.md +33 -0
- package/templates/skills/executar-plan/templates/BLOQUEIOS.md +30 -0
- package/templates/skills/harness/SKILL.md +75 -0
- package/templates/skills/harness/references/auto-tag.md +118 -0
- package/templates/skills/harness/references/ignores.md +40 -0
- package/templates/skills/harness/references/scaffold.md +29 -0
- package/templates/skills/harness/references/validar-ideia.md +42 -0
- package/templates/skills/memoria/SKILL.md +52 -0
- package/templates/skills/nova-tarefa/SKILL.md +99 -0
- package/templates/skills/nova-tarefa/references/isso-ja-existe.md +24 -0
- package/templates/skills/nova-tarefa/references/regras-do-plano.md +35 -0
- package/templates/skills/nova-tarefa/templates/DECISOES.md +20 -0
- package/templates/skills/nova-tarefa/templates/PLAN.md +58 -0
- package/templates/skills/nova-tarefa/templates/SPEC.md +37 -0
- package/templates/skills/resolver-bug/SKILL.md +104 -0
- package/templates/skills/resolver-bug/references/relatorio-para-cliente.md +26 -0
- package/templates/skills/resolver-bug/templates/PLAN.md +62 -0
- package/templates/skills/resolver-bug/templates/relatorios/CLIENTE.md +29 -0
- package/templates/skills/resolver-bug/templates/relatorios/TECNICO.md +32 -0
- package/bin/cli.js +0 -122
- package/src/init.js +0 -317
- package/src/installer.js +0 -92
- package/src/run.js +0 -99
- package/templates/commands/auditar-performance.md +0 -27
- package/templates/commands/auditar-seguranca.md +0 -64
- package/templates/commands/auditar-ui.md +0 -38
- package/templates/commands/codigo-morto.md +0 -22
- package/templates/commands/configurar-auto-tag.md +0 -185
- package/templates/commands/configurar-comentarios.md +0 -543
- package/templates/commands/configurar-orquestrador.md +0 -13
- package/templates/commands/corrigir-review.md +0 -11
- package/templates/commands/criar-agents.md +0 -42
- package/templates/commands/criar-code-reviewer.md +0 -30
- package/templates/commands/criar-hooks.md +0 -32
- package/templates/commands/criar-rag.md +0 -25
- package/templates/commands/criar-rules.md +0 -31
- package/templates/commands/criar-skill.md +0 -22
- package/templates/commands/design-system.md +0 -27
- package/templates/commands/executar-plan.md +0 -36
- package/templates/commands/gerar-claude-md.md +0 -66
- package/templates/commands/gerar-ignore.md +0 -37
- package/templates/commands/gerar-spec.md +0 -33
- package/templates/commands/harness.md +0 -34
- package/templates/commands/nova-tarefa.md +0 -60
- package/templates/commands/resolver-bug.md +0 -25
- package/templates/commands/review-por-task.md +0 -16
- package/templates/commands/scaffold.md +0 -25
- package/templates/commands/validar-commands.md +0 -24
- package/templates/commands/validar-ideia.md +0 -36
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Detecta o padrão de versionamento do projeto (qualquer stack, inclusive Delphi) e gera a GitHub Action que cria a tag automaticamente quando a versão chega na main. Separa versionar (humano) de taguear/deployar (automático).
|
|
3
|
-
argument-hint: "[branch-de-producao]"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /configurar-auto-tag — Auto-tag no merge para a branch de produção
|
|
7
|
-
|
|
8
|
-
Você vai **configurar a automação de tag** deste repositório: descobrir **como o versionamento já funciona
|
|
9
|
-
aqui** (Node/JS-TS, .NET, Delphi, Flutter, Python, arquivo `VERSION`, etc.) e gerar uma **GitHub Action** que
|
|
10
|
-
**cria a tag automaticamente** quando um novo número de versão chega na branch de produção (`main` por padrão).
|
|
11
|
-
|
|
12
|
-
O objetivo é separar dois papéis:
|
|
13
|
-
|
|
14
|
-
- **Versionar** — ação humana (o comando `/versao`), com aprovação de versão e changelog. **Sem tag, sem push.**
|
|
15
|
-
- **Taguear/deployar** — ação automática (esta Action), disparada quando o arquivo de versão muda na `main`.
|
|
16
|
-
|
|
17
|
-
A **tag é a fonte única do release** e a criação é **idempotente** por versão (nunca recria uma tag existente).
|
|
18
|
-
|
|
19
|
-
> **🚦 Há um GATE de aprovação obrigatório** antes de escrever qualquer arquivo. Este comando **não faz push**
|
|
20
|
-
> e **não cria tags manualmente** — ele só instala a automação e a documentação.
|
|
21
|
-
|
|
22
|
-
## Uso
|
|
23
|
-
|
|
24
|
-
- `/configurar-auto-tag` — usa `main` como branch de produção.
|
|
25
|
-
- `/configurar-auto-tag <branch>` — usa a branch informada (ex.: `master`, `release`) como alvo da tag.
|
|
26
|
-
|
|
27
|
-
## Passo 0 — Pré-checagem (somente leitura)
|
|
28
|
-
|
|
29
|
-
1. Confirme que é um repositório git com remoto no **GitHub** (`git remote -v`). Se não for GitHub, avise que
|
|
30
|
-
a Action de GitHub Actions não se aplica e **pergunte** como o usuário quer prosseguir (GitLab CI, etc.).
|
|
31
|
-
2. Descubra a **branch de produção** real: use o argumento, senão a branch padrão do remoto
|
|
32
|
-
(`git symbolic-ref --short refs/remotes/origin/HEAD` ou olhe `main`/`master`). **Confirme com o usuário.**
|
|
33
|
-
3. Verifique se já existe `.github/workflows/auto-tag.yml`. Se existir, leia e trate como **ajuste**, não
|
|
34
|
-
sobrescrita cega.
|
|
35
|
-
|
|
36
|
-
## Passo 1 — Detectar a(s) fonte(s) de verdade da versão
|
|
37
|
-
|
|
38
|
-
Investigue o projeto e **identifique TODAS as fontes da versão** (não assuma; confirme lendo). Para cada uma,
|
|
39
|
-
registre: o **arquivo**, o **campo/chave**, o **formato** (`X.Y.Z` ou `X.Y.Z.W`) e **como extrair a versão via
|
|
40
|
-
shell** (você vai embutir isso na Action). Por stack:
|
|
41
|
-
|
|
42
|
-
- **Node / React (Vite/Next) / qualquer JS-TS:** `package.json` → campo `.version`.
|
|
43
|
-
- Extração: `jq -r '.version' package.json`
|
|
44
|
-
- Mobile Expo: `app.json` → `.expo.version` (`jq -r '.expo.version' app.json`).
|
|
45
|
-
- **.NET / C#:** `*.csproj` (`<Version>`, senão `<FileVersion>`), `Directory.Build.props`.
|
|
46
|
-
- Extração: `grep -oPm1 '(?<=<Version>)[^<]+' App.csproj` (ajuste a tag lida).
|
|
47
|
-
- **Delphi:** o número costuma viver no `*.dproj` (chaves `VerInfo_Keys` com `FileVersion`/`ProductVersion` e/ou
|
|
48
|
-
os campos `MajorVersion`/`MinorVersion`/`Release`/`Build`) **e/ou** em constante `.pas` (ex.: `cVersao`, `About`).
|
|
49
|
-
Escolha **uma** fonte estável como canônica e leia o **arquivo:linha** exato.
|
|
50
|
-
- Extração de `FileVersion` no `.dproj`: `grep -oPm1 'FileVersion=\K[0-9.]+' Projeto.dproj`
|
|
51
|
-
- Ou montando de partes: leia `MajorVersion`/`MinorVersion`/`Release`/`Build` com `grep`/`sed` e concatene.
|
|
52
|
-
- Ou de constante `.pas`: `grep -oPm1 "cVersao\s*=\s*'\K[0-9.]+" Sobre.pas`
|
|
53
|
-
- **Flutter / Dart:** `pubspec.yaml` → `version:` (`grep -oPm1 '(?<=^version: )[0-9.+]+' pubspec.yaml`).
|
|
54
|
-
- **Python:** `pyproject.toml` (`[project] version`/`[tool.poetry] version`) ou `__version__`.
|
|
55
|
-
- Extração: `grep -oPm1 '(?<=^version = ")[^"]+' pyproject.toml`.
|
|
56
|
-
- **Genérico:** arquivo `VERSION` na raiz (`cat VERSION`), constante `VERSION`/`APP_VERSION`.
|
|
57
|
-
|
|
58
|
-
> Se não encontrar nenhuma fonte de versão, **pergunte ao usuário** onde a versão é registrada antes de gerar a
|
|
59
|
-
> Action — sem isso a Action não tem o que ler.
|
|
60
|
-
|
|
61
|
-
Determine ainda:
|
|
62
|
-
|
|
63
|
-
- **Repo único ou monorepo/multi-app.** Isso define o **formato da tag**:
|
|
64
|
-
- App único → tag `v<versão>` (ex.: `v1.4.0`).
|
|
65
|
-
- Monorepo → tag `<app>-v<versão>` (ex.: `web-v1.4.0`), com um arquivo de versão por app.
|
|
66
|
-
- **Comando `/versao` já instalado?** Se sim, é ele quem faz o bump. Se não, sugira instalá-lo/rodá-lo para
|
|
67
|
-
produzir o commit de release que dispara esta Action.
|
|
68
|
-
- **Como o deploy de produção é disparado** por cada tag (`deploy-*.yml` no GitHub Actions? webhook de app
|
|
69
|
-
externo tipo Expo/EAS?). Isso decide se o `RELEASE_PAT` é necessário (veja Passo 4).
|
|
70
|
-
|
|
71
|
-
## Passo 2 — Montar a Action (rascunho, sem gravar ainda)
|
|
72
|
-
|
|
73
|
-
Gere `.github/workflows/auto-tag.yml` seguindo este molde, **adaptando a extração da versão** à fonte detectada:
|
|
74
|
-
|
|
75
|
-
```yaml
|
|
76
|
-
name: Auto-tag na <BRANCH_PRODUCAO>
|
|
77
|
-
|
|
78
|
-
on:
|
|
79
|
-
push:
|
|
80
|
-
branches: [<BRANCH_PRODUCAO>]
|
|
81
|
-
paths:
|
|
82
|
-
- <ARQUIVO(S)_DE_VERSAO> # ex.: 'package.json' ou 'apps/**/package.json' ou 'src/Projeto.dproj'
|
|
83
|
-
|
|
84
|
-
permissions:
|
|
85
|
-
contents: write
|
|
86
|
-
|
|
87
|
-
jobs:
|
|
88
|
-
auto-tag:
|
|
89
|
-
runs-on: ubuntu-latest
|
|
90
|
-
steps:
|
|
91
|
-
- uses: actions/checkout@v4
|
|
92
|
-
with:
|
|
93
|
-
fetch-depth: 0
|
|
94
|
-
token: ${{ secrets.RELEASE_PAT || github.token }}
|
|
95
|
-
|
|
96
|
-
- name: Criar tag se a versão for nova
|
|
97
|
-
run: |
|
|
98
|
-
set -euo pipefail
|
|
99
|
-
# >>> AJUSTE a linha abaixo para extrair a versão da fonte de verdade detectada <<<
|
|
100
|
-
VERSION="$(jq -r '.version' package.json)"
|
|
101
|
-
if [ -z "$VERSION" ] || [ "$VERSION" = "null" ]; then
|
|
102
|
-
echo "Não consegui ler a versão"; exit 1
|
|
103
|
-
fi
|
|
104
|
-
TAG="v$VERSION" # monorepo: TAG="<app>-v$VERSION"
|
|
105
|
-
if git rev-parse -q --verify "refs/tags/$TAG" >/dev/null; then
|
|
106
|
-
echo "Tag $TAG já existe — nada a fazer (idempotente)."
|
|
107
|
-
exit 0
|
|
108
|
-
fi
|
|
109
|
-
git config user.name "github-actions[bot]"
|
|
110
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
111
|
-
git tag -a "$TAG" -m "Release $TAG"
|
|
112
|
-
git push origin "$TAG"
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Regras ao adaptar o molde:
|
|
116
|
-
|
|
117
|
-
- **Substitua `<BRANCH_PRODUCAO>`** pela branch confirmada no Passo 0.
|
|
118
|
-
- **`paths:`** deve listar **exatamente** o(s) arquivo(s) de versão detectados — assim a Action só roda quando a
|
|
119
|
-
versão muda de fato, não a cada push.
|
|
120
|
-
- **Troque a linha de `VERSION=`** pela extração correta da stack (jq/grep/sed/cat conforme o Passo 1). Para
|
|
121
|
-
Delphi/.NET, use o `grep -oP`/`sed` adequado ao XML/`.pas`; **não** use `jq` fora de JSON.
|
|
122
|
-
- **Monorepo:** faça um loop pelos apps (uma tag por app), lendo a versão de cada arquivo e montando
|
|
123
|
-
`<app>-v<versão>`, com a checagem de idempotência por tag dentro do loop.
|
|
124
|
-
- **Idempotência:** a verificação `git rev-parse --verify refs/tags/$TAG` é obrigatória — nunca recrie tag.
|
|
125
|
-
- Se a Action já existia, **preserve** ajustes locais e só reconcilie o necessário.
|
|
126
|
-
|
|
127
|
-
## Passo 3 — 🚦 GATE de aprovação (obrigatório)
|
|
128
|
-
|
|
129
|
-
Antes de escrever qualquer arquivo, apresente ao usuário:
|
|
130
|
-
|
|
131
|
-
- a **branch de produção** e o **formato de tag** escolhidos (`v<versão>` ou `<app>-v<versão>`);
|
|
132
|
-
- a(s) **fonte(s) de versão** e a **linha de extração** que vai para a Action;
|
|
133
|
-
- o **conteúdo completo** do `auto-tag.yml` proposto;
|
|
134
|
-
- se **`RELEASE_PAT`** será necessário (Passo 4) e por quê.
|
|
135
|
-
|
|
136
|
-
**Peça aprovação explícita.** Não grave nada sem o "ok".
|
|
137
|
-
|
|
138
|
-
## Passo 4 — Documentar o `RELEASE_PAT` (não crie segredo no código)
|
|
139
|
-
|
|
140
|
-
Explique ao usuário, e registre na doc do Passo 5, a **pegadinha do token**:
|
|
141
|
-
|
|
142
|
-
- O **`GITHUB_TOKEN` padrão NÃO dispara outras Actions.** Se o deploy de produção é uma **GitHub Action**
|
|
143
|
-
(`deploy-*.yml`) disparada pela criação da tag, a Action de auto-tag **precisa** empurrar a tag usando um
|
|
144
|
-
**`RELEASE_PAT`** (por isso o `token: ${{ secrets.RELEASE_PAT || github.token }}` no checkout).
|
|
145
|
-
- Se o deploy é disparado por **webhook de app externo** (ex.: Expo/EAS), o PAT é **desnecessário**.
|
|
146
|
-
- Como criar: **fine-grained PAT** com _Contents: Read and write_ no repositório (ou classic com escopo `repo`),
|
|
147
|
-
salvo em **Settings → Secrets and variables → Actions** como **`RELEASE_PAT`**.
|
|
148
|
-
- **Nunca** coloque o token em arquivo versionado — só como secret do repositório.
|
|
149
|
-
|
|
150
|
-
## Passo 5 — Gravar artefatos (somente após aprovação)
|
|
151
|
-
|
|
152
|
-
1. Escreva `.github/workflows/auto-tag.yml`.
|
|
153
|
-
2. Crie/atualize `docs/versionamento-tags.md` explicando:
|
|
154
|
-
- que **a tag aponta um commit, não uma branch** — o commit do release (com os workflows de deploy) precisa
|
|
155
|
-
estar na branch de produção **antes/junto** da criação da tag;
|
|
156
|
-
- o **fluxo completo** de release (abaixo);
|
|
157
|
-
- o funcionamento da Action e a **pegadinha `GITHUB_TOKEN` × `RELEASE_PAT`**;
|
|
158
|
-
- uma **tabela**: app → arquivo de versão → formato da tag → workflow de deploy disparado.
|
|
159
|
-
3. Se houver comandos/docs antigos que mandavam **criar tag** ou **dar push de tag** manualmente, ajuste-os para
|
|
160
|
-
o novo fluxo (a tag agora é responsabilidade exclusiva da Action).
|
|
161
|
-
|
|
162
|
-
### Fluxo de release resultante (documente assim)
|
|
163
|
-
|
|
164
|
-
```
|
|
165
|
-
/versao → push do commit de release → merge/entrega na branch de produção
|
|
166
|
-
→ Action auto-tag cria a tag → workflow de deploy dispara pela tag → produção
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
## Passo 6 — Verificar e finalizar (sem push)
|
|
170
|
-
|
|
171
|
-
- Valide a sintaxe YAML do workflow (indentação, `on.push.paths`, `permissions`).
|
|
172
|
-
- **Não** rode `git push` e **não** crie tags manualmente. Deixe as alterações prontas (working tree) e informe
|
|
173
|
-
o fluxo manual de commit/push ao usuário — ou, se o `/git-commit-push` estiver instalado, sugira usá-lo.
|
|
174
|
-
- Sugira um commit semântico como `chore: Configura auto-tag na <branch> via GitHub Actions`.
|
|
175
|
-
|
|
176
|
-
## Guardrails
|
|
177
|
-
|
|
178
|
-
- **NUNCA** `git push`; **NUNCA** crie tag local — a tag é responsabilidade exclusiva da Action.
|
|
179
|
-
- **Sempre** confirmar branch, fonte de versão e o YAML no GATE antes de gravar.
|
|
180
|
-
- **Replicar o padrão do projeto** (formato de versão e de tag) — nunca impor um novo.
|
|
181
|
-
- **Idempotência**: a Action nunca recria uma tag existente; para refazer deploy, use o gatilho manual do
|
|
182
|
-
workflow de deploy, não recrie a tag.
|
|
183
|
-
- **`main`/branch de produção = deploy de produção** — trate-a como produção.
|
|
184
|
-
- Sem `RELEASE_PAT`, tags criadas pelo `GITHUB_TOKEN` **não** disparam outras Actions de deploy; documente isso.
|
|
185
|
-
- Documentação em **pt-BR**.
|