[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C0TFPS8DDSVRSMJN22EDC4":3,"skill-same:01M6C0TFPS8DDSVRSMJN22EDC4":78},{"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":23,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":14,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6C0TFPS8DDSVRSMJN22EDC4","test-driven-development",null,"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.","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.agents\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"test driven development","development","test","driven","failing","when","implementing","drf","as","feature","pytest","implementation","bug","use","write","django","Production","code","2026-11-10 10:12:30",false,"---\nname: test-driven-development\ndescription: 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.\n---\n\n# Test-Driven Development (TDD)\n\n## Overview\n\nWrite the test first. Watch it fail. Write minimal code to pass.\n\n**Core principle:** If you didn't watch the test fail, you don't know if it tests the right thing.\n\n**Violating the letter of the rules is violating the spirit of the rules.**\n\n## When to Use\n\n**Always:**\n- New features\n- Bug fixes\n- Refactoring\n- Behavior changes\n\n**Exceptions (ask your human partner):**\n- Throwaway prototypes\n- Generated code\n- Configuration files\n\nThinking \"skip TDD just this once\"? Stop. That's rationalization.\n\n## The Iron Law\n\n```\nNO PRODUCTION CODE WITHOUT A FAILING TEST FIRST\n```\n\nWrite code before the test? Delete it. Start over.\n\n**No exceptions:**\n- Don't keep it as \"reference\"\n- Don't \"adapt\" it while writing tests\n- Don't look at it\n- Delete means delete\n\nImplement fresh from tests. Period.\n\n## Red-Green-Refactor\n\n### RED - Write Failing Test\n\nWrite one minimal test showing what should happen. Use `APITestCase` for\nendpoints, `TestCase` for models\u002Fservices, and the factories in\n`apps\u002Fcore\u002Ftests\u002Ffactories.py` (`force_authenticate` to seed the actor).\n\n**Good:**\n```python\ndef test_non_dat_user_is_forbidden(self):\n    user = UsuarioFactory()  # no DAT group\n    self.client.force_authenticate(user=user)\n    resp = self.client.get(reverse(\"core:dat-registro-list\"))\n    self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)\n```\nClear name, tests real behavior through the URL, one thing. Asserts the `403`\nstatus (the contract) — not the response body shape.\n\n**Bad:**\n```python\ndef test_access(self):\n    user = UsuarioFactory()\n    view = DATRegistroViewSet()\n    view.request = Mock(user=user)\n    self.assertFalse(view.get_permissions()[0].has_permission(view.request, view))\n```\nVague name, pokes a mocked view internal instead of the real request\u002FRBAC path.\n\n**Requirements:**\n- One behavior\n- Clear name\n- Real code through the URL\u002FORM (no mocks unless unavoidable)\n\n### Verify RED - Watch It Fail\n\n**MANDATORY. Never skip.** Tests run inside the dev container (CP-01):\n\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_dat_registros.py -v\n```\n\nConfirm:\n- Test fails (not errors)\n- Failure message is expected\n- Fails because feature missing (not typos)\n\n**Test passes?** You're testing existing behavior. Fix test.\n**Test errors?** Fix error, re-run until it fails correctly.\n\n### GREEN - Minimal Code\n\nWrite simplest code to pass the test.\n\n**Good:**\n```python\nclass DATRegistroViewSet(viewsets.ModelViewSet):\n    permission_classes = [HasPerm(\"manage_admin_registries\")]\n    # ...\n```\nJust enough for the `403` test to pass — RBAC via the canonical `HasPerm`.\n\n**Bad:**\n```python\nclass DATRegistroViewSet(viewsets.ModelViewSet):\n    def get_permissions(self):\n        if self.action == \"list\" and self.request.query_params.get(\"export\"):\n            return [HasPerm(\"export_datregistro\")]\n        # ... branches the test never asked for — YAGNI\n```\n\nDon't add features, refactor other code, or \"improve\" beyond the test.\n\n### Verify GREEN - Watch It Pass\n\n**MANDATORY.**\n\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_dat_registros.py -v\n```\n\nConfirm:\n- Test passes\n- Other tests still pass\n- Output pristine (no errors, warnings)\n- Coverage holds the 85% gate (`fail_under = 85` in `v2\u002Fbackend\u002Fpytest.ini`)\n\n**Test fails?** Fix code, not test.\n**Other tests fail?** Fix now.\n\n### REFACTOR - Clean Up\n\nAfter green only:\n- Remove duplication\n- Improve names\n- Extract helpers\n\nKeep tests green. Don't add behavior.\n\n### Repeat\n\nNext failing test for next feature.\n\n## Rationalizations and Red Flags — STOP\n\nAny row below means: stop, delete the untested code, start over with TDD.\n\n| Excuse \u002F Red flag | Reality | Action |\n|-------------------|---------|--------|\n| \"Too simple to test\" | Simple code breaks. Test takes 30 seconds. | Write the test. |\n| \"I'll test after\" \u002F \"tests added later\" | A test passing immediately proves nothing. | Write the test first. |\n| \"Tests after achieve the same goal\" | Tests-after = \"what does this do?\" Tests-first = \"what should this do?\" | Write the test first. |\n| \"Already manually tested it\" | Ad-hoc ≠ systematic. No record, can't re-run. | Write the test. |\n| \"Deleting X hours is wasteful\" | Sunk cost fallacy. Unverified code is technical debt. | Delete it. Start over. |\n| \"Keep as reference \u002F adapt existing code\" | You'll adapt it — that's testing after. Delete means delete. | Delete it. Start fresh from tests. |\n| \"Need to explore first\" | Fine. Throw away the exploration. | Restart with TDD. |\n| \"Test is hard = design unclear\" | Listen to the test. Hard to test = hard to use. | Simplify the interface, then test. |\n| \"TDD will slow me down\" | TDD is faster than debugging. Pragmatic = test-first. | Write the test first. |\n| Code written before any test | No failing test gated it. | Delete the code. Start over. |\n| Test passes on first run | It tests existing behavior, not the new one. | Fix the test so it fails first. |\n| Can't explain why the test failed | You didn't watch it fail for the right reason. | Re-run; confirm the failure is the missing feature. |\n| Rationalizing \"just this once\" | That's the rationalization the Iron Law forbids. | Stop. Follow the law. |\n\n## Verification Checklist\n\nBefore marking work complete:\n\n- [ ] Every new function\u002Fmethod has a test\n- [ ] Watched each test fail before implementing\n- [ ] Each test failed for expected reason (feature missing, not typo)\n- [ ] Wrote minimal code to pass each test\n- [ ] All tests pass\n- [ ] Output pristine (no errors, warnings)\n- [ ] Tests use real code (mocks only if unavoidable)\n- [ ] Edge cases and errors covered\n\nCan't check all boxes? You skipped TDD. Start over.\n\n## Worked examples\n\nFull RED→GREEN→REFACTOR walkthroughs (a model `__str__` and a DRF endpoint with\nRBAC), with the real `docker exec ... pytest` commands and the 85% gate, live in\n[`reference\u002Fworked-examples.md`](reference\u002Fworked-examples.md).\n\n## When Stuck\n\n| Problem | Solution |\n|---------|----------|\n| Don't know how to test | Write wished-for API. Write assertion first. Ask your human partner. |\n| Test too complicated | Design too complicated. Simplify interface. |\n| Must mock everything | Code too coupled. Use dependency injection. |\n| Test setup huge | Extract helpers. Still complex? Simplify design. |\n\n## Final Rule\n\n```\nProduction code → test exists and failed first\nOtherwise → not TDD\n```\n\nNo exceptions without your human partner's permission.\n","# Test-Driven Development (TDD)\n\n## Overview\n\nWrite the test first. Watch it fail. Write minimal code to pass.\n\n**Core principle:** If you didn't watch the test fail, you don't know if it tests the right thing.\n\n**Violating the letter of the rules is violating the spirit of the rules.**\n\n## When to Use\n\n**Always:**\n- New features\n- Bug fixes\n- Refactoring\n- Behavior changes\n\n**Exceptions (ask your human partner):**\n- Throwaway prototypes\n- Generated code\n- Configuration files\n\nThinking \"skip TDD just this once\"? Stop. That's rationalization.\n\n## The Iron Law\n\n```\nNO PRODUCTION CODE WITHOUT A FAILING TEST FIRST\n```\n\nWrite code before the test? Delete it. Start over.\n\n**No exceptions:**\n- Don't keep it as \"reference\"\n- Don't \"adapt\" it while writing tests\n- Don't look at it\n- Delete means delete\n\nImplement fresh from tests. Period.\n\n## Red-Green-Refactor\n\n### RED - Write Failing Test\n\nWrite one minimal test showing what should happen. Use `APITestCase` for\nendpoints, `TestCase` for models\u002Fservices, and the factories in\n`apps\u002Fcore\u002Ftests\u002Ffactories.py` (`force_authenticate` to seed the actor).\n\n**Good:**\n```python\ndef test_non_dat_user_is_forbidden(self):\n    user = UsuarioFactory()  # no DAT group\n    self.client.force_authenticate(user=user)\n    resp = self.client.get(reverse(\"core:dat-registro-list\"))\n    self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)\n```\nClear name, tests real behavior through the URL, one thing. Asserts the `403`\nstatus (the contract) — not the response body shape.\n\n**Bad:**\n```python\ndef test_access(self):\n    user = UsuarioFactory()\n    view = DATRegistroViewSet()\n    view.request = Mock(user=user)\n    self.assertFalse(view.get_permissions()[0].has_permission(view.request, view))\n```\nVague name, pokes a mocked view internal instead of the real request\u002FRBAC path.\n\n**Requirements:**\n- One behavior\n- Clear name\n- Real code through the URL\u002FORM (no mocks unless unavoidable)\n\n### Verify RED - Watch It Fail\n\n**MANDATORY. Never skip.** Tests run inside the dev container (CP-01):\n\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_dat_registros.py -v\n```\n\nConfirm:\n- Test fails (not errors)\n- Failure message is expected\n- Fails because feature missing (not typos)\n\n**Test passes?** You're testing existing behavior. Fix test.\n**Test errors?** Fix error, re-run until it fails correctly.\n\n### GREEN - Minimal Code\n\nWrite simplest code to pass the test.\n\n**Good:**\n```python\nclass DATRegistroViewSet(viewsets.ModelViewSet):\n    permission_classes = [HasPerm(\"manage_admin_registries\")]\n    # ...\n```\nJust enough for the `403` test to pass — RBAC via the canonical `HasPerm`.\n\n**Bad:**\n```python\nclass DATRegistroViewSet(viewsets.ModelViewSet):\n    def get_permissions(self):\n        if self.action == \"list\" and self.request.query_params.get(\"export\"):\n            return [HasPerm(\"export_datregistro\")]\n        # ... branches the test never asked for — YAGNI\n```\n\nDon't add features, refactor other code, or \"improve\" beyond the test.\n\n### Verify GREEN - Watch It Pass\n\n**MANDATORY.**\n\n```bash\ndocker exec aprender_dev-web-1 pytest apps\u002Fcore\u002Ftests\u002Ftest_dat_registros.py -v\n```\n\nConfirm:\n- Test passes\n- Other tests still pass\n- Output pristine (no errors, warnings)\n- Coverage holds the 85% gate (`fail_under = 85` in `v2\u002Fbackend\u002Fpytest.ini`)\n\n**Test fails?** Fix code, not test.\n**Other tests fail?** Fix now.\n\n### REFACTOR - Clean Up\n\nAfter green only:\n- Remove duplication\n- Improve names\n- Extract helpers\n\nKeep tests green. Don't add behavior.\n\n### Repeat\n\nNext failing test for next feature.\n\n## Rationalizations and Red Flags — STOP\n\nAny row below means: stop, delete the untested code, start over with TDD.\n\n| Excuse \u002F Red flag | Reality | Action |\n|-------------------|---------|--------|\n| \"Too simple to test\" | Simple code breaks. Test takes 30 seconds. | Write the test. |\n| \"I'll test after\" \u002F \"tests added later\" | A test passing immediately proves nothing. | Write the test first. |\n| \"Tests after achieve the same goal\" | Tests-after = \"what does this do?\" Tests-first = \"what should this do?\" | Write the test first. |\n| \"Already manually tested it\" | Ad-hoc ≠ systematic. No record, can't re-run. | Write the test. |\n| \"Deleting X hours is wasteful\" | Sunk cost fallacy. Unverified code is technical debt. | Delete it. Start over. |\n| \"Keep as reference \u002F adapt existing code\" | You'll adapt it — that's testing after. Delete means delete. | Delete it. Start fresh from tests. |\n| \"Need to explore first\" | Fine. Throw away the exploration. | Restart with TDD. |\n| \"Test is hard = design unclear\" | Listen to the test. Hard to test = hard to use. | Simplify the interface, then test. |\n| \"TDD will slow me down\" | TDD is faster than debugging. Pragmatic = test-first. | Write the test first. |\n| Code written before any test | No failing test gated it. | Delete the code. Start over. |\n| Test passes on first run | It tests existing behavior, not the new one. | Fix the test so it fails first. |\n| Can't explain why the test failed | You didn't watch it fail for the right reason. | Re-run; confirm the failure is the missing feature. |\n| Rationalizing \"just this once\" | That's the rationalization the Iron Law forbids. | Stop. Follow the law. |\n\n## Verification Checklist\n\nBefore marking work complete:\n\n- [ ] Every new function\u002Fmethod has a test\n- [ ] Watched each test fail before implementing\n- [ ] Each test failed for expected reason (feature missing, not typo)\n- [ ] Wrote minimal code to pass each test\n- [ ] All tests pass\n- [ ] Output pristine (no errors, warnings)\n- [ ] Tests use real code (mocks only if unavoidable)\n- [ ] Edge cases and errors covered\n\nCan't check all boxes? You skipped TDD. Start over.\n\n## Worked examples\n\nFull RED→GREEN→REFACTOR walkthroughs (a model `__str__` and a DRF endpoint with\nRBAC), with the real `docker exec ... pytest` commands and the 85% gate, live in\n[`reference\u002Fworked-examples.md`](reference\u002Fworked-examples.md).\n\n## When Stuck\n\n| Problem | Solution |\n|---------|----------|\n| Don't know how to test | Write wished-for API. Write assertion first. Ask your human partner. |\n| Test too complicated | Design too complicated. Simplify interface. |\n| Must mock everything | Code too coupled. Use dependency injection. |\n| Test setup huge | Extract helpers. Still complex? Simplify design. |\n\n## Final Rule\n\n```\nProduction code → test exists and failed first\nOtherwise → not TDD\n```\n\nNo exceptions without your human partner's permission.\n",{"name":5,"description":7},"main","9e3a882d83e0853bdc570ae9d89c02d2a53bed82",".agents\u002Fskills\u002Ftest-driven-development","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa","Dev Python | IA | Automation | HTML | CSS | Data | Process | Projects","2026-11-11 08:34:26",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add matheusnorjosa\u002Faprender_sistema --skill test-driven-development",{"tool":60,"command":61},"bunx","bunx skills add matheusnorjosa\u002Faprender_sistema --skill test-driven-development",{"tool":63,"command":64},"pnpm","pnpm dlx skills add matheusnorjosa\u002Faprender_sistema --skill test-driven-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",true,[68,74],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"reference\u002Fworked-examples.md","REFERENCE","参考文档",2935,"https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftest-driven-development\u002Freference\u002Fworked-examples.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"testing-anti-patterns.md",5518,"https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftest-driven-development\u002Ftesting-anti-patterns.md",[79,113,134,140,152,184],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":93,"publishedAt":42},"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",[85,88],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[94,95,96,97,98,99,100,101,102,103,104,39,105,106,107,108,32,109,110,111,112,29],"writing","writing standards","standards","python","commit","pr","pr description","commit message","doc","voice","clarity","technical","README","message","active","error","technical-writing","brevity","docstring",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":42},"01M6C0WG2SBP9PJG1YQFGGVJAR","verification-gate","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.","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fverification-gate\u002FSKILL.md",[],[120,121,122,123,124,125,126,37,127,128,129,33,130,131,132,133,30,29],"verification","verification gate","gate","run","first","verify","command","verify before claiming","say","done","proof","bugfix","output","about",{"skillNo":135,"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":136,"categories":137,"keywords":139,"publishedAt":42},"01M6C0WE010G12KH45YZW6M7K5","https:\u002F\u002Fgithub.com\u002Fmatheusnorjosa\u002Faprender_sistema\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[138],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[26,24,25,27,41,40,39,38,37,36,35,34,33,32,31,30,29,28],{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":42},"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",[],[25,147,148,149,150,37,151,32],"subagent","subagent development","para","subagents","ao",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":42},"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",[],[159,160,161,162,163,41,164,165,166,167,168,169,170,171,172,173,174,175,37,176,177,178,32,179,180,181,182,183,29],"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":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":193,"publishedAt":42},"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",[190],{"categoryNo":191,"categoryName":192,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000038","人力资源",[194,195,196,197,198,199,200,201,202,37,203,204,205,206,207,208,209,210,29,211],"handoff","resume handoff","resume","github","state","new session","work","context","session","github issue","issue","document","clear","name","saved","codebase","resuming","new"]