Stats
Actions
Tags
From anti-vibe-coding
Enforces PR quality gates and TDD workflows by blocking tool calls until pre-checks pass. Runs bash commands that can abort Bash, Edit, Write, and Skill operations, with per-event cleanup and advisories.
5 events · 15 hooks
Safety signals detected in this hook configuration
Where this hook configuration is defined
Defined in hooks/hooks.json
Event handlers and matchers — expand Raw Configuration for the full JSON
node -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/stop-reflector.cjs')}catch(e){process.exit(0)}"5msWrite|Editnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/tdd-gate.cjs')}catch(e){process.exit(0)}"10msWrite|Editnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/prompt-guard.cjs')}catch(e){process.exit(0)}"5msBashnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/pre-tool-use-destructive-guard.cjs')}catch(e){process.exit(0)}"5msBashnode -e "const input=process.env.CLAUDE_TOOL_INPUT||'';if(!input.includes('git commit')){process.exit(0)}const{execSync}=require('child_process');try{execSync('bun run test',{timeout:60000,stdio:'pipe'});execSync('bun run lint',{timeout:30000,stdio:'pipe'})}catch(e){process.stderr.write('[PRE-COMMIT] Testes ou lint falharam. Corrija antes de commitar: '+e.message.slice(0,200));process.exit(2)}"90msBashnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/grepping-names.cjs')}catch(e){process.exit(0)}"15msWrite|Edit|MultiEditnode -e "try{const h=require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/state-md-hook.cjs');const input=JSON.parse(process.env.CLAUDE_HOOK_INPUT||'{}');h.handle(input).then(r=>{if(r&&r.error)process.stderr.write('[state-md-hook] '+r.error)}).catch(()=>{})}catch(e){}"15msWrite|Edit|MultiEditnode -e "try{const h=require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/sync-agents-to-claude.cjs');const input=JSON.parse(process.env.CLAUDE_HOOK_INPUT||'{}');h.handle(input).then(r=>{if(r&&r.error)process.stderr.write('[sync-agents-to-claude] '+r.error)}).catch(()=>{})}catch(e){}"5msWrite|Editnode -e "const f=process.env.CLAUDE_FILE_PATH||'';const ext=['.ts','.tsx','.js','.jsx','.json','.css'];if(!ext.some(e=>f.endsWith(e))){process.exit(0)}const{execSync}=require('child_process');try{execSync('bunx biome check --write '+JSON.stringify(f),{timeout:10000,stdio:'pipe'})}catch(e){process.exit(0)}"15msWrite|Editnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/file-size-guard.cjs')}catch(e){process.exit(0)}"10ms*node -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/context-monitor.cjs')}catch(e){process.exit(0)}"5msnode -e "try{const h=require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/version-check.cjs');h(JSON.parse(process.env.CLAUDE_HOOK_CONTEXT||'{}')).then(r=>{if(r&&r.message)console.log(r.message)})}catch(e){}"5msprintf '[ANTI_VIBE_CODING v5.1 - SKILL & WORKFLOW ADVISOR ATIVO]\n\nINSTRUCAO PERMANENTE para esta sessao:\nPara QUALQUER pedido de implementacao (nao perguntas simples), voce DEVE:\n1. Identificar o dominio da tarefa\n2. Recomendar a skill apropriada com comando exato\n3. Perguntar ao usuario se deseja invocar a skill antes de prosseguir\n\nSkills disponiveis:\n- /anti-vibe-coding:consultant - Fase Zero: decisoes complexas, incerteza, multiplos dominios\n- /anti-vibe-coding:react-patterns - React/Next.js: hooks, state, data fetching, performance\n- /anti-vibe-coding:security - Seguranca: auth, crypto, JWT, CORS, XSS\n- /anti-vibe-coding:system-design - System Design: cache, scaling, CAP, replicacao, filas/mensageria (queue, broker, exactly-once, idempotencia), SQL internals (index, EXPLAIN, ACID, particao), resiliencia (load shedding, shuffle sharding, deadline, distributed challenges)\n- /anti-vibe-coding:infrastructure - Infra & Deploy: DNS/SSL, hosting, Docker, CI/CD, blue-green, health checks, Route 53 routing\n- /anti-vibe-coding:api-design - API: endpoints, N+1, DTOs, idempotencia, webhooks\n- /anti-vibe-coding:architecture - Arquitetura: SOLID, patterns, monolito vs micro\n- /anti-vibe-coding:design-patterns - Qualidade: code smells, error handling, refactoring\n- /anti-vibe-coding:defensive-patterns - Padroes defensivos: rate limit, circuit breaker, timeout, retry, fallback, bulkhead, health check, load shedding\n- /anti-vibe-coding:tdd-workflow - TDD: implementacao test-first\n- /anti-vibe-coding:lessons-learned - Registrar licoes de erros\n- /anti-vibe-coding:decision-registry - Registrar decisoes arquiteturais\n- /anti-vibe-coding:anti-vibe-review - Review pos-implementacao\n- /anti-vibe-coding:enhance-prompt - Otimizar prompts de execucao automatizada\n- /anti-vibe-coding:learn - Aprendizado adaptativo: entender conceitos antes ou depois de codar\n- /anti-vibe-coding:qa-visual - QA Visual: verificacao no browser com Playwright MCP\n- /anti-vibe-coding:grill-me - Entrevista implacavel pre-implementacao\n- /anti-vibe-coding:design-twice - Exploracao paralela de solucoes divergentes\n- /anti-vibe-coding:write-prd - Especificacao interativa de features\n- /anti-vibe-coding:plan-feature - Plano de execucao com vertical slices\n- /anti-vibe-coding:execute-plan - Execucao wave-based com subagentes\n- /anti-vibe-coding:verify-work - Verificacao pos-execucao com auditoria\n- /anti-vibe-coding:quick-plan - Planejamento leve inline (3-7 passos)\n\nComportamento ao detectar skill relevante:\n- SEMPRE pergunte ao usuario antes de invocar: Deseja que eu invoque /skill-name?\n- Se o usuario disser sim, invoque com a tool Skill\n- Se o usuario disser nao ou prosseguir, continue sem invocar\n\nQuando NAO sugerir skill:\n- Perguntas explicativas (o que e, como funciona, por que)\n- Fixes triviais (typo, rename, formatacao)\n- Leitura/exploracao de codigo\n- Usuario ja invocou uma skill (/)\n- Usuario disse: prosseguir, sem skill, skip\n\nTabela Akita — Limites do Agente:\nFaz BEM (delegar ao agente):\n- Boilerplate e scaffolding\n- Testes (estrutura e cobertura)\n- Refactoring mecanico (rename, extract, inline)\n- Pesquisa contextual (docs, exemplos, alternativas)\n- Consistencia de padroes no codebase\nFaz MAL (escalar para skill especializada):\n- Decisoes de arquitetura → use /anti-vibe-coding:consultant ou /anti-vibe-coding:architecture\n- Conhecimento de dominio do negocio → pergunte ao dev\n- Opiniao/preferencia pessoal → nao assuma, pergunte\n- Seguranca proativa (auth, crypto, secrets) → use /anti-vibe-coding:security\n- Priorizacao de features → nao e sua decisao\nQuando detectar pedido nos dominios Faz MAL: sinalize o risco e sugira a skill antes de prosseguir.\n\nWorkflows dinamicos (escala — dezenas a centenas de agentes coordenados):\n- Para varredura do codebase inteiro, migracao de centenas de arquivos ou pesquisa cross-checada, SUGIRA rodar como dynamic workflow.\n- SEMPRE pergunte antes; workflows consomem substancialmente mais tokens.\n- NUNCA lance a tool Workflow automaticamente — o humano opta incluindo a palavra workflow no pedido.\n- Detalhe e fronteira (workflow vs subagente vs skill): docs/WORKFLOWS.md.\n'node -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/user-prompt-gate.cjs')}catch(e){process.exit(0)}"10msnode -e "try{require(process.env.CLAUDE_PLUGIN_ROOT+'/hooks/pre-mutation-gate.cjs')}catch(e){process.exit(0)}"10msnpx claudepluginhub luyzkk/anti-vibe-coding --plugin anti-vibe-coding