Plugin Claude Code / Codex bắt bạn phải học
VibeWise, plugin cho Claude Code và Codex, hỏi câu mở để người học tự quyết scope, hành vi và design trước khi AI viết code.
✓ Đã duyệt độc lập · cập nhật 09/10/2026 · 8 min
1. Người học code giữa hai lựa chọn: output hay nền tảng
Noah mở đầu bằng một nhận xét: ngày nay, người đang học lập trình bị kẹt "giữa đá cứng và chỗ hiểm" (between a rock and a hard place). Họ phải chọn giữa hai thứ. Một bên là dùng AI để tăng raw output, tức tăng năng suất: ship nhiều dòng code hơn, ship nhiều feature hơn. Bên kia là ưu tiên chuyện học của chính mình.

Anh lấy ví dụ với các bạn junior: mức chuẩn (the bar) đã bị đẩy lên cao tới mức một app to-do, hay bất kỳ ứng dụng đơn giản nào, không còn đủ nữa. Lý do là những thứ đó có thể vibe-code quá dễ dàng, và chẳng có cách nào phân biệt ai thực sự tự làm. Vì vậy, chuẩn cho thế nào là một side project tốt đã tăng lên rất nhiều.
Vấn đề, theo Noah, là các lớp học thì gần như vẫn giữ nguyên, trong khi AI phát triển quá nhanh. Người học không có một con đường tốt nào để xây những nền tảng (foundations) cần thiết, để rồi tự tạo ra được những ứng dụng tốt hơn ấy mà không phải dựa nặng vào AI.
2. VibeWise: plugin bắt bạn ở trong vòng lặp
Từ đó, Noah tự build một plugin cho Claude Code tên là VibeWise (repo nykooi1/vibe-wise, chạy được cả trên Codex). Ý tưởng cốt lõi: plugin này về cơ bản ép bạn phải là một phần của vòng lặp (be part of the loop). Nó không bắt bạn gõ code bằng tay, nhưng nó tận dụng đầu óc của bạn để thực sự nghĩ ra design, nghĩ ra architecture. Nó đặt câu hỏi để đẩy bạn tự nghĩ ra các feature, và giải thích ở mức high level bạn sẽ implement feature đó thế nào.
Ví dụ, nó sẽ không tự tạo hết các bảng database cho bạn. Nó sẽ hỏi: bạn muốn có những bảng nào? Và nếu bạn trả lời "tôi còn không biết nên chọn database nào", nó sẽ hỏi ngược lại: vậy bạn nghĩ mình nên chọn cái nào? Nó cứ tiếp tục đẩy bạn tham gia thật sự vào những quyết định mà ngày trước bạn bắt buộc phải tự đưa ra.
Nó cũng bỏ đi kiểu trải nghiệm trắc nghiệm: A là lựa chọn tốt nhất, rồi B, C, bạn muốn cái nào? Và tất nhiên ai cũng chỉ bấm A rồi đi tiếp.
3. Demo phía Claude bình thường: "I need to make a notion dupe"
Không dài dòng thêm, Noah vào demo. Demo khá đơn giản: anh cho xem hành vi bình thường của Claude đặt cạnh VibeWise. Anh tạo một folder mới, khởi động Claude trong đó, và chỉ gõ đúng một câu: "I need to make a notion dupe" (tôi cần làm một bản sao Notion). Đó là toàn bộ context anh đưa.
Trên màn hình, Claude nạp skill superpowers:brainstorming rồi nói đây là project mới nên mang tính kiến trúc: nó sẽ đi qua các câu hỏi, một design, một spec viết ra, rồi một plan trước khi build. Claude hỏi anh ba câu:
- Bản clone này để làm gì? Noah trả lời: để tôi học (trên màn hình là "Portfolio / learning").
- Phiên bản đầu nên bao phần nào của Notion? Claude đưa một gợi ý để chọn: block editor và pages, gắn nhãn "Recommended".
- Nên build trên cách tiếp cận nào? Claude đưa một danh sách stack để chọn, và Noah chỉ việc chọn cái được recommend (React + Tiptap, lưu local storage).

"Nhìn này", Noah nói. Anh đã nói rõ là mình muốn học, vậy mà nó vẫn đưa cho anh lựa chọn được recommend, đưa cho anh stack được recommend, và anh chỉ bấm yes, yes, yes. Không đời nào anh đủ chủ động để tự tìm hiểu từng lựa chọn đó, trừ khi thật sự ép bản thân phải học. Đây là hành vi mặc định của AI: đút cho bạn mọi thứ, làm mọi thứ dễ dàng để bạn xong việc thật nhanh.
Dựa trên mấy câu trả lời đó, Claude tóm lại: đây là những gì bạn nói với tôi, và tôi sẽ giả định tất cả những điều sau. Nó giả định chỉ có một user, không login, không backend, tức về cơ bản chỉ làm frontend. Rồi đây là toàn bộ feature nó sẽ build: cây trang (page tree) lồng nhau không giới hạn, đủ loại block, cách search, cách lưu. Nó tự nghĩ ra data model, storage layer, state, routing, editor, styling.

"Thử nghĩ xem nó đang làm bao nhiêu thứ ở đây mà bạn không hề tham gia", Noah nói. Bạn chỉ lướt qua, thấy ổn, rồi nghĩ: "Okay, tuyệt, thế này là quá đỉnh". Việc duy nhất còn lại là trả lời câu "Does this look right?" bằng một chữ "có". Anh gõ "let's go".
4. Kế hoạch 11 bước và một file mấy nghìn dòng
Ngay sau đó, Claude đưa ra hẳn một plan 11 bước cho những gì nó sẽ implement, từ project scaffold cho tới cách làm từng feature nhỏ. Rồi nó bảo: hãy review plan này.

Noah mở file plan ra xem thử nó trông thế nào. Rồi anh hỏi: bạn định nói với tôi rằng một junior engineer, hay một bạn đang học đại học, sẽ thật sự đọc lướt hết file này (bao nhiêu dòng vậy? mấy nghìn dòng) và thật sự hiểu, rồi thốt lên "wow, mình học được quá trời, mình tự nghĩ ra hết những thứ này, mình hiểu hết các lựa chọn"?

Tất nhiên là không. Họ không hề tham gia vào việc build. Họ không engineering bất cứ thứ gì.
5. Tuyệt cho senior, tệ cho người đang học
Họ chỉ nói ra thứ họ muốn được build, rồi AI làm từ đầu tới cuối. Noah công nhận cách này có thể rất tốt để implement feature hay viết test tự động. Với một senior engineer, nó tuyệt vời, vì họ có thể tự architect mọi thứ và hiểu AI đang làm gì từ đầu tới cuối mà không cần đi qua quá trình học. Nhưng với bất kỳ ai đang cố học, đây là một trải nghiệm tệ hại.
Lý do là bạn bị ngợp. Về cơ bản nó xả vào bạn một "vòi rồng" (fire hose) những gì nó sẽ làm, và làm sao bạn học được từ đó? Bạn định đọc hết bản tài liệu mấy nghìn dòng, hiểu hết, để nó code, rồi đọc tiếp hàng nghìn dòng code nó viết, xong nói rằng mình thật sự đã học được gì đó?
Tất nhiên là không. Noah thừa nhận reverse engineering là quan trọng, nhưng không đời nào bạn reverse engineer được đống này trừ khi bỏ ra một lượng thời gian vô lý, và nó thật sự không phải một cách học trực quan.
6. Demo VibeWise: learn, profile và build checkpoint đầu tiên
Giờ tới VibeWise. Sau khi cài plugin, bạn chạy nó. Noah hỏi đúng câu cũ, chỉ khác là lệnh đầu tiên chỉ có "learn". VibeWise hỏi: bạn đang build gì? Và anh trả lời: "I need to make a notion dupe", y hệt câu anh gõ ở terminal kia.

.vibe-wise/. Sau đó là câu hỏi "What are you building?", và Noah gõ lại "I need to make a notion dupe".Theo README của repo, cách cài trong Claude Code là chạy lệnh sau, rồi khởi động lại Claude Code trong project và gọi lệnh learn:
/plugin install vibe-wise@anthropic-plugin-directory
/vibe-wise:learn
Với Codex, README hướng dẫn thêm marketplace rồi cài plugin, sau đó gọi $vibe-wise:learn trong project:
codex plugin marketplace add nykooi1/vibe-wise codex plugin add vibe-wise@vibe-wise
Lần này, thay vì đưa design, nó bắt đầu bằng câu hỏi về chính bạn. Bạn mô tả kinh nghiệm lập trình tổng thể của mình thế nào? Noah chọn: tôi là beginner. Bạn muốn vòng lặp học (learning loop) chạy ra sao? Dùng mặc định, hay hỏi dần trong lúc làm. Anh chọn mặc định.

.vibe-wise/profile.md: Learning mode active, onboarding complete.Rồi nó dựng ra progress, profile và project map để theo dõi bạn trong suốt quá trình. Ví dụ, profile ghi kinh nghiệm là beginner tự khai, mục tiêu mặc định là hiểu project từ đầu tới cuối trong lúc build; còn file progress ghi một quyết định đang chờ: phạm vi của bản clone Notion, đang đợi người học tự mô tả.

progress.md với một "Pending decision" về phạm vi bản đầu. Chưa có design hay stack nào được đề xuất.Sau đó nó hỏi bạn một build checkpoint: khi người dùng mở app, bạn muốn app thực sự làm được gì? Nó đang để bạn tự định nghĩa scope. Nó bắt bạn nghĩ: khi ai đó bấm vào URL và nhìn thấy app lần đầu tiên, mình thật sự muốn ứng dụng làm gì?

Noah trả lời rằng anh muốn người dùng mở được app, đăng nhập, tạo một note và bắt đầu sửa note đó; trên màn hình anh gõ thêm rằng note phải nằm được bên trong folder. Anh chỉ ra: đây là câu trả lời tự do. Thay vì đưa một checklist gạch đầu dòng, hay một câu trắc nghiệm "bạn muốn làm gì" kèm một chữ "recommended" nho nhỏ bên cạnh, nó bắt bạn tự nghĩ ra một câu trả lời thật về scope của phiên bản một. Rồi nó ghi câu đó lại.
7. Lấp các khoảng trống về hành vi: những quyết định nhỏ làm nên một app
Tiếp theo là một build checkpoint khác: lấp đầy phần hành vi (filling in the behaviour). Dựa trên những gì bạn nói, còn rất nhiều khoảng trống. Đăng nhập, tạo note, sửa note, nghe thì hay, nhưng bạn thực sự muốn những việc đó diễn ra thế nào?

Cụ thể, nó hỏi:
- Quay lại sau thì sao? Bạn viết một note, đóng app, rồi mở lại trên một thiết bị khác thì thấy gì? Làm sao để note vẫn còn đó vào ngày mai?
- "Editing" thực ra nghĩa là gì? Nó có các loại block khác nhau không? Nó hỏi về heading, bullet list, checkbox, bắt bạn tự đưa ra spec thật sự.
- Folder hoạt động ra sao? Bạn nói muốn có folder, tuyệt. Nhưng nó không tự lấp chỗ trống và tự nghĩ ra toàn bộ logic. Nó hỏi: folder có chứa được folder khác không, hay chỉ chứa note? Một note có thể nằm ngoài mọi folder không? Chuyện gì xảy ra khi folder bị xoá?
Nó bắt bạn suy nghĩ về tất cả những quyết định nhỏ đó. Đúng là chúng tương đối đơn giản. Nhưng nếu bạn chưa từng trải qua, vì tất cả những gì bạn làm là vibe coding và về cơ bản là đọc "phao" (cheat sheet) từ AI, thì bạn sẽ không bao giờ phải nghĩ tới những thứ "ngớ ngẩn" nho nhỏ cấu thành nên một ứng dụng thật.
Noah giải thích ngay: "ngớ ngẩn" ở đây không có nghĩa đó là những quyết định ngớ ngẩn. Chỉ là với một senior, hay một người nhiều kinh nghiệm, anh có thể nhìn vào và nói "ừ, đương nhiên rồi", hiểu ngay trong đầu mình muốn nó chạy chính xác thế nào mà không cần viết ra thành spec. Nhưng nếu bạn chưa bao giờ phải tự nghĩ qua vấn đề, thì thật lòng mà nói, có lẽ bạn sẽ không nghĩ tới hết những edge case nhỏ và những hành vi nhỏ đó.
Với Noah, đó mới chính là phần vui của việc build: trong lúc build, bạn đụng phải vô số chuyện nhỏ, vô số vấn đề nhỏ mà bạn phải engineer cách giải. Đó là thứ làm cho software engineering trở thành engineering. Đó là phần vui, hay ít nhất lẽ ra phải là phần vui.
Anh nói thêm, nửa đùa nửa thật: nếu chuyện đó không vui với bạn, có lẽ bạn đang đi nhầm nghề. Thứ làm software engineering thú vị là nghĩ về user experience, nghĩ về backend chạy thế nào, mình sẽ thiết kế các bảng ra sao, mình muốn dùng database nào. Có quá nhiều quyết định nhỏ đang bị AI trừu tượng hoá đi và phá hỏng hoàn toàn, trong khi thật lòng chúng không nên bị như vậy, nhất là khi bạn đang học.
8. Ba loại checkpoint, và vibe coding mà bạn vẫn phải nghĩ
Noah mời mọi người dùng thử và cho anh biết cảm nhận. Phần demo về cơ bản là vậy; README còn nhiều thứ để đọc thêm. Điều cuối cùng anh nói tới là các loại checkpoint khác nhau: build checkpoint, design checkpoint và implementation.

Implementation là phần nó thật sự viết code, nhưng chỉ sau khi bạn đã tham gia vào quá trình build và chốt design. Design về cơ bản gom tất cả các build checkpoint lại làm một. Theo Noah, đó chính là cách người ta làm feature thật: bạn phải nghĩ qua mọi thứ cấu thành nên một design cuối cùng. Chỉ khi đã có design đó, bạn mới nhìn nó một cách tổng thể, xem mọi thứ, xem các phần chạy cùng nhau thế nào, nghĩ thêm nhiều edge case hơn, nhiều vấn đề hơn. Và chỉ sau khi tất cả đã được làm rõ và quyết định xong, bạn mới bắt tay viết code.
Tóm lại, đó về cơ bản vẫn là vibe coding, nhưng lần này bạn thật sự tham gia. Bạn không phải tự tay gõ từng dòng code, nhưng bạn là người build, người design, và lần này bạn thật sự phải suy nghĩ.
Noah sẽ để link plugin trong phần mô tả video. Anh mời mọi người mở issue hoặc viết feedback ở phần bình luận, vì anh có thể cập nhật plugin rất, rất dễ. Anh cảm ơn mọi người đã xem.
Nguồn và liên kết 5 nguồn
- Tên gốc: I Made a Claude Code / Codex Plugin That Forces You to Learn
- Sự kiện: YouTube
- Video gốc: https://www.youtube.com/watch?v=GckkaKEQ3vo youtube.com
- Kênh YouTube Noah Kim: youtube.com/channel/UCekGb_B6CvGKHt1lq27zoZA youtube.com
- Repo VibeWise, plugin cho Claude Code và Codex (README có hướng dẫn cài, bảng ba loại checkpoint và cách chỉnh mức hỗ trợ theo kinh nghiệm): github.com/nykooi1/vibe-wise github.com