[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70P0D5KCXBBM0PDWDRV6HWN":3,"skill-same:01M70P0D5KCXBBM0PDWDRV6HWN":70},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M70P0D5KCXBBM0PDWDRV6HWN","testing",null,"Use when writing test specs for NL artifacts, running \u002Fnlpm:test, or setting up TDD workflows for skills, agents, commands, rules, hooks, and prompts.","shengdabai\u002FTony-Claude-Code-Skills","shengdabai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F116417419?v=4","01M70F6D2WY5PQV5A92BKYJQEW","Tony Sheng","01M70F6D3GAAAYZ5H4CC1G8VXM",3,"MIT","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Ftesting\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"workflows","nl","tdd workflows","prompts","commands","tdd","test","artifacts","when","Rules","use","writing","up","hooks","for","running","2026-11-10 10:12:30",false,"---\nname: testing\ndescription: \"Use when writing test specs for NL artifacts, running \u002Fnlpm:test, or setting up TDD workflows for skills, agents, commands, rules, hooks, and prompts.\"\nversion: 0.1.0\n---\n\n## The NL-TDD Cycle\n\n```\n1. Write spec (.nlpm-test\u002Fartifact-name.spec.md)     — define expectations\n2. \u002Fnlpm:test                                         — RED: spec fails (artifact doesn't exist)\n3. Write the artifact                                 — create the NL artifact\n4. \u002Fnlpm:test                                         — check if it passes\n5. \u002Fnlpm:score                                        — check quality score\n6. Iterate until GREEN: all specs pass + score ≥ threshold\n```\n\n## Spec File Format\n\nLocation: `.nlpm-test\u002F` directory in the project root (or alongside the artifact).\n\nFilename convention: `\u003Cartifact-name>.spec.md` — matches the artifact filename without path.\n\n```yaml\n---\nartifact: agents\u002Fmy-agent.md          # path to the artifact being tested\ntype: agent                           # agent | skill | command | rule | hook | prompt\nmin_score: 85                         # minimum \u002Fnlpm:score threshold for this artifact\n---\n```\n\nBody sections (all optional — include what matters for this artifact):\n\n### triggers_on (skills and agents)\n\n```markdown\n## Triggers On\n\nQueries that SHOULD trigger this artifact:\n\n- \"review my database migrations before deploying\"\n- \"check if these schema changes are safe\"\n- \"audit the migration for breaking changes\"\n```\n\n### does_not_trigger_on (skills and agents)\n\n```markdown\n## Does Not Trigger On\n\nQueries that should NOT trigger this artifact:\n\n- \"write a migration for adding a users table\"\n- \"help me with CSS styling\"\n- \"deploy to production\"\n```\n\n### output_contains (agents and commands)\n\n```markdown\n## Output Contains\n\nExpected elements in the output:\n\n- \"## Migration Review\" (heading present)\n- \"| Table | Change | Risk |\" (table structure)\n- severity classification (CRITICAL\u002FHIGH\u002FMEDIUM\u002FLOW)\n```\n\n### output_format (agents and commands)\n\n```markdown\n## Output Format\n\nThe output should be a markdown report with:\n1. Summary section with counts\n2. Findings table with columns: File, Issue, Severity\n3. Action items list\n```\n\n### handles_input (commands)\n\n```markdown\n## Handles Input\n\n| Input | Expected Behavior |\n|-------|------------------|\n| (empty) | Score all artifacts in cwd |\n| directory path | Score artifacts in that directory |\n| nonexistent path | Error: \"Directory not found: {path}\" |\n| file path | Score that single file |\n```\n\n### follows_rules (rules)\n\n```markdown\n## Follows Rules\n\nCode that SHOULD comply:\n```python\nresult: Result[User, AppError] = get_user(id)\n```\n\nCode that SHOULD violate:\n```python\nuser = get_user(id).unwrap()  # should be flagged\n```\n```\n\n### frontmatter_valid (all types)\n\n```markdown\n## Frontmatter Valid\n\nRequired fields:\n- description: present and trigger-style (\"Use when...\")\n- model: sonnet\n- tools: [Read, Glob, Grep]\n- skills: [nlpm:conventions, nlpm:scoring]\n```\n\n## Test Results Format\n\n```\nNLPM Test Report\n\nSpec                              Artifact                    Result   Details\n─────────────────────────────────────────────────────────────────────────────────\nmy-agent.spec.md                  agents\u002Fmy-agent.md          PASS     5\u002F5 checks\nmy-skill.spec.md                  skills\u002Fcore\u002FSKILL.md        FAIL     3\u002F5 checks\n  ✗ Trigger: \"optimize React hooks\" → predicted NO trigger (expected YES)\n  ✗ Score: 68\u002F100 (min: 85)\n\nOverall: 1 passed, 1 failed (50%)\n\nRED items (fix these):\n  1. skills\u002Fcore\u002FSKILL.md — trigger gap: \"optimize React hooks\" not covered by description\n  2. skills\u002Fcore\u002FSKILL.md — score 68 \u003C min 85: missing \u003Cexample> blocks (-15)\n```\n\n## Best Practices for Specs\n\n- Write specs BEFORE writing the artifact (TDD discipline)\n- 5-10 trigger queries for skills\u002Fagents (mix positive and negative)\n- Include edge cases in `handles_input` for commands\n- `min_score` should match your project's threshold (default 85 for new artifacts, 70 for legacy)\n- Specs are living documents — update when behavior requirements change\n\n## Spec File Discovery\n\nThe tester discovers specs by:\n1. Looking in `.nlpm-test\u002F` directory\n2. Matching spec filename to artifact filename: `my-agent.spec.md` → `agents\u002Fmy-agent.md` (uses the `artifact:` frontmatter field)\n3. If `artifact` path doesn't exist → spec is RED by default (artifact not yet created — this is the TDD \"write test first\" state)\n","## The NL-TDD Cycle\n\n```\n1. Write spec (.nlpm-test\u002Fartifact-name.spec.md)     — define expectations\n2. \u002Fnlpm:test                                         — RED: spec fails (artifact doesn't exist)\n3. Write the artifact                                 — create the NL artifact\n4. \u002Fnlpm:test                                         — check if it passes\n5. \u002Fnlpm:score                                        — check quality score\n6. Iterate until GREEN: all specs pass + score ≥ threshold\n```\n\n## Spec File Format\n\nLocation: `.nlpm-test\u002F` directory in the project root (or alongside the artifact).\n\nFilename convention: `\u003Cartifact-name>.spec.md` — matches the artifact filename without path.\n\n```yaml\n---\nartifact: agents\u002Fmy-agent.md          # path to the artifact being tested\ntype: agent                           # agent | skill | command | rule | hook | prompt\nmin_score: 85                         # minimum \u002Fnlpm:score threshold for this artifact\n---\n```\n\nBody sections (all optional — include what matters for this artifact):\n\n### triggers_on (skills and agents)\n\n```markdown\n## Triggers On\n\nQueries that SHOULD trigger this artifact:\n\n- \"review my database migrations before deploying\"\n- \"check if these schema changes are safe\"\n- \"audit the migration for breaking changes\"\n```\n\n### does_not_trigger_on (skills and agents)\n\n```markdown\n## Does Not Trigger On\n\nQueries that should NOT trigger this artifact:\n\n- \"write a migration for adding a users table\"\n- \"help me with CSS styling\"\n- \"deploy to production\"\n```\n\n### output_contains (agents and commands)\n\n```markdown\n## Output Contains\n\nExpected elements in the output:\n\n- \"## Migration Review\" (heading present)\n- \"| Table | Change | Risk |\" (table structure)\n- severity classification (CRITICAL\u002FHIGH\u002FMEDIUM\u002FLOW)\n```\n\n### output_format (agents and commands)\n\n```markdown\n## Output Format\n\nThe output should be a markdown report with:\n1. Summary section with counts\n2. Findings table with columns: File, Issue, Severity\n3. Action items list\n```\n\n### handles_input (commands)\n\n```markdown\n## Handles Input\n\n| Input | Expected Behavior |\n|-------|------------------|\n| (empty) | Score all artifacts in cwd |\n| directory path | Score artifacts in that directory |\n| nonexistent path | Error: \"Directory not found: {path}\" |\n| file path | Score that single file |\n```\n\n### follows_rules (rules)\n\n```markdown\n## Follows Rules\n\nCode that SHOULD comply:\n```python\nresult: Result[User, AppError] = get_user(id)\n```\n\nCode that SHOULD violate:\n```python\nuser = get_user(id).unwrap()  # should be flagged\n```\n```\n\n### frontmatter_valid (all types)\n\n```markdown\n## Frontmatter Valid\n\nRequired fields:\n- description: present and trigger-style (\"Use when...\")\n- model: sonnet\n- tools: [Read, Glob, Grep]\n- skills: [nlpm:conventions, nlpm:scoring]\n```\n\n## Test Results Format\n\n```\nNLPM Test Report\n\nSpec                              Artifact                    Result   Details\n─────────────────────────────────────────────────────────────────────────────────\nmy-agent.spec.md                  agents\u002Fmy-agent.md          PASS     5\u002F5 checks\nmy-skill.spec.md                  skills\u002Fcore\u002FSKILL.md        FAIL     3\u002F5 checks\n  ✗ Trigger: \"optimize React hooks\" → predicted NO trigger (expected YES)\n  ✗ Score: 68\u002F100 (min: 85)\n\nOverall: 1 passed, 1 failed (50%)\n\nRED items (fix these):\n  1. skills\u002Fcore\u002FSKILL.md — trigger gap: \"optimize React hooks\" not covered by description\n  2. skills\u002Fcore\u002FSKILL.md — score 68 \u003C min 85: missing \u003Cexample> blocks (-15)\n```\n\n## Best Practices for Specs\n\n- Write specs BEFORE writing the artifact (TDD discipline)\n- 5-10 trigger queries for skills\u002Fagents (mix positive and negative)\n- Include edge cases in `handles_input` for commands\n- `min_score` should match your project's threshold (default 85 for new artifacts, 70 for legacy)\n- Specs are living documents — update when behavior requirements change\n\n## Spec File Discovery\n\nThe tester discovers specs by:\n1. Looking in `.nlpm-test\u002F` directory\n2. Matching spec filename to artifact filename: `my-agent.spec.md` → `agents\u002Fmy-agent.md` (uses the `artifact:` frontmatter field)\n3. If `artifact` path doesn't exist → spec is RED by default (artifact not yet created — this is the TDD \"write test first\" state)\n",{"name":5,"version":45,"description":7},"0.1.0","main","7850740bd837adb32f0a109ab2af82482196c6f2","skills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Ftesting",1,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills","https:\u002F\u002Fzturnsgo.com","https:\u002F\u002Fgithub.com\u002Fshengdabai","https:\u002F\u002Fzturnsgo.com\u002F","AI × education creator — producer, not consumer. Taught 6,000+ learners; shipping learning tools & daily essays with Claude Code, practicing @xiaolai's way 🥋","2026-11-01 21:28:23",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add shengdabai\u002FTony-Claude-Code-Skills --skill testing",{"tool":62,"command":63},"bunx","bunx skills add shengdabai\u002FTony-Claude-Code-Skills --skill testing",{"tool":65,"command":66},"pnpm","pnpm dlx skills add shengdabai\u002FTony-Claude-Code-Skills --skill testing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Ftesting\u002FSKILL.md",true,[],[71,87,121,146,168,188],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":80,"publishedAt":40},"01M70P17DAD4C1C47NPH6A96EM","xiaolai-methodology","以李笑来(Li Xiaolai)的思考方式、方法论与表达风格,为用户做全方位 1-on-1 教练指导,覆盖创业、赚钱、投资、学习、自学、读书写作、用 AI、以及人生心态与自我管理。当用户提到 \"李笑来\"、\"笑来\"、\"笑来老师\"、\"扮演李笑来\"、\"找笑来聊聊\"、\"笑来怎么看\"、\"xiaolai\"、\"把时间当作朋友\"、\"通往财富自由之路\"、\"定投改变命运\"、\"韭菜的自我修养\"、\"自学是门手艺\"、\"让时间陪你慢慢变富\"、\"七年就是一辈子\"、\"元认知\"、\"活在未来\"、\"复利\u002F长期主义\"、\"践行\"、\"痴迷改进\"、\"个人商业模式\u002F出售时间\"、\"睡后收入\"、\"定投\"、\"财富自由\"、\"操作系统升级\"、\"最少必要知识\"、\"北极星提示词\"、\"用 AI 该怎么学\u002F思考\" 等任一触发词,或当用户带着关于创业\u002F赚钱\u002F投资\u002F学习\u002F职业\u002F重大人生决策的困惑、希望被人用笑来式的「逻辑 + 大白话 + 类比 + 重新定义 + 践行导向」来点醒和指导时,自动进入李笑来教练模式。","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fxiaolai-methodology\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",[81,82,83,84,85,35,86],"methodology","xiaolai","xiaolai methodology","朋友","投资","收入",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":101,"publishedAt":40},"01M70P13NB9YP7ACJR1S861CDS","zread","Produce and consume a wiki-style knowledge base for a code repository via the `zread` CLI and its on-disk output under `.\u002F.zread\u002Fwiki\u002F`. Use this skill whenever the user wants to understand, onboard onto, explore, summarize, map, or get an overview of an unfamiliar codebase; asks for architecture docs, a project wiki, a repo walkthrough, module\u002Fpackage explanations, or \"what does this repo do\"; wants to generate, regenerate, resume, browse, or serve code documentation locally; or mentions zread \u002F zread.ai directly. Also use it proactively before diving into a large unknown repo — if `.\u002F.zread\u002Fwiki\u002Fcurrent` exists, read the generated pages instead of crawling source file-by-file; if it doesn't, consider offering to run `zread generate`. The trigger is the intent (understand a codebase through generated docs), not the literal word \"zread\".","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fzread\u002FSKILL.md",[93,96],{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[89,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120],"knowledge","wiki","explore","walkthrough","project","get","knowledge base","run","generate","intent","cli","map","documentation","project wiki","disk","architecture","code","unknown","generated",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":131,"publishedAt":40},"01M70P10S4SWMZQ8BJAFBFDRW3","youtube","Launch the YouTube Creator Agent to auto-generate videos.\nUse when: user types \u002Fyoutube, wants to create YouTube videos,\ngenerate video content, or upload to YouTube.\nKeywords: youtube, video, 视频, 创作视频, 发布视频","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube\u002FSKILL.md",[127,128],{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":129,"categoryName":130,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000036","内容创作者",[123,132,133,134,135,136,137,138,110,139,140,141,32,34,142,143,144,145],"user","content","视频","creator","generate video","videos","launch","video content","create","upload","auto","types","Video","创作",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":40},"01M70P0YE95D8BACZCGV8BK90K","youtube-script-sync","Sync, update, or optimize Tony's GetNote knowledge base `Youtube视频逐字稿` by turning each parent recording or first-person idea note into an idempotent child note containing a directly recordable YouTube long-video or Shorts script. Use when the user says “更新\u002F同步\u002F优化 Youtube视频逐字稿知识库”, or says “更新\u002F同步\u002F优化该知识库” while this knowledge base is the active context.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-script-sync\u002FSKILL.md",[152],{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},[154,155,123,156,157,144,158,159,160,161,162,163,164,165,108,166,32,34,102,167],"sync","script","youtube script sync","recording","shorts","first","base","person","update","active","child","optimize","idempotent","long",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":178,"publishedAt":40},"01M70P0WMV5XT0EEC0N445PW07","writing-skills","How to write SKILL.md files that trigger reliably and teach effectively. Use when creating, improving, or reviewing Claude Code skills.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-skills\u002FSKILL.md",[174,175,176,177],{"categoryNo":78,"categoryName":79,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":129,"categoryName":130,"taxonomyType":99,"taxonomyTypeDesc":100},[179,35,180,181,182,183,118,32,34,184,185,186,187],"writing skills","how","teach","write skill","write","claude code skills","files","how to","trigger",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":196,"publishedAt":40},"01M70P0SJFR4YVJQBGMHKGSKXT","writing-rules","How to write .claude\u002Frules\u002F files that Claude actually follows. Use when creating, improving, or reviewing project rules.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-rules\u002FSKILL.md",[194,195],{"categoryNo":78,"categoryName":79,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":129,"categoryName":130,"taxonomyType":99,"taxonomyTypeDesc":100},[33,35,197,106,198,185,32,180,183,34,186],"writing rules","project rules"]