gate-runnerlisted
Install: claude install-skill vellus-tech/forge-harness
# Gate Runner (v0 — §17.5)
Gates deterministas complementam os loops builder→validator (probabilísticos) com checagens objetivas e baratas. Disciplina inegociável (§17.6): **cada gate emite uma linha** `OK <gate>` ou `FAIL <gate> (<pista>)`; output bruto vai para `/tmp/gate-<nome>.log` e você lê **apenas `tail -20`** dele. Nunca cole o log no chat.
## Protocolo
1. Identifique os arquivos-alvo (os que a task tocou/gerou).
2. Selecione os gates aplicáveis (abaixo) e rode-os em sequência.
3. Qualquer `FAIL` → corrija e re-rode **só o gate que falhou** (máx. 2 tentativas; depois trate como falha irrecuperável da task: `[!]` + humano).
4. Reporte o conjunto em uma linha final: `gates: N OK, M FAIL`.
## Receitas
**Parseabilidade** (parser nativo do formato):
```bash
# JSON
node -e 'JSON.parse(require("fs").readFileSync(process.argv[1],"utf8"))' "$f" >/tmp/gate-parse.log 2>&1 && echo "OK parse:$f" || echo "FAIL parse:$f"
# YAML (python3 com pyyaml; fallback: o parser da sua stack)
python3 -c 'import yaml,sys; yaml.safe_load(open(sys.argv[1]))' "$f" >/tmp/gate-parse.log 2>&1 && echo "OK parse:$f" || echo "FAIL parse:$f"
# Frontmatter de .md
perl -0ne 'exit(0) if /^---\n.*?\n---/s; exit(1)' "$f" && echo "OK frontmatter:$f" || echo "FAIL frontmatter:$f"
```
**Grep positivo (OR cross-file)** — cada padrão obrigatório aparece em ao menos um arquivo-alvo:
```bash
grep -l "$PATTERN" "${FILES[@]}" >/dev/null && echo "OK grep+:$PATTERN" || echo "FAIL grep+:$PATTERN (ausente em todos