# Ba skill Claude Code để hiểu code do AI viết

[Philipp Acsany](https://homus.dev/speakers/philipp-acsany) · [Real Python](https://homus.dev/orgs/real-python)

> Ba skill cho Claude Code: grill-me tra hỏi ý tưởng trước khi build, show-me vẽ hình dạng code, learning-opportunities hỏi bài sau mỗi commit.

Topics: Skills, Coding Agents, Workflow

Canonical: https://homus.dev/talks/3-claude-code-skills-to-make-sense-of-ai-code

## 1. Bạn có thật sự đọc code mà Claude Code viết?

Philipp mở đầu bằng một lời đề nghị: hãy thành thật một chút. Bạn có thật sự đọc code mà Claude Code viết cho bạn không? Anh biết là chúng ta nên làm "human in the loop", tức con người vẫn đứng trong vòng lặp. Chúng ta nên review code đó và thật sự hiểu nó. Nhưng chúng ta có thật sự làm vậy không? Anh thừa nhận: anh thì không.

![Slide mở đầu của Real Python: Claude wrote it. Could you explain it?](https://homus.dev/photos/T8WP_PP8Kp0-0003.jpg)

Slide mở đầu đặt đúng câu hỏi của video: "Claude wrote it. Could you explain it?", Claude viết ra code, nhưng bạn có giải thích lại được nó không.

Thay vào đó, anh có ba skill để chia sẻ hôm nay, và theo Philipp (video đăng ngày 21/10/2026), chính ba skill này làm anh tự tin về code mà Claude Code viết. Mỗi skill dành cho một giai đoạn khi anh làm project. Skill thứ nhất anh dùng trước khi bắt đầu project: nó giúp anh đào sâu những ý tưởng đang có trong đầu, để thay vì chỉ có một prompt mơ hồ, anh đi thật sâu vào các quyết định thiết kế (design decision) của mình. Skill thứ hai cho anh một cái nhìn tổng quan bằng hình ảnh về code. Còn skill thứ ba thậm chí cho anh một phiên tương tác, nơi anh đi sâu vào code, phải tự giải thích lại mọi thứ và nhờ đó hiểu thật kỹ những gì đang chạy bên dưới.

Vì vậy, theo Philipp (video đăng ngày 21/10/2026), kể cả khi bạn không tự tay viết code, ba skill này vẫn làm bạn thành một developer giỏi hơn, vì bạn hiểu chuyện gì đang diễn ra phía sau. Anh giới thiệu mình là Philipp, đến từ Real Python.

## 2. Ba skill cho ba thời điểm: trước, trong và sau

Trước khi bắt đầu, Philipp nói rõ một điều: video này không hướng dẫn cách cài các skill. Theo anh (video đăng ngày 21/10/2026), cách cài về cơ bản giống nhau cho cả ba skill, chỉ khác lệnh một chút, và video tập trung hẳn vào việc dùng skill. Các lệnh cài lấy từ README của từng repo được ghi ở mục nguồn cuối trang.

![Slide One feature, three moments: Before, During, After với /grill-me và /show-me](https://homus.dev/photos/T8WP_PP8Kp0-0043.jpg)

Slide "One feature, three moments": Before (trước khi Claude viết code) đi với `/grill-me`, During (khi bạn đọc thứ nó vừa build) đi với `/show-me`; ô thứ ba, After, lúc này vẫn còn để trống và được lấp ở phần sau của video (đăng ngày 21/10/2026).

Cấu trúc trên slide là một feature đi qua ba thời điểm: trước, trong và sau. Philipp lần lượt đi qua từng skill theo đúng thứ tự đó.

## 3. Skill 1, grill-me: cả skill chỉ là một dòng

Skill đầu tiên tên là **grill-me**, một skill của Matt Pocock. Philipp dùng nó trước khi thật sự bắt đầu project: đúng cái khoảnh khắc trước khi Claude Code viết bất kỳ dòng code nào, anh gọi grill-me (theo Philipp, video đăng ngày 21/10/2026). Slide giới thiệu mô tả nó là "A relentless interview to sharpen a plan or design", một cuộc phỏng vấn không khoan nhượng để mài sắc một kế hoạch hay một thiết kế.

Điều thú vị: nếu mở file skill của grill-me ra, theo Philipp (video đăng ngày 21/10/2026), về cơ bản nó chỉ có đúng một dòng nội dung. Dòng đó nói: gọi Skill tool với "grilling". Nghĩa là skill thật sự được dùng là skill **grilling**, còn lệnh bạn gõ để gọi nó là `/grill-me`.

![Slide The whole skill is one line: file SKILL.md của grill-me với dòng Call the Skill tool with grilling](https://homus.dev/photos/T8WP_PP8Kp0-0223.jpg)

Slide "The whole skill is one line" cho thấy file `SKILL.md` của grill-me trong `skills/productivity/grill-me/`: phần đầu có name, description và `disable-model-invocation: true`, phần thân chỉ có dòng được tô vàng "Call the Skill tool with "grilling"." (theo video đăng ngày 21/10/2026; file trong repo của Matt Pocock vẫn đúng như vậy, đọc ngày 28/10/2026).

Vậy chính xác skill này làm gì? Philipp nói gọn: nó "grill" bạn, tức tra hỏi bạn. Theo anh (video đăng ngày 21/10/2026), nó sẽ hỏi bạn liên tục, không ngừng nghỉ, về mọi kế hoạch, quyết định hay ý tưởng mà bạn đang có.

## 4. Design tree, các round và quy tắc "yes"

Theo Philipp, cách skill làm việc này thật ra khá thông minh. Matt lấy ý tưởng hay kế hoạch của bạn và ánh xạ nó lên một **design tree**, một cây thiết kế. Slide trích câu trong file SKILL.md của grilling: "Map this as a design tree: every decision branches into the decisions that hang off it", mỗi quyết định rẽ nhánh ra những quyết định treo lơ lửng phía sau nó. Skill cứ thế đi dần xuống sâu hơn trong cây (theo Philipp, video đăng ngày 21/10/2026).

![File SKILL.md của grilling với dòng Word each question so yes accepts your recommended answer được tô vàng](https://homus.dev/photos/T8WP_PP8Kp0-0303.jpg)

Trích đoạn file `SKILL.md` của grilling trên slide "the yes rule" (video đăng ngày 21/10/2026): phỏng vấn người dùng tới khi hai bên hiểu chung, đi cây theo từng "round", hỏi cả "frontier" (mọi quyết định đã đủ điều kiện để hỏi) trong một round, đánh số từng câu kèm đáp án đề xuất. Dòng được tô vàng: "Word each question so "yes" accepts your recommended answer."

Để cả quá trình thuận tiện hơn cho bạn, theo Philipp (video đăng ngày 21/10/2026), mỗi câu hỏi đã có sẵn một đáp án được chọn trước, và chỉ cần nói "yes" là chấp nhận nó. Nhờ vậy bạn cũng có thể đi qua cây này khá nhanh.

Đọc file trong repo của Matt Pocock (đọc ngày 28/10/2026), phần "rounds" được viết rõ hơn: frontier là mọi quyết định mà các điều kiện tiên quyết đã được chốt, tức những câu có thể hỏi ngay bây giờ mà không phải đoán trước câu trả lời chưa nghe; skill hỏi cả frontier trong một round, rồi chờ người dùng trả lời trước khi sang round sau. File cũng ghi rằng buổi grill kết thúc khi frontier trống, mọi nhánh của cây đã được đi qua.

## 5. Demo: "xả" một ý tưởng app đếm giờ

Để xem skill hoạt động, Philipp mở Claude trong project của mình, một folder tên `timer` còn trống, và gọi skill bằng lệnh:

```
/grill-me
```

Sau đó, theo anh (video đăng ngày 21/10/2026), bạn cứ việc nói lan man ý tưởng của mình, vì skill sẽ tra hỏi bạn về chính cái ý tưởng chưa có cấu trúc đó để "chưng cất" nó thành một project hợp lý hơn. Vì muốn nói lan man, anh dùng một công cụ đọc chính tả (dictation tool) và "brain dump" ý tưởng ra. Câu anh đọc, hiện lại trong ô nhập của Claude Code:

```
I want to create a little web application that is just some kind of timer that I see in the browser. I want to be able to set a timer and also set the font, the color of the time, and the background color.

Once I've set the timer and I say "go," almost everything should disappear from the interface until I click on the website. Then the timer pauses, and I can say "stop" or something. There are the settings for the colors, something like that.
```

Tức là: một web app nhỏ, chỉ là một cái đồng hồ đếm giờ hiện trong trình duyệt; đặt được thời gian, font, màu chữ của số và màu nền; khi bấm "go" thì gần như mọi thứ biến khỏi giao diện cho tới khi anh click vào trang, lúc đó timer tạm dừng và anh có thể bấm "stop"; và có phần cài đặt màu sắc.

Philipp tự nhận xét: prompt này cực kỳ thiếu cấu trúc. Nếu chỉ gửi nó thẳng cho Claude Code, theo anh (video đăng ngày 21/10/2026), Claude cũng sẽ làm ra được một thứ gì đó. Nhưng với skill grill-me, bạn sẽ được hỏi để thật sự đưa ra những quyết định thiết kế tốt. Khi anh bấm Enter, skill bắt đầu chạy: màn hình hiện dòng `Skill(mattpocock-skills:grilling)` kèm "Successfully loaded skill", và màn tra hỏi bắt đầu (demo trong video đăng ngày 21/10/2026).

Luồng Philipp mô tả trong video đăng ngày 21/10/2026: nói lan man ý tưởng, để grill-me tra hỏi theo từng round, rồi mới có một project rõ ràng hơn.

## 6. Round đầu tiên: tám câu hỏi có cấu trúc

Claude nhận ra folder project còn trống, nên bắt đầu từ đầu với Round 1. Bạn nhận được cả một khối câu hỏi, có thể trả lời bằng cách gõ tắt kiểu "1" kèm "a", "b", "c". Và như đã nói, mỗi câu đều có sẵn một đáp án được chọn, nên bạn cũng có thể trả lời "yes" cho tất cả (demo trong video đăng ngày 21/10/2026).

![Round 1 trong Claude Code: Q1 What it's for với ba lựa chọn a, b, c và Q2 Countdown or count-up; ô nhập đang gõ 1b](https://homus.dev/photos/T8WP_PP8Kp0-0503.jpg)

Round 1 trong terminal (demo trong video đăng ngày 21/10/2026): Q1 "What it's for" với ba lựa chọn, đáp án đề xuất là (a) một đồng hồ đếm ngược trên màn hình trong phòng; Q2 hỏi đếm ngược hay đếm lên. Ở ô nhập, Philipp đang gõ "1b".

Philipp đi qua từng câu (demo trong video đăng ngày 21/10/2026):

- **App dùng để làm gì?** Với anh, đáp án là 1b: anh muốn có một đồng hồ đếm ngược khi làm livestream, để hiện nó trong OBS hay phần mềm ghi hình. Ở câu này anh không dùng đáp án được đề xuất (đề xuất là (a), đồng hồ đếm ngược trên màn hình trong phòng) (demo trong video đăng ngày 21/10/2026).

- **Đếm ngược hay đếm lên?** Đếm ngược. Anh nói có thể gõ "2 yes" hay "2 agreed"; trên màn hình anh gõ "2 countdown only" (demo trong video đăng ngày 21/10/2026).

- **"Go" là một nút bấm hay giọng nói của bạn?** Tức khi nói "go" và "stop", anh muốn bấm nút hay ra lệnh bằng micro. Anh nói điều khiển bằng giọng nói thì nghe cũng hay, nhưng chọn nút bấm: "3 buttons" (demo trong video đăng ngày 21/10/2026).

- **Thứ gì còn hiển thị khi timer đang chạy?** Anh từng nói "gần như mọi thứ" biến mất; trả lời: đúng, chỉ còn lại các chữ số (demo trong video đăng ngày 21/10/2026).

- **Fullscreen?** Có, anh thấy hợp lý; đáp án đề xuất trên màn hình ghi rằng bấm go thì vào chế độ toàn màn hình, dừng thì thoát ra (demo trong video đăng ngày 21/10/2026).

- **Chuyện gì xảy ra khi về 0:00?** Anh muốn nó tiếp tục đếm sang số âm. Lý do: nếu anh không bắt đầu stream đúng giờ, anh không muốn nó chỉ hiện "00:00" hay phát một âm thanh gì đó. Trên màn hình anh gõ "6 d" (demo trong video đăng ngày 21/10/2026).

- **Tech stack.** Anh muốn giữ đơn giản: chỉ một file HTML (demo trong video đăng ngày 21/10/2026).

- **Nhớ các cài đặt?** Có (demo trong video đăng ngày 21/10/2026).

Điều Philipp thích ở đây, theo lời anh (video đăng ngày 21/10/2026): đây là một cách hỏi có cấu trúc. Khi gửi câu trả lời đi, Claude Code nhận tất cả các câu trả lời này cùng với ý tưởng chính ban đầu của bạn, rồi quay lại với lượt câu hỏi kế tiếp.

## 7. Các round tiếp theo và cách kết thúc buổi "grill"

Để khỏi làm người xem chán, Philipp dùng "phép màu của khâu dựng video" và trả lời các câu hỏi tiếp theo ngoài khung hình. Khi quay lại, anh đã trả lời khá nhiều câu và đang ở round ba. Với một project nhỏ, theo anh, ba round không phải là nhiều; nếu ý tưởng lớn hơn, tất nhiên sẽ có nhiều round hơn. Và đó là điều anh yêu thích ở skill này: nó thật sự bắt bạn suy nghĩ về ý tưởng của mình (theo Philipp, video đăng ngày 21/10/2026).

Tới một lúc nào đó, quyết định "thế là đủ cho lúc này" cũng hoàn toàn ổn. Theo Philipp, điều quan trọng khi đó là đừng chỉ nói kiểu "ừ, yes hết, bạn thấy cái gì tốt thì làm", mà hãy kết thúc buổi grill một cách tự nhiên. Bạn có thể làm vậy bằng ngôn ngữ tự nhiên, chẳng hạn chỉ cần nói "let's end the grill here", và theo anh (video đăng ngày 21/10/2026) câu đó sẽ dừng buổi tra hỏi.

Với phần câu hỏi cuối, vì mỗi câu có đáp án mặc định là "yes", Claude giờ giả định rằng bạn đồng ý với các đáp án đó. Trên màn hình là mục "Assumed (round 3 had no answers)" liệt kê các giả định cho Q19 tới Q24, rồi câu hỏi "Shall I build it from this, or do you want to change any of the assumptions first?" (demo trong video đăng ngày 21/10/2026). Một lần nữa, bạn có thể phản bác và nói rằng chưa muốn quyết những điểm đó, hoặc cứ chấp nhận cho qua. Philipp chọn phản bác, và gõ:

```
Don't make the assumptions for round 3. Keep this open for now and build it based on the questions I actually answered
```

![Danh sách giả định Q20 tới Q24, câu hỏi Shall I build it from this, và câu trả lời Don't make the assumptions for round 3](https://homus.dev/photos/T8WP_PP8Kp0-0743.jpg)

Cuối danh sách giả định (Q20 tới Q24) là câu hỏi Claude có nên build luôn không; bên dưới là câu Philipp gõ để giữ round 3 bỏ ngỏ và chỉ build theo những câu anh thật sự đã trả lời (demo trong video đăng ngày 21/10/2026).

Sau đó, Claude chuyển sang chế độ làm việc. Philipp tưởng nó sẽ quay lại với một plan cho project, nhưng thực ra nó không đưa plan mà implement luôn, vì anh không ở plan mode. Anh nói thế cũng được (demo trong video đăng ngày 21/10/2026).

## 8. App chạy rồi, nhưng code trông thế nào?

Philipp mở trang ra xem (demo trong video đăng ngày 21/10/2026). Có một cái timer, đổi được màu nền và màu chữ, anh thấy vậy là ổn. Rồi đổi được cả font. Khi bấm Go, trang vào chế độ toàn màn hình và chỉ hiện timer. Khi click vào trang, anh bấm được Stop. Anh thấy kết quả khá hay, gần đúng như những gì anh hình dung. Anh còn đổi được cả kích thước chữ.

![App timer trong trình duyệt: số 10:00 to màu đỏ sẫm trên nền tím, thanh điều khiển với Minutes, Seconds, Font, Text color, Background, Size và nút Go](https://homus.dev/photos/T8WP_PP8Kp0-0804.jpg)

App timer Claude build ra từ buổi grill (demo trong video đăng ngày 21/10/2026): số 10:00 cỡ lớn trên nền tím, thanh điều khiển ở dưới có Minutes, Seconds, Font, Text color, Background, Size và nút Go.

Vậy vấn đề nằm ở đâu? Theo Philipp, vấn đề là anh không hề biết code trông như thế nào. Nhìn vào folder project, chỉ có một file `index.html`, và hiển nhiên toàn bộ JavaScript, CSS và HTML đều nằm trong đó (demo trong video đăng ngày 21/10/2026). Đó chính là thứ anh xử lý tiếp theo.

## 9. Skill 2, show-me: tám view và một quy tắc

Skill thứ hai là **show-me**. Theo Philipp (video đăng ngày 21/10/2026), skill này rất tuyệt khi agent đã viết một đoạn code và bạn không thật sự biết code đó chạy thế nào bên dưới, trông nó ra sao; với show-me, bạn khám phá được đoạn code ấy. Đây là skill của Dex Horthy (HumanLayer). Theo lời Philipp, "pitch" của skill là làm cho agent trò chuyện bằng hình ảnh thay vì những bức tường chữ (walls of prose). Bạn hoàn toàn có thể hỏi Claude Code kiểu "giải thích file index.html của chúng ta chạy thế nào", nhưng với skill này, bạn nhận được nhiều cách nhìn trực quan khác nhau về code.

Theo Philipp (video đăng ngày 21/10/2026), có tám view để chọn: **pseudocode**; **call tree**, tức ứng dụng chạy thế nào; **component tree**, tức các module ghép với nhau ra sao; **file tree**; **Mermaid**, một kiểu biểu đồ; **diff**, để xem code đã thay đổi những gì; **whole block**, cả khối code; và **one HTML file**, một file HTML.

![Slide /show-me VIEWS: tám ô pseudocode, call tree, component tree, file tree, Mermaid, diff, whole block, one HTML file; ô call tree đang được tô sáng](https://homus.dev/photos/T8WP_PP8Kp0-0943.jpg)

Slide "/show-me · VIEWS" (video đăng ngày 21/10/2026) xếp tám view thành hai hàng, ô call tree đang được tô sáng; dòng dưới cùng là quy tắc trích từ SKILL.md: "Pick the smallest view that makes the key point clear."

Vì project rất nhỏ, về cơ bản chỉ có một file HTML, Philipp sẽ xem view nào hợp lý nhất. Nhìn vào chính file skill, có một quy tắc, và anh thích quy tắc này: hãy chọn view nhỏ nhất mà vẫn làm rõ được ý chính (theo Philipp, video đăng ngày 21/10/2026).

## 10. show-me mổ xẻ file index.html

Với Philipp, điều anh muốn là hiểu chuyện gì đang diễn ra bên trong file HTML này và phần logic bên dưới được nối với nhau thế nào. Anh quay lại terminal: giờ anh muốn hiểu file `index.html` trông ra sao bên dưới và các mảnh ghép với nhau thế nào (demo trong video đăng ngày 21/10/2026).

Giờ anh có nhiều thông tin hơn (demo trong video đăng ngày 21/10/2026). Một điểm hay là có một cái nhìn vào bên trong file theo dạng component; theo anh, đây chính là view component tree trên slide lúc nãy. Mở đầu là "Here's what's inside index.html and how the parts connect", rồi "The file's three parts":

- `<style>`: nơi định nghĩa các chữ số căn giữa, bảng điều khiển nổi (floating panel) và một CSS class cho mỗi trạng thái (demo trong video đăng ngày 21/10/2026).

- `<body>`: chứa `#display` (các chữ số) và `#panel` (ô nhập và nút bấm), với `.idle-only` cho nút Go và `.paused-only` cho Resume và Stop (demo trong video đăng ngày 21/10/2026).

- `<script>`: toàn bộ logic, chia năm phần gồm constants, settings, display, timer state và cursor, tức logic cho font, cho cài đặt, cho định dạng hiển thị, và cứ thế (demo trong video đăng ngày 21/10/2026).

![Component tree của index.html trong terminal và dòng The key idea: CSS does the showing and hiding](https://homus.dev/photos/T8WP_PP8Kp0-1103.jpg)

Phần dưới của cây: năm phần trong `<script>` với tên các hàm (loadSettings, sanitize, saveSettings, setState, run, pause, stop, tick...), rồi dòng in đậm "The key idea: CSS does the showing and hiding": script không bao giờ ẩn từng phần tử một, `setState()` chỉ đổi một class trên `<body>` (demo trong video đăng ngày 21/10/2026).

Theo phần giải thích show-me đưa ra, ý chính là CSS lo việc hiện và ẩn; script không bao giờ ẩn từng phần tử một, mà dùng `setState` (demo trong video đăng ngày 21/10/2026). Sau đó nó đưa ra một flowchart, hay đúng hơn là code cho flowchart, viết bằng Mermaid: DEFAULTS, localStorage và query params cùng đi vào `loadSettings`, qua `sanitize` thành một settings object, rồi từ đó tới các ô nhập, màu nền, màu chữ, font, và được lưu ngược lại vào localStorage và URL. Kèm theo là câu giải thích: mọi thay đổi đều đi qua `sanitize`, nên giá trị xấu sẽ bị kẹp lại trong giới hạn hoặc trả về mặc định, áp dụng như nhau cho URL, localStorage và các ô nhập.

## 11. Render Mermaid flowchart: hỏi về "shape", không hỏi bản tóm tắt

Việc Philipp muốn làm tiếp là nhờ Claude Code render flowchart Mermaid đó ra để anh nhìn (demo trong video đăng ngày 21/10/2026). Anh gõ:

```
Please render the mermaid flowchart so I can have a look at it
```

Theo anh (video đăng ngày 21/10/2026), đây là một điểm hay: khi dùng một skill bên trong Claude Code, bạn vẫn tận dụng được toàn bộ khả năng của Claude Code để làm cho ý tưởng của mình trở nên dễ hiểu.

![Flowchart Settings Flow render trong trình duyệt: DEFAULTS, loadSettings, sanitize, settings object, panel inputs, body bg digit color font, localStorage, query params](https://homus.dev/photos/T8WP_PP8Kp0-1211.jpg)

Flowchart Mermaid mà show-me tạo ra, giờ được render và mở trong trình duyệt (demo trong video đăng ngày 21/10/2026): mọi nguồn cài đặt đi qua `sanitize` vào một settings object, từ đó điều khiển ô nhập, giao diện và việc lưu lại.

Đây là biểu đồ Mermaid mà skill show-me tạo ra, và anh đang xem nó trong trình duyệt. Ở đây bạn thấy được JavaScript chạy thế nào bên dưới (demo trong video đăng ngày 21/10/2026). Philipp nhấn mạnh: vì bạn không tự viết code, đây chính là lúc bạn cố hiểu chính xác chuyện gì đang xảy ra. Thường thì bạn sẽ đào sâu hơn từ đây, chẳng hạn hỏi: "vậy chính xác thì `sanitize` làm gì?"

Với kiểu biểu diễn trực quan này, theo Philipp (video đăng ngày 21/10/2026), bạn có một cách hay để học xem code chạy thế nào bên dưới mà không phải lao vào từng chi tiết vụn vặt. Tất nhiên, xem source code cũng vẫn hợp lý, nhưng biểu diễn trực quan này là một hướng nhìn bổ sung rất tốt.

Vậy mental model cho skill show-me là gì? Theo Philipp (video đăng ngày 21/10/2026), về cơ bản là bạn hỏi về **hình dạng** (shape) của code, chứ không hỏi một bản tóm tắt code làm gì.

## 12. Skill 3, learning-opportunities: học sau mỗi commit

Philipp gọi skill thứ ba là một viên ngọc. Điều anh thích là theo anh (video đăng ngày 21/10/2026), phần sư phạm (didactics) đằng sau skill được nghiên cứu rất kỹ. Skill tên là **learning-opportunities**. Ý tưởng: skill hỏi bạn "bạn có muốn làm một bài tập học nhanh về chủ đề mình vừa commit không?", và bạn có khoảng 10 tới 15 phút để trả lời các câu hỏi về codebase, học thật sâu những gì bạn vừa làm.

Theo Philipp, điều đó tuyệt vời, nhất là khi bạn làm project bằng agent và không thật sự biết code bên dưới. Với mỗi commit, bạn học được một điều gì đó, và theo thời gian, bạn thật sự hiểu project (theo Philipp, video đăng ngày 21/10/2026).

Người đứng sau skill là Dr. Cat Hicks, một nhà khoa học tâm lý (psychological scientist) nghiên cứu các đội làm phần mềm. Theo Philipp, điều đó thể hiện rõ trong skill: nó dựa trên nhiều nghiên cứu, mà bạn có thể tự xem nếu tò mò và muốn tìm hiểu sâu hơn. README của repo (đọc ngày 28/10/2026) mô tả nó là một cách tiếp cận "dynamic textbook": khi bạn làm xong việc mang tính kiến trúc (file mới, đổi schema, refactor), Claude đề nghị các bài tập học tuỳ chọn dài 10 tới 15 phút, dựa trên khoa học học tập, dùng các kỹ thuật như dự đoán, tự tạo ra lời giải, luyện nhớ lại (retrieval practice) và ôn cách quãng (spaced repetition).

Cách learning-opportunities chen vào sau một commit, theo lời Philipp trong video đăng ngày 21/10/2026: một câu mời làm bài tập ngắn; bạn có thể dừng bất cứ lúc nào, và từ chối ngay thì không bị hỏi thêm.

## 13. Bốn kiểu bài tập, dừng lúc nào cũng được, và phần orient

Điểm rất hay, theo Philipp (video đăng ngày 21/10/2026), là skill đi theo bốn hướng trong một vòng. Ví dụ, bạn phải:

- **Predict**: dự đoán đoạn code sẽ làm gì (theo Philipp, video đăng ngày 21/10/2026);

- **Trace the path**: lần theo đường đi bên trong code (theo Philipp, video đăng ngày 21/10/2026);

- **Debug this**: gỡ lỗi một thứ gì đó (theo Philipp, video đăng ngày 21/10/2026);

- **Teach it back**: giảng lại một điều gì đó (theo Philipp, video đăng ngày 21/10/2026).

![Slide /learning-opportunities EXERCISES: vòng tròn Predict, Trace the path, Debug this, Teach it back quanh chữ Your turn](https://homus.dev/photos/T8WP_PP8Kp0-1443.jpg)

Slide "/learning-opportunities · EXERCISES" (video đăng ngày 21/10/2026): bốn kiểu bài tập Predict, Trace the path, Debug this, Teach it back xếp thành vòng quanh chữ "Your turn", tức đến lượt bạn trả lời.

Sau đó Claude lấy câu trả lời của bạn và cho bạn biết nó đúng hay sai (theo Philipp, video đăng ngày 21/10/2026). Và cách skill làm việc này, theo anh, khá khéo: bạn đi qua bài tập và có thể dừng ở bất kỳ điểm nào bạn không muốn tiếp tục, vì có thể bạn không muốn làm việc này với mọi commit. Nếu bạn từ chối ngay từ đầu, bạn sẽ không bị hỏi thêm. README của repo (đọc ngày 28/10/2026) cũng ghi hai điều kiện Claude không gợi ý bài tập: khi bạn đã từ chối một bài trong phiên đó, hoặc khi đã làm xong hai bài trong phiên.

Philipp còn có một phần thưởng nhỏ: skill này có một "bản đối ứng". Nếu bạn không tự viết project, mà chẳng hạn clone một Git repository về và muốn hiểu nó rõ hơn thì sao? Cho trường hợp đó có phần **orient**, nơi bạn nhận câu hỏi về một repository mà bạn không tự tạo ra code (theo Philipp, video đăng ngày 21/10/2026).

Theo README của repo (đọc ngày 28/10/2026), orient là một plugin riêng trong cùng marketplace; nó tạo một file `orientation.md` với các bài học gợi ý, rồi gọi learning-opportunities kèm tham số `orient` để được mời hai bài học giúp làm quen các tính năng cốt lõi của repo:

```
/orient
/learning-opportunities orient
```

## 14. Ba skill ghép thành một vòng

Đó là ba skill Philipp muốn chia sẻ. Anh tóm lại cách dùng (theo Philipp, video đăng ngày 21/10/2026):

- Khi dựng một project, muốn "brain dump" ý tưởng và thật sự muốn bị tra hỏi về các quyết định thiết kế: dùng **grill-me** (theo Philipp, video đăng ngày 21/10/2026).

- Trong lúc tạo project và muốn hiểu code chạy thế nào: dùng **show-me** (theo Philipp, video đăng ngày 21/10/2026).

- Khi commit và muốn hiểu thật sâu sau khi code đã được viết: dùng **learning-opportunities** để nhận câu hỏi về codebase (theo Philipp, video đăng ngày 21/10/2026).

![Slide How they fit: vòng Before /grill-me settles the decisions, Claude builds, During /show-me shows the shape, After /learning-opportunities checks you understood, next feature](https://homus.dev/photos/T8WP_PP8Kp0-1543.jpg)

Slide "How they fit" (video đăng ngày 21/10/2026): Before, `/grill-me` chốt các quyết định; Claude build; During, `/show-me` cho thấy hình dạng code; After, `/learning-opportunities` kiểm tra bạn đã hiểu; rồi vòng quay lại ở "next feature".

Lý do Philipp chọn ba skill này là vì anh cảm thấy chúng phối hợp với nhau rất ăn ý. Theo anh (video đăng ngày 21/10/2026), chúng tạo thành một vòng, nhất là giữa show-me và learning-opportunities, nơi bạn tiếp tục hiểu code của mình ngay cả khi agent là người viết code.

## 15. Cái giá: chậm hơn, và trách nhiệm vẫn là của bạn

Dĩ nhiên, Philipp nói, cách làm này không chỉ có mặt tốt. Theo anh (video đăng ngày 21/10/2026), nó sẽ thật sự làm bạn chậm lại, và muốn làm vậy hay không là quyết định của bạn. Bản thân anh có lúc muốn đi nhanh, và khi đó anh không dùng mấy skill này.

Đánh đổi Philipp nói ra trong video đăng ngày 21/10/2026: ba skill làm bạn chậm lại, và anh dùng chúng khi thật sự muốn hiểu codebase.

Nhưng khi thật sự muốn hiểu codebase của mình, theo lời Philipp (video đăng ngày 21/10/2026), anh dành thời gian dùng các skill để hiểu mọi thứ mình đang viết. Vì rốt cuộc, anh mới là "human in the loop", và anh phải chịu trách nhiệm cho code, kể cả khi Claude Code là người viết code đó.

Philipp hy vọng video hữu ích và cảm ơn mọi người đã xem.

## Nguồn và liên kết

- Tên gốc: 3 Claude Code Skills to Make Sense of AI Code
- Sự kiện: [YouTube](https://homus.dev/events/youtube)
- Video gốc: [https://www.youtube.com/watch?v=T8WP_PP8Kp0](https://www.youtube.com/watch?v=T8WP_PP8Kp0)

- Kênh YouTube Real Python (Philipp Acsany): [youtube.com/channel/UCI0vQvr9aFn27yR6Ej6n5UA](https://www.youtube.com/channel/UCI0vQvr9aFn27yR6Ej6n5UA)

- Repo skills của Matt Pocock, chứa grill-me (`skills/productivity/grill-me/SKILL.md`, một dòng gọi skill grilling) và grilling (`skills/productivity/grilling/SKILL.md`); README ghi lệnh cài cho Claude Code là `claude plugin install mattpocock-skills@claude-plugins-official` (đọc ngày 28/10/2026): [github.com/mattpocock/skills](https://github.com/mattpocock/skills)

- Repo skills của HumanLayer, chứa show-me; README ghi lệnh cài `npx skills add humanlayer/skills --skill show-me` rồi gọi `/show-me` (đọc ngày 28/10/2026): [github.com/humanlayer/skills](https://github.com/humanlayer/skills)

- Repo learning-opportunities của Dr. Cat Hicks; README ghi cách thêm marketplace bằng `/plugin marketplace add [https://github.com/DrCatHicks/learning-opportunities.git](https://github.com/DrCatHicks/learning-opportunities.git)`, cài bằng `/plugin install learning-opportunities@learning-opportunities`, cùng hai plugin tuỳ chọn learning-opportunities-auto (gợi ý bài tập sau mỗi git commit) và orient (đọc ngày 28/10/2026): [github.com/DrCatHicks/learning-opportunities](https://github.com/DrCatHicks/learning-opportunities)

Nguồn: https://homus.dev/talks/3-claude-code-skills-to-make-sense-of-ai-code · cập nhật 2026-10-28
