[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NQ2SWC2C0F01DV032HM0AR":3,"skill-same:01M6NQ2SWC2C0F01DV032HM0AR":71},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6NQ2SWC2C0F01DV032HM0AR","agent-skill-kit-discoverability-linter",null,"Score a SKILL.md description 0-100 for trigger quality, flag vague language, warn on vendor-specific frontmatter, and verify relative file references resolve. Use when the user asks to lint a skill, improve discoverability, score a description, or check why an agent never fires their skill.","carlosmarte\u002Fai-agent-artifacts","carlosmarte","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3478576?v=4","01M6NPRTEXZG86XJXMGQ05A24X","Carlos Marte","01M6NPRTK4A6A4Q8CMWMH1ZY7W",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fagent-skill-kit-discoverability-linter\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"agent skill kit discoverability linter","kit","discoverability","linter","agent skill","never","vague","for","trigger","app","references","cli","use","vendor","check","improve","why","verify","file","lint","2026-11-10 10:12:30",false,"---\nname: agent-skill-kit-discoverability-linter\ndescription: Score a SKILL.md description 0-100 for trigger quality, flag vague language, warn on vendor-specific frontmatter, and verify relative file references resolve. Use when the user asks to lint a skill, improve discoverability, score a description, or check why an agent never fires their skill.\ntier: app\nlicense: Apache-2.0\ncompatibility: requires `skills-ref` CLI\n---\n\n# Agent Skill Discoverability Linter\n\nWraps `skills-ref lint`. The first qualitative pass in the toolkit — beyond structural validation, it scores a description's likelihood of triggering the right agent activations.\n\n## When to use\n\n- \"Why doesn't my skill ever fire?\"\n- \"Improve this description\"\n- \"Score my SKILL.md descriptions\"\n- \"Lint my skill against vendor-neutrality\"\n\n## Sub-scores\n\n| Sub-score          | Weight | What it rewards                                                       |\n| ------------------ | ------ | --------------------------------------------------------------------- |\n| keyword density    | 25     | Description tokens that also appear in the body (semantic overlap).   |\n| action verbs       | 20     | First-token verb (12) + any-position verb (8) from action_verbs.txt.  |\n| trigger phrases    | 20     | Presence of `use when`, `when`, `if`, or `for`.                       |\n| specificity        | 20     | Avoidance of vague phrases (`helps with`, `general purpose`, etc.).   |\n| length sweet spot  | 15     | 60-300 chars; linear ramp on either side.                             |\n\nThe score is clamped to 100.\n\n## Issue codes emitted\n\n- `L001_VENDOR_SPECIFIC_FIELD` (warn) — top-level frontmatter key matches a vendor prefix (`claude-`, `cursor-`, `devin-`, etc.). Recommend moving under `metadata`.\n- `L002_DESCRIPTION_QUALITY` (warn) — a sub-score triggered a quality warning (vague phrases found, no action verb, no trigger phrase).\n- `W002_BROKEN_REFERENCE` (warn) — same code the validator emits; the linter resolves all relative file references in the body and surfaces any that do not exist on disk.\n\n## Worked example\n\nBefore (score: 18\u002F100):\n\n```\ndescription: A useful tool that helps with stuff related to skills.\n```\n\nAfter (score: 82\u002F100):\n\n```\ndescription: Score a SKILL.md description for trigger quality, flag vague language, and warn on vendor-specific frontmatter. Use when the user asks to lint a skill, improve discoverability, or check why their skill never fires.\n```\n\n## Invocation\n\n```bash\nskills-ref lint \u003Cskill-dir-or-tree> [--format json|human] [--explain] [--min-score N]\n```\n\nCommon patterns:\n\n```bash\n# Single skill, full breakdown\nskills-ref lint .agents\u002Fskills\u002Fmy-skill --explain\n\n# Tighten the bar for CI\nskills-ref lint .agents\u002Fskills\u002F --min-score 60\n\n# Machine-readable for the optimizer (Feature 06)\nskills-ref lint .agents\u002Fskills\u002Fmy-skill --format json\n```\n\n## Exit codes\n\n- `0` — every scored skill scored at or above the threshold (default 40) and emitted no broken-reference warnings.\n- `1` — at least one skill scored below the threshold, emitted `W002_BROKEN_REFERENCE`, or failed to parse.\n- `64` — usage error.\n\n## JSON shape\n\nThe `--format json` output is consumable by the description optimizer (Feature 06):\n\n```json\n{\"breakdown\":{\"actionVerbs\":20,\"keywordDensity\":25,\"length\":15,\"specificity\":20,\"triggerPhrases\":20},\"issues\":[],\"path\":\"...\",\"score\":100}\n```\n\n## Limits\n\n- The scorer is **deterministic** — no LLM in the loop. For LLM-driven rewrites, the optimizer (Feature 06) consumes this output.\n- Vague-phrase, action-verb, and stop-word lists live in the package's `assets\u002F` directory and are intentionally narrow. The lists are maintained on the mjs side and symlinked into the py side.\n- Vendor-neutrality is intentionally narrower than the auditor's unauthorized-field check. The auditor flags any unauthorized top-level field as MEDIUM; this linter flags only vendor-prefixed unauthorized fields as warnings and points at `metadata`.\n\n## Reference\n\nFull specification: see the canonical spec at [..\u002F..\u002F..\u002Fdocs\u002Fagentskills.io.md](..\u002F..\u002F..\u002Fdocs\u002Fagentskills.io.md).\n","# Agent Skill Discoverability Linter\n\nWraps `skills-ref lint`. The first qualitative pass in the toolkit — beyond structural validation, it scores a description's likelihood of triggering the right agent activations.\n\n## When to use\n\n- \"Why doesn't my skill ever fire?\"\n- \"Improve this description\"\n- \"Score my SKILL.md descriptions\"\n- \"Lint my skill against vendor-neutrality\"\n\n## Sub-scores\n\n| Sub-score          | Weight | What it rewards                                                       |\n| ------------------ | ------ | --------------------------------------------------------------------- |\n| keyword density    | 25     | Description tokens that also appear in the body (semantic overlap).   |\n| action verbs       | 20     | First-token verb (12) + any-position verb (8) from action_verbs.txt.  |\n| trigger phrases    | 20     | Presence of `use when`, `when`, `if`, or `for`.                       |\n| specificity        | 20     | Avoidance of vague phrases (`helps with`, `general purpose`, etc.).   |\n| length sweet spot  | 15     | 60-300 chars; linear ramp on either side.                             |\n\nThe score is clamped to 100.\n\n## Issue codes emitted\n\n- `L001_VENDOR_SPECIFIC_FIELD` (warn) — top-level frontmatter key matches a vendor prefix (`claude-`, `cursor-`, `devin-`, etc.). Recommend moving under `metadata`.\n- `L002_DESCRIPTION_QUALITY` (warn) — a sub-score triggered a quality warning (vague phrases found, no action verb, no trigger phrase).\n- `W002_BROKEN_REFERENCE` (warn) — same code the validator emits; the linter resolves all relative file references in the body and surfaces any that do not exist on disk.\n\n## Worked example\n\nBefore (score: 18\u002F100):\n\n```\ndescription: A useful tool that helps with stuff related to skills.\n```\n\nAfter (score: 82\u002F100):\n\n```\ndescription: Score a SKILL.md description for trigger quality, flag vague language, and warn on vendor-specific frontmatter. Use when the user asks to lint a skill, improve discoverability, or check why their skill never fires.\n```\n\n## Invocation\n\n```bash\nskills-ref lint \u003Cskill-dir-or-tree> [--format json|human] [--explain] [--min-score N]\n```\n\nCommon patterns:\n\n```bash\n# Single skill, full breakdown\nskills-ref lint .agents\u002Fskills\u002Fmy-skill --explain\n\n# Tighten the bar for CI\nskills-ref lint .agents\u002Fskills\u002F --min-score 60\n\n# Machine-readable for the optimizer (Feature 06)\nskills-ref lint .agents\u002Fskills\u002Fmy-skill --format json\n```\n\n## Exit codes\n\n- `0` — every scored skill scored at or above the threshold (default 40) and emitted no broken-reference warnings.\n- `1` — at least one skill scored below the threshold, emitted `W002_BROKEN_REFERENCE`, or failed to parse.\n- `64` — usage error.\n\n## JSON shape\n\nThe `--format json` output is consumable by the description optimizer (Feature 06):\n\n```json\n{\"breakdown\":{\"actionVerbs\":20,\"keywordDensity\":25,\"length\":15,\"specificity\":20,\"triggerPhrases\":20},\"issues\":[],\"path\":\"...\",\"score\":100}\n```\n\n## Limits\n\n- The scorer is **deterministic** — no LLM in the loop. For LLM-driven rewrites, the optimizer (Feature 06) consumes this output.\n- Vague-phrase, action-verb, and stop-word lists live in the package's `assets\u002F` directory and are intentionally narrow. The lists are maintained on the mjs side and symlinked into the py side.\n- Vendor-neutrality is intentionally narrower than the auditor's unauthorized-field check. The auditor flags any unauthorized top-level field as MEDIUM; this linter flags only vendor-prefixed unauthorized fields as warnings and points at `metadata`.\n\n## Reference\n\nFull specification: see the canonical spec at [..\u002F..\u002F..\u002Fdocs\u002Fagentskills.io.md](..\u002F..\u002F..\u002Fdocs\u002Fagentskills.io.md).\n",{"name":5,"tier":33,"license":15,"description":7,"compatibility":49},"requires `skills-ref` CLI","main","b78f8878258c912b66be9d4b56b316515e44c728",".claude\u002Fskills\u002Fagent-skill-kit-discoverability-linter","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts","https:\u002F\u002Fgithub.com\u002Fcarlosmarte","http:\u002F\u002Fcarlosmarte.me\u002F","2026-08-25 00:53:46",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add carlosmarte\u002Fai-agent-artifacts --skill agent-skill-kit-discoverability-linter",{"tool":63,"command":64},"bunx","bunx skills add carlosmarte\u002Fai-agent-artifacts --skill agent-skill-kit-discoverability-linter",{"tool":66,"command":67},"pnpm","pnpm dlx skills add carlosmarte\u002Fai-agent-artifacts --skill agent-skill-kit-discoverability-linter","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fagent-skill-kit-discoverability-linter\u002FSKILL.md",true,[],[72,100,127,164,189,210],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":44},"01M6NQ7MN7FKWQE3CKRWKVAC9K","validation_handoff","Forces the agent to conclude its response by generating a strict validation checklist and outlining pending actions, focusing heavily on defensive execution and edge-case testing.","MIT","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fvalidation_handoff\u002FSKILL.md",[],[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],"handoff","validation","validation handoff","testing","architecture","edge","actions","refactor","execution","system","implementation","checklist","feature implementation","feature","end","case","defensive","hook","at","pending",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":44},"01M6NQ74C8EKMSABDNN4T6TFBD","project-ployglot-project-scafford","Scaffold a polyglot library project as TypeScript + Python twin packages under `packages\u002Fts\u002F` + `packages\u002Fpy\u002F`, with a shared `SPEC.md`, cross-language `tests\u002Fparity\u002Ffixtures.json`, side-by-side `examples\u002Fsdk\u002F` + `examples\u002Fapi\u002F` documentation, per-package `Makefile`, and a root orchestrator that exposes `make ci`. Open-source friendly — no organization-specific paths or scopes baked in. Use when starting a new polyglot library, porting a single-language library to a twin, or auditing\u002Fregularizing an existing two-language repo against the canonical layout.","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fproject-ployglot-project-scafford\u002FSKILL.md",[],[107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126],"project","project ployglot project scafford","documentation","packages","run","ci","api","open","makefile","Bash","read","orchestrator","only","organization","shared","layout","dry","false","scope","\u003Cslug>",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":147,"publishedAt":44},"01M6NQ6VJVPM37YA73T8BCD3VF","playwright-ui-locator","Auto-heal Playwright tests after a frontend developer changes a div's class, id, or other selector. Catches a failing Playwright test, captures the old vs new DOM tree, finds the element that drifted, derives the most stable replacement locator, and proposes the fix as a GitHub pull request (confident heals) or files a GitHub issue (ambiguous \u002F element-removed cases) — never editing the working tree directly. Trigger when Playwright tests fail with \"locator resolved to 0 elements\", \"Timeout waiting for selector\", or after a UI refactor \u002F class rename \u002F Tailwind cleanup broke previously-passing tests.","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fplaywright-test-gh-auto-heal-ui-locator\u002FSKILL.md",[133,136,139,142],{"categoryNo":134,"categoryName":135,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":137,"categoryName":138,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":140,"categoryName":141,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":143,"categoryName":144,"taxonomyType":145,"taxonomyTypeDesc":146},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[148,149,150,151,152,153,116,117,154,155,156,157,158,29,159,160,161,124,162,163],"playwright","ui","playwright ui locator","frontend","cleanup","Tailwind","write","edit","fix","snapshot","auto","issue","files","rename","element","request",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":44},"01M6NQ6BCW05C6Y6VRV0RBQD1V","org-learn-context-window","Distill the current conversation into a reusable command or skill artifact. Use when the user wants to capture a workflow they just executed (create a reusable slash command) or formalize a resolution\u002Fmistake\u002Fcorrection into a reusable skill so the same class of issue never recurs.","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Forg-learn-context-window\u002FSKILL.md",[170],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[172,173,174,175,176,177,178,179,180,181,182,183,36,29,159,184,185,186,187,188],"learn","context","org","window","org learn context window","workflow","create","just","capture","distill","command","user","reusable","conversation","artifact","resolution","skill artifact",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":196,"publishedAt":44},"01M6NQ66NFPQM1PDBHP1B2G82X","org-agent-skill-creator","Scaffold and validate scope-aware agent skills (company, enterprise, org, team, project, application). Use when the user asks to create a new agent skill, generate a SKILL.md file, scaffold a skill directory, or validate that existing skill directories meet SKILL_SPEC.md (frontmatter, naming rules, structure, scope\u002Ftier).","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Forg-agent-skill-creator\u002FSKILL.md",[195],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[197,28,174,198,199,200,178,42,201,202,203,36,204,205,107,125,206,207,208,209],"skill creator","agent skill creator","creator","org agent skill creator","Enterprise","team","Rules","structure","new agent","directories","Existing","company","Meet",{"skillNo":211,"name":212,"nameZh":6,"description":213,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":219,"publishedAt":44},"01M6NQ5VSH5M682YMYDF9H9KFE","app-workshop-session-pdf-recap-next","Extract content from a workshop session PDF and produce a structured recap focused on (1) what was learned, (2) next steps, and (3) possible enhancements. Ingests a single PDF file path, parses session material (slides, transcripts, exercises, Q&A), and emits a Markdown report with Learning Recap, Next Steps, and Enhancement Opportunities sections with page-level traceability. Use when the user asks to \"summarize a workshop\", \"recap a training PDF\", \"pull next steps from a session deck\", or provides a workshop\u002Fseminar\u002Ftutorial PDF and wants a learn-and-act summary.","https:\u002F\u002Fgithub.com\u002Fcarlosmarte\u002Fai-agent-artifacts\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fapp-workshop-session-pdf-recap-next\u002FSKILL.md",[216],{"categoryNo":217,"categoryName":218,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[220,221,222,223,33,224,225,172,226,227,228,229,230,231,36,232,124,233,234,235],"PDF","recap","session","next","app workshop session pdf recap next","training","pull","produce","learning","slides","page","tutorial","deck","material","traceability","next steps"]