[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KSWDNB62XFDXVHER24CQ2H":3,"skill-same:01M6KSWDNB62XFDXVHER24CQ2H":122},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":13,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":59,"install":60,"resources":73},"01M6KSWDNB62XFDXVHER24CQ2H","ckm:content-hub",null,"Browser-based asset gallery for managing marketing assets. Visual grid with filter\u002Fsearch, brand context sidebar, and actions (preview, edit, generate). R2-ready manifest for future cloud sync. Use when browsing assets, managing content library, or generating new assets with brand context.","devmotminh\u002Fplayscored","devmotminh","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F133726659?v=4","01M6KSRTWXJ4EW9RPFDYZQ0MYH","01M6KSRV19QN8MN1MNQHNE46JS",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"hub","ckm:content hub","ckm","content","cloud sync","actions","browsing","for","grid","filter","visual","preview","manifest","search","ready","use","brand","Bash","open","browse","2026-11-10 10:12:30",false,"---\nname: ckm:content-hub\ndescription: Browser-based asset gallery for managing marketing assets. Visual grid with filter\u002Fsearch, brand context sidebar, and actions (preview, edit, generate). R2-ready manifest for future cloud sync. Use when browsing assets, managing content library, or generating new assets with brand context.\nargument-hint: \"[action: open|browse|search]\"\nlicense: MIT\nallowed-tools:\n  - Bash\n  - Read\nmetadata:\n  author: claudekit\n  version: \"1.0.0\"\n---\n\n# Content Hub\n\nVisual asset gallery for ClaudeKit Marketing.\n\n## Quick Start\n\n```bash\n# Open gallery\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --open\n\n# Rescan assets\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --scan\n\n# Stop server\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --stop\n```\n\nOr use command: `\u002Fwrite:hub`\n\n## Features\n\n- **Gallery Grid**: Thumbnails of assets\u002F folder\n- **Filter\u002FSearch**: By type (banners, designs, etc.) and keywords\n- **Brand Sidebar**: Displays user's colors and voice from docs\u002Fbrand-guidelines.md\n- **Actions**: Preview, Edit in Claude, Copy path, Generate new\n- **R2 Ready**: Manifest schema supports Cloudflare R2 sync (UI disabled)\n\n## API Routes\n\n| Route | Purpose |\n|-------|---------|\n| `\u002Fhub` | Gallery HTML |\n| `\u002Fapi\u002Fassets` | Asset list JSON |\n| `\u002Fapi\u002Fbrand` | Brand context JSON |\n| `\u002Fapi\u002Fscan` | Trigger rescan |\n| `\u002Ffile\u002F*` | Serve local files |\n\n## Manifest Schema\n\nAssets stored in `.assets\u002Fmanifest.json` with R2 fields:\n\n```json\n{\n  \"id\": \"abc123\",\n  \"path\": \"banners\u002Fhero.png\",\n  \"category\": \"banner\",\n  \"r2\": {\n    \"status\": \"local\",  \u002F\u002F local|pending|synced|error\n    \"bucket\": null,\n    \"url\": null\n  }\n}\n```\n\n## Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `scripts\u002Fserver.cjs` | HTTP server entry |\n| `scripts\u002Flib\u002Fscanner.cjs` | Scan assets directory |\n| `scripts\u002Flib\u002Frouter.cjs` | HTTP routing |\n| `scripts\u002Flib\u002Fbrand-context.cjs` | Extract brand guidelines |\n\n## Integration\n\n**Command**: `\u002Fwrite:hub`\n\n**Related Skills**: brand, ai-multimodal, design\n\n**Agents**: content-creator, ui-ux-designer\n","# Content Hub\n\nVisual asset gallery for ClaudeKit Marketing.\n\n## Quick Start\n\n```bash\n# Open gallery\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --open\n\n# Rescan assets\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --scan\n\n# Stop server\nnode .claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs --stop\n```\n\nOr use command: `\u002Fwrite:hub`\n\n## Features\n\n- **Gallery Grid**: Thumbnails of assets\u002F folder\n- **Filter\u002FSearch**: By type (banners, designs, etc.) and keywords\n- **Brand Sidebar**: Displays user's colors and voice from docs\u002Fbrand-guidelines.md\n- **Actions**: Preview, Edit in Claude, Copy path, Generate new\n- **R2 Ready**: Manifest schema supports Cloudflare R2 sync (UI disabled)\n\n## API Routes\n\n| Route | Purpose |\n|-------|---------|\n| `\u002Fhub` | Gallery HTML |\n| `\u002Fapi\u002Fassets` | Asset list JSON |\n| `\u002Fapi\u002Fbrand` | Brand context JSON |\n| `\u002Fapi\u002Fscan` | Trigger rescan |\n| `\u002Ffile\u002F*` | Serve local files |\n\n## Manifest Schema\n\nAssets stored in `.assets\u002Fmanifest.json` with R2 fields:\n\n```json\n{\n  \"id\": \"abc123\",\n  \"path\": \"banners\u002Fhero.png\",\n  \"category\": \"banner\",\n  \"r2\": {\n    \"status\": \"local\",  \u002F\u002F local|pending|synced|error\n    \"bucket\": null,\n    \"url\": null\n  }\n}\n```\n\n## Scripts\n\n| Script | Purpose |\n|--------|---------|\n| `scripts\u002Fserver.cjs` | HTTP server entry |\n| `scripts\u002Flib\u002Fscanner.cjs` | Scan assets directory |\n| `scripts\u002Flib\u002Frouter.cjs` | HTTP routing |\n| `scripts\u002Flib\u002Fbrand-context.cjs` | Extract brand guidelines |\n\n## Integration\n\n**Command**: `\u002Fwrite:hub`\n\n**Related Skills**: brand, ai-multimodal, design\n\n**Agents**: content-creator, ui-ux-designer\n",{"name":5,"license":14,"metadata":48,"description":7,"allowed-tools":51,"argument-hint":53},{"author":49,"version":50},"claudekit","1.0.0",[40,52],"Read","[action: open|browse|search]","main","fa3098ef56c24a44b365d9f1727c4c86b98dfd20",".claude\u002Fskills\u002Fcontent-hub","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored","https:\u002F\u002Fgithub.com\u002Fdevmotminh","2026-05-04 12:54:25",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add devmotminh\u002Fplayscored --skill \"ckm:content-hub\"",{"tool":66,"command":67},"bunx","bunx skills add devmotminh\u002Fplayscored --skill \"ckm:content-hub\"",{"tool":69,"command":70},"pnpm","pnpm dlx skills add devmotminh\u002Fplayscored --skill \"ckm:content-hub\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002FSKILL.md",true,[74,80,86,90,94,98,102,106,110,114,118],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"assets\u002Fhub.css","ASSET","资产文件",12568,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fassets\u002Fhub.css",{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"assets\u002Fhub.js","SCRIPT","脚本",15764,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fassets\u002Fhub.js",{"path":87,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":88,"sourceHtmlUrl":89},"assets\u002Ftemplate.html",7874,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fassets\u002Ftemplate.html",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Flib\u002Fai-bridge.cjs",3945,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Fai-bridge.cjs",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Flib\u002Fbrand-context.cjs",3465,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Fbrand-context.cjs",{"path":99,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Flib\u002Fport-finder.cjs",961,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Fport-finder.cjs",{"path":103,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Flib\u002Fprocess-mgr.cjs",2170,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Fprocess-mgr.cjs",{"path":107,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":108,"sourceHtmlUrl":109},"scripts\u002Flib\u002Frouter.cjs",7610,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Frouter.cjs",{"path":111,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Flib\u002Fscanner.cjs",7016,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Flib\u002Fscanner.cjs",{"path":115,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fserver.cjs",3313,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fserver.cjs",{"path":119,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fstart-all.sh",1579,"https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcontent-hub\u002Fscripts\u002Fstart-all.sh",[123,156,183,207,233,257],{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":43},"01M6KTQ1G3XCP03TVWRW3ZC12B","ckm:youtube-thumbnail-design","Design YouTube thumbnails with 17 styles, niche-specific guides, and CTR optimization. Generate complete thumbnails with text using Gemini Nano Banana Pro (4K text rendering). Actions: design, create, generate thumbnail. Niches: tech, gaming, education, cooking, fitness, business. Styles: facecam, before-after, listicle, diagram, whiteboard, bold-text, mystery, dark-dramatic. Features: AI generation with text baked in, brand identity, reference face, arrows, Google Font support.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fyoutube-thumbnail-design\u002FSKILL.md",[129,134],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":135,"categoryName":136,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000032","设计师",[138,139,140,25,141,142,143,144,145,146,28,147,148,149,150,151,152,153,154,155],"design","youtube","thumbnail","ckm:youtube thumbnail design","ckm:youtube","diagram","create","generate","nano banana pro","text","thumbnails","before-after","banana","ctr","niches","niche","guides","whiteboard",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":43},"01M6KTPMRWPGHSCT8AAPDHKSZ1","ck:web-frameworks","Build modern full-stack web applications with Next.js (App Router, Server Components, RSC, PPR, SSR, SSG, ISR), Turborepo (monorepo management, task pipelines, remote caching, parallel execution), and RemixIcon (3100+ SVG icons in outlined\u002Ffilled styles). Use when creating React applications, implementing server-side rendering, setting up monorepos with multiple packages, optimizing build performance and caching strategies, adding icon libraries, managing shared dependencies, or working with TypeScript full-stack projects.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fweb-frameworks\u002FSKILL.md",[],[163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182],"web","web frameworks","frameworks","ck:web frameworks","ck","performance","components","react","libraries","projects","monorepo","router","up","caching","strategies","shared","app","remote","Server Components","implementing",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":191,"publishedAt":43},"01M6KTNK7R4AD3ZDHE4WXCSTQ1","ck:ui-styling","Create beautiful, accessible user interfaces with shadcn\u002Fui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs. Use when building user interfaces, implementing design systems, creating responsive layouts, adding accessible components (dialogs, dropdowns, forms, tables), customizing themes and colors, implementing dark mode, generating visual designs and posters, or establishing consistent styling patterns across applications.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fui-styling\u002FSKILL.md",[189,190],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},{"categoryNo":135,"categoryName":136,"taxonomyType":20,"taxonomyTypeDesc":21},[192,193,194,195,167,138,196,197,169,198,144,199,200,201,202,203,204,205,206,182],"ui styling","ui","styling","ck:ui styling","css","canvas","component","design systems","Tailwind","forms","across","layout","themes","utility","mode",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":216,"publishedAt":43},"01M6KTND8TD6D7C273Q99VVQNQ","ck:threejs","Build 3D web apps with Three.js (WebGL\u002FWebGPU). 556 searchable examples, 60 API classes, 20 use cases. Actions: create 3D scene, load model, add animation, implement physics, build VR\u002FXR. Topics: GLTF loader, PBR materials, particle effects, shadows, post-processing, compute shaders, TSL. Integrations: WebGPU, physics engines, spatial audio.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fthreejs\u002FSKILL.md",[213],{"categoryNo":214,"categoryName":215,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000010","后端与接口",[217,209,167,218,144,219,28,220,221,222,223,224,225,226,227,228,229,230,231,232],"threejs","webgpu","shaders","api","Animation","3D","Audio","model","integrations","physics","apps","add","processing","post-processing","vr","effects",{"skillNo":234,"name":235,"nameZh":6,"description":236,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":237,"categories":238,"keywords":239,"publishedAt":43},"01M6KTM3HB7WWZRW64HH35G6TN","ck:sequential-thinking","Apply structured, reflective problem-solving for complex tasks requiring multi-step analysis, revision capability, and hypothesis verification. Use for complex problem decomposition, adaptive planning, analysis needing course correction, problems with unclear scope, multi-step solutions, and hypothesis-driven work.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fsequential-thinking\u002FSKILL.md",[],[240,241,242,167,243,244,245,246,247,248,38,249,250,251,252,253,254,30,255,256],"sequential thinking","thinking","ck:sequential thinking","tasks","planning","verification","analysis","analyze","work","problem-solving","scope","problem","multi","with","course","adaptive","apply",{"skillNo":258,"name":259,"nameZh":6,"description":260,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":261,"categories":262,"keywords":263,"publishedAt":43},"01M6KTJ0QCSSY0ZGEKP99W3HKQ","ck:payment-integration","Integrate payments with SePay (VietQR), Polar (SaaS subscriptions), Stripe (global payments). Use for checkout, webhooks, QR codes, subscriptions, currency conversion, multi-provider order management, commission systems.","https:\u002F\u002Fgithub.com\u002Fdevmotminh\u002Fplayscored\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fpayment-integration\u002FSKILL.md",[],[264,265,266,267,167,268,269,38,270,271,272,273,274,275,276,252,253,277,30,278],"integration","payment integration","payment","ck:payment integration","payments","saas","conversion","provider","subscriptions","task","currency","checkout","codes","qr","order management"]