[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BV7MA07BCNJGW3R95H0PG4":3,"skill-same:01M6BV7MA07BCNJGW3R95H0PG4":66},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":14,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6BV7MA07BCNJGW3R95H0PG4","scaffold-exercises",null,"Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.","bnferguson\u002Fdotfiles","bnferguson","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47749?v=4","01M6BV4H2TJKK8P14W86V1ZCPP","Brandon Ferguson","01M6BV4H7GJWTZJ1BVHQ1TX11Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscaffold-exercises\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"scaffold","scaffold exercises","directory","create","SET","exercise","user","use","up","linting","with","course","section","when","solutions","new","2026-11-10 10:12:30",false,"---\nname: scaffold-exercises\ndescription: Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.\n---\n\n# Scaffold Exercises\n\nCreate exercise directory structures that pass `pnpm ai-hero-cli internal lint`, then commit with `git commit`.\n\n## Directory naming\n\n- **Sections**: `XX-section-name\u002F` inside `exercises\u002F` (e.g., `01-retrieval-skill-building`)\n- **Exercises**: `XX.YY-exercise-name\u002F` inside a section (e.g., `01.03-retrieval-with-bm25`)\n- Section number = `XX`, exercise number = `XX.YY`\n- Names are dash-case (lowercase, hyphens)\n\n## Exercise variants\n\nEach exercise needs at least one of these subfolders:\n\n- `problem\u002F` - student workspace with TODOs\n- `solution\u002F` - reference implementation\n- `explainer\u002F` - conceptual material, no TODOs\n\nWhen stubbing, default to `explainer\u002F` unless the plan specifies otherwise.\n\n## Required files\n\nEach subfolder (`problem\u002F`, `solution\u002F`, `explainer\u002F`) needs a `readme.md` that:\n\n- Is **not empty** (must have real content, even a single title line works)\n- Has no broken links\n\nWhen stubbing, create a minimal readme with a title and a description:\n\n```md\n# Exercise Title\n\nDescription here\n```\n\nIf the subfolder has code, it also needs a `main.ts` (>1 line). But for stubs, a readme-only exercise is fine.\n\n## Workflow\n\n1. **Parse the plan** - extract section names, exercise names, and variant types\n2. **Create directories** - `mkdir -p` for each path\n3. **Create stub readmes** - one `readme.md` per variant folder with a title\n4. **Run lint** - `pnpm ai-hero-cli internal lint` to validate\n5. **Fix any errors** - iterate until lint passes\n\n## Lint rules summary\n\nThe linter (`pnpm ai-hero-cli internal lint`) checks:\n\n- Each exercise has subfolders (`problem\u002F`, `solution\u002F`, `explainer\u002F`)\n- At least one of `problem\u002F`, `explainer\u002F`, or `explainer.1\u002F` exists\n- `readme.md` exists and is non-empty in the primary subfolder\n- No `.gitkeep` files\n- No `speaker-notes.md` files\n- No broken links in readmes\n- No `pnpm run exercise` commands in readmes\n- `main.ts` required per subfolder unless it's readme-only\n\n## Moving\u002Frenaming exercises\n\nWhen renumbering or moving exercises:\n\n1. Use `git mv` (not `mv`) to rename directories - preserves git history\n2. Update the numeric prefix to maintain order\n3. Re-run lint after moves\n\nExample:\n\n```bash\ngit mv exercises\u002F01-retrieval\u002F01.03-embeddings exercises\u002F01-retrieval\u002F01.04-embeddings\n```\n\n## Example: stubbing from a plan\n\nGiven a plan like:\n\n```\nSection 05: Memory Skill Building\n- 05.01 Introduction to Memory\n- 05.02 Short-term Memory (explainer + problem + solution)\n- 05.03 Long-term Memory\n```\n\nCreate:\n\n```bash\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.01-introduction-to-memory\u002Fexplainer\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002F{explainer,problem,solution}\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.03-long-term-memory\u002Fexplainer\n```\n\nThen create readme stubs:\n\n```\nexercises\u002F05-memory-skill-building\u002F05.01-introduction-to-memory\u002Fexplainer\u002Freadme.md -> \"# Introduction to Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fexplainer\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fproblem\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fsolution\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.03-long-term-memory\u002Fexplainer\u002Freadme.md -> \"# Long-term Memory\"\n```\n","# Scaffold Exercises\n\nCreate exercise directory structures that pass `pnpm ai-hero-cli internal lint`, then commit with `git commit`.\n\n## Directory naming\n\n- **Sections**: `XX-section-name\u002F` inside `exercises\u002F` (e.g., `01-retrieval-skill-building`)\n- **Exercises**: `XX.YY-exercise-name\u002F` inside a section (e.g., `01.03-retrieval-with-bm25`)\n- Section number = `XX`, exercise number = `XX.YY`\n- Names are dash-case (lowercase, hyphens)\n\n## Exercise variants\n\nEach exercise needs at least one of these subfolders:\n\n- `problem\u002F` - student workspace with TODOs\n- `solution\u002F` - reference implementation\n- `explainer\u002F` - conceptual material, no TODOs\n\nWhen stubbing, default to `explainer\u002F` unless the plan specifies otherwise.\n\n## Required files\n\nEach subfolder (`problem\u002F`, `solution\u002F`, `explainer\u002F`) needs a `readme.md` that:\n\n- Is **not empty** (must have real content, even a single title line works)\n- Has no broken links\n\nWhen stubbing, create a minimal readme with a title and a description:\n\n```md\n# Exercise Title\n\nDescription here\n```\n\nIf the subfolder has code, it also needs a `main.ts` (>1 line). But for stubs, a readme-only exercise is fine.\n\n## Workflow\n\n1. **Parse the plan** - extract section names, exercise names, and variant types\n2. **Create directories** - `mkdir -p` for each path\n3. **Create stub readmes** - one `readme.md` per variant folder with a title\n4. **Run lint** - `pnpm ai-hero-cli internal lint` to validate\n5. **Fix any errors** - iterate until lint passes\n\n## Lint rules summary\n\nThe linter (`pnpm ai-hero-cli internal lint`) checks:\n\n- Each exercise has subfolders (`problem\u002F`, `solution\u002F`, `explainer\u002F`)\n- At least one of `problem\u002F`, `explainer\u002F`, or `explainer.1\u002F` exists\n- `readme.md` exists and is non-empty in the primary subfolder\n- No `.gitkeep` files\n- No `speaker-notes.md` files\n- No broken links in readmes\n- No `pnpm run exercise` commands in readmes\n- `main.ts` required per subfolder unless it's readme-only\n\n## Moving\u002Frenaming exercises\n\nWhen renumbering or moving exercises:\n\n1. Use `git mv` (not `mv`) to rename directories - preserves git history\n2. Update the numeric prefix to maintain order\n3. Re-run lint after moves\n\nExample:\n\n```bash\ngit mv exercises\u002F01-retrieval\u002F01.03-embeddings exercises\u002F01-retrieval\u002F01.04-embeddings\n```\n\n## Example: stubbing from a plan\n\nGiven a plan like:\n\n```\nSection 05: Memory Skill Building\n- 05.01 Introduction to Memory\n- 05.02 Short-term Memory (explainer + problem + solution)\n- 05.03 Long-term Memory\n```\n\nCreate:\n\n```bash\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.01-introduction-to-memory\u002Fexplainer\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002F{explainer,problem,solution}\nmkdir -p exercises\u002F05-memory-skill-building\u002F05.03-long-term-memory\u002Fexplainer\n```\n\nThen create readme stubs:\n\n```\nexercises\u002F05-memory-skill-building\u002F05.01-introduction-to-memory\u002Fexplainer\u002Freadme.md -> \"# Introduction to Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fexplainer\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fproblem\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.02-short-term-memory\u002Fsolution\u002Freadme.md -> \"# Short-term Memory\"\nexercises\u002F05-memory-skill-building\u002F05.03-long-term-memory\u002Fexplainer\u002Freadme.md -> \"# Long-term Memory\"\n```\n",{"name":5,"description":7},"main","e63965e4644984470d4cc8b3014a8b001f0c2666",".agents\u002Fskills\u002Fscaffold-exercises","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fbnferguson","2026-11-11 03:04:59",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add bnferguson\u002Fdotfiles --skill scaffold-exercises",{"tool":52,"command":53},"bunx","bunx skills add bnferguson\u002Fdotfiles --skill scaffold-exercises",{"tool":55,"command":56},"pnpm","pnpm dlx skills add bnferguson\u002Fdotfiles --skill scaffold-exercises","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscaffold-exercises\u002FSKILL.md",true,[60],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"agents\u002Fopenai.yaml","REFERENCE","参考文档",108,"https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fscaffold-exercises\u002Fagents\u002Fopenai.yaml",[67,96,113,143,152,165],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":71,"licenseFileUrl":72,"sourceHtmlUrl":73,"categories":74,"keywords":80,"publishedAt":35},"01M6BVA3RS3M016FANZ6792F9H","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fconfig\u002Fskills\u002Fskill-creator\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[81,82,83,84,22,85,86,87,88,89,90,91,92,93,29,94,95,32,34],"creator","skill creator","specialized","workflows","update","capabilities","knowledge","tool","integrations","guide","new skill","existing skill","users","for","Existing",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":110,"publishedAt":35},"01M6BV94WN2RPYM8N6PN8TBNT8","writing-shape","Writing, exploit: shape raw material into an article, paragraph by paragraph.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwriting-shape\u002FSKILL.md",[102,105],{"categoryNo":103,"categoryName":104,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":106,"categoryName":107,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[111,112],"writing shape","writing",{"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":71,"licenseFileUrl":117,"sourceHtmlUrl":118,"categories":119,"keywords":126,"publishedAt":35},"01M6BV8QDFJ6PXBVK5NFBZT5M7","webapp-testing","Test local web applications using Playwright. Use when verifying frontend functionality, debugging UI behavior, capturing browser screenshots, or viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[120,123],{"categoryNo":121,"categoryName":122,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":124,"categoryName":125,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000009","前端开发",[127,128,129,130,131,132,133,134,135,136,137,138,139,140,26,141,142,32],"webapp","webapp testing","testing","browser","frontend","screenshots","playwright","test","web","debugging","ui","logs","applications","behavior","local","test local",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":35},"01M6BV8MDXKXNVHKS3QF3YDFTF","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[150,151],"wait what","land",{"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":161,"publishedAt":35},"01M6BV756DJHT5BDA1HVRVHJJ7","prototype","Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fprototype\u002FSKILL.md",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":108,"taxonomyTypeDesc":109},"01JBSEEDCAT000000000000032","设计师",[154,162,163,137,164],"design","explore","state",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":35},"01M6BV6SBW166685KVBPWM2K4N","improve-codebase-architecture","Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.","https:\u002F\u002Fgithub.com\u002Fbnferguson\u002Fdotfiles\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[171],{"categoryNo":124,"categoryName":125,"taxonomyType":78,"taxonomyTypeDesc":79},[173,174,175,176],"architecture","improve","improve codebase architecture","report"]