> ## Documentation Index
> Fetch the complete documentation index at: https://huongdan.luklak.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bài 7 — Nâng cao: Skills, Hooks, MCP & Schedule

> Hệ sinh thái đầy đủ: skill tái sử dụng, hook tự động, MCP kết nối hệ thống ngoài, agent chạy theo lịch, hệ thống bộ nhớ, Agent SDK.

**Điểm cốt lõi của bài này**

<Check>
  **Bạn không cần học hết mọi thứ trong ngày đầu — nhưng biết những thứ này tồn tại sẽ thay đổi những gì bạn dám tưởng tượng.**
</Check>

## Mở đầu

5 bài đầu đã dạy nền tảng. Bài 6 dạy kỷ luật. Bài này là bản đồ của những gì có thể — để khi bạn gặp một nhu cầu (tự động kiểm tra trước commit, tích hợp Slack, chạy báo cáo hàng ngày...) bạn biết Claude Code có sẵn công cụ cho việc đó.

Bạn không cần nhớ từng chi tiết. Chỉ cần biết: **"À, có công cụ cho cái đó — khi cần sẽ quay lại."** Đó là mục tiêu của bài này.

## Các thành phần nâng cao

<AccordionGroup>
  <Accordion title="Skills — Quy trình tái sử dụng" icon="sparkles">
    **Skill là gì**: một **quy trình tái sử dụng (reusable procedure)** lưu dưới dạng file markdown. Khi bạn hoặc Claude "gọi" một skill, nội dung skill được load vào ngữ cảnh, và Claude làm theo các bước đó.

    **Khác gì sub-agent**: skill là *quy trình*, sub-agent là *người làm*. Sub-agent có cửa sổ ngữ cảnh riêng và role riêng. Skill chỉ là instruction có sẵn.

    **Khi nào dùng**: khi bạn thấy mình copy-paste cùng một checklist vào chat nhiều lần. Ví dụ: "trước mỗi commit, chạy lint + test + review message". Đó là ứng viên (candidate) cho skill.

    **Ví dụ thực**: skill `skill-translate-en-to-vi.md` của Lulu (xem Bài 5). Hơn 80 dòng quy tắc, gọi bằng 1 câu.
  </Accordion>

  <Accordion title="Hooks — Tự động hóa tại sự kiện" icon="link">
    **Hook là gì**: tự động hóa tại sự kiện vòng đời (lifecycle). "Nếu X xảy ra thì làm Y."

    **Các loại hook phổ biến**:

    * `PreToolUse`: trước khi Claude chạy một tool → bạn có thể chặn (ví dụ chặn `rm -rf`)
    * `PostToolUse`: sau khi tool chạy xong → bạn có thể kiểm chứng (validate) output
    * `SessionStart`: khi bắt đầu phiên → load environment, load issue đang mở

    **Khi nào dùng**: tự động ngăn chặn lệnh nguy hiểm, chèn (inject) context chuẩn, chạy kiểm tra chất lượng. Ví dụ: hook chặn mọi `git push --force` trừ khi user xác nhận rõ ràng (explicit confirm).

    **Định nghĩa ở đâu**: trong file `settings.json` của Claude Code.
  </Accordion>

  <Accordion title="MCP — Model Context Protocol" icon="plug">
    **MCP là gì**: chuẩn kết nối giúp Claude Code nói chuyện với hệ thống ngoài mà không cần code tùy chỉnh.

    **Ví dụ tích hợp MCP có sẵn**:

    * **Google Docs** — đọc, sửa tài liệu
    * **Jira** — đọc ticket, tạo pull request
    * **Slack** — đọc kênh, gửi tin
    * **Database** — truy vấn dữ liệu
    * **GitHub / GitLab** — quản lý repo

    **Cách hoạt động**: bạn cài MCP server (1 dòng lệnh), đăng ký trong `settings.json`. Claude Code "thấy" các tool mới, dùng chúng như tool nội bộ.

    **Ví dụ tình huống sử dụng (use case)**: *"Claude, đọc ticket Jira INGEST-123, phân tích bug, tạo PR có link ngược về ticket."* — Một prompt, cả chuỗi hành động xuyên 3 hệ thống.
  </Accordion>

  <Accordion title="Scheduled Agents — Agent chạy theo lịch" icon="clock">
    **Là gì**: Claude Code có thể chạy theo lịch cron (cron schedule). Mỗi ngày, mỗi tuần, mỗi phút — agent tự khởi động, làm task, báo cáo.

    **Ví dụ tình huống sử dụng**:

    * **Mỗi sáng 8:00**: "Đọc log error 24h qua, tóm tắt top 5 issue, gửi Slack #dev"
    * **Mỗi thứ Hai**: "Review PR mới, đánh dấu (flag) những PR thiếu test"
    * **Mỗi 10 phút khi đang chờ build**: "Kiểm tra build thành công chưa, thông báo kết quả"

    **Lưu ý**: scheduled agent tiêu thụ credit/token — cân đối với giá trị thực.
  </Accordion>

  <Accordion title="Memory Systems — Hệ thống bộ nhớ" icon="brain">
    **Là gì**: cách Claude Code nhớ thông tin giữa các phiên. Mặc định, mỗi phiên bắt đầu mới tinh (fresh) — không nhớ gì về phiên trước.

    **Các lớp bộ nhớ**:

    * `CLAUDE.md` — file quy tắc dự án, đọc mỗi phiên
    * Memory folder (`~/.claude/.../memory/`) — các ghi chú dài hạn về user, project, preferences
    * Session snapshot — khi phiên dài, lưu snapshot và gọi lại (recall) sau

    **Quan trọng**: bộ nhớ giúp Claude nhất quán giữa các phiên. Không phải mỗi lần bạn đều phải giải thích lại ngữ cảnh.
  </Accordion>

  <Accordion title="Agent SDK — Khi muốn xây harness riêng" icon="code">
    **Là gì**: khi bạn muốn xây một bộ khung (harness) riêng — không dùng Claude Code CLI, mà nhúng agent vào app của mình — Anthropic cung cấp **Agent SDK (Software Development Kit)** cho Python và TypeScript.

    **Khi nào dùng**: bạn muốn xây Claude Code phiên bản nội bộ công ty, tool tùy chỉnh, UI tùy chỉnh. Khách hàng không dùng trực tiếp — họ tương tác qua app của bạn.

    **Không dùng khi**: bạn chỉ muốn tăng năng suất cá nhân. Claude Code CLI cộng với các tiện ích mở rộng (extension) là đủ.
  </Accordion>
</AccordionGroup>

## Bản đồ toàn hệ sinh thái

```mermaid theme={null}
flowchart TD
    U[Bạn] --> CC[Claude Code<br/>Harness]
    CC --> M[Model Claude]
    CC --> T[Tools: Read/Write/<br/>Edit/Bash/...]

    CC -.load.-> CF[CLAUDE.md]
    CC -.load.-> SK[Skills]
    CC -.load.-> SA[Sub-agents]

    T --> MCP[MCP Servers<br/>Jira/Slack/...]
    CC --> H[Hooks<br/>pre/post tool]
    CC --> S[Schedule<br/>cron]
    CC --> MEM[Memory<br/>persistent]

    SDK[Agent SDK] -.alt harness.-> M

    style U fill:#c8e6c9
    style CC fill:#e3f2fd
    style M fill:#fff9c4
```

Đọc bản đồ này theo lớp:

* **Trung tâm** là Claude Code harness. Mọi thứ xoay quanh nó.
* **Model** là trí thông minh. **Tool** là khả năng hành động.
* **Các extension** (Skill, Sub-agent, Hook, MCP, Schedule, Memory) mở rộng năng lực theo từng hướng khác nhau.
* **SDK** là con đường khác: khi bạn không muốn dùng harness có sẵn mà tự xây một cái riêng.

## Khi nào dùng cái nào

<Tip>
  **Bảng tra cứu nhanh — dán lên bàn làm việc:**

  * Quy trình lặp đi lặp lại bạn đang copy-paste → **Skill**
  * Công việc độc lập nặng ngữ cảnh → **Sub-agent**
  * Chặn hoặc kiểm chứng tự động tại sự kiện → **Hook**
  * Kết nối hệ thống ngoài → **MCP**
  * Chạy định kỳ → **Schedule**
  * Ghi nhớ giữa các phiên → **Memory**
  * Xây harness riêng cho app → **SDK**
</Tip>

## Không có quiz ở bài này

<Info>
  Bài này là **bản đồ**, không phải **bài thi**. Bạn không cần nhớ hết mọi thứ. Chỉ cần biết: *"À, có công cụ cho cái đó — khi cần sẽ quay lại"*. Link đến tài liệu chính thức ở phần tiếp theo.
</Info>

## Tài liệu chính thức

<CardGroup cols={2}>
  <Card title="Sub-agents" icon="users-gear" href="https://code.claude.com/docs/en/sub-agents">
    Cách định nghĩa và điều phối nhiều agent chạy song song.
  </Card>

  <Card title="Skills" icon="sparkles" href="https://code.claude.com/docs/en/skills">
    Định nghĩa quy trình tái sử dụng bằng file markdown.
  </Card>

  <Card title="Hooks" icon="link" href="https://code.claude.com/docs/en/hooks">
    Tự động hóa tại các sự kiện vòng đời của phiên.
  </Card>

  <Card title="MCP" icon="plug" href="https://code.claude.com/docs/en/mcp">
    Chuẩn kết nối Claude Code với hệ thống ngoài.
  </Card>

  <Card title="Claude Agent SDK" icon="code" href="https://docs.anthropic.com/en/api/agent-sdk">
    Xây harness riêng bằng Python hoặc TypeScript.
  </Card>
</CardGroup>

## Tiếp theo?

* [Bài 8 — Bài tập thực hành](/06-academy/claude-code/bai-tap-thuc-hanh)
* [Quay lại Bài 6 — Best practices](/06-academy/claude-code/best-practices)
