[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EMQSD3C0SPST0FV1ZS7SDQ":3,"skill-same:01M6EMQSD3C0SPST0FV1ZS7SDQ":58},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6EMQSD3C0SPST0FV1ZS7SDQ","typescript-strict",null,"Strict TypeScript rules. Use when writing ANY TypeScript.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fbarnhardt-enterprises-inc\u002Ftypescript-strict\u002FSKILL.md",[],[19,20,21,22,23],"typescript","typescript strict","writing","Rules","use","2026-11-10 10:12:30",false,"---\nname: typescript-strict\ndescription: Strict TypeScript rules. Use when writing ANY TypeScript.\n---\n\n# Strict TypeScript Standards\n\n## Rules\n\n### 1. NO `any`\n```typescript\n\u002F\u002F NEVER\nfunction process(data: any) {}\n\n\u002F\u002F CORRECT\nfunction process(data: unknown) {\n  if (isValidData(data)) { \u002F* use data *\u002F }\n}\n```\n\n### 2. Explicit Returns\n```typescript\n\u002F\u002F NEVER\nfunction getUser(id: string) { return db.find(id); }\n\n\u002F\u002F CORRECT\nfunction getUser(id: string): Promise\u003CUser | null> { return db.find(id); }\n```\n\n### 3. Typed Errors\n```typescript\n\u002F\u002F NEVER\ncatch (e) { console.log(e.message); }\n\n\u002F\u002F CORRECT\ncatch (error: unknown) {\n  if (error instanceof AppError) { logger.error(error.message); }\n  else if (error instanceof Error) { logger.error(error.message); }\n  else { logger.error('Unknown error', { error }); }\n}\n```\n\n### 4. No Unexplained Assertions\n```typescript\n\u002F\u002F NEVER\nconst user = users.find(u => u.id === id)!;\n\n\u002F\u002F CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) throw new NotFoundError(`User ${id} not found`);\n```\n\n### 5. Prefer Type Inference Where Obvious\n```typescript\n\u002F\u002F Unnecessary - type is inferred\nconst count: number = 5;\n\n\u002F\u002F Good - type is inferred\nconst count = 5;\n\n\u002F\u002F Good - explicit for function signatures\nfunction add(a: number, b: number): number {\n  return a + b;\n}\n```\n\n### 6. Use Discriminated Unions\n```typescript\n\u002F\u002F CORRECT\ntype Result\u003CT> =\n  | { success: true; data: T }\n  | { success: false; error: string };\n\nfunction handle(result: Result\u003CUser>) {\n  if (result.success) {\n    \u002F\u002F TypeScript knows result.data exists\n    console.log(result.data.name);\n  } else {\n    \u002F\u002F TypeScript knows result.error exists\n    console.log(result.error);\n  }\n}\n```\n\n## Quick Reference\n\n| Pattern | Status |\n|---------|--------|\n| `any` | NEVER |\n| Implicit return | NEVER |\n| `!` without comment | NEVER |\n| `\u002F\u002F @ts-ignore` | NEVER |\n| `as` casting | MINIMIZE |\n| `unknown` + guards | PREFERRED |\n","# Strict TypeScript Standards\n\n## Rules\n\n### 1. NO `any`\n```typescript\n\u002F\u002F NEVER\nfunction process(data: any) {}\n\n\u002F\u002F CORRECT\nfunction process(data: unknown) {\n  if (isValidData(data)) { \u002F* use data *\u002F }\n}\n```\n\n### 2. Explicit Returns\n```typescript\n\u002F\u002F NEVER\nfunction getUser(id: string) { return db.find(id); }\n\n\u002F\u002F CORRECT\nfunction getUser(id: string): Promise\u003CUser | null> { return db.find(id); }\n```\n\n### 3. Typed Errors\n```typescript\n\u002F\u002F NEVER\ncatch (e) { console.log(e.message); }\n\n\u002F\u002F CORRECT\ncatch (error: unknown) {\n  if (error instanceof AppError) { logger.error(error.message); }\n  else if (error instanceof Error) { logger.error(error.message); }\n  else { logger.error('Unknown error', { error }); }\n}\n```\n\n### 4. No Unexplained Assertions\n```typescript\n\u002F\u002F NEVER\nconst user = users.find(u => u.id === id)!;\n\n\u002F\u002F CORRECT\nconst user = users.find(u => u.id === id);\nif (!user) throw new NotFoundError(`User ${id} not found`);\n```\n\n### 5. Prefer Type Inference Where Obvious\n```typescript\n\u002F\u002F Unnecessary - type is inferred\nconst count: number = 5;\n\n\u002F\u002F Good - type is inferred\nconst count = 5;\n\n\u002F\u002F Good - explicit for function signatures\nfunction add(a: number, b: number): number {\n  return a + b;\n}\n```\n\n### 6. Use Discriminated Unions\n```typescript\n\u002F\u002F CORRECT\ntype Result\u003CT> =\n  | { success: true; data: T }\n  | { success: false; error: string };\n\nfunction handle(result: Result\u003CUser>) {\n  if (result.success) {\n    \u002F\u002F TypeScript knows result.data exists\n    console.log(result.data.name);\n  } else {\n    \u002F\u002F TypeScript knows result.error exists\n    console.log(result.error);\n  }\n}\n```\n\n## Quick Reference\n\n| Pattern | Status |\n|---------|--------|\n| `any` | NEVER |\n| Implicit return | NEVER |\n| `!` without comment | NEVER |\n| `\u002F\u002F @ts-ignore` | NEVER |\n| `as` casting | MINIMIZE |\n| `unknown` + guards | PREFERRED |\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fbarnhardt-enterprises-inc\u002Ftypescript-strict",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict",{"tool":44,"command":45},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict",{"tool":47,"command":48},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fbarnhardt-enterprises-inc\u002Ftypescript-strict\u002FSKILL.md",true,[52],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"skill-report.json","REFERENCE","参考文档",10070,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fbarnhardt-enterprises-inc\u002Ftypescript-strict\u002Fskill-report.json",[59,73,83,92,98,105],{"skillNo":60,"name":61,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":69,"publishedAt":24},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[64],{"categoryNo":65,"categoryName":66,"taxonomyType":67,"taxonomyTypeDesc":68},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[70,71,72],"model","model hierarchy","model hierarchy skill",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":79,"publishedAt":24},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[78],{"categoryNo":65,"categoryName":66,"taxonomyType":67,"taxonomyTypeDesc":68},[80,81,82],"MCP","zoom","zoom mcp",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":24},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[89,90,91,81],"sdk","zoom apps sdk","apps",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":24},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[94],{"skillNo":99,"name":100,"nameZh":6,"description":6,"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":104,"publishedAt":24},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[103],{"categoryNo":65,"categoryName":66,"taxonomyType":67,"taxonomyTypeDesc":68},[100],{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":24},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[107]]