{"product_id":"tổ-chức-claude-code-skills-thanh-plugin-marketplaces-từ-chaos-dến-hệ-thống","title":"Tổ Chức Claude Code Skills Thành Plugin Marketplaces: Từ Chaos Đến Hệ Thống","description":"\n\u003ch2\u003eVấn Đề: Skills Khắp Nơi, Không Ai Cập Nhật\u003c\/h2\u003e\n\n\u003cp\u003eScott Spence là developer với integration sâu vào Claude Code workflow — anh đã build skills cho \"this and that\" trong nhiều tháng. Nhưng đến tháng 1\/2026, anh đối mặt với vấn đề phổ biến:\u003c\/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"Skills were dotted around in differing repos — causing developers to constantly copy-paste and struggle finding updated versions.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eĐây là \"works-on-my-machine\" problem của skills ecosystem: mỗi project có version riêng, outdated, không sync với nhau. Khi bạn improve một skill trong project A, project B vẫn dùng version cũ.\u003c\/p\u003e\n\n\u003cp\u003eGiải pháp của Spence: reorganize toàn bộ thành \u003cstrong\u003e2 plugin marketplaces riêng biệt\u003c\/strong\u003e, dựa trên natural separation của use cases.\u003c\/p\u003e\n\n\u003ch2\u003eKiến Trúc: 2 Marketplaces Với Mục Đích Rõ Ràng\u003c\/h2\u003e\n\n\u003ch3\u003eMarketplace 1: claude-code-toolkit\u003c\/h3\u003e\n\n\u003cp\u003eGeneral productivity tools áp dụng được cho \u003cem\u003ebất kỳ\u003c\/em\u003e Claude Code project nào:\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003etoolkit-skills:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eForced-eval hook — 84% vs 20% activation rate (chi tiết phía dưới)\u003c\/li\u003e\n\u003cli\u003eSession management utilities\u003c\/li\u003e\n\u003cli\u003eCross-project workflow templates\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eperformance:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSQLite FTS5 indexing — giảm file search từ 28ms → 3ms\u003c\/li\u003e\n\u003cli\u003eConversation logging và retrieval\u003c\/li\u003e\n\u003cli\u003ePerformance profiling utilities\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003emcp-essentials:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSetup guides cho popular MCP servers\u003c\/li\u003e\n\u003cli\u003eConfiguration templates\u003c\/li\u003e\n\u003cli\u003eAuthentication helpers\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eanalytics:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eUsage data querying\u003c\/li\u003e\n\u003cli\u003eSession statistics\u003c\/li\u003e\n\u003cli\u003eCost tracking utilities\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eMarketplace 2: svelte-skills-kit\u003c\/h3\u003e\n\n\u003cp\u003eFramework-specific knowledge cho Svelte\/SvelteKit ecosystem:\u003c\/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eRunes documentation ($state, $derived, $effect, $props, $bindable)\u003c\/li\u003e\n\u003cli\u003eData flow patterns cho SvelteKit\u003c\/li\u003e\n\u003cli\u003eComponent library guidance (shadcn-svelte, Bits UI)\u003c\/li\u003e\n\u003cli\u003eDeployment configurations (Vercel, Cloudflare, Railway)\u003c\/li\u003e\n\u003cli\u003eTesting patterns với Vitest và Playwright\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003ePhân tách này làm rõ một principle quan trọng: \u003cem\u003eskills nên tách theo purpose, không phải theo project.\u003c\/em\u003e\u003c\/p\u003e\n\n\u003ch2\u003eInsight #64: Forced-Eval Hook — 84% vs 20%\u003c\/h2\u003e\n\n\u003cp\u003eĐây là phát hiện quan trọng nhất trong bài viết — và là Insight #64 được nghiên cứu Claude.vn đặc biệt highlight.\u003c\/p\u003e\n\n\u003cp\u003eSpence đo lường activation rate của skills:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eKhông có forced-eval hook:\u003c\/strong\u003e ~20% — skills chỉ được trigger khoảng 1 trong 5 lần phù hợp\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eCó forced-eval hook:\u003c\/strong\u003e ~84% — skills được trigger đúng hầu hết thời gian\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e\"I tested this extensively. The difference is remarkable — and it changes how I think about skill design.\"\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003ch3\u003eForced-Eval Hook Là Gì?\u003c\/h3\u003e\n\n\u003cp\u003eForced-eval hook là một hook kích hoạt ở đầu mỗi session, yêu cầu Claude explicitly evaluate tất cả available skills và check xem có skill nào phù hợp với current context không.\u003c\/p\u003e\n\n\u003cp\u003eFile hook đơn giản:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e---\n# .claude\/hooks\/session-start.sh\n#!\/bin\/bash\necho \"Available skills for this session:\"\nls ~\/.claude\/skills\/\necho \"Please evaluate which skills are relevant to the user's first request.\"\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eTại sao điều này work: Không có hook, Claude \"biết\" về skills nhưng không actively consider chúng với mỗi request. Hook buộc một \"skill awareness pass\" ở đầu session — dramatically increasing the chances skills are triggered when relevant.\u003c\/p\u003e\n\n\u003ch3\u003eTối Ưu Skill Descriptions Để Maximize Activation\u003c\/h3\u003e\n\n\u003cp\u003eKết hợp với forced-eval hook, Spence nhận ra rằng skill description quality cực kỳ quan trọng:\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003eBad description:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003ename: svelte-help\ndescription: Helps with Svelte\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003e\u003cstrong\u003eGood description:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003ename: svelte-help\ndescription: Use when working with Svelte components, SvelteKit routes,\n  reactive state ($state, $derived), stores, or when getting Svelte\n  compilation errors. Includes Svelte 5 runes syntax.\ntriggers: [svelte, sveltekit, runes, $state, $derived, component]\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eExplicit triggers và detailed description = Claude knows exactly when to use the skill.\u003c\/p\u003e\n\n\u003ch2\u003eSQLite Foundation: Tại Sao Không Chỉ Là Files\u003c\/h2\u003e\n\n\u003cp\u003eMột component ít ngờ tới trong architecture của Spence: \u003cstrong\u003eSQLite làm backbone cho conversation logging và skill analytics.\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003ch3\u003eccrecall: Conversation Memory System\u003c\/h3\u003e\n\n\u003cp\u003eSpence build một tool tên \u003ccode\u003eccrecall\u003c\/code\u003e — SQLite database track tất cả Claude Code sessions:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e2,555 sessions được track trong một 186MB database\u003c\/li\u003e\n\u003cli\u003eFTS5 (Full Text Search) indexing cho fast search\u003c\/li\u003e\n\u003cli\u003eQuery từ file search: 28ms → 3ms sau khi add FTS5 index\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003e\u003cstrong\u003eUse case thực tế:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\"What was that clever approach to authentication I used 3 months ago?\" → Query ccrecall → Find exact session → Resume context\u003c\/p\u003e\n\u003c\/blockquote\u003e\n\n\u003cp\u003eSQLite advantages cho AI workflows:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eZero configuration — một file, không cần server\u003c\/li\u003e\n\u003cli\u003ePortable — copy file là copy database\u003c\/li\u003e\n\u003cli\u003eFast — sub-millisecond queries cho most operations\u003c\/li\u003e\n\u003cli\u003eUniversally accessible — mọi language và tool đều có SQLite driver\u003c\/li\u003e\n\u003cli\u003eQueryable — unlike JSON logs, dùng được SQL để analyze patterns\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eAnalytics Queries Hữu Ích\u003c\/h3\u003e\n\n\u003cp\u003eVới conversation history trong SQLite, Spence có thể query:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e-- Skills được dùng nhiều nhất\nSELECT skill_name, COUNT(*) as usage_count\nFROM skill_activations\nGROUP BY skill_name\nORDER BY usage_count DESC;\n\n-- Sessions nào tốn token nhiều nhất\nSELECT session_id, token_count, DATE(created_at)\nFROM sessions\nORDER BY token_count DESC\nLIMIT 20;\n\n-- Pattern: dùng skills gì sau 3pm\nSELECT skill_name, COUNT(*)\nFROM skill_activations\nWHERE HOUR(created_at) \u0026gt;= 15\nGROUP BY skill_name;\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eEcosystem Integration: Không Chỉ Là Standalone\u003c\/h2\u003e\n\n\u003cp\u003eSpence's marketplaces không standalone — chúng integrate với broader tooling:\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003emcp-omnisearch:\u003c\/strong\u003e MCP server cho multi-source search (web, GitHub, docs) — complementary tool cho claude-code-toolkit\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003emcp-sqlite-tools:\u003c\/strong\u003e MCP server trực tiếp read\/write SQLite databases — giúp Claude Code query ccrecall và other data stores\u003c\/p\u003e\n\n\u003cp\u003e\u003cstrong\u003emcpick:\u003c\/strong\u003e TUI tool quản lý và switch giữa MCP configurations — khi có nhiều projects với different MCP needs\u003c\/p\u003e\n\n\u003ch2\u003ePublishing: Chia Sẻ Marketplaces Với Cộng Đồng\u003c\/h2\u003e\n\n\u003cp\u003eSpence publish cả hai marketplaces dưới dạng GitHub repositories:\u003c\/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e# Install claude-code-toolkit\nclaude plugin install github.com\/spences10\/claude-code-toolkit\n\n# Install svelte-skills-kit\nclaude plugin install github.com\/spences10\/svelte-skills-kit\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eVới plugin versioning, users nhận được:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eSemantic versioning (1.2.3)\u003c\/li\u003e\n\u003cli\u003eChangelog tự động từ git commits\u003c\/li\u003e\n\u003cli\u003eUpdate commands: \u003ccode\u003eclaude plugin update claude-code-toolkit\u003c\/code\u003e\n\u003c\/li\u003e\n\u003cli\u003eRollback: \u003ccode\u003eclaude plugin install claude-code-toolkit@1.1.0\u003c\/code\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eTemplate: Xây Dựng Marketplace Của Riêng Bạn\u003c\/h2\u003e\n\n\u003cp\u003eDựa trên approach của Spence, đây là template để bắt đầu:\u003c\/p\u003e\n\n\u003ch3\u003eBước 1: Audit Skills Hiện Có\u003c\/h3\u003e\n\u003cp\u003eList tất cả skills bạn đang dùng:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003els ~\/.claude\/skills\/\nls *\/. claude\/skills\/ # trong các projects\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eBước 2: Phân Loại Theo Mục Đích\u003c\/h3\u003e\n\u003cp\u003eCategories phổ biến:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eLanguage\/framework specific (react-skills, python-skills)\u003c\/li\u003e\n\u003cli\u003eDomain specific (data-analysis-skills, security-skills)\u003c\/li\u003e\n\u003cli\u003eGeneral productivity (review-skills, doc-skills)\u003c\/li\u003e\n\u003cli\u003eTeam standards (company-coding-standards)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eBước 3: Tạo Plugin Structure\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003emy-skill-marketplace\/\n├── plugin.yaml\n├── README.md\n├── skills\/\n│   ├── skill-1.md\n│   └── skill-2.md\n├── hooks\/\n│   └── session-start.sh  # forced-eval hook\n└── CHANGELOG.md\n\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eBước 4: Add Forced-Eval Hook\u003c\/h3\u003e\n\u003cp\u003eInclude session-start hook trong mỗi marketplace — đây là critical infrastructure cho activation rates.\u003c\/p\u003e\n\n\u003ch3\u003eBước 5: Publish và Maintain\u003c\/h3\u003e\n\u003cp\u003eGit repo → Plugin registry → Team install command\u003c\/p\u003e\n\n\u003ch2\u003eROI: Tại Sao Đầu Tư Vào Skills Organization Là Worth It\u003c\/h2\u003e\n\n\u003cp\u003eSpence ước tính time investment vs return:\u003c\/p\u003e\n\n\u003cul\u003e\n\u003cli\u003eInitial organization: ~4-6 giờ\u003c\/li\u003e\n\u003cli\u003eOngoing maintenance: ~30 phút\/tuần\u003c\/li\u003e\n\u003cli\u003eTime saved per developer per day (với 84% vs 20% activation): ~20-30 phút\u003c\/li\u003e\n\u003cli\u003eBreak-even với team 3 người: ~2 tuần\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp\u003eVà đây chưa tính value của knowledge preservation — skills capture institutional knowledge mà thông thường chỉ tồn tại trong đầu của experienced developers.\u003c\/p\u003e\n\n\u003cp\u003eTìm hiểu thêm về 6 extension points của Claude Code trong bài \u003ca href=\"\/products\/claude-code-extensions-skills-mcp-hooks-subagents\"\u003e6 Extension Points của Claude Code: Hướng dẫn đầy đủ\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003cp\u003eVà xem cách bắt đầu với Skills Marketplace trong bài \u003ca href=\"\/products\/claude-code-skills-marketplace-beginner-walkthrough\"\u003eClaude Code Skills Marketplace: Hướng dẫn cho người mới\u003c\/a\u003e.\u003c\/p\u003e\n\n\u003chr\u003e\n\u003ch2\u003eNguồn tham khảo\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003eScott Spence, \"Organising Claude Code Skills Into Plugin Marketplaces,\" scottspence.com, 24\/01\/2026. \u003ca href=\"https:\/\/scottspence.com\/posts\/organising-claude-code-skills-into-plugin-marketplaces\" target=\"_blank\"\u003eĐọc bài gốc\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eAnthropic, Claude Code Plugin Documentation, 2026. \u003ca href=\"https:\/\/code.claude.com\/docs\/plugins\" target=\"_blank\"\u003eTài liệu chính thức\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eSQLite FTS5 Extension Documentation. \u003ca href=\"https:\/\/www.sqlite.org\/fts5.html\" target=\"_blank\"\u003eSQLite.org\u003c\/a\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47725824835796,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/t_-ch_c-claude-code-skills-thanh-plugin-marketplaces-t_-chaos-d_n-h_-th_ng.jpg?v=1774579707","url":"https:\/\/claude.vn\/products\/t%e1%bb%95-ch%e1%bb%a9c-claude-code-skills-thanh-plugin-marketplaces-t%e1%bb%ab-chaos-d%e1%ba%bfn-h%e1%bb%87-th%e1%bb%91ng","provider":"CLAUDE.VN","version":"1.0","type":"link"}