[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EM08N8B5S5R5HTEW01QWNT":3,"skill-same:01M6EM08N8B5S5R5HTEW01QWNT":199},{"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":6,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6EM08N8B5S5R5HTEW01QWNT","add-core-function",null,"Add new core business logic functions to Catalyst-Relay. Use when creating pure functions, ADT operations, or library-consumable code.","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\u002Fartisan-edge\u002Fadd-core-function\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29],"core","add","add core function","code","library","business","operations","use","functions","logic","relay","2026-11-10 10:12:30",false,"---\nname: add-core-function\ndescription: Add new core business logic functions to Catalyst-Relay. Use when creating pure functions, ADT operations, or library-consumable code.\n---\n\n# Adding Core Functions\n\n## When to Use\n\n- Creating new ADT operations (CRAUD, discovery, preview)\n- Adding pure business logic functions\n- Implementing library-consumable functionality\n\n## One Function Per File\n\nEach core function gets its own file. No multi-function files.\n\n**Location:** `src\u002Fcore\u002F{domain}\u002F{function}.ts`\n\n```\ncore\u002Fadt\u002F\n├── index.ts              # Barrel exports\n├── types.ts              # Shared types (AdtRequestor, ObjectConfig)\n├── helpers.ts            # Internal helpers (not exported from barrel)\n│\n├── craud\u002F\n│   ├── read.ts           → readObject()\n│   ├── create.ts         → createObject()\n│   └── ...\n│\n└── discovery\u002F\n    ├── packages.ts       → getPackages()\n    └── ...\n```\n\n## Import Hierarchy\n\nFiles must follow this hierarchy (no circular dependencies):\n\n```\ntypes.ts           (shared types, no imports from package)\n    ↓\nhelpers.ts         (internal utilities, imports types)\n    ↓\nsubfolder files    (import ..\u002Ftypes and ..\u002Fhelpers)\n    ↓\nindex.ts           (barrel exports, imports from subfolders)\n```\n\n**Relative path patterns:**\n- `..\u002Ftypes` — shared types\n- `..\u002Fhelpers` — shared helpers\n- `..\u002F..\u002Futils\u002Fxml` — core utilities\n- `..\u002F..\u002F..\u002Ftypes\u002Fresult` — global types\n\n## Function File Pattern\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Fdiscovery\u002Fpackages.ts\n\nimport type { AdtRequestor } from '..\u002Ftypes';\nimport type { AsyncResult } from '..\u002F..\u002F..\u002Ftypes\u002Fresult';\n\nexport interface Package {\n    name: string;\n    description: string;\n}\n\nexport async function getPackages(\n    requestor: AdtRequestor,\n    filter?: string\n): AsyncResult\u003CPackage[]> {\n    \u002F\u002F Implementation\n    const response = await requestor.get('\u002Fpackages', { params: { filter } });\n\n    if (response.error) {\n        return [null, response.error];\n    }\n\n    return [parsePackages(response.data), null];\n}\n\n\u002F\u002F Internal helper (not exported)\nfunction parsePackages(xml: string): Package[] {\n    \u002F\u002F ...\n}\n```\n\n## Return Type Convention\n\nUse Go-style error tuples:\n\n```typescript\nimport type { AsyncResult } from '..\u002F..\u002F..\u002Ftypes\u002Fresult';\n\n\u002F\u002F Returns [data, null] on success, [null, error] on failure\nexport async function someOperation(): AsyncResult\u003CData> {\n    \u002F\u002F ...\n}\n```\n\n## Barrel Exports\n\nAdd to `index.ts` for public API:\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Findex.ts\n\n\u002F\u002F Types\nexport type { AdtRequestor, ObjectConfig } from '.\u002Ftypes';\n\n\u002F\u002F Discovery\nexport { getPackages } from '.\u002Fdiscovery\u002Fpackages';\nexport { getTree } from '.\u002Fdiscovery\u002Ftree';\n\n\u002F\u002F CRAUD\nexport { readObject } from '.\u002Fcraud\u002Fread';\nexport { createObject } from '.\u002Fcraud\u002Fcreate';\n```\n\n## Internal Helpers\n\nHelpers not exported from barrel go in `helpers.ts`:\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Fhelpers.ts\n\nimport type { AdtRequestor } from '.\u002Ftypes';\n\n\u002F\u002F Internal - not exported from index.ts\nexport function buildObjectUri(name: string, extension: string): string {\n    \u002F\u002F ...\n}\n```\n\n## Checklist\n\n```\n- [ ] Create function file in src\u002Fcore\u002F{domain}\u002F{subfolder}\u002F\n- [ ] Define types at top of file or in ..\u002Ftypes.ts\n- [ ] Use AsyncResult return type for async functions\n- [ ] Follow import hierarchy (no circular deps)\n- [ ] Export from index.ts if public API\n- [ ] Put internal helpers in helpers.ts\n- [ ] Run typecheck: bun run typecheck\n```\n","# Adding Core Functions\n\n## When to Use\n\n- Creating new ADT operations (CRAUD, discovery, preview)\n- Adding pure business logic functions\n- Implementing library-consumable functionality\n\n## One Function Per File\n\nEach core function gets its own file. No multi-function files.\n\n**Location:** `src\u002Fcore\u002F{domain}\u002F{function}.ts`\n\n```\ncore\u002Fadt\u002F\n├── index.ts              # Barrel exports\n├── types.ts              # Shared types (AdtRequestor, ObjectConfig)\n├── helpers.ts            # Internal helpers (not exported from barrel)\n│\n├── craud\u002F\n│   ├── read.ts           → readObject()\n│   ├── create.ts         → createObject()\n│   └── ...\n│\n└── discovery\u002F\n    ├── packages.ts       → getPackages()\n    └── ...\n```\n\n## Import Hierarchy\n\nFiles must follow this hierarchy (no circular dependencies):\n\n```\ntypes.ts           (shared types, no imports from package)\n    ↓\nhelpers.ts         (internal utilities, imports types)\n    ↓\nsubfolder files    (import ..\u002Ftypes and ..\u002Fhelpers)\n    ↓\nindex.ts           (barrel exports, imports from subfolders)\n```\n\n**Relative path patterns:**\n- `..\u002Ftypes` — shared types\n- `..\u002Fhelpers` — shared helpers\n- `..\u002F..\u002Futils\u002Fxml` — core utilities\n- `..\u002F..\u002F..\u002Ftypes\u002Fresult` — global types\n\n## Function File Pattern\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Fdiscovery\u002Fpackages.ts\n\nimport type { AdtRequestor } from '..\u002Ftypes';\nimport type { AsyncResult } from '..\u002F..\u002F..\u002Ftypes\u002Fresult';\n\nexport interface Package {\n    name: string;\n    description: string;\n}\n\nexport async function getPackages(\n    requestor: AdtRequestor,\n    filter?: string\n): AsyncResult\u003CPackage[]> {\n    \u002F\u002F Implementation\n    const response = await requestor.get('\u002Fpackages', { params: { filter } });\n\n    if (response.error) {\n        return [null, response.error];\n    }\n\n    return [parsePackages(response.data), null];\n}\n\n\u002F\u002F Internal helper (not exported)\nfunction parsePackages(xml: string): Package[] {\n    \u002F\u002F ...\n}\n```\n\n## Return Type Convention\n\nUse Go-style error tuples:\n\n```typescript\nimport type { AsyncResult } from '..\u002F..\u002F..\u002Ftypes\u002Fresult';\n\n\u002F\u002F Returns [data, null] on success, [null, error] on failure\nexport async function someOperation(): AsyncResult\u003CData> {\n    \u002F\u002F ...\n}\n```\n\n## Barrel Exports\n\nAdd to `index.ts` for public API:\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Findex.ts\n\n\u002F\u002F Types\nexport type { AdtRequestor, ObjectConfig } from '.\u002Ftypes';\n\n\u002F\u002F Discovery\nexport { getPackages } from '.\u002Fdiscovery\u002Fpackages';\nexport { getTree } from '.\u002Fdiscovery\u002Ftree';\n\n\u002F\u002F CRAUD\nexport { readObject } from '.\u002Fcraud\u002Fread';\nexport { createObject } from '.\u002Fcraud\u002Fcreate';\n```\n\n## Internal Helpers\n\nHelpers not exported from barrel go in `helpers.ts`:\n\n```typescript\n\u002F\u002F src\u002Fcore\u002Fadt\u002Fhelpers.ts\n\nimport type { AdtRequestor } from '.\u002Ftypes';\n\n\u002F\u002F Internal - not exported from index.ts\nexport function buildObjectUri(name: string, extension: string): string {\n    \u002F\u002F ...\n}\n```\n\n## Checklist\n\n```\n- [ ] Create function file in src\u002Fcore\u002F{domain}\u002F{subfolder}\u002F\n- [ ] Define types at top of file or in ..\u002Ftypes.ts\n- [ ] Use AsyncResult return type for async functions\n- [ ] Follow import hierarchy (no circular deps)\n- [ ] Export from index.ts if public API\n- [ ] Put internal helpers in helpers.ts\n- [ ] Run typecheck: bun run typecheck\n```\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fartisan-edge\u002Fadd-core-function",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":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill add-core-function",{"tool":50,"command":51},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill add-core-function",{"tool":53,"command":54},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill add-core-function","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fartisan-edge\u002Fadd-core-function\u002FSKILL.md",true,[58,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,147,151,155,159,163,167,171,175,179,183,187,191,195],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},"references\u002F_contributing.md","REFERENCE","参考文档",4113,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002F_contributing.md",{"path":65,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002F_sections.md",1682,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002F_sections.md",{"path":69,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002F_template.md",1040,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002F_template.md",{"path":73,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fadvanced-full-text-search.md",1468,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fadvanced-full-text-search.md",{"path":77,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fadvanced-jsonb-indexing.md",1444,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fadvanced-jsonb-indexing.md",{"path":81,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fconn-idle-timeout.md",1282,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fconn-idle-timeout.md",{"path":85,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fconn-limits.md",1325,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fconn-limits.md",{"path":89,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fconn-pooling.md",1382,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fconn-pooling.md",{"path":93,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fconn-prepared-statements.md",1529,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fconn-prepared-statements.md",{"path":97,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fdata-batch-inserts.md",1287,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fdata-batch-inserts.md",{"path":101,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fdata-n-plus-one.md",1361,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fdata-n-plus-one.md",{"path":105,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fdata-pagination.md",1358,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fdata-pagination.md",{"path":109,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fdata-upsert.md",1390,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fdata-upsert.md",{"path":113,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002Flock-advisory.md",1531,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Flock-advisory.md",{"path":117,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":118,"sourceHtmlUrl":119},"references\u002Flock-deadlock-prevention.md",1855,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Flock-deadlock-prevention.md",{"path":121,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":122,"sourceHtmlUrl":123},"references\u002Flock-short-transactions.md",1350,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Flock-short-transactions.md",{"path":125,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":126,"sourceHtmlUrl":127},"references\u002Flock-skip-locked.md",1353,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Flock-skip-locked.md",{"path":129,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":130,"sourceHtmlUrl":131},"references\u002Fmonitor-explain-analyze.md",1441,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fmonitor-explain-analyze.md",{"path":133,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":134,"sourceHtmlUrl":135},"references\u002Fmonitor-pg-stat-statements.md",1418,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fmonitor-pg-stat-statements.md",{"path":137,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":138,"sourceHtmlUrl":139},"references\u002Fmonitor-vacuum-analyze.md",1506,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fmonitor-vacuum-analyze.md",{"path":141,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":142,"sourceHtmlUrl":143},"references\u002Fquery-composite-indexes.md",1454,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fquery-composite-indexes.md",{"path":145,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":98,"sourceHtmlUrl":146},"references\u002Fquery-covering-indexes.md","https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fquery-covering-indexes.md",{"path":148,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":149,"sourceHtmlUrl":150},"references\u002Fquery-index-types.md",1521,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fquery-index-types.md",{"path":152,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":153,"sourceHtmlUrl":154},"references\u002Fquery-missing-indexes.md",1218,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fquery-missing-indexes.md",{"path":156,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fquery-partial-indexes.md",1347,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fquery-partial-indexes.md",{"path":160,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Fschema-constraints.md",1880,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-constraints.md",{"path":164,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Fschema-data-types.md",1453,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-data-types.md",{"path":168,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":169,"sourceHtmlUrl":170},"references\u002Fschema-foreign-key-indexes.md",1679,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-foreign-key-indexes.md",{"path":172,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":173,"sourceHtmlUrl":174},"references\u002Fschema-lowercase-identifiers.md",1728,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-lowercase-identifiers.md",{"path":176,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":177,"sourceHtmlUrl":178},"references\u002Fschema-partitioning.md",1548,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-partitioning.md",{"path":180,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":181,"sourceHtmlUrl":182},"references\u002Fschema-primary-keys.md",1821,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fschema-primary-keys.md",{"path":184,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":185,"sourceHtmlUrl":186},"references\u002Fsecurity-privileges.md",1566,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fsecurity-privileges.md",{"path":188,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":189,"sourceHtmlUrl":190},"references\u002Fsecurity-rls-basics.md",1372,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fsecurity-rls-basics.md",{"path":192,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":193,"sourceHtmlUrl":194},"references\u002Fsecurity-rls-performance.md",1493,"https:\u002F\u002Fgithub.com\u002FIncoders-Tools\u002Fzonar-hub-api\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fsupabase-postgres-best-practices\u002Freferences\u002Fsecurity-rls-performance.md",{"path":196,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":197,"sourceHtmlUrl":198},"skill-report.json",13476,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fartisan-edge\u002Fadd-core-function\u002Fskill-report.json",[200,214,224,233,239,246],{"skillNo":201,"name":202,"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":203,"categories":204,"keywords":210,"publishedAt":30},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[205],{"categoryNo":206,"categoryName":207,"taxonomyType":208,"taxonomyTypeDesc":209},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[211,212,213],"model","model hierarchy","model hierarchy skill",{"skillNo":215,"name":216,"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":217,"categories":218,"keywords":220,"publishedAt":30},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[219],{"categoryNo":206,"categoryName":207,"taxonomyType":208,"taxonomyTypeDesc":209},[221,222,223],"MCP","zoom","zoom mcp",{"skillNo":225,"name":226,"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":227,"categories":228,"keywords":229,"publishedAt":30},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[230,231,232,222],"sdk","zoom apps sdk","apps",{"skillNo":234,"name":235,"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":236,"categories":237,"keywords":238,"publishedAt":30},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[235],{"skillNo":240,"name":241,"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":242,"categories":243,"keywords":245,"publishedAt":30},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[244],{"categoryNo":206,"categoryName":207,"taxonomyType":208,"taxonomyTypeDesc":209},[241],{"skillNo":247,"name":248,"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":249,"categories":250,"keywords":251,"publishedAt":30},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[248]]