{"product_id":"claude-plugins-tạo-cowork-plugin-tuy-chỉnh","title":"Claude Plugins: Tạo Cowork Plugin tùy chỉnh","description":"\n\u003ch2\u003ePlugin là gì và tại sao cần tạo plugin riêng?\u003c\/h2\u003e\n\u003cp\u003eClaude Cowork Plugin là gói mở rộng khả năng của Claude cho các workflow cụ thể. Thay vì giải thích lại context mỗi lần, plugin encode domain knowledge, quy trình làm việc, và integrations của tổ chức bạn — để Claude hoạt động như một chuyên gia trong lĩnh vực đó ngay từ đầu.\u003c\/p\u003e\n\n\u003cp\u003eKhi nào nên tạo plugin riêng:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003eBạn có workflow lặp đi lặp lại mà cần Claude hiểu sâu context\u003c\/li\u003e\n  \u003cli\u003eTeam cần dùng Claude theo cách chuẩn hóa với cùng một bộ quy tắc\u003c\/li\u003e\n  \u003cli\u003eBạn muốn tích hợp Claude với tools nội bộ qua MCP\u003c\/li\u003e\n  \u003cli\u003eBạn muốn chia sẻ best practices thành \"skill\" mà cả team có thể dùng\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eKiến trúc Plugin\u003c\/h2\u003e\n\n\u003ch3\u003eCấu trúc thư mục:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eplugin-name\/\n├── .claude-plugin\/\n│   └── plugin.json           # Manifest (bắt buộc)\n├── skills\/                   # Skills (chính)\n│   └── skill-name\/\n│       ├── SKILL.md          # Skill definition\n│       └── references\/       # Tài liệu tham khảo chi tiết\n├── agents\/                   # Subagent definitions (ít dùng)\n├── .mcp.json                 # MCP server connections (nếu cần)\n└── README.md                 # Tài liệu plugin\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eplugin.json tối thiểu:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e{\n  \"name\": \"plugin-name\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Mô tả ngắn về mục đích plugin\",\n  \"author\": {\n    \"name\": \"Tên của bạn hoặc tổ chức\"\n  }\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003e\u003cstrong\u003eQuy tắc đặt tên:\u003c\/strong\u003e kebab-case, chữ thường, chỉ dùng hyphens. Không có spaces hay ký tự đặc biệt.\u003c\/p\u003e\n\n\u003ch2\u003e5 Phase tạo Plugin\u003c\/h2\u003e\n\n\u003ch2\u003ePhase 1: Discovery — Hiểu rõ cần build gì\u003c\/h2\u003e\n\n\u003ch3\u003eCâu hỏi cần trả lời trước:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eTrước khi bắt đầu code, hãy trả lời:\n\n1. Plugin này giải quyết vấn đề gì cụ thể?\n   [Mô tả pain point hiện tại]\n\n2. Ai sẽ dùng plugin này?\n   [Role, context làm việc, level kỹ thuật]\n\n3. Plugin cần tích hợp với tools nào?\n   [Jira, Slack, GitHub, nội bộ...]\n\n4. Workflow điển hình trông như thế nào?\n   [Bước 1 → Bước 2 → Bước 3...]\n\n5. \"Done\" trông như thế nào?\n   [Plugin thành công khi user có thể làm gì mà trước đây không thể?]\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eVí dụ Discovery cho plugin PM tools:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003ePlugin: pm-toolkit\nVấn đề: PM team tốn nhiều thời gian viết PRD, tạo competitive brief, và báo cáo stakeholder theo các format khác nhau\n\nUsers: Product Managers tại công ty, không cần kỹ thuật cao\n\nIntegrations cần: Jira (pull sprint data), Confluence (save docs)\n\nWorkflow:\n- PM mô tả feature cần spec → nhận PRD draft\n- PM input competitor URL → nhận competitive brief\n- PM paste sprint data → nhận stakeholder update\n\nSuccess: PM có thể produce tài liệu chất lượng cao trong 1\/3 thời gian hiện tại\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003ePhase 2: Component Planning\u003c\/h2\u003e\n\n\u003ch3\u003eCác component types:\u003c\/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth\u003eComponent\u003c\/th\u003e\n      \u003cth\u003eDùng khi\u003c\/th\u003e\n      \u003cth\u003eFormat\u003c\/th\u003e\n    \u003c\/tr\u003e\n  \u003c\/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eSkills\u003c\/strong\u003e\u003c\/td\u003e\n      \u003ctd\u003eDomain knowledge, workflows người dùng trigger\u003c\/td\u003e\n      \u003ctd\u003eskills\/*\/SKILL.md\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eMCP Servers\u003c\/strong\u003e\u003c\/td\u003e\n      \u003ctd\u003eKết nối external services, APIs\u003c\/td\u003e\n      \u003ctd\u003e.mcp.json\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eAgents\u003c\/strong\u003e\u003c\/td\u003e\n      \u003ctd\u003eMulti-step tasks autonomous (ít dùng)\u003c\/td\u003e\n      \u003ctd\u003eagents\/*.md\u003c\/td\u003e\n    \u003c\/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cstrong\u003eHooks\u003c\/strong\u003e\u003c\/td\u003e\n      \u003ctd\u003eAuto-trigger on events (hiếm)\u003c\/td\u003e\n      \u003ctd\u003ehooks\/hooks.json\u003c\/td\u003e\n    \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n\u003c\/table\u003e\n\n\u003ch3\u003eTemplate Component Plan:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e| Component | Số lượng | Mục đích |\n|-----------|----------|----------|\n| Skills    | 3        | \/write-prd, \/competitive-brief, \/stakeholder-update |\n| MCP       | 1        | Kết nối Jira để pull sprint data |\n| Agents    | 0        | Không cần |\n| Hooks     | 0        | Không cần |\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003e\u003cstrong\u003eNguyên tắc:\u003c\/strong\u003e Bắt đầu với ít nhất — một skill tốt có giá trị hơn năm skill nửa vời.\u003c\/p\u003e\n\n\u003ch2\u003ePhase 3: Viết SKILL.md\u003c\/h2\u003e\n\u003cp\u003eĐây là phần quan trọng nhất. Skill body là \u003cstrong\u003ehướng dẫn cho Claude\u003c\/strong\u003e, không phải documentation cho user.\u003c\/p\u003e\n\n\u003ch3\u003eFormat SKILL.md chuẩn:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e---\nname: skill-name\ndescription: Mô tả khi nào trigger skill này. Dùng trigger phrases cụ thể.\n  Ví dụ: \"Trigger khi user muốn viết PRD, spec tính năng, document requirements.\"\nargument-hint: \"\u0026lt;feature name hoặc problem statement\u0026gt;\"\n---\n\n# Tên Skill\n\nMô tả ngắn về mục đích skill.\n\n## Usage\n\n\/skill-name [arguments]\n\n## Workflow\n\n### 1. Thu thập thông tin\n[Hướng dẫn cho Claude: hỏi user những gì]\n\n### 2. Process\n[Claude cần làm gì với thông tin đó]\n\n### 3. Output\n[Format output mong muốn]\n\n## Tips\n\n[Các gợi ý để output tốt hơn]\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eVí dụ SKILL.md hoàn chỉnh:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e---\nname: write-prd\ndescription: Viết Product Requirements Document (PRD) hoặc product spec từ\n  feature idea hoặc problem statement. Trigger khi user nói:\n  \"viết PRD\", \"tạo spec\", \"document requirements\", \"feature specification\".\nargument-hint: \"\u0026lt;feature name hoặc problem statement\u0026gt;\"\n---\n\n# Write PRD\n\nTạo PRD chuyên nghiệp theo chuẩn của team.\n\n## Usage\n\n\/write-prd [tên feature hoặc mô tả vấn đề]\n\n## Workflow\n\n### 1. Thu thập context\nHỏi user (nếu chưa rõ từ argument):\n- User problem: Vấn đề gì, ai gặp?\n- Target users: Segment nào?\n- Success metrics: Biết thành công qua metric nào?\n- Constraints: Kỹ thuật, timeline, dependencies?\n\n### 2. Tạo PRD\n\nViết PRD với các sections:\n1. Problem Statement (2-3 câu, evidence-based)\n2. Goals (3-5 measurable outcomes)\n3. Non-Goals (3-5 items explicitly out of scope)\n4. User Stories (format: As a [user], I want [capability] so that [benefit])\n5. Requirements: P0 (must-have) \/ P1 (nice-to-have) \/ P2 (future)\n6. Success Metrics (leading + lagging indicators với targets cụ thể)\n7. Open Questions (tag theo người cần trả lời)\n\n### 3. Review\n\nSau khi draft xong:\n- Hỏi user có cần adjust section nào không\n- Offer expand bất kỳ phần nào\n- Offer tạo engineering ticket breakdown hoặc stakeholder pitch\n\n## Tips\n\n- Goals là outcomes, không phải outputs\n- Non-goals quan trọng như goals — ngăn scope creep\n- Mọi requirement P0 phải có acceptance criteria cụ thể\n- Success metrics phải specific (số %, không phải \"improve\")\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003ePhase 4: Cài đặt MCP connections (nếu cần)\u003c\/h2\u003e\n\n\u003ch3\u003eFormat .mcp.json:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e{\n  \"mcpServers\": {\n    \"jira\": {\n      \"type\": \"stdio\",\n      \"command\": \"node\",\n      \"args\": [\"${CLAUDE_PLUGIN_ROOT}\/mcp-servers\/jira\/index.js\"],\n      \"env\": {\n        \"JIRA_URL\": \"${JIRA_URL}\",\n        \"JIRA_TOKEN\": \"${JIRA_TOKEN}\"\n      }\n    }\n  }\n}\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003e\u003cstrong\u003eLưu ý bảo mật:\u003c\/strong\u003e Dùng environment variables cho credentials, không bao giờ hardcode trong .mcp.json.\u003c\/p\u003e\n\n\u003ch2\u003ePhase 5: Package và distribute\u003c\/h2\u003e\n\n\u003ch3\u003eValidate plugin:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e# Kiểm tra thủ công:\n1. .claude-plugin\/plugin.json tồn tại và có field \"name\" hợp lệ\n2. Name là kebab-case (chỉ lowercase, numbers, hyphens)\n3. Mỗi skill directory có SKILL.md\n4. Frontmatter của SKILL.md có \"name\" và \"description\"\n5. Không có hardcoded paths (dùng ${CLAUDE_PLUGIN_ROOT})\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eTạo .plugin file:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003ecd \/path\/to\/plugin-directory\nzip -r \/tmp\/plugin-name.plugin . -x \"*.DS_Store\"\ncp \/tmp\/plugin-name.plugin \/path\/to\/output\/plugin-name.plugin\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003cp\u003eFile .plugin là ZIP thông thường đổi extension. Khi user nhận file này trong Cowork, họ sẽ thấy preview và có thể install bằng một click.\u003c\/p\u003e\n\n\u003ch2\u003eBest practices khi viết Skills\u003c\/h2\u003e\n\n\u003ch3\u003eTrigger phrases phải cụ thể:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eKHÔNG TỐT:\ndescription: \"Giúp với product management tasks\"\n\nTỐT:\ndescription: \"Tạo PRD hoặc product spec. Trigger khi user nói:\n  'viết PRD', 'tạo spec cho feature X', 'document requirements',\n  'product specification', 'feature requirements document'\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eProgressive disclosure:\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eSKILL.md body: core workflow, dưới 3000 words\u003c\/li\u003e\n  \u003cli\u003ereferences\/: detailed content khi cần depth (templates, examples, checklists)\u003c\/li\u003e\n  \u003cli\u003eexamples\/: ví dụ cụ thể cho edge cases\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eViết cho Claude, không phải cho người dùng:\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eKHÔNG TỐT (documentation):\n\"PRD là tài liệu quan trọng trong product development...\"\n\nTỐT (instructions for Claude):\n\"Khi user yêu cầu viết PRD, hỏi về user problem và target segment trước.\nSau đó generate PRD với cấu trúc sau...\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eVí dụ plugin hoàn chỉnh: pm-toolkit\u003c\/h2\u003e\n\u003cpre\u003e\u003ccode\u003epm-toolkit\/\n├── .claude-plugin\/\n│   └── plugin.json\n│       {\n│         \"name\": \"pm-toolkit\",\n│         \"version\": \"1.0.0\",\n│         \"description\": \"PM tools: PRD, competitive brief, sprint planning\"\n│       }\n├── skills\/\n│   ├── write-prd\/\n│   │   └── SKILL.md\n│   ├── competitive-brief\/\n│   │   └── SKILL.md\n│   └── sprint-planning\/\n│       ├── SKILL.md\n│       └── references\/\n│           └── capacity-templates.md\n└── README.md\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eTroubleshooting phổ biến\u003c\/h2\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePlugin không load được\u003c\/strong\u003e: Kiểm tra plugin.json syntax (valid JSON, name là kebab-case)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSkill không trigger\u003c\/strong\u003e: Description cần include trigger phrases mà user thực tế nói\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMCP không kết nối\u003c\/strong\u003e: Kiểm tra env variables và path dùng ${CLAUDE_PLUGIN_ROOT}\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSkill quá verbose\u003c\/strong\u003e: Move detailed content vào references\/, giữ SKILL.md dưới 3000 words\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eBước tiếp theo\u003c\/h2\u003e\n\u003cp\u003eSau khi tạo plugin, bước tiếp theo thường là customize nó cho các teams khác nhau trong tổ chức. Xem \u003ca href=\"\/collections\/nang-cao\"\u003eClaude Plugins: Tùy chỉnh Plugin cho team\u003c\/a\u003e để biết cách adapt một plugin có sẵn cho workflow và tools cụ thể của từng team.\u003c\/p\u003e\n\n\n\u003chr\u003e\n\u003ch3\u003eBài viết liên quan\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"\/products\/claude-plugins-tuy-ch%E1%BB%89nh-plugin-cho-team\"\u003eClaude Plugins: Tùy chỉnh Plugin cho team\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/developer-playbook-claude-cho-l%E1%BA%ADp-trinh-vien\"\u003eDeveloper Playbook — Claude cho lập trình viên\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/claude-api-authentication-rate-limits-va-error-handling\"\u003eClaude API — Authentication, Rate Limits và Error Handling\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/claude-cho-engineering-deploy-checklist-t%E1%BB%B1-d%E1%BB%99ng\"\u003eClaude cho Engineering: Deploy checklist tự động\u003c\/a\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ca href=\"\/products\/evaluator-optimizer-t%E1%BB%B1-c%E1%BA%A3i-thi%E1%BB%87n-output-v%E1%BB%9Bi-feedback-loop\"\u003eEvaluator-Optimizer — Tự cải thiện output với feedback loop\u003c\/a\u003e\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":66959030878253,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0763\/9531\/5245\/files\/claude-plugins-t_o-cowork-plugin-tuy-ch_nh_6a5fc62e-9544-419d-899b-e2b4f556e951.jpg?v=1782891945","url":"https:\/\/claudeae.com\/products\/claude-plugins-t%e1%ba%a1o-cowork-plugin-tuy-ch%e1%bb%89nh","provider":"Claude.vn","version":"1.0","type":"link"}