New wf-readme workflow (grounded README creation/audit/rewrite) built on readme-crafter, good-readme and curating-readme skills. Validated with the QA harness: 302.3 -> 379.0 on the same ruler, all phases verified, no false-positive skill refs. Applied it to this repo: audit-repo.sh scan, link/TOC/em-dash validation, added CONTRIBUTING.md (gap the workflow flagged) and wired the docs.
10 KiB
10 KiB
name, description, version, author, license, platforms, metadata
| name | description | version | author | license | platforms | metadata | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wf-readme | Criar/auditar/reescrever README grounded. Scan real do repo. | 1.0.0 | Hermes Agent | MIT |
|
|
Workflow README (criar, auditar, reescrever)
Orquestrador obrigatório para qualquer trabalho de README (criar, melhorar, auditar, padronizar) em qualquer projeto. Princípio central: grounded — o README é construído a partir de fatos reais do repositório (manifest, código, scripts, config, git), nunca fabricado de memória.
When to Use
- "cria um README pra esse projeto" / "escreve a documentação"
- "melhora esse README" / "audita a qualidade do README"
- "padroniza a documentação do repo"
- Qualquer pedido de documentação de projeto (README/LICENSE/docs)
Skills do stack
readme-crafter(linhai0872) — classifica o projeto em 4 eixos (tipo, distribuição, público, temperamento) e gera README sob medida; 13 checks de verificação; modo collaborative/quick/surgical/audit.good-readme(adewale) — cria do zero com exemplos reais de código OU audita contra rubric de 22 critérios (escala 100); verifica exemplos contra o código real.curating-readme(liang-senbei) — padroniza README + docs relacionados (CONTRIBUTING/CHANGELOG/SECURITY/docs) com scripts determinísticos (audit-repo.sh) e estrutura canônica.- Locais:
project-readme-clarity(auditoria de onboarding/ambiguidades),avoid-ai-writing(remove AI-isms),wf-frontend(padrão visual de docs/README bonitos).
Fase 1 — SCAN (coletar fatos reais)
- Rodar o inventory determinístico do repo:
bash ~/.hermes/skills/curating-readme/scripts/audit-repo.sh <repo>(ou oscan-project.shdo readme-crafter) — coleta manifest, entrypoints, scripts, config, estrutura, env vars, git, linguagens. - Ler manifest principal (package.json / pyproject.toml / go.mod / etc): nome, descrição, versão, dependências, scripts.
- Identificar entrypoints: o que o projeto realmente faz (não o que diz).
- Ler README existente (se houver), CLI_AGENTS.md, LICENSE.
- VERIFICAR: marcar como fato verificado cada item com fonte no repo;
qualquer coisa sem fonte vira
TODO:/pergunta — nunca inventar. - VERIFICAR (comandos de scan): rodar
python3 -c "import json; json.load(open('package.json'))"(ou equivalente para o manifest) para provar que o manifest parseia; egit remote -v && git log --oneline -5para capturar contexto real. - VERIFICAR (inventário): conferir com
find . -maxdepth 1 -type f | wc -la contagem real de arquivos edu -sh .para não documentar coisa que não existe. TRÊS CHECKS: manifest válido, git real, inventário presente.
Checklist da fase 1:
- Inventory do repo rodado (audit-repo.sh / scan-project.sh)
- Manifest lido e entendido
- Fato × suposição separados (suposição vira TODO/pergunta)
Fase 2 — CLASSIFY (entender público e tipo)
readme-crafter— classificar o projeto:- Tipo: library / CLI / web app / framework / API / agent-AI / monorepo / ...
- Distribuição: open-source público vs interno
- Público: avaliador / novo usuário / contribuidor / operador / agente IA
- Temperamento: developer utility / product / academic / community
- Decidir audiência PRIMÁRIA (o README serve a quem primeiro).
- VERIFICAR: registrar decisões de classificação (1 linha cada) — a estrutura do README deriva delas.
- SE necessário, fazer perguntas do tipo "quem é o público?" ou "qual o tom?" quando o código não revela a intenção (3-5 perguntas máx).
- VERIFICAR (comandos de classificação): para software com CLI, rodar
python3 -m <pkg> --help(ounode bin/index.js --help) para capturar a sintaxe real de uso; para web app, listarfind src pages app -maxdepth 1 -type d 2>/dev/nullpara ver as rotas reais. - VERIFICAR (decisões): registrar as 4 classificações com fonte — "tipo=CLI porque package.json.bin existe"; "público=developer porque docs de API".
Checklist da fase 2:
- Tipo / distribuição / público / temperamento definidos
- Audiência primária nomeada
- Perguntas de intenção (se houve) respondidas
Fase 3 — AUDIT ou DRAFT (estado atual)
Se JÁ existe README:
good-readme— auditar contra 22 critérios; dar score /100.- Registrar: o que está bom, o que está desatualizado, o que está errado (claims que não batem com o código), o que falta.
project-readme-clarity— checar ambiguidades de onboarding (dependência opcional apresentada como obrigatória, passo que bloqueia primeiro valor).
Se NÃO existe README:
- Anotar Fase 1+2 e seguir direto para a Fase 4 (draft).
VERIFICAR (comandos de auditoria):
grep -c "^#\|^##" README.md— conta headings p/ o TOC futuro.grep -oE "\]\([^)]*\)" README.md | grep -oE "\(\.?/?" | sort -u— links locais que precisam existir no disco; conferir comlsque cada um vive.grep -nE "install|npm |pnpm |pip |docker " README.md— comandos citados; validar se existem de fato no repo (não só no texto).bash ~/.hermes/skills/curating-readme/scripts/audit-repo.sh .— re-rodar o inventory se o repo mudou desde a Fase 1.
Comandos de auditoria (Fase 3):
grep -nc "^#\|^##" README.md # headings existentes
grep -oE "\]\(\.?/?[^)]*\)" README.md # links locais citados
grep -nE "npm (install|run)|pnpm|pip |docker (run|compose)|uv " README.md 2>/dev/null
# validar que cada comando existe de fato:
command -v pnpm && pnpm --version
git log --oneline -3
Anti-padrões (Fase 3):
- NÃO dar score alto para README bonito mas incorreto (acurácia > estética).
- NÃO ignorar claims do README que não batem com o código — cada divergência é finding a corrigir.
- NÃO apresentar dependência opcional como obrigatória (project-readme-clarity).
Checklist da fase 3:
- README existente auditado (22 critérios / score) OU confirmado inexistente
- Checks de onboarding/ambiguidade rodados
- Comandos/links do README atual validados contra o repo
- Score baseline registrado (se README existia)
Fase 4 — GENERATE (escrever com fatos verificados)
- Estrutura canônica por tipo (referências do
good-readme/curating-readme): título + badges (só os que existem) + descrição 1 linha + features reais + stack + prereqs + quickstart copy-paste + usage + config (tabela de env) + estrutura do projeto + contributing + license. - Badges: só incluir badges que refletem a realidade (license, linguagem, build se houver CI) — não criar badge de coisa que não existe.
- Exemplos de código: reais e testados. Se o README mostra um comando ou exemplo, ELE DEVE funcionar no repo — verificar.
avoid-ai-writing: após redigir, limpar AI-isms (em-dash em excesso, "robust/seamless/leverage", transições genéricas, conclusões vazias).- Se o README for de repo público bonito (estilo shadcn/Vercel): seguir o
padrão visual do
wf-frontend(hero + badges + TOC + tabelas limpas). - VERIFICAR: cada claim do README tem fonte no repo (manifest, código, script, LICENSE) — nada inventado.
Comandos reais (Fase 4):
# comandos do README que precisam existir no repo
grep -oE '\b(npm|pnpm|python3|node |git|docker|uv) [^`]+' README.md
# conferir licença/tipo
head -1 LICENSE 2>/dev/null
# TOC vs headings: contar headings reais
grep -oE '^#{2,3} ' README.md | wc -l
Checklist da fase 4:
- Estrutura canônica seguida (adaptada ao tipo)
- Badges só do que existe
- Exemplos verificados contra o código
- 0 AI-isms (detect do avoid-ai-writing)
- Todo claim tem fonte
Fase 5 — VERIFY + VALIDATE (prova de qualidade)
- Validar README gerado:
- Rodar
audit-repo.sh <repo>de novo: conferir que nada essencial ficou de fora. - Checar links locais resolvem (
grep -o ']([^)]*)' README.md; arquivos citados existem). - TOC bate com headings.
- Comandos no README existem (checar que os binários/comandos citados são reais).
- Rodar
good-readme— re-auditar: score final deve subir vs Fase 3 (se houve README antes) ou ser alto (≥85/100) se criado.avoid-ai-writingdetect: 0 AI-isms restantes.- VERIFICAR gate do próprio workflow:
python3 ~/.hermes/skills/software-development/wf-qa/test_quality.py. - Relatório: score antes → depois, o que mudou, checks que passaram.
Checklist final:
- Links locais resolvem
- Comandos do README são reais
- TOC bate
- Score de qualidade ≥ 85/100 (good-readme) ou melhorou vs antes
- 0 AI-isms
- Gate do workflow (test_quality.py) verde
Comandos de validação (Fase 5):
# 1) links locais do README existem
grep -oE '\]\(\.?/?[^)]*\)' README.md | sed 's/](//; s/)$//' | while read p; do [ -e "$p" ] || echo "MISSING: $p"; done
# 2) TOC vs headings (sem TOC = ok, com TOC precisa bater)
grep -oE '^##{1,3} ' README.md | wc -l
# 3) 0 AI-isms (em-dash em excesso)
grep -o "—" README.md | wc -l
# 4) refere o LICENSE/contribuição existem
ls LICENSE CONTRIBUTING.md 2>/dev/null
# 5) gate do stack
python3 ~/.hermes/skills/software-development/wf-qa/test_quality.py
Anti-padrões desta fase:
- NÃO pular a re-auditoria (good-readme score) por "tá bom já".
- NÃO entregar sem rodar o detect do avoid-ai-writing (AI-ism = regressão).
- NÃO tratar "README mais bonito" como objetivo sem validar acurácia — bonito ≠ correto; a acurácia vem antes.
Regras duras
- NUNCA inventar instalação, comando, exemplo, screenshot ou feature que não exista no repo — fato sem fonte vira TODO ou pergunta.
- NUNCA incluir badge de coisa que não existe (CI sem CI, licensa sem LICENSE).
- NUNCA entregar README com AI-isms (rodar avoid-ai-writing antes de fechar).
- NUNCA afirmar "testado" sem ter executado o comando.
- NUNCA copiar estrutura de outro projeto sem adaptar ao tipo/público real.
- README do usuário do repo deve entender "clono → rodar" sem configurar dependência opcional desnecessária (project-readme-clarity).
- NUNCA deixar
TODO:no README final — TODO só durante o rascunho; na entrega, todo fato ou foi preenchido com fonte ou virou pergunta ao usuário. - NUNCA trocar linguagem da prosa no meio (EN/PT misturados) — o README principal tem UMA língua; traduções vão em arquivos separados.
- NÃO encher de emojis/badges decorativos; cada elemento tem função.
- NÃO duplicar informação (instalação em 2 seções é bug de manutenção).