[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C0WG2SBP9PJG1YQFGGVJAR":3,"skill-same:01M6C0WG2SBP9PJG1YQFGGVJAR":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":14,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6C0WG2SBP9PJG1YQFGGVJAR","verification-gate",null,"Verify before claiming success. Use when about to say something works\u002Fis done, after implementing a feature, after a bugfix, or before pushing — run the proof command and confirm output first.","matheusnorjosa\u002Faprender_sistema","matheusnorjosa","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F117673804?v=4","01M6C0S19FG12BDFBTRWY9TTEQ","Matheus Norjosa","01M6C0S1DF0YB17TKGEYC70GSP",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"verification","gate","verification gate","verify","command","first","use","verify before claiming","say","run","done","feature","proof","bugfix","output","about","implementing","when","2026-11-10 10:12:30",false,"---\nname: verification-gate\ndescription: Verify before claiming success. Use when about to say something works\u002Fis done, after implementing a feature, after a bugfix, or before pushing — run the proof command and confirm output first.\n---\n\n# Verification Gate\n\nVerificação obrigatória antes de qualquer claim de sucesso. **NUNCA** afirme que algo funciona sem evidência fresca.\n\n> \"NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\"\n\n## O Processo Gate (5 Passos)\n\nAntes de afirmar status, \"pronto\" ou satisfação:\n\n1. **IDENTIFICAR** — qual comando prova sua claim? (tabela abaixo)\n2. **RODAR** — execute completamente e freshly (não use cache mental).\n3. **LER** — leia o output COMPLETO e os exit codes.\n4. **VERIFICAR** — o output suporta a claim? (tabela de evidência abaixo)\n5. **CLAIM** — só APÓS confirmação, afirme sucesso.\n\n### Comando por tipo de claim (v2 = Docker-only, CP-01)\n\n| Claim | Comando | Evidência necessária |\n|-------|---------|----------------------|\n| \"Testes passam\" | `docker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002F -v` | `passed` + exit code 0 |\n| \"Sem erros pyright\" | `cd v2\u002Fbackend && pyright apps\u002Fcore config` | `0 errors` no output |\n| \"Build frontend OK\" | `cd v2\u002Ffrontend && npm run build` | exit code 0, sem erros |\n| \"Lint passa\" | `cd v2\u002Ffrontend && npm run lint` | exit code 0 |\n| \"Migration OK\" | `docker exec aprender_dev-web-1 python manage.py migrate --check` | exit code 0 |\n| \"Bug corrigido\" | o teste que falhava agora passa | `passed` no teste-alvo |\n| \"CI passou\" | `gh pr checks PR_NUMBER` | todos os checks verdes |\n\n## Red Flags — Linguagem Proibida antes de verificar\n\n\"should work\" \u002F \"deve funcionar\" · \"probably\" \u002F \"provavelmente\" ·\n\"seems fine\" \u002F \"parece ok\" · \"I think\" \u002F \"acho que\" ·\n\"Done!\" \u002F \"Pronto!\" (sem evidência) · \"Great!\" \u002F \"Ótimo!\" (sem rodar teste).\n\n## Checklist por tipo de tarefa\n\n**Após implementar feature:**\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_FEATURE.py -v\ncd v2\u002Fbackend && pyright apps\u002Fcore config\ncd v2\u002Ffrontend && npm run lint   # se tocou frontend\n```\n\n**Após fix de bug** (reproduzir → corrigir → confirmar):\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_BUG.py -x   # deve FALHAR antes do fix\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_BUG.py -v   # deve PASSAR depois\n```\n\n**Antes de push** (o CI roda os mesmos gates — rode local primeiro):\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002F -v\ncd v2\u002Fbackend && pyright apps\u002Fcore config\ncd v2\u002Ffrontend && npm run lint && npm run build\n```\n\n**Após import (export-contract \u002F DRF):** ver `reference\u002Fimport-verification.md`.\n\n## Exemplo: errado vs. certo\n\n❌ ERRADO:\n```\nImplementei a feature de bloqueio parcial. Os testes devem passar agora.\n```\n\n✅ CORRETO:\n```\nImplementei a feature de bloqueio parcial.\n\n$ docker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_availability_service.py -v\n15 passed in 2.3s\n$ cd v2\u002Fbackend && pyright apps\u002Fcore config\n0 errors, 0 warnings\n\nTestes passam e type check OK.\n```\n\n## Quatro modos de falsa verificação (medidos em 2026-08)\n\nRodar o comando não basta se a leitura da saída estiver errada. Estes quatro\nproduzem evidência que **parece** boa:\n\n1. **`exit != 0` sem ler o motivo.** Um teste de âncora quebrada reprovou — por\n   *link não-encontrado*, não por âncora. Não exercitava o que dizia.\n2. **Asserção negativa satisfeita por saída vazia.** Cinco testes passaram antes\n   de a implementação existir. Prove que a coisa foi medida antes de afirmar que\n   ela não apareceu.\n3. **Contar palavra-chave em vez de ler a afirmação.** `\"EM DRIFT\" not in saida`\n   reprovava com a saída correta, porque o resumo diz `0 em drift`. E um texto\n   que NEGA a mentira contém as mesmas palavras — cometido três vezes.\n4. **Passar por acidente do ambiente.** Um teste do caminho «sem API» assumia que\n   `gh` não existe; no runner existe. Force a condição, não torça por ela.\n\nDetalhe e casos: `gate-calibration\u002Freference\u002Fmedicao.md`.\n","# Verification Gate\n\nVerificação obrigatória antes de qualquer claim de sucesso. **NUNCA** afirme que algo funciona sem evidência fresca.\n\n> \"NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\"\n\n## O Processo Gate (5 Passos)\n\nAntes de afirmar status, \"pronto\" ou satisfação:\n\n1. **IDENTIFICAR** — qual comando prova sua claim? (tabela abaixo)\n2. **RODAR** — execute completamente e freshly (não use cache mental).\n3. **LER** — leia o output COMPLETO e os exit codes.\n4. **VERIFICAR** — o output suporta a claim? (tabela de evidência abaixo)\n5. **CLAIM** — só APÓS confirmação, afirme sucesso.\n\n### Comando por tipo de claim (v2 = Docker-only, CP-01)\n\n| Claim | Comando | Evidência necessária |\n|-------|---------|----------------------|\n| \"Testes passam\" | `docker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002F -v` | `passed` + exit code 0 |\n| \"Sem erros pyright\" | `cd v2\u002Fbackend && pyright apps\u002Fcore config` | `0 errors` no output |\n| \"Build frontend OK\" | `cd v2\u002Ffrontend && npm run build` | exit code 0, sem erros |\n| \"Lint passa\" | `cd v2\u002Ffrontend && npm run lint` | exit code 0 |\n| \"Migration OK\" | `docker exec aprender_dev-web-1 python manage.py migrate --check` | exit code 0 |\n| \"Bug corrigido\" | o teste que falhava agora passa | `passed` no teste-alvo |\n| \"CI passou\" | `gh pr checks PR_NUMBER` | todos os checks verdes |\n\n## Red Flags — Linguagem Proibida antes de verificar\n\n\"should work\" \u002F \"deve funcionar\" · \"probably\" \u002F \"provavelmente\" ·\n\"seems fine\" \u002F \"parece ok\" · \"I think\" \u002F \"acho que\" ·\n\"Done!\" \u002F \"Pronto!\" (sem evidência) · \"Great!\" \u002F \"Ótimo!\" (sem rodar teste).\n\n## Checklist por tipo de tarefa\n\n**Após implementar feature:**\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_FEATURE.py -v\ncd v2\u002Fbackend && pyright apps\u002Fcore config\ncd v2\u002Ffrontend && npm run lint   # se tocou frontend\n```\n\n**Após fix de bug** (reproduzir → corrigir → confirmar):\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_BUG.py -x   # deve FALHAR antes do fix\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_BUG.py -v   # deve PASSAR depois\n```\n\n**Antes de push** (o CI roda os mesmos gates — rode local primeiro):\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002F -v\ncd v2\u002Fbackend && pyright apps\u002Fcore config\ncd v2\u002Ffrontend && npm run lint && npm run build\n```\n\n**Após import (export-contract \u002F DRF):** ver `reference\u002Fimport-verification.md`.\n\n## Exemplo: errado vs. certo\n\n❌ ERRADO:\n```\nImplementei a feature de bloqueio parcial. Os testes devem passar agora.\n```\n\n✅ CORRETO:\n```\nImplementei a feature de bloqueio parcial.\n\n$ docker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_availability_service.py -v\n15 passed in 2.3s\n$ cd v2\u002Fbackend && pyright apps\u002Fcore config\n0 errors, 0 warnings\n\nTestes passam e type check OK.\n```\n\n## Quatro modos de falsa verificação (medidos em 2026-08)\n\nRodar o comando não basta se a leitura da saída estiver errada. Estes quatro\nproduzem evidência que **parece** boa:\n\n1. **`exit != 0` sem ler o motivo.** Um teste de âncora quebrada reprovou — por\n   *link não-encontrado*, não por âncora. Não exercitava o que dizia.\n2. **Asserção negativa satisfeita por saída vazia.** Cinco testes passaram antes\n   de a implementação existir. Prove que a coisa foi medida antes de afirmar que\n   ela não apareceu.\n3. **Contar palavra-chave em vez de ler a afirmação.** `\"EM DRIFT\" not in saida`\n   reprovava com a saída correta, porque o resumo diz `0 em drift`. E um texto\n   que NEGA a mentira contém as mesmas palavras — cometido três vezes.\n4. **Passar por acidente do ambiente.** Um teste do caminho «sem API» assumia que\n   `gh` não existe; no runner existe. Force a condição, não torça por ela.\n\nDetalhe e casos: `gate-calibration\u002Freference\u002Fmedicao.md`.\n",{"name":5,"description":7},"main","9e3a882d83e0853bdc570ae9d89c02d2a53bed82",".claude\u002Fskills\u002Fverification-gate","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa","Dev Python | IA | Automation | HTML | CSS | Data | Process | Projects","2026-11-12 02:52:37",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add matheusnorjosa\u002Faprender_sistema --skill verification-gate",{"tool":55,"command":56},"bunx","bunx skills add matheusnorjosa\u002Faprender_sistema --skill verification-gate",{"tool":58,"command":59},"pnpm","pnpm dlx skills add matheusnorjosa\u002Faprender_sistema --skill verification-gate","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"reference\u002Fimport-verification.md","REFERENCE","参考文档",1183,"https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002Freference\u002Fimport-verification.md",[70,108,130,142,174,202],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":86,"publishedAt":37},"01M6C0WHSP7S2QMJGGMQRXJ6PD","writing-standards","Apply AS v2 technical-writing standards (clarity, brevity, active voice, Python\u002FDjango conventions). Use when writing a README, a docstring (PEP 257), a commit message, a PR description, an error message, or any technical doc.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-standards\u002FSKILL.md",[76,81],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":82,"categoryName":83,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,36],"writing","writing standards","standards","python","commit","pr","pr description","commit message","doc","voice","clarity","django","technical","README","message","active","as","error","technical-writing","brevity","docstring",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":117,"publishedAt":37},"01M6C0WE010G12KH45YZW6M7K5","test-driven-development","Write the failing test before the implementation in AS v2 (pytest + Django\u002FDRF). Use when implementing a feature or fixing a bug, before any production code is written.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000008","测试与质量",[118,119,120,121,122,123,98,124,25,125,126,127,30,103,128,35,36,129],"test","test driven development","development","driven","code","Production","write","bug","implementation","pytest","drf","failing",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":37},"01M6C0WC6Y81XRVBJQSTKA96XQ","subagent-development","Orquestra subagents no AS v2 — decompõe a tarefa em domínios independentes, paraleliza e revisa em 2 estágios. Use ao delegar exploração, implementação ou validação cross-arquivo para acelerar o trabalho e poupar o contexto principal.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsubagent-development\u002FSKILL.md",[],[120,137,138,139,140,25,141,103],"subagent","subagent development","para","subagents","ao",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":37},"01M6C0W9W8D6JJWXW28Q7ZHAC9","security-scan","Automated security scanning for AS v2. Use before commits or when reviewing changes for vulnerabilities. Runs dependency audit (pip-audit, npm audit), secret detection (grep patterns), and code pattern scanning (SQL injection, XSS, eval, pickle, hardcoded secrets). Integrates with project hooks system.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsecurity-scan\u002FSKILL.md",[],[149,150,151,152,153,122,154,155,156,157,158,159,160,161,162,163,164,165,25,166,167,168,103,169,170,171,172,173,36],"security","security scan","scan","vulnerabilities","sql","npm","audit","dependency audit","detection","injection","xss","secrets","pip-audit","commits","system","grep","eval","hooks","security scanning","project","with","true","pip","for","changes",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":183,"publishedAt":37},"01M6C0W7RE3G3C2852YXQKR5J9","resume-handoff","Resume work from a saved handoff document, validating its state against the current codebase before continuing. Use when resuming work from a saved handoff after a context clear or in a new session (path, session name, or GitHub issue).","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fresume-handoff\u002FSKILL.md",[180],{"categoryNo":181,"categoryName":182,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000038","人力资源",[184,185,186,187,188,189,190,191,192,25,193,194,195,196,197,198,199,200,36,201],"handoff","resume handoff","resume","github","state","new session","work","context","session","github issue","issue","document","clear","name","saved","codebase","resuming","new",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":214,"publishedAt":37},"01M6C0W5E0DSP680Z75AAKSKEQ","receiving-code-review","Triage and respond to code review feedback for AS v2. Use when a PR has review comments, the user shares feedback, CI\u002Flinting flags issues, or after \u002Freview-staged or \u002Freview-enhanced runs.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freceiving-code-review\u002FSKILL.md",[208,211],{"categoryNo":209,"categoryName":210,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":212,"categoryName":213,"taxonomyType":84,"taxonomyTypeDesc":85},"01JBSEEDCAT000000000000030","开发工程师",[215,216,217,122,218,92,219,220,221,222,223,25,224,103,225,226,227,172,228,229,36],"code review","review","receiving code review","triage","issues","ci","feedback","code review feedback","user","flags","linting","respond","comments","staged","review feedback"]