[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DFG2D4RREDME76X82P89FS":3,"skill-same:01M7DFG2D4RREDME76X82P89FS":82},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7DFG2D4RREDME76X82P89FS","sample-skill",null,"Checks sample modules for Pocket Arcade. Use when writing or reviewing a sample module. Not for naming (other-skill).","zakariaf\u002Fpocket-arcade","zakariaf","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2259803?v=4","01M7DEF0YMPS6Y6RQ4WGA0JH9R","Zakaria Fatahi","01M7DEF0ZN5WYWJT595FWW1A0Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: sample-skill\ndescription: Checks sample modules for Pocket Arcade. Use when writing or reviewing a sample module. Not for naming (other-skill).\n---\n\n# Sample skill\n\nKeeps sample modules pure and proves it with a checker.\n\n## Rules that must hold\n\n1. Named exports only, because renames break search.\n2. **No clock in rules.**\n\n## Workflow\n\n1. Read [references\u002Fguide.md](references\u002Fguide.md) before writing the module.\n2. Copy `templates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts` and replace `__GAME_ID__` with the game id; compare with [examples\u002Fworked.md](examples\u002Fworked.md).\n3. Run `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-sample.mjs .` and fix every FAIL line.\n\n## Definition of done\n\n- [ ] The module has named exports only.\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-sample.mjs .` prints `RESULT: PASS`\n\n## Anti-patterns\n\n- **Silencing the checker.** Fix the module instead; the check exists because the mistake is easy to make.\n\n## Files in this skill\n\n| File | What it is | Read\u002Frun when |\n|---|---|---|\n| [references\u002Fguide.md](references\u002Fguide.md) | The rules and a worked example | Workflow step 1 |\n| [examples\u002Fworked.md](examples\u002Fworked.md) | A finished module | Workflow step 2 |\n| `templates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts` | The module template | Workflow step 2 |\n| `scripts\u002Fcheck-sample.mjs` | The checker | Workflow step 3 |\n| `scripts\u002Fselftest.mjs` | Proves the checker | After changing it |\n| `tests\u002Ffixtures\u002F` | Self-test inputs | When adding a rule |\n\n## Related skills\n\n- `other-skill` - naming files and exports.\n","# Sample skill\n\nKeeps sample modules pure and proves it with a checker.\n\n## Rules that must hold\n\n1. Named exports only, because renames break search.\n2. **No clock in rules.**\n\n## Workflow\n\n1. Read [references\u002Fguide.md](references\u002Fguide.md) before writing the module.\n2. Copy `templates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts` and replace `__GAME_ID__` with the game id; compare with [examples\u002Fworked.md](examples\u002Fworked.md).\n3. Run `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-sample.mjs .` and fix every FAIL line.\n\n## Definition of done\n\n- [ ] The module has named exports only.\n- [ ] `node ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcheck-sample.mjs .` prints `RESULT: PASS`\n\n## Anti-patterns\n\n- **Silencing the checker.** Fix the module instead; the check exists because the mistake is easy to make.\n\n## Files in this skill\n\n| File | What it is | Read\u002Frun when |\n|---|---|---|\n| [references\u002Fguide.md](references\u002Fguide.md) | The rules and a worked example | Workflow step 1 |\n| [examples\u002Fworked.md](examples\u002Fworked.md) | A finished module | Workflow step 2 |\n| `templates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts` | The module template | Workflow step 2 |\n| `scripts\u002Fcheck-sample.mjs` | The checker | Workflow step 3 |\n| `scripts\u002Fselftest.mjs` | Proves the checker | After changing it |\n| `tests\u002Ffixtures\u002F` | Self-test inputs | When adding a rule |\n\n## Related skills\n\n- `other-skill` - naming files and exports.\n",{"name":5,"description":7},"main","5d711936a7299f9bb0c0132bfe99d3b43cfbfb48","skills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade","https:\u002F\u002Fgithub.com\u002Fzakariaf","https:\u002F\u002Fzakaria.dev","Seniore Software Engineer","2026-11-05 04:56:14",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add zakariaf\u002Fpocket-arcade --skill sample-skill",{"tool":38,"command":39},"bunx","bunx skills add zakariaf\u002Fpocket-arcade --skill sample-skill",{"tool":41,"command":42},"pnpm","pnpm dlx skills add zakariaf\u002Fpocket-arcade --skill sample-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002FSKILL.md",true,[46,52,56,62,66,70,74,78],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"examples\u002Fworked.md","REFERENCE","参考文档",56,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Fexamples\u002Fworked.md",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002Fguide.md",60,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Freferences\u002Fguide.md",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"scripts\u002Fcheck-sample.mjs","SCRIPT","脚本",129,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Fscripts\u002Fcheck-sample.mjs",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"scripts\u002Fselftest.mjs",171,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Fscripts\u002Fselftest.mjs",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"templates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts",107,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Ftemplates\u002Fapps\u002F__GAME_ID__\u002Fsample.ts",{"path":71,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":72,"sourceHtmlUrl":73},"tests\u002Ffixtures\u002Fbad-default\u002FEXPECT.txt",31,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Ftests\u002Ffixtures\u002Fbad-default\u002FEXPECT.txt",{"path":75,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":76,"sourceHtmlUrl":77},"tests\u002Ffixtures\u002Fbad-default\u002Fsrc\u002Fa.ts",18,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Ftests\u002Ffixtures\u002Fbad-default\u002Fsrc\u002Fa.ts",{"path":79,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":80,"sourceHtmlUrl":81},"tests\u002Ffixtures\u002Fgood\u002Fsrc\u002Fa.ts",20,"https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Fskill-maintenance\u002Ftests\u002Ffixtures\u002Fcheck-skill\u002Fbad-rules\u002Fskills\u002Fsample-skill\u002Ftests\u002Ffixtures\u002Fgood\u002Fsrc\u002Fa.ts",[83,90,97,104,109,116],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":19},"01M7DFK8QE5P9TME3GRJC5716K","unit-and-component-tests","Sets up Jest and writes Pocket Arcade test code - three projects, RNTL 14 async via renderWithShell, root SDK mocks, fakes, fast-check, coverage, Stryker. Use when a test needs the Shell wrapper, a mock or a fake, or Jest fails. Not for the red-green loop (tdd-workflow) or goldens (golden-tests).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Funit-and-component-tests\u002FSKILL.md",[],[],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":19},"01M7DFK0YRGRX0S7FB79KSKK7F","typescript-and-lint-rules","Enforces Pocket Arcade's strict TypeScript 6 tsconfigs, ESLint 9 flat config, Prettier and size limits. Use when writing or splitting .ts\u002F.tsx or fixing a tsc or lint error. Not for gate wiring (quality-gates), names (naming-conventions) or import zones (architecture-and-boundaries).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-and-lint-rules\u002FSKILL.md",[],[],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":19},"01M7DFJZB14VQ3F8A6A5G8D5BY","demo-skill","Builds a demo. Use when testing the pitfall checker.","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002Ftests\u002Ffixtures\u002Fcheck-known-pitfalls\u002Fgood\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[],[],{"skillNo":105,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":19},"01M7DFJXMSA9Y9K6DF4CJJ2XPZ","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002Ftests\u002Ffixtures\u002Fcheck-known-pitfalls\u002Fbad-configs\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[],[],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":19},"01M7DFJKZXFJ7403V3YNE83MBS","troubleshooting-playbook","Diagnoses and fixes Pocket Arcade failures with a catalogue of 300+ known ones (symptom, cause, fix). Use when something errors, crashes, hangs or renders wrong, or an error or log needs explaining. Not for gate setup (quality-gates) or running builds (ios-simulator-build, ios-release-testflight).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftroubleshooting-playbook\u002FSKILL.md",[],[],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":19},"01M7DFJ7FGGWGMV63YW4VT4QPX","toybox-visual-parity","Proves a built Pocket Arcade screen matches its Toybox design screenshot (light\u002Fdark, en\u002Ffa) and drives the fixes: capture, element gates, sheets, sign-off. Use when any screen is built or changed, or for visual parity, design match, screenshot compare. Not for building screens (toybox-screens).","https:\u002F\u002Fgithub.com\u002Fzakariaf\u002Fpocket-arcade\u002Fblob\u002Fmain\u002Fskills\u002Ftoybox-visual-parity\u002FSKILL.md",[],[]]