[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AA0Q3TS8NB3JHEXBTFHGX":3,"skill-same:01M71AA0Q3TS8NB3JHEXBTFHGX":64},{"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":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M71AA0Q3TS8NB3JHEXBTFHGX","check-links",null,"Validates the portfolio's internal links before publishing. Walks every\ngenerated page and reports any link whose target is missing.","crystian\u002Fskill-map","crystian","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3886806?v=4","01M71A827EC6KFFDBDDNAJQ1F1","Crystian","01M71A828EFGRMVEJY7HAE1MC4",78,"MIT","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Ffixtures\u002Fopencode\u002F.claude\u002Fskills\u002Fcheck-links\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29],"links","check links","check","reports","target","portfolio","page","link","missing","publishing","generated","2026-11-10 10:12:30",false,"---\nname: check-links\ndescription: |\n  Validates the portfolio's internal links before publishing. Walks every\n  generated page and reports any link whose target is missing.\n---\n\n# check-links\n\nThe last gate before the site goes out. Link targets resolve per the [WHATWG URL standard](https:\u002F\u002Furl.spec.whatwg.org\u002F).\n\nAuthored for Claude Code under `.claude\u002Fskills\u002F`, but OpenCode reads it too\n(Claude-compat), so under the opencode lens it classifies as `opencode\u002Fskill`.\n\n## Steps\n1. List every HTML file under `public\u002F`.\n2. For each page, collect its internal links (every `href` to `\u002F` or to a `.html` file).\n3. Check the target exists under `public\u002F` (treat `\u002F` as `public\u002Findex.html`).\n4. Report any link whose target is missing; if none, report \"0 broken links\".\n","# check-links\n\nThe last gate before the site goes out. Link targets resolve per the [WHATWG URL standard](https:\u002F\u002Furl.spec.whatwg.org\u002F).\n\nAuthored for Claude Code under `.claude\u002Fskills\u002F`, but OpenCode reads it too\n(Claude-compat), so under the opencode lens it classifies as `opencode\u002Fskill`.\n\n## Steps\n1. List every HTML file under `public\u002F`.\n2. For each page, collect its internal links (every `href` to `\u002F` or to a `.html` file).\n3. Check the target exists under `public\u002F` (treat `\u002F` as `public\u002Findex.html`).\n4. Report any link whose target is missing; if none, report \"0 broken links\".\n",{"name":5,"description":7},"main","0cd3a5b011547cc8d51493941abe2f64d916b05e","fixtures\u002Fopencode\u002F.claude\u002Fskills\u002Fcheck-links",10,"https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map","http:\u002F\u002Fskill-map.ai\u002F","https:\u002F\u002Fgithub.com\u002Fcrystian","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fcrystian","2026-09-03 01:48:22",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add crystian\u002Fskill-map --skill check-links",{"tool":50,"command":51},"bunx","bunx skills add crystian\u002Fskill-map --skill check-links",{"tool":53,"command":54},"pnpm","pnpm dlx skills add crystian\u002Fskill-map --skill check-links","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Ffixtures\u002Fopencode\u002F.claude\u002Fskills\u002Fcheck-links\u002FSKILL.md",true,[58],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"SKILL.sm","OTHER","其他",276,"https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Ffixtures\u002Fopencode\u002F.claude\u002Fskills\u002Fcheck-links\u002FSKILL.sm",[65,86,101,119,132,146],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":79,"publishedAt":30},"01M71AASCWW7690MDPRKXW92CF","opencode-skill-lint","Lint the codebase and report style violations.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fopencode\u002Fproviders\u002Fopencode\u002Fconformance\u002Ffixtures\u002Fdemo-opencode\u002F.opencode\u002Fskills\u002Fopencode-skill-lint\u002FSKILL.md",[71,76],{"categoryNo":72,"categoryName":73,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":77,"categoryName":78,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000023","Skill与智能体开发",[80,81,82,83,84,85],"opencode skill lint","opencode","lint","style","report","codebase",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":93,"publishedAt":30},"01M71AAQE4M7SXB4YBBRE3Q74B","claude-skill-format","Format files per the project style guide.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fopencode\u002Fproviders\u002Fopencode\u002Fconformance\u002Ffixtures\u002Fdemo-opencode\u002F.claude\u002Fskills\u002Fclaude-skill-format\u002FSKILL.md",[92],{"categoryNo":77,"categoryName":78,"taxonomyType":74,"taxonomyTypeDesc":75},[94,95,96,83,97,98,99,100],"claude skill","format","claude skill format","project","files","style guide","guide",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":111,"publishedAt":30},"01M71AAP8SGVXHAGW3DWCKM3X7","standard-skill-test","Run the open-standard test skill.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fopencode\u002Fproviders\u002Fopencode\u002Fconformance\u002Ffixtures\u002Fdemo-opencode\u002F.agents\u002Fskills\u002Fstandard-skill-test\u002FSKILL.md",[107,110],{"categoryNo":108,"categoryName":109,"taxonomyType":74,"taxonomyTypeDesc":75},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":77,"categoryName":78,"taxonomyType":74,"taxonomyTypeDesc":75},[112,113,114,115,116,117,118],"standard skill test","standard","test","Skill Test","open","run","Test Skill",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":30},"01M71AAN6VW6Y6Y2047HZ89FE1","run-tests","Run the unit suite and smoke checks before handoff.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fcodex\u002Fproviders\u002Fcodex\u002Fconformance\u002Ffixtures\u002Fdemo-codex-skills\u002F.agents\u002Fskills\u002Frun-tests\u002FSKILL.md",[],[117,126,127,128,129,130,131],"tests","run tests","smoke","handoff","unit","suite",{"skillNo":133,"name":5,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":30},"01M71AAKGBNXBG7EA0F7ARB6A5","Fixture skill for the `backtick-dollar-extraction` conformance case. The backticked `$check-links` invocation in `notes.md` must resolve to this node.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fcodex\u002Fproviders\u002Fcodex\u002Fconformance\u002Ffixtures\u002Fbacktick-dollar\u002F.agents\u002Fskills\u002Fcheck-links\u002FSKILL.md",[],[19,21,20,138,139,140,141,142,143,144,145],"notes","fixture","case","for","fixture skill","node","conformance","extraction",{"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":152,"publishedAt":30},"01M71AAHWVSJTQH0XQMA31ZHT7","hello","A minimal skill that greets the user by name.","https:\u002F\u002Fgithub.com\u002Fcrystian\u002Fskill-map\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fclaude\u002Fproviders\u002Fclaude\u002Fconformance\u002Ffixtures\u002Fminimal-claude\u002F.claude\u002Fskills\u002Fhello\u002FSKILL.md",[],[148,153,154,155,156,157,158,144,159],"greeting","by name","example","name","minimal skill","minimal","user"]