Chuyển tới nội dung chính

Hệ thống Plugins

Plugins trong Claude Code là gì?

Plugins là bộ sưu tập các công cụ phát triển tùy chỉnh mở rộng khả năng của Claude Code. Hãy nghĩ về chúng như những tăng cường sức mạnh cho quy trình phát triển của bạn - bạn có thể cài đặt mọi thứ cần thiết chỉ với một lệnh duy nhất.

Một Plugin có thể chứa bốn thành phần cốt lõi:

  • Slash Commands: Phím tắt nhanh cho các thao tác phổ biến
  • Subagents: Các AI agent chuyên biệt cho từng nhiệm vụ cụ thể
  • MCP Servers: Kết nối đến các công cụ và nguồn dữ liệu bên ngoài
  • Hooks: Hành vi tùy chỉnh tại các thời điểm cụ thể trong quy trình làm việc

Điểm đổi mới quan trọng: tất cả các thành phần này được đóng gói cùng nhau, khiến việc thiết lập môi trường phát triển phức tạp trở nên đơn giản và nhanh chóng.

Tại sao nên sử dụng Plugins?

Các vấn đề trong quản lý công cụ truyền thống

Khi không có Plugins, các nhóm phát triển phải đối mặt với:

  • 🔄 Công cụ rải rác: Mỗi thành viên cấu hình công cụ của mình theo cách khác nhau
  • 📚 Đường cong học tập dốc: Thành viên mới mất nhiều ngày để thiết lập môi trường
  • 🔧 Địa ngục cấu hình: Mọi người phải duy trì các script và config riêng
  • 🐛 Tiêu chuẩn không nhất quán: Không có cách thống nhất để áp dụng các thực hành tốt nhất

Giải pháp từ Plugins

Plugins giải quyết những vấn đề này thông qua:

  • Cài đặt chỉ một lệnh: Toàn bộ công cụ được cài đặt ngay lập tức
  • 🎯 Tiêu chuẩn hóa: Mọi người sử dụng cùng công cụ và quy trình làm việc
  • 🚀 Onboarding nhanh chóng: Thành viên mới làm việc hiệu quả ngay từ ngày đầu
  • 🔄 Quản lý dễ dàng: Bật/tắt plugins khi cần

Hiểu về bốn thành phần

1. Slash Commands

Slash Commands là điểm khởi đầu cho các thao tác nhanh. Chúng đóng gói các tác vụ phức tạp thành các lệnh đơn giản.

Các mẫu thông dụng:

/test          # Chạy bộ test
/deploy # Deploy lên production
/review # Bắt đầu quy trình review code
/docs # Tạo tài liệu
/build # Thực hiện build tối ưu

Cách thức hoạt động:

Khi bạn gõ /test, Claude Code:

  1. Đọc định nghĩa lệnh từ .claude/commands/test.md
  2. Thực thi quy trình đã được định nghĩa
  3. Trả kết quả về cho bạn

Tạo Slash Command đầu tiên:

<!-- .claude/commands/hello.md -->
Say hello to the user and show the current project structure.

Giờ đây khi gõ /hello sẽ thực thi lệnh này.

2. Subagents

Subagents là các AI agent chuyên biệt với chuyên môn sâu trong từng lĩnh vực. Chúng giống như việc có các chuyên gia tư vấn trong nhóm của bạn.

Ví dụ thực tế:

DevOps Agent:

  • Tự động hóa quy trình triển khai
  • Giám sát tình trạng hệ thống
  • Xử lý các tác vụ hạ tầng
> Use DevOps agent to set up CI/CD pipeline for this project

Testing Agent:

  • Tạo các test case thông minh
  • Xác định các trường hợp biên
  • Tối ưu phạm vi kiểm thử
> Use Testing agent to create comprehensive tests for the authentication module

Security Agent:

  • Quét code để tìm lỗ hổng bảo mật
  • Đề xuất cải thiện bảo mật
  • Xác thực các mẫu bảo mật
> Use Security agent to audit this API endpoint

3. MCP Servers

MCP (Model Context Protocol) Servers cung cấp khả năng kết nối đến các công cụ và nguồn dữ liệu bên ngoài.

Khả năng kết nối:

Công cụ phát triển:

- Git: Các thao tác quản lý phiên bản
- Docker: Quản lý container
- Kubernetes: Orchestration và deployment

Cơ sở dữ liệu:

- PostgreSQL: Dữ liệu quan hệ
- MongoDB: Lưu trữ tài liệu
- Redis: Caching và sessions

Dịch vụ đám mây:

- AWS: Hạ tầng đám mây
- Azure: Đám mây Microsoft
- GCP: Nền tảng đám mây Google

Dịch vụ API:

- Microservices nội bộ
- APIs của bên thứ ba
- Tích hợp webhook

Ví dụ cấu hình MCP Server:

{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_CONNECTION": "postgresql://localhost/mydb"
}
}
}
}

4. Hooks

Hooks tùy chỉnh hành vi của Claude Code tại các thời điểm cụ thể trong quy trình làm việc.

Các loại Hook có sẵn:

Pre-commit Hook:

// .claude/hooks/pre-commit.js
// Chạy trước khi commit code
module.exports = async (context) => {
// Chạy linters
// Kiểm tra formatting
// Xác thực tests
return { allow: true };
};

Post-analysis Hook:

// .claude/hooks/post-analysis.js
// Chạy sau khi phân tích code
module.exports = async (context) => {
// Tạo báo cáo
// Cập nhật tài liệu
// Thông báo cho nhóm
};

Error Hook:

// .claude/hooks/error.js
// Chạy khi có lỗi xảy ra
module.exports = async (error, context) => {
// Ghi log chi tiết lỗi
// Thử khôi phục
// Thông báo cho hệ thống giám sát
};

Cài đặt và sử dụng Plugins

Cài đặt cơ bản

Cách đơn giản nhất để cài đặt plugin:

/plugin install organization/plugin-name

Ví dụ:

/plugin install danavila/devops-toolkit

Claude sẽ:

  1. Tải plugin từ repository
  2. Cài đặt tất cả dependencies
  3. Cấu hình tất cả các thành phần
  4. Làm cho nó có sẵn ngay lập tức

Quản lý Plugins

Plugins được thiết kế nhẹ và có thể bật/tắt dễ dàng:

# Bật một plugin
/plugin enable plugin-name

# Tắt một plugin
/plugin disable plugin-name

# Liệt kê tất cả plugins đã cài
/plugin list

# Xem chi tiết plugin
/plugin info plugin-name

# Gỡ cài đặt plugin
/plugin uninstall plugin-name

Vòng đời Plugin

Install → Configure → Enable → Use → Disable/Uninstall

Installation: Tải về và thiết lập plugin Configuration: Tùy chỉnh cài đặt plugin cho dự án của bạn Enable: Kích hoạt các tính năng của plugin Use: Truy cập slash commands, subagents và hooks Disable: Tạm thời tắt mà không gỡ cài đặt Uninstall: Xóa hoàn toàn plugin

Plugin Marketplaces

Marketplaces là gì?

Marketplaces là các kho lưu trữ nơi các nhà phát triển chia sẻ plugins. Bất kỳ ai cũng có thể tạo và host marketplace của riêng mình.

Tạo Marketplace

Bước 1: Tạo file cấu hình

// .claude-plugin/marketplace.json
{
"name": "My Marketplace",
"description": "Custom plugins for our team",
"plugins": [
{
"name": "team-standards",
"description": "Enforce team coding standards",
"version": "1.0.0",
"repository": "github.com/myteam/team-standards"
}
]
}

Bước 2: Host trên GitHub

git init
git add .claude-plugin/
git commit -m "Initialize plugin marketplace"
git push origin main

Bước 3: Chia sẻ với nhóm

/plugin marketplace add myteam/plugin-marketplace

Marketplaces cộng đồng

Marketplace của Dan Ávila:

/plugin marketplace add danavila/plugins

Bao gồm:

  • Công cụ tự động hóa DevOps
  • Trình tạo tài liệu
  • Tích hợp quản lý dự án

Repository của Seth Hobson:

/plugin marketplace add sethhobson/agents

Cung cấp hơn 80 subagents chuyên biệt:

  • Phát triển Frontend (React, Vue, Angular)
  • Phát triển Backend (Node.js, Python, Java)
  • Data science và machine learning
  • Phát triển Mobile (iOS, Android)

Quy trình làm việc thực tế với Plugins

Tình huống 1: Tiêu chuẩn hóa nhóm Frontend

Vấn đề: Các thành viên nhóm sử dụng các quy tắc linting và formatting khác nhau

Giải pháp: Tạo Team Standards Plugin

# Cài đặt plugin tiêu chuẩn nhóm
/plugin install company/frontend-standards

Plugin bao gồm:

  • /lint - Chạy ESLint với config của nhóm
  • /format - Áp dụng quy tắc Prettier của nhóm
  • /test - Chạy Jest với yêu cầu coverage
  • React Agent - Áp dụng các mẫu component
  • Accessibility Agent - Đảm bảo tuân thủ WCAG

Kết quả:

  • Code style nhất quán trong toàn nhóm
  • Kiểm tra chất lượng tự động
  • Giảm thời gian review code

Tình huống 2: Tăng năng suất Full-Stack

Vấn đề: Code boilerplate lặp đi lặp lại làm chậm quá trình phát triển

Giải pháp: Cài đặt Productivity Plugin

/plugin install awesome-dev/fullstack-boost

Plugin cung cấp:

  • /api - Tạo REST API với best practices
  • /component - Tạo UI components kèm tests
  • /db-migrate - Hỗ trợ migration database
  • Backend Agent - Đề xuất tối ưu API
  • Database Agent - Mẹo về hiệu suất query

Kết quả:

  • Phát triển tính năng nhanh gấp 3 lần
  • Các mẫu kiến trúc nhất quán
  • Hướng dẫn tối ưu tích hợp sẵn

Tình huống 3: Tuân thủ bảo mật doanh nghiệp

Vấn đề: Phải đáp ứng các tiêu chuẩn bảo mật trước khi triển khai

Giải pháp: Security Compliance Plugin

/plugin install enterprise/security-compliance

Plugin áp dụng:

  • /security-scan - Kiểm tra bảo mật tự động
  • /compliance-check - Xác thực tuân thủ quy định
  • /audit-log - Tạo audit trail
  • Security Agent - Phát hiện và sửa lỗ hổng
  • Compliance Hook - Xác thực bảo mật pre-commit

Kết quả:

  • Áp dụng bảo mật tự động
  • Tài liệu tuân thủ được tạo tự động
  • Giảm sự cố bảo mật

Tạo Plugin đầu tiên

Cấu trúc Plugin

my-plugin/
├── .claude-plugin/
│ ├── manifest.json # Metadata plugin
│ ├── commands/ # Slash commands
│ │ ├── test.md
│ │ └── deploy.md
│ ├── agents/ # Subagents
│ │ ├── testing-agent.md
│ │ └── deploy-agent.md
│ ├── mcp-servers/ # Cấu hình MCP server
│ │ └── custom-tools.json
│ └── hooks/ # Cấu hình Hooks
│ ├── pre-commit.js
│ └── post-analysis.js
└── README.md

Bước 1: Tạo Manifest

{
"name": "my-first-plugin",
"version": "1.0.0",
"description": "My custom development tools",
"author": "Your Name",
"components": {
"commands": ["test", "deploy"],
"agents": ["testing-agent"],
"hooks": ["pre-commit"]
}
}

Bước 2: Thêm Slash Command

<!-- .claude-plugin/commands/test.md -->
# Test Command

Run the project test suite with coverage reporting.

## Steps:
1. Check for test files
2. Run Jest with coverage
3. Generate HTML report
4. Open report in browser

Bước 3: Tạo Subagent

<!-- .claude-plugin/agents/testing-agent.md -->
# Testing Agent

You are a testing expert specializing in comprehensive test coverage.

## Capabilities:
- Generate unit tests for functions and classes
- Create integration tests for APIs
- Design end-to-end test scenarios
- Identify edge cases and test coverage gaps
- Suggest test data and mocking strategies

## Guidelines:
- Follow AAA pattern (Arrange, Act, Assert)
- Aim for 80%+ code coverage
- Include positive and negative test cases
- Mock external dependencies appropriately

Bước 4: Thêm Hook

// .claude-plugin/hooks/pre-commit.js
module.exports = async (context) => {
console.log('Running pre-commit checks...');

// Chạy linter
const lintResult = await context.exec('npm run lint');
if (lintResult.exitCode !== 0) {
return {
allow: false,
message: 'Linting failed. Please fix errors before committing.'
};
}

// Chạy tests
const testResult = await context.exec('npm test');
if (testResult.exitCode !== 0) {
return {
allow: false,
message: 'Tests failed. Please fix failing tests before committing.'
};
}

return { allow: true };
};

Bước 5: Kiểm thử Plugin

# Tải plugin cục bộ
/plugin install ./my-plugin

# Kiểm thử slash command
/test

# Sử dụng subagent
> Use Testing agent to create tests for UserService

# Xác thực hook (thử commit)
git add .
git commit -m "test commit"

Best Practices

1. Single Responsibility

Mỗi plugin nên tập trung vào một lĩnh vực:

✅ Tốt:

- authentication-plugin (chỉ xử lý auth)
- testing-plugin (chỉ xử lý testing)
- deployment-plugin (chỉ xử lý deployment)

❌ Không tốt:

- everything-plugin (cố gắng làm mọi thứ)

2. Composability

Thiết kế plugins để hoạt động tốt cùng nhau:

# Plugins nên bổ sung cho nhau
/plugin enable testing-plugin
/plugin enable quality-plugin
/plugin enable deployment-plugin

# Chúng không nên xung đột

3. Tài liệu rõ ràng

Mỗi plugin cần có:

# Plugin Name

## Description
Giải thích rõ ràng về chức năng

## Installation
Hướng dẫn cài đặt từng bước

## Usage
Ví dụ về tất cả lệnh và tính năng

## Configuration
Các tùy chọn và cài đặt có sẵn

## Troubleshooting
Các vấn đề thường gặp và giải pháp

4. Quản lý phiên bản

Sử dụng semantic versioning:

{
"version": "1.2.3"
// 1 = Major (breaking changes)
// 2 = Minor (new features)
// 3 = Patch (bug fixes)
}

5. Tối ưu hiệu suất

Lazy Loading:

// Chỉ tải khi cần
if (command === '/heavy-operation') {
const module = await import('./heavy-module');
module.execute();
}

Caching:

// Cache các thao tác tốn kém
const cache = new Map();
if (cache.has(key)) {
return cache.get(key);
}
const result = await expensiveOperation();
cache.set(key, result);

Troubleshooting

Plugin không cài đặt được

Vấn đề: Cài đặt plugin thất bại

Giải pháp:

# Kiểm tra kết nối mạng
ping github.com

# Xác minh repository plugin tồn tại
git ls-remote https://github.com/org/plugin-name

# Thử với verbose logging
/plugin install org/plugin-name --verbose

# Kiểm tra plugins xung đột
/plugin list

Slash Command không tìm thấy

Vấn đề: /mycommand báo "command not found"

Giải pháp:

# Xác minh plugin đã được bật
/plugin list

# Bật nếu đã tắt
/plugin enable plugin-name

# Reload plugins
/plugin reload

# Kiểm tra định nghĩa lệnh tồn tại
ls .claude-plugin/commands/

Hook không kích hoạt

Vấn đề: Pre-commit hook không chạy

Giải pháp:

// Kiểm tra hook đã được đăng ký
/plugin info plugin-name

// Xác minh file hook tồn tại và có tên đúng
ls .claude-plugin/hooks/

// Kiểm tra cú pháp hook
node .claude-plugin/hooks/pre-commit.js

// Bật hook debugging
/plugin config plugin-name --debug-hooks

Chủ đề nâng cao

Tải Plugin có điều kiện

// Chỉ tải trong các môi trường cụ thể
if (process.env.NODE_ENV === 'production') {
await loadPlugin('production-monitoring');
}

Plugin Dependencies

{
"name": "advanced-plugin",
"dependencies": {
"base-plugin": "^1.0.0",
"utils-plugin": "^2.1.0"
}
}

Cấu hình Plugin tùy chỉnh

{
"plugins": {
"my-plugin": {
"enabled": true,
"config": {
"apiKey": "your-key",
"timeout": 5000,
"retries": 3
}
}
}
}

Bảo mật Plugin

Best Practices

1. Code Review: Luôn xem xét code plugin trước khi cài đặt 2. Nguồn đáng tin cậy: Chỉ cài đặt từ các marketplace đã xác minh 3. Quyền truy cập: Hiểu rõ các quyền truy cập mà plugins yêu cầu 4. Cập nhật thường xuyên: Giữ plugins luôn cập nhật để vá lỗ hổng bảo mật

Dấu hiệu cảnh báo

⚠️ Các dấu hiệu cần chú ý:

  • Yêu cầu quyền quá mức
  • Chứa code bị obfuscate
  • Không có source code
  • Nhà phát triển không rõ nguồn gốc
  • Không có tài liệu

Các bước tiếp theo

Bây giờ bạn đã hiểu về Plugins, bạn có thể:

  1. Khám phá Marketplaces: Duyệt các plugins có sẵn

    /plugin marketplace add danavila/plugins
    /plugin browse
  2. Cài đặt Plugins hữu ích: Bắt đầu với các plugins phổ biến

    /plugin install danavila/devops-toolkit
  3. Tạo Plugin của bạn: Xây dựng công cụ cho quy trình làm việc

    mkdir my-plugin
    cd my-plugin
    # Làm theo cấu trúc ở trên
  4. Chia sẻ với cộng đồng: Publish plugin của bạn

    git push origin main
    # Chia sẻ URL repository

Tiếp tục đọc: Dynamic Memory để tìm hiểu cách Claude Code duy trì context qua các phiên làm việc.