Feature Planner
serendipity1004/cc-feature-implementer
Creates phase-based feature plans with quality gates and incremental delivery structure.
Investiga e conserta defeito no CS BRASIL / CORO SOLTO com o método que esta base pagou caro para aprender — régua antes do conserto, mutação que prova a régua, figura no tamanho em que ela é…
$ npx skills add corosolto/client --skill bug-hunt -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install corosolto/client bug-hunt --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/bug-hunt .claude/skills/bug-hunt && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .claude/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/corosolto/client/tree/main/.claude/skills/bug-huntType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add corosolto/client --skill bug-hunt -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install corosolto/client bug-hunt --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/bug-hunt .agents/skills/bug-hunt && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .agents/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add corosolto/client --skill bug-hunt -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install corosolto/client bug-hunt --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/bug-hunt .cursor/skills/bug-hunt && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .cursor/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/corosolto/client.git --path .claude/skills/bug-hunt--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add corosolto/client --skill bug-hunt -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install corosolto/client bug-hunt --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/bug-hunt .gemini/skills/bug-hunt && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .gemini/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install corosolto/client bug-huntInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add corosolto/client --skill bug-hunt -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/bug-hunt .github/skills/bug-hunt && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .github/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add corosolto/client --skill bug-hunt -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install corosolto/client bug-hunt --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/bug-hunt .opencode/skills/bug-hunt && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bug-hunt" agent skill from https://github.com/corosolto/client/tree/main/.claude/skills/bug-hunt into .opencode/skills/bug-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bug-hunt", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bug-huntInvestiga e conserta defeito no CS BRASIL / CORO SOLTO com o método que esta base pagou caro para aprender — régua antes do conserto, mutação que prova a régua, figura no tamanho em que ela é…
Bug Hunt is an agent skill from corosolto/client. Investiga e conserta defeito no CS BRASIL / CORO SOLTO com o método que esta base pagou caro para aprender — régua antes do conserto, mutação que prova a régua, figura no tamanho em que ela é servida, e refutação do palpite óbvio antes de agir nele. Use SEMPRE que alguém reportar que algo está quebrado, errado, sumido, travando, não aparece, não toca, reinicia sozinho, "tá bugado", "não funciona", "voltou a acontecer"; quando for reproduzir, isolar, medir ou consertar um defeito; quando for escrever régua nova…
Its SKILL.md is about 5.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/gabaritos.md` and `references/reguas.md`).
It sits in Testing & QA, covering Quality gates. The repository describes itself as: FPS satírico de navegador: 5 facções brasileiras caricatas, 44 personagens, 5 mapas e 26 armas — rounds e Capture the Flag contra bots, direto na aba, sem instalar nada. Three.js… The licence is AGPL-3.0.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0d37b27. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmnodegitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
blog.langchain.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bug Hunt loads about 5.7k tokens when it runs, and up to ~8.4k if it reads all its reference files. Until then it costs about 221 tokens; SKILL.md has 3,382 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from corosolto/client at commit 0d37b27, republished under its AGPL-3.0 licence (© corosolto). 3,382 words, ~5,729 tokens.
.claude/skills/bug-hunt/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Serve para agente e para gente. Nada aqui é "reproduza, isole, conserte" — isso todo mundo já sabe e não previne nada. O que está escrito abaixo é o que este repositório aprendeu errando, cada regra com o caso real que a comprou e o ponteiro para conferir.
Se você seguir só uma linha deste arquivo, que seja esta:
O número que prova o defeito vem ANTES do conserto. Sem ele você não sabe se consertou — você sabe que mexeu.
Leia, nesta ordem, e não pule:
KNOWN-BUGS.md (em ../progress) — o defeito já pode estar lá, com causa raiz,
arquivo:linha e o que já foi refutado. O cabeçalho tem o placar real do quality gate, colado de
uma execução de verdade.docs/docs/quality-gates.md — as duas leis da casa e o teste de mutação. É a página
mais útil do site. Não repito o conteúdo dela aqui; eu aponto.AGENTS.md — as regras que valem antes da primeira linha de
código, e o roteamento para o resto.tools/eval/ARCH.md — rode npm run arch antes de ler, ou você lê o índice de ontem.
É de lá que sai a tabela de conflito: quem pode editar qual faixa de game.js.A entrada do KNOWN-BUGS.md pode estar velha, e estava. Em 05/08, seguindo esta skill,
três defeitos listados como abertos já estavam consertados no código, com régua e tudo:
BUG-01 (a guarda de modo mora em public/js/game.js:4358, _hideCtfHud em :4337, o
dispose() chama em :6411, e existe tools/eval/ctfhud-check.mjs no check:fast),
BUG-03 (public/js/game.js:5625-5639) e BUG-04 (public/js/game.js:12 importa o
ViewModelRig; ele é instanciado em :1881). Confira o código antes de "consertar" o que já
está consertado — e atualize a entrada quando descobrir isso.
Escreva a medição primeiro, veja ela ficar vermelha, só então mexa no código. Sem o número de antes você não tem A/B, e sem A/B a correção é fé.
Caso real. BUG-21, o ônibus da Brasília. A primeira rodada mediu bem e consertou: parede fantasma de 2,33 m → 0,68 m. Foi reprovada assim mesmo — "devia ser possível andar". Só com a régua andando (
tools/eval/obb-check.mjs, grade de 5 cm chamando o_collidede produção) o número virou 0,000 m. 0,68 m é meio passo, e meio passo se sente.
Corolário que vale mais que a lei: quando o dono diz que está errado e o quality gate está verde, o
defeito é do quality gate (AGENTS.md, seção "O que é este projeto"). Na 3ª
rodada do mesmo ônibus o obb-check estava VERDE e ele continuava certo: a régua comparava o
colisor com a caixa declarada, e a caixa declarada nascia do Box3 do GLB inteiro, em toda
altura — guarda-sol, telhado de barraca e retrovisor contavam como parede na altura do peito.
Régua verde não é prova de que ele está enganado; é hipótese de que ela mede a coisa errada.
Régua que não pode falhar não mede nada. Depois de escrever a medição, quebre o código de propósito e exija vermelho. Se ficar verde, a régua é teatro e a correção não está guardada.
Caso real. Um mutante que desfazia inteiramente a correção do enquadramento passava 20/22 VERDE, porque a invariante lia a declaração de uma constante e não o uso. Outros três buracos iguais foram achados depois.
Como se escreve isso aqui: tools/eval/ctfhud-check.mjs:28-31 (a mutação apaga a guarda de modo
e o script sai 1 se a mutação passar — a régua denuncia a si mesma) e
tools/eval/obb-check.mjs:33-36 (duas mutações nomeadas, --mutante=aabb e --mutante=semry).
Anatomia completa e os quatro modos de cegueira já medidos: references/reguas.md.
Número sem imagem já enganou este projeto quatro vezes. E olhar o asset no tamanho do asset é teatro: o defeito mora no recorte que o usuário recebe.
Caso real, 05/08. As miniaturas de
/armas: 23 das 26 tinham mediana de luminância da tinta reprovando (uzi em 7 de 255, 78 % dos pixels indistinguíveis do fundo da página) —tools/eval/weapon-shots.mjs:117. Elas estavam desenhadas. Nenhuma métrica de texto, de build ou de HTTP teria contado: os 26 arquivos respondiam 200.Mesmo dia, mesmo defeito, outro recorte. A pistola do canarinho no header "não existia". Ela aparecia nos 24 quadros do
.webpde 604×240 — mas o.brand-bird(src/layouts/Layout.astro:254-259) serve uma janela reduzida para 60 px de altura, e ali a arma tem ~8 px, preta sobre marrom escuro. A régua que fechou isso mede o recorte servido:tools/eval/header-bird-check.mjs.
O palpite óbvio é óbvio porque é barato, não porque é certo. Meça-o e publique o resultado negativo — resultado negativo medido vale tanto quanto conserto.
Caso real. BUG-03: o próprio
KNOWN-BUGS.mdprescrevia "mover a chamada para dentro doif". Foi medido (9 sementes × 4 mapas × 180 s) e piora: 2,6 → 3,8 episódios de bot mudo. O motivo está escrito empublic/js/game.js:5625-5639— a chamada todo frame também é FILA, e atrás doifvira DISPUTA no instante do gatilho. O que separa os casos não é ONDE a chamada mora, é QUEM pode pegar o token.Segundo caso. As miniaturas pretas: varrer exposição era o caminho natural e não era a causa — eram 3 direcionais e nenhum ambiente. Com IBL: 23/26 → 3/26; com o piso de bounce: 0/26. O modo de falha estava documentado desde antes em
public/js/game.js:1457("SEM ambiente … metalness 1,0 lê como silhueta preta").Terceiro caso. BUG-31:
../progress→archive/plans/02-BOTS-E-MODELS.md:285mandava rodarretarget-glb.mjsnos palhaços. Rodado, medido, no-op: 0,13° de desvio máximo por osso. Gerar 88 GLB para não mudar um vértice teria custado peso morto contra o teto de 250 MB da CrazyGames.
O que o usuário descreve é onde ele estava, não onde está o defeito. Traduza o sintoma numa propriedade mensurável antes de procurar culpado.
"o jogo reiniciou sozinho e foi pro menu principal" (cinco vezes) → não havia caminho automático nenhum. O clique era real: o menu de pausa nascia clicável no mesmo frame, com 0,00 % de canvas exposto sob o cursor, e no centro da tela +100 px estava
REINICIAR PARTIDA, +150 pxSAIR PRO MENU. É o BUG-00."não está tocando música no fim do round, pelo menos pro funkeiro" →
%2520. O gerador de manifest codificava o caminho e oaudio.js/_sample()já faziaencodeURI— duas codificações na mesma string,%20virava%2520, oAudiofalhava em silêncio. Pegou o funkeiro porque 5 das 20 faixas de round dele têm espaço ou acento no nome; quem tinha nome limpo continuou tocando, e o defeito parecia "problema dos funkeiros". A regra que ficou está emtools/gen-audio-manifest.mjs:59-72: quem grava o caminho não codifica, quem monta URL codifica. Um lado só."a vida do 1st player volta a 100, não sei porque" → não era bug: era a regeneração fora de combate, funcionando como escrita. O defeito de verdade era ela ser invisível — sem ícone, som, vinheta ou linha nas configurações. Regra que o jogador não percebe é indistinguível de defeito.
Quando a correção "não pegou", não repita a execução: procure a evidência de que ela não rodou. Byte idêntico, contagem idêntica, timestamp idêntico.
Caso real, 05/08. O
envMapda pistola do header não aplicou, e o sintoma foi bonito: o.webpsaiu com exatamente os mesmos 98.064 bytes do arquivo commitado. Nem um pixel. Causa: oPMREMGeneratorproduz um render target do contexto WebGL que o criou, e a ferramenta criava umWebGLRenderernovo por quadro. Um renderer para a execução inteira → 98.872 bytes.A outra assinatura clássica desta base é o
catchvazio. 88 requisições 404 por partida (8 personagens × 11 clipes) eram engolidas por umcatchdeglbchars.js: o jogo funcionava e o console mentia. Epublic/models/anims/sem manifesto não dá erro — dá T-pose.
Antes de acusar a página, o mapa ou o motor, pergunte se o instrumento estava olhando.
Caso real. 4 miniaturas "faltando" no bloco FUZIL DE BATALHA de
/armas: o defeito era da captura. Rolar 600 px a cada 40 ms passa longe doIntersectionObserverdo Chrome e 17 das 26 imagens nunca chegavam a ser pedidas. Com 300 px / 120 ms e espera porimages.every(complete): 0 faltando, e os 26 arquivos respondiam 200 nodist. (git show a88a00a)Caso estrutural, ainda aberto: BUG-28. No headless não há
WebGLRenderer.render(), então ninguém chamascene.updateMatrixWorld()— e 92 dos 92 occluders dopiscina_tretaficam com a matriz na identidade. Toda métrica de bot que dependa de linha de visão no headless está medida contra geometria empilhada na origem. No navegador isso nunca aparece.E
botsim ... allcompartilha o cursor doMath.randomentre mapas pelo cache preguiçoso de texturas: um mapa que não foi tocado se moveu 0,2. Comparação debotsim allsó vale como sequência inteira.
Mexeu em public/js/**/*.js? O moduleCacheManifest() precisa incluir o módulo publicado:
ele deriva a revisão dos bytes e o import map anexa ?v=<versão>-<hash> ao grafo inteiro.
Não faça bump manual nem anuncie bancadas removidas por prune-dist.mjs. Rode
npm run eval:shaderbudget; SB7 prova cobertura, mudança de conteúdo e fronteira de publicação.
Caso real. Um bump com a mensagem "40 commits não chegavam ao navegador", e mais três no mesmo dia 04/08. Reproduza a frequência:
git log --format='%h %ad %s' --date=format:'%d/%m %H:%M' -- public/js/version.jsNa tela de seleção o mesmo laço mordeu de novo: o clamp já estava na árvore e o
?v=não tinha subido — o defeito "não consertou" era o arquivo velho sendo servido. O manifesto por conteúdo substituiu esse processo manual; BUG-48 acrescentou a fronteira do que é publicado.
Isto tem primo: o Chrome ignora ?v= no banco de favicons. Se o ícone não muda, é aba
anônima ou limpar dados do site, não é arquivo para mexer.
Arma + mão + animação + ADS + mira + HUD são um sistema. Fan-out paralelo nele já produziu
13 regressões numa única rodada (CONTRIBUTING.md, "Regras de
código"). Um agente, uma frente, em ordem.
Fora desse sistema o paralelismo é seguro e medido, desde que as frentes tenham faixas
disjuntas — e a partição se declara por símbolo, nunca por linha (npm run arch).
Oito passos. O 2 e o 5 são os que separam conserto de mexida.
0 · Registre antes de investigar. Abra a entrada no KNOWN-BUGS.md (em ../progress)
com as palavras literais de quem reportou. A palavra dele é o dado; a sua paráfrase já é
interpretação. Sem evidência ainda, a entrada nasce em Relatados, ainda não reproduzidos, com
Régua: nenhuma.
1 · Reproduza, e diga em que instrumento. Navegador (tools/eval/crash-watch.mjs), motor em
node (tools/eval/harness.mjs), ou nenhum dos dois — e nesse caso diga que não reproduziu.
2 · Meça: o número que prova o defeito. Escreva a régua antes do conserto e veja o
vermelho. Se não existe régua, ela é o primeiro entregável. Formato:
references/reguas.md.
2b · Se a medição de ANTES vier VERDE, pare — você tem outro defeito. Isto acontece muito e não é motivo para forçar um conserto. São três casos, e cada um tem saída própria:
A entrada está velha e o defeito já foi consertado. Confira o código, feche a entrada com
~~tachado~~ · RESOLVIDO dd/mm e o arquivo:linha da correção. Em 05/08, três entradas
listadas como abertas estavam nesse estado.
O defeito é LATENTE: existe no código e não tem efeito no dado de hoje. Não escreva régua que passa verde antes e depois — ela não mede nada (lei 2). Reclassifique de "o jogador vê" para latente, e escreva a régua de modo que a mutação forneça a condição que falta (o mapa, o arquivo, a resolução que hoje não existe).
Caso real, 05/08, e ele tem um segundo tempo que é a lição de verdade. BUG-06: o alvo de capturas do CTF era constante em vez de derivar do número de bandeiras. A medição de antes, construindo cada mapa pelo
tools/eval/harness.mjse contandoctfPoints: os 3 mapas comctfModetêm 4 bandeiras cada, e a correção prescrita na entrada (Math.floor(n / 2) + 1) dá exatamente o mesmo 3 que já estava lá. Conclusão registrada: defeito latente, régua ficaria verde dos dois lados.Estava errado — e a aritmética não era o problema. O dono jogou e disse: "na loja H está com 3 capturas quando a vitória tem que ser as 4. tem que ser todas sempre." O que a medição tinha refutado era a regra proposta na entrada, não o defeito. Com a regra certa (
capsToWin = ctfPts.length,public/js/game.js:4067) o defeito é imediato, visível e mensurável: a rodada fechava na 3ª de 4 bandeiras. Régua nova:tools/eval/ctf-win-check.mjs, com--mutante=constantereproduzindo o que ele viu.A moral, e é a mais cara desta seção: "a régua de antes veio verde" tem uma quarta saída que a lista acima não cobria — a regra que você ia codificar pode ser a errada. Antes de carimbar "latente", confira a regra com quem define o comportamento. Verde pode ser resposta certa para a pergunta errada.
A régua está medindo a coisa errada. É o corolário da lei 1. Se alguém insiste que está errado, essa é a hipótese mais provável — não a de que ele se enganou.
A REGRA que você ia codificar é a errada. A conta fecha e mesmo assim o comportamento está errado, porque o critério nunca foi o certo. É o caso do BUG-06, logo acima.
3 · Refute o palpite óbvio. Meça-o e escreva o resultado negativo na entrada. É o passo que mais economiza tempo e o mais pulado.
4 · Conserte na causa, não no sintoma. O antes/depois e a causa raiz ficam na entrada do
KNOWN-BUGS.md. No código, prefira nomes claros; se uma invariante não couber neles, use no
máximo duas linhas e aponte para a entrada, sem copiar a investigação.
5 · Mute a régua. Reintroduza o defeito e exija vermelho na cláusula certa. Sem isso o passo 2 não vale.
6 · Rode o quality gate, na ordem. Detalhe abaixo.
7 · Feche a entrada com o antes × depois medido, o nome da régua nova, o comando que a roda, e as mutações com o número de cada uma. E anote o custo declarado: o que piorou junto.
8 · Reporte, inclusive o que você NÃO verificou. Gabaritos:
references/gabaritos.md.
npm run check:fast # segundos — rode este primeiro, sempre
npm run build # o site tem que buildar
npm run check:seo # se mexeu em src/ ou em public/llms.txtA composição exata sai do package.json (o porquê de cada passo mora no
SCRIPTS.md (em ../progress)) e está publicada como bloco gerado em
AGENTS.md. Não copie a lista para lugar nenhum — ela muda.
Três armadilhas de quality gate, todas já pagas:
eval:vm roda ANTES de eval:invariants. As invariantes de viewmodel leem um JSON que o
eval:vm gera. Com o JSON congelado, VM5 acusava 26/26 armas fora; regenerado, 3/26. O
check:fast já está na ordem certa — o cuidado é para quando você chamar
node tools/eval/invariants.mjs à mão. É o BUG-02.anims:check vermelho no meio da corrente (BUG-15, public/models/anims/ não versionado),
sete quality gates atrás dele rodavam zero vezes na época do &&. Leia a entrada
check:fast do SCRIPTS.md antes de acrescentar um passo.E o veto do dono: não afrouxe teto de invariante para fechar placar. Se achar que um teto está errado, meça na referência e mostre o pixel.
Dois padrões que esta base já praticava informalmente e agora nomeia — a fonte é o caso da LangChain em que mudanças só de harness tiraram um agente do rank 30 para o top 5 sem trocar o modelo (write-up).
Sanduíche de raciocínio. Delibere fundo em dois pontos, e só neles: o planejamento
(antes de tocar no código — qual régua, qual hipótese, qual faixa do game.js) e a
verificação (antes de declarar pronto — mutação vermelha, figura olhada, o que não foi
verificado). No meio, execute enxuto. Quem delibera no meio da execução é o drive-by
refactor. Esta skill já é o sanduíche: os passos 0-3 são o planejamento, os 5-8 são a
verificação; o nome existe para você perceber quando saiu dele.
Detector de loop. Se a mesma ação falhou três vezes com a mesma assinatura — mesmo erro, mesma saída, mesmo vermelho — você não está investigando, está girando. Pare e mude de estratégia: troque de instrumento (navegador ↔ harness em node), suba um nível de abstração, ou escale para o dono com o que você já mediu. A lei 6 é o antídoto: quem procura a assinatura da falha não repete a execução que já falhou.
Número derivável do código não se escreve à mão em nenhum arquivo deste repositório — vira
bloco gerado por node tools/gen-docs.mjs, e npm run docs:check (dentro do check:fast)
reprova quando diverge.
Caso real, e é por isso que este arquivo tem tão pouco número: o
SKILL.mddagauntlet-fpsafirmava que ogame.jstinha 3.234 linhas quando o arquivo já tinha 6.427 (tools/gen-docs.mjs:5-10). Corrigir 3.234 para 6.427 dura até o próximo commit.
Para consultar sem escrever: node tools/gen-docs.mjs --json imprime todos os fatos medidos,
cada um com o comando que o reproduz.
A distinção que resolve a dúvida na hora de escrever:
| Tipo | Exemplo | O que fazer |
|---|---|---|
| Número de estado (o repo tem N disso hoje) | linhas de game.js, quantidade de armas, mapas, personagens, invariantes | bloco gerado, ou aponte para onde ele já é gerado |
| Número de evento (isto foi medido nesta execução, nesta data) | "2,33 m → 0,68 m", "98.064 bytes", "23 das 26 daquela rodada" | escreva, com data e com o comando que reproduz |
| Placar do quality gate | quantas invariantes passam | não é derivável: depende de qual insumo existe na máquina. Vive colado no cabeçalho do KNOWN-BUGS.md, de execução real |
Duas coisas que este arquivo não tem, e é melhor você saber: ele não recebe bloco gerado
(a tabela COLOCACAO de tools/gen-docs.mjs declara em quais arquivos cada bloco aparece, e não
inclui este), e ele não entra na varredura de ponteiros do mesmo script, que hoje cobre
README/AGENTS/docs/docs e só o SKILL.md da gauntlet-fps
(tools/gen-docs.mjs:584-586). Consequência prática: aqui número de estado não se escreve —
aponta-se; e os arquivo:linha desta skill são conferidos à mão. Se você mexer no
COLOCACAO ou nessa lista, inclua este arquivo nos dois.
| Armadilha | O que acontece |
|---|---|
Servir public/ estático para testar | Você recebe os arnêses visuais, não o jogo. O jogo é a rota /, e o HTML dele é src/pages/index.astro. |
Adicionar dependência ou passo de build em public/ | Quebra o tools/eval/harness.mjs, que sobe a classe Game real em node puro — é ele que faz o quality gate existir. |
| Validar enquadramento de arma só em 16:9 | O dono joga em 3:2. Já custou uma rodada inteira. |
// em CSS | Não é comentário. O parser engole o bloco seguinte — já matou um @keyframes inteiro. |
| Duas capturas headless em paralelo | Derruba o boot e falsifica a medição. Um agente só roda browser. |
Rodar reskin-glb.mjs de novo "porque é inócuo" | Não é idempotente: repintar com os mesmos parâmetros piorou o padati em 12 %. |
| Régua que passa por vacuidade | Sem inventário declarado, apagar o alvo deixa a régua verde sem medir nada — tools/eval/obb-check.mjs:28-31. |
| Percentil alto em defeito pequeno | Defeito que mora acima do P97 é invisível para um P95 por construção — tools/eval/select-inflate.mjs:20-25. |
Comparar botsim all item a item | Os mapas compartilham o cursor de Math.random. Só vale como sequência inteira. |
references/reguas.md — anatomia de uma régua desta casa, os quatro
modos de cegueira já medidos, e o esqueleto com mutação.references/gabaritos.md — gabarito da entrada do KNOWN-BUGS.md e
do relatório final, incluindo como declarar o que não foi verificado.docs/docs/quality-gates.md — as duas leis, a procedência de teto e o teste de mutação.KNOWN-BUGS.md (em ../progress) · AGENTS.md ·
CONTRIBUTING.md.gauntlet-fps — a skill irmã. Ela melhora o que funciona; esta conserta o que está
quebrado. Se o pedido é "deixe melhor", é lá.© corosolto, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .claude/skills/bug-hunt of corosolto/client.
Open the folder on GitHubat commit 0d37b27
Bug Hunt next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bug Hunt this skillcorosolto/client | 257 | — | ~5.7k | Automated safety check: Pass | AGPL-3.0 | |
| Feature Plannerserendipity1004/cc-feature-implementer | 176 | — | ~2.4k | Automated safety check: Pass | None | |
| Ccg Workflowfengshao1227/ccg-workflow | 5.9k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Conducty Checkpointrobertbarclayy/conducty | 176 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Mission Plannerjdforsythe/forge | 151 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Quality Gate0xNyk/lacp | 305 | — | ~382 | Automated safety check: Pass | MIT |
serendipity1004/cc-feature-implementer
Creates phase-based feature plans with quality gates and incremental delivery structure.
fengshao1227/ccg-workflow
How to run a non-trivial change end to end with the CCG role tools (ccganalyze / ccgdesign / ccgbuild / ccgdebug / ccgoptimize / ccgreview / ccgtest) and the verify- quality gates.
robertbarclayy/conducty
Quality gate between parallelization groups. An agent skill from robertbarclayy/conducty.
jdforsythe/forge
Decomposes goals into team blueprints using evidence-based scaling laws, topology selection, and role design.
0xNyk/lacp
Production quality gate for agent sessions. An agent skill from 0xNyk/lacp.
nwiizo/ccswarm
Release deployment process for ccswarm. An agent skill from nwiizo/ccswarm.
corosolto/client
Build and iterate playable Three.js game systems. An agent skill from corosolto/client.
corosolto/client
Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures.
corosolto/client
Generate, texture, rig, animate, stylize, convert, and download 3D assets for Three.js games using the Tripo API.
corosolto/client
Light and shade a three.js scene: choose materials (MeshStandardMaterial PBR vs unlit MeshBasicMaterial), add ambient/hemisphere/directional/point/spot lights, turn on shadow maps, and use an…
corosolto/client
Stand up a three.js scene: import maps and the three/addons path, the Scene/PerspectiveCamera/WebGLRenderer trio, the setAnimationLoop render loop, responsive resize, and OrbitControls.
corosolto/client
Primary entrypoint for complete Three.js browser game creation and premium iteration.
Categories
Investiga e conserta defeito no CS BRASIL / CORO SOLTO com o método que esta base pagou caro para aprender — régua antes do conserto, mutação que prova a régua, figura no tamanho em que ela é…. Bug Hunt is an agent skill from corosolto/client. Investiga e conserta defeito no CS BRASIL / CORO SOLTO com o método que esta base pagou caro para aprender — régua antes do conserto, mutação que prova a régua, figura no tamanho em que ela é servida, e refutação do palpite óbvio antes de agir nele.
Bug Hunt fits situations like: tasks that involve Quality gates.
Run `npx skills add corosolto/client --skill bug-hunt -a claude-code`. Or copy the skill folder (.claude/skills/bug-hunt in corosolto/client) into .claude/skills/bug-hunt in your project. Claude Code loads it when a task matches its description.
Run `npx skills add corosolto/client --skill bug-hunt -a codex`. Or copy the skill folder (.claude/skills/bug-hunt in corosolto/client) into .agents/skills/bug-hunt in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add corosolto/client --skill bug-hunt -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bug-hunt, .gemini/skills/bug-hunt, .github/skills/bug-hunt and .opencode/skills/bug-hunt in your project.
Going by SKILL.md and its folder, Bug Hunt needs the command-line tools its instructions call (npm, node and git).
SKILL.md names 1 domain. As links in the text: blog.langchain.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Bug Hunt is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.7k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Bug Hunt: Feature Planner (serendipity1004/cc-feature-implementer, 176 stars), Ccg Workflow (fengshao1227/ccg-workflow, 5.9k stars), Conducty Checkpoint (robertbarclayy/conducty, 176 stars) and Mission Planner (jdforsythe/forge, 151 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
corosolto (a GitHub organization) maintains it in corosolto/client, which has 257 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.
Source: corosolto/client on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.