[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ET5SWGPBP62V6GR6HM38AS":3,"skill-same:01M6ET5SWGPBP62V6GR6HM38AS":77},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6ET5SWGPBP62V6GR6HM38AS","typescript-strict",null,"Enforce TypeScript strict mode and type safety. Use when setting up projects, reviewing code, or when type errors are ignored. Covers strict flags, no-any rules, and type inference best practices.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdoyajin174\u002Ftypescript-strict\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"typescript strict","typescript","read","reviewing code","type","enforce","flags","up","use","edit","write","grep","Rules","projects","Bash","team","Type Safety","best practices","code","antigravity","2026-11-10 10:12:30",false,"---\nname: typescript-strict\ndescription: Enforce TypeScript strict mode and type safety. Use when setting up projects, reviewing code, or when type errors are ignored. Covers strict flags, no-any rules, and type inference best practices.\nallowed-tools: Read, Glob, Grep, Edit, Write, Bash\nlicense: MIT\nmetadata:\n  author: antigravity-team\n  version: \"1.0\"\n---\n\n# TypeScript Strict Mode\n\nTypeScript 엄격 모드와 타입 안전성을 강제하는 스킬입니다.\n\n## 2025 Context\n\n> **TypeScript 5.x에서 strict 모드가 새 프로젝트의 기본값으로 권장됨**\n> **\"any 사용은 TypeScript를 쓰는 의미를 없앤다\"**\n\n## Core Rules\n\n| 규칙 | 상태 | 설명 |\n|------|------|------|\n| `strict: true` | ? 필수 | 모든 엄격 검사 활성화 |\n| `any` 금지 | ? 필수 | `unknown` 또는 제네릭 사용 |\n| `\u002F\u002F @ts-ignore` 금지 | ? 필수 | 타입 에러 해결 필수 |\n| `as` 캐스팅 최소화 | ? 권장 | 타입 가드 우선 |\n\n## tsconfig.json 권장 설정\n\n```json\n{\n  \"compilerOptions\": {\n    \u002F\u002F ? 필수: strict 플래그\n    \"strict\": true,\n\n    \u002F\u002F strict가 포함하는 옵션들 (개별 비활성화 금지)\n    \u002F\u002F \"strictNullChecks\": true,\n    \u002F\u002F \"strictFunctionTypes\": true,\n    \u002F\u002F \"strictBindCallApply\": true,\n    \u002F\u002F \"strictPropertyInitialization\": true,\n    \u002F\u002F \"noImplicitAny\": true,\n    \u002F\u002F \"noImplicitThis\": true,\n    \u002F\u002F \"alwaysStrict\": true,\n\n    \u002F\u002F ? 추가 필수 옵션\n    \"noUncheckedIndexedAccess\": true,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n\n    \u002F\u002F ? 권장 옵션\n    \"exactOptionalPropertyTypes\": true,\n    \"noPropertyAccessFromIndexSignature\": true\n  }\n}\n```\n\n## any 금지\n\n### 문제: any 사용\n\n```typescript\n\u002F\u002F ❌ BAD: any 사용\nfunction processData(data: any) {\n  return data.value;  \u002F\u002F 런타임 에러 가능\n}\n\nconst result: any = fetchData();\nresult.nonExistent();  \u002F\u002F 컴파일 통과, 런타임 에러\n```\n\n### 해결: unknown 또는 타입 명시\n\n```typescript\n\u002F\u002F ✅ GOOD: unknown + 타입 가드\nfunction processData(data: unknown) {\n  if (isValidData(data)) {\n    return data.value;\n  }\n  throw new Error('Invalid data');\n}\n\nfunction isValidData(data: unknown): data is { value: string } {\n  return typeof data === 'object'\n    && data !== null\n    && 'value' in data;\n}\n\n\u002F\u002F ✅ GOOD: 제네릭 사용\nfunction processData\u003CT extends { value: string }>(data: T) {\n  return data.value;\n}\n```\n\n### any → unknown 마이그레이션\n\n```typescript\n\u002F\u002F Before\nfunction parse(json: string): any {\n  return JSON.parse(json);\n}\n\n\u002F\u002F After\nfunction parse(json: string): unknown {\n  return JSON.parse(json);\n}\n\n\u002F\u002F 사용 시 타입 체크 필요\nconst result = parse('{\"name\": \"test\"}');\nif (isUser(result)) {\n  console.log(result.name);  \u002F\u002F 안전\n}\n```\n\n## 타입 단언(as) 최소화\n\n### 문제: 과도한 타입 단언\n\n```typescript\n\u002F\u002F ❌ BAD: 위험한 타입 단언\nconst user = response.data as User;\nuser.name.toUpperCase();  \u002F\u002F null이면 에러\n\n\u002F\u002F ❌ BAD: 이중 단언 (매우 위험)\nconst value = data as unknown as TargetType;\n```\n\n### 해결: 타입 가드 사용\n\n```typescript\n\u002F\u002F ✅ GOOD: 타입 가드\nfunction isUser(data: unknown): data is User {\n  return (\n    typeof data === 'object' &&\n    data !== null &&\n    'name' in data &&\n    typeof (data as { name: unknown }).name === 'string'\n  );\n}\n\nif (isUser(response.data)) {\n  response.data.name.toUpperCase();  \u002F\u002F 안전\n}\n\n\u002F\u002F ✅ GOOD: Zod 스키마 검증\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n  name: z.string(),\n  email: z.string().email(),\n});\n\nconst user = UserSchema.parse(response.data);\n```\n\n## Null 안전성\n\n### strictNullChecks 활용\n\n```typescript\n\u002F\u002F ❌ BAD: null 체크 없음\nfunction getLength(str: string | null) {\n  return str.length;  \u002F\u002F 에러: null일 수 있음\n}\n\n\u002F\u002F ✅ GOOD: null 체크\nfunction getLength(str: string | null) {\n  if (str === null) return 0;\n  return str.length;\n}\n\n\u002F\u002F ✅ GOOD: 옵셔널 체이닝\nfunction getLength(str: string | null) {\n  return str?.length ?? 0;\n}\n```\n\n### 배열 인덱스 접근\n\n```typescript\n\u002F\u002F noUncheckedIndexedAccess: true 일 때\n\nconst arr = [1, 2, 3];\nconst first = arr[0];  \u002F\u002F number | undefined\n\n\u002F\u002F ❌ BAD: undefined 체크 없음\nconsole.log(first.toFixed(2));  \u002F\u002F 에러\n\n\u002F\u002F ✅ GOOD: undefined 체크\nif (first !== undefined) {\n  console.log(first.toFixed(2));\n}\n\n\u002F\u002F ✅ GOOD: 논리 연산자\nconsole.log(arr[0]?.toFixed(2) ?? 'N\u002FA');\n```\n\n## 함수 타입\n\n### 반환 타입 명시 (권장)\n\n```typescript\n\u002F\u002F ❌ BAD: 반환 타입 추론 의존\nfunction fetchUser(id: string) {\n  return api.get(`\u002Fusers\u002F${id}`);  \u002F\u002F 반환 타입?\n}\n\n\u002F\u002F ✅ GOOD: 명시적 반환 타입\nasync function fetchUser(id: string): Promise\u003CUser> {\n  return api.get(`\u002Fusers\u002F${id}`);\n}\n```\n\n### 함수 오버로드\n\n```typescript\n\u002F\u002F ✅ GOOD: 오버로드로 정확한 타입\nfunction process(input: string): string;\nfunction process(input: number): number;\nfunction process(input: string | number): string | number {\n  if (typeof input === 'string') {\n    return input.toUpperCase();\n  }\n  return input * 2;\n}\n\nconst str = process('hello');  \u002F\u002F string\nconst num = process(42);       \u002F\u002F number\n```\n\n## 제네릭 활용\n\n```typescript\n\u002F\u002F ❌ BAD: any 사용\nfunction first(arr: any[]): any {\n  return arr[0];\n}\n\n\u002F\u002F ✅ GOOD: 제네릭\nfunction first\u003CT>(arr: T[]): T | undefined {\n  return arr[0];\n}\n\n\u002F\u002F ✅ GOOD: 제약 있는 제네릭\nfunction getProperty\u003CT, K extends keyof T>(obj: T, key: K): T[K] {\n  return obj[key];\n}\n```\n\n## ESLint 규칙\n\n```json\n{\n  \"extends\": [\n    \"plugin:@typescript-eslint\u002Frecommended\",\n    \"plugin:@typescript-eslint\u002Frecommended-requiring-type-checking\"\n  ],\n  \"rules\": {\n    \"@typescript-eslint\u002Fno-explicit-any\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-assignment\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-member-access\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-call\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-return\": \"error\",\n    \"@typescript-eslint\u002Fexplicit-function-return-type\": \"warn\",\n    \"@typescript-eslint\u002Fno-non-null-assertion\": \"warn\",\n    \"@typescript-eslint\u002Fprefer-nullish-coalescing\": \"warn\"\n  }\n}\n```\n\n## 금지 패턴\n\n```typescript\n\u002F\u002F ? 절대 금지\n\u002F\u002F @ts-ignore\n\u002F\u002F @ts-nocheck\n\u002F\u002F @ts-expect-error (테스트 제외)\n\u002F\u002F eslint-disable @typescript-eslint\u002Fno-explicit-any\n\n\u002F\u002F ? 금지: any 캐스팅\ndata as any\n(data as unknown) as TargetType\n\n\u002F\u002F ? 최소화\ndata!  \u002F\u002F non-null assertion\ndata as Type  \u002F\u002F 타입 가드 우선\n```\n\n## Workflow\n\n### 1. 새 프로젝트 설정\n\n```bash\n# TypeScript 초기화\nnpx tsc --init\n\n# strict 활성화 확인\ngrep -n \"strict\" tsconfig.json\n```\n\n### 2. 기존 프로젝트 마이그레이션\n\n```bash\n# 1. strict 활성화\n# tsconfig.json: \"strict\": true\n\n# 2. 에러 확인\nnpx tsc --noEmit\n\n# 3. 점진적 수정\n# - any → unknown\n# - as → 타입 가드\n# - null 체크 추가\n```\n\n### 3. 코드 리뷰 체크\n\n```\n타입 안전성 체크:\n- [ ] any 사용하지 않음\n- [ ] @ts-ignore 없음\n- [ ] 타입 단언 최소화\n- [ ] null 체크 적절함\n```\n\n## Checklist\n\n- [ ] `strict: true` 설정\n- [ ] `noUncheckedIndexedAccess: true` 설정\n- [ ] ESLint @typescript-eslint 규칙 적용\n- [ ] any 0개\n- [ ] @ts-ignore 0개\n- [ ] 타입 가드 함수 구현\n- [ ] 명시적 반환 타입 (공개 API)\n\n## References\n\n- [TypeScript Handbook - Strict Mode](https:\u002F\u002Fwww.typescriptlang.org\u002Ftsconfig#strict)\n- [typescript-eslint](https:\u002F\u002Ftypescript-eslint.io\u002F)\n- [Zod](https:\u002F\u002Fzod.dev\u002F)\n","# TypeScript Strict Mode\n\nTypeScript 엄격 모드와 타입 안전성을 강제하는 스킬입니다.\n\n## 2025 Context\n\n> **TypeScript 5.x에서 strict 모드가 새 프로젝트의 기본값으로 권장됨**\n> **\"any 사용은 TypeScript를 쓰는 의미를 없앤다\"**\n\n## Core Rules\n\n| 규칙 | 상태 | 설명 |\n|------|------|------|\n| `strict: true` | ? 필수 | 모든 엄격 검사 활성화 |\n| `any` 금지 | ? 필수 | `unknown` 또는 제네릭 사용 |\n| `\u002F\u002F @ts-ignore` 금지 | ? 필수 | 타입 에러 해결 필수 |\n| `as` 캐스팅 최소화 | ? 권장 | 타입 가드 우선 |\n\n## tsconfig.json 권장 설정\n\n```json\n{\n  \"compilerOptions\": {\n    \u002F\u002F ? 필수: strict 플래그\n    \"strict\": true,\n\n    \u002F\u002F strict가 포함하는 옵션들 (개별 비활성화 금지)\n    \u002F\u002F \"strictNullChecks\": true,\n    \u002F\u002F \"strictFunctionTypes\": true,\n    \u002F\u002F \"strictBindCallApply\": true,\n    \u002F\u002F \"strictPropertyInitialization\": true,\n    \u002F\u002F \"noImplicitAny\": true,\n    \u002F\u002F \"noImplicitThis\": true,\n    \u002F\u002F \"alwaysStrict\": true,\n\n    \u002F\u002F ? 추가 필수 옵션\n    \"noUncheckedIndexedAccess\": true,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true,\n\n    \u002F\u002F ? 권장 옵션\n    \"exactOptionalPropertyTypes\": true,\n    \"noPropertyAccessFromIndexSignature\": true\n  }\n}\n```\n\n## any 금지\n\n### 문제: any 사용\n\n```typescript\n\u002F\u002F ❌ BAD: any 사용\nfunction processData(data: any) {\n  return data.value;  \u002F\u002F 런타임 에러 가능\n}\n\nconst result: any = fetchData();\nresult.nonExistent();  \u002F\u002F 컴파일 통과, 런타임 에러\n```\n\n### 해결: unknown 또는 타입 명시\n\n```typescript\n\u002F\u002F ✅ GOOD: unknown + 타입 가드\nfunction processData(data: unknown) {\n  if (isValidData(data)) {\n    return data.value;\n  }\n  throw new Error('Invalid data');\n}\n\nfunction isValidData(data: unknown): data is { value: string } {\n  return typeof data === 'object'\n    && data !== null\n    && 'value' in data;\n}\n\n\u002F\u002F ✅ GOOD: 제네릭 사용\nfunction processData\u003CT extends { value: string }>(data: T) {\n  return data.value;\n}\n```\n\n### any → unknown 마이그레이션\n\n```typescript\n\u002F\u002F Before\nfunction parse(json: string): any {\n  return JSON.parse(json);\n}\n\n\u002F\u002F After\nfunction parse(json: string): unknown {\n  return JSON.parse(json);\n}\n\n\u002F\u002F 사용 시 타입 체크 필요\nconst result = parse('{\"name\": \"test\"}');\nif (isUser(result)) {\n  console.log(result.name);  \u002F\u002F 안전\n}\n```\n\n## 타입 단언(as) 최소화\n\n### 문제: 과도한 타입 단언\n\n```typescript\n\u002F\u002F ❌ BAD: 위험한 타입 단언\nconst user = response.data as User;\nuser.name.toUpperCase();  \u002F\u002F null이면 에러\n\n\u002F\u002F ❌ BAD: 이중 단언 (매우 위험)\nconst value = data as unknown as TargetType;\n```\n\n### 해결: 타입 가드 사용\n\n```typescript\n\u002F\u002F ✅ GOOD: 타입 가드\nfunction isUser(data: unknown): data is User {\n  return (\n    typeof data === 'object' &&\n    data !== null &&\n    'name' in data &&\n    typeof (data as { name: unknown }).name === 'string'\n  );\n}\n\nif (isUser(response.data)) {\n  response.data.name.toUpperCase();  \u002F\u002F 안전\n}\n\n\u002F\u002F ✅ GOOD: Zod 스키마 검증\nimport { z } from 'zod';\n\nconst UserSchema = z.object({\n  name: z.string(),\n  email: z.string().email(),\n});\n\nconst user = UserSchema.parse(response.data);\n```\n\n## Null 안전성\n\n### strictNullChecks 활용\n\n```typescript\n\u002F\u002F ❌ BAD: null 체크 없음\nfunction getLength(str: string | null) {\n  return str.length;  \u002F\u002F 에러: null일 수 있음\n}\n\n\u002F\u002F ✅ GOOD: null 체크\nfunction getLength(str: string | null) {\n  if (str === null) return 0;\n  return str.length;\n}\n\n\u002F\u002F ✅ GOOD: 옵셔널 체이닝\nfunction getLength(str: string | null) {\n  return str?.length ?? 0;\n}\n```\n\n### 배열 인덱스 접근\n\n```typescript\n\u002F\u002F noUncheckedIndexedAccess: true 일 때\n\nconst arr = [1, 2, 3];\nconst first = arr[0];  \u002F\u002F number | undefined\n\n\u002F\u002F ❌ BAD: undefined 체크 없음\nconsole.log(first.toFixed(2));  \u002F\u002F 에러\n\n\u002F\u002F ✅ GOOD: undefined 체크\nif (first !== undefined) {\n  console.log(first.toFixed(2));\n}\n\n\u002F\u002F ✅ GOOD: 논리 연산자\nconsole.log(arr[0]?.toFixed(2) ?? 'N\u002FA');\n```\n\n## 함수 타입\n\n### 반환 타입 명시 (권장)\n\n```typescript\n\u002F\u002F ❌ BAD: 반환 타입 추론 의존\nfunction fetchUser(id: string) {\n  return api.get(`\u002Fusers\u002F${id}`);  \u002F\u002F 반환 타입?\n}\n\n\u002F\u002F ✅ GOOD: 명시적 반환 타입\nasync function fetchUser(id: string): Promise\u003CUser> {\n  return api.get(`\u002Fusers\u002F${id}`);\n}\n```\n\n### 함수 오버로드\n\n```typescript\n\u002F\u002F ✅ GOOD: 오버로드로 정확한 타입\nfunction process(input: string): string;\nfunction process(input: number): number;\nfunction process(input: string | number): string | number {\n  if (typeof input === 'string') {\n    return input.toUpperCase();\n  }\n  return input * 2;\n}\n\nconst str = process('hello');  \u002F\u002F string\nconst num = process(42);       \u002F\u002F number\n```\n\n## 제네릭 활용\n\n```typescript\n\u002F\u002F ❌ BAD: any 사용\nfunction first(arr: any[]): any {\n  return arr[0];\n}\n\n\u002F\u002F ✅ GOOD: 제네릭\nfunction first\u003CT>(arr: T[]): T | undefined {\n  return arr[0];\n}\n\n\u002F\u002F ✅ GOOD: 제약 있는 제네릭\nfunction getProperty\u003CT, K extends keyof T>(obj: T, key: K): T[K] {\n  return obj[key];\n}\n```\n\n## ESLint 규칙\n\n```json\n{\n  \"extends\": [\n    \"plugin:@typescript-eslint\u002Frecommended\",\n    \"plugin:@typescript-eslint\u002Frecommended-requiring-type-checking\"\n  ],\n  \"rules\": {\n    \"@typescript-eslint\u002Fno-explicit-any\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-assignment\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-member-access\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-call\": \"error\",\n    \"@typescript-eslint\u002Fno-unsafe-return\": \"error\",\n    \"@typescript-eslint\u002Fexplicit-function-return-type\": \"warn\",\n    \"@typescript-eslint\u002Fno-non-null-assertion\": \"warn\",\n    \"@typescript-eslint\u002Fprefer-nullish-coalescing\": \"warn\"\n  }\n}\n```\n\n## 금지 패턴\n\n```typescript\n\u002F\u002F ? 절대 금지\n\u002F\u002F @ts-ignore\n\u002F\u002F @ts-nocheck\n\u002F\u002F @ts-expect-error (테스트 제외)\n\u002F\u002F eslint-disable @typescript-eslint\u002Fno-explicit-any\n\n\u002F\u002F ? 금지: any 캐스팅\ndata as any\n(data as unknown) as TargetType\n\n\u002F\u002F ? 최소화\ndata!  \u002F\u002F non-null assertion\ndata as Type  \u002F\u002F 타입 가드 우선\n```\n\n## Workflow\n\n### 1. 새 프로젝트 설정\n\n```bash\n# TypeScript 초기화\nnpx tsc --init\n\n# strict 활성화 확인\ngrep -n \"strict\" tsconfig.json\n```\n\n### 2. 기존 프로젝트 마이그레이션\n\n```bash\n# 1. strict 활성화\n# tsconfig.json: \"strict\": true\n\n# 2. 에러 확인\nnpx tsc --noEmit\n\n# 3. 점진적 수정\n# - any → unknown\n# - as → 타입 가드\n# - null 체크 추가\n```\n\n### 3. 코드 리뷰 체크\n\n```\n타입 안전성 체크:\n- [ ] any 사용하지 않음\n- [ ] @ts-ignore 없음\n- [ ] 타입 단언 최소화\n- [ ] null 체크 적절함\n```\n\n## Checklist\n\n- [ ] `strict: true` 설정\n- [ ] `noUncheckedIndexedAccess: true` 설정\n- [ ] ESLint @typescript-eslint 규칙 적용\n- [ ] any 0개\n- [ ] @ts-ignore 0개\n- [ ] 타입 가드 함수 구현\n- [ ] 명시적 반환 타입 (공개 API)\n\n## References\n\n- [TypeScript Handbook - Strict Mode](https:\u002F\u002Fwww.typescriptlang.org\u002Ftsconfig#strict)\n- [typescript-eslint](https:\u002F\u002Ftypescript-eslint.io\u002F)\n- [Zod](https:\u002F\u002Fzod.dev\u002F)\n",{"name":5,"license":15,"metadata":44,"description":7,"allowed-tools":47},{"author":45,"version":46},"antigravity-team","1.0","Read, Glob, Grep, Edit, Write, Bash","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fdoyajin174\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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict",{"tool":63,"command":64},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict",{"tool":66,"command":67},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill typescript-strict","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdoyajin174\u002Ftypescript-strict\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"skill-report.json","REFERENCE","参考文档",13699,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdoyajin174\u002Ftypescript-strict\u002Fskill-report.json",[78,92,102,111,117,124],{"skillNo":79,"name":80,"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":81,"categories":82,"keywords":88,"publishedAt":39},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[89,90,91],"model","model hierarchy","model hierarchy skill",{"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":98,"publishedAt":39},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[97],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[99,100,101],"MCP","zoom","zoom mcp",{"skillNo":103,"name":104,"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":105,"categories":106,"keywords":107,"publishedAt":39},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[108,109,110,100],"sdk","zoom apps sdk","apps",{"skillNo":112,"name":113,"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":114,"categories":115,"keywords":116,"publishedAt":39},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[113],{"skillNo":118,"name":119,"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":120,"categories":121,"keywords":123,"publishedAt":39},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[122],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[119],{"skillNo":125,"name":126,"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":127,"categories":128,"keywords":129,"publishedAt":39},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[126]]