tdd là một kỹ năng Test-Driven Development giúp xây dựng tính năng, sửa lỗi và viết bộ kiểm thử bền vững theo vòng lặp đỏ-xanh-tái cấu trúc. Kỹ năng này ưu tiên các kiểm thử tập trung vào hành vi qua giao diện công khai, chỉ mock ở ranh giới, cùng hướng dẫn thực tế cho tự động hóa kiểm thử, tái cấu trúc và thiết kế giao diện.

Stars66k
Yêu thích0
Bình luận0
Đã thêm8 thg 5, 2026
Danh mụcTest Automation
Lệnh cài đặt
npx skills add mattpocock/skills --skill tdd
Điểm tuyển chọn

Kỹ năng này đạt 78/100, nên là một lựa chọn khá tốt cho người dùng thư mục: nó kích hoạt rõ với các yêu cầu về TDD/red-green-refactor và cung cấp đủ hướng dẫn về quy trình để giảm đoán mò, dù thiên về hướng dẫn hơn là công cụ và thiếu tự động hóa lúc cài đặt hoặc file hỗ trợ. Người dùng muốn một playbook TDD thực dụng cho agent nên cân nhắc cài; còn nếu cần tích hợp sâu theo từng dự án thì có thể cần thêm phần khung hỗ trợ.

78/100
Điểm mạnh
  • Khả năng kích hoạt mạnh: phần frontmatter nêu rõ nên dùng khi xây dựng tính năng hoặc sửa lỗi bằng TDD, red-green-refactor, kiểm thử tích hợp hoặc phát triển theo kiểu test-first.
  • Hướng dẫn vận hành rất cụ thể: bao gồm kiểm thử qua giao diện công khai, khi nào nên mock, thiết kế giao diện để dễ kiểm thử, và các ứng viên tái cấu trúc, kèm ví dụ mã và các chủ đề liên kết.
  • Phân tầng nội dung tốt: file SKILL.md chính dẫn tới các tài liệu phụ tập trung (tests, mocking, interface design, refactoring, deep modules), giúp agent đào sâu mà không phải đoán.
Điểm cần lưu ý
  • Không có lệnh cài đặt hay file/script hỗ trợ, nên mức độ áp dụng chỉ dừng ở việc đọc hướng dẫn chứ không thể gọi tự động hóa.
  • Nội dung thể hiện quan điểm khá rõ theo hướng kiểm thử tích hợp và tránh mock nội bộ, nên có thể không phù hợp với các nhóm theo phong cách TDD nặng về unit test.
Tổng quan

Tổng quan về tdd skill

tdd là một Test-Driven Development skill dành cho việc xây dựng tính năng và sửa lỗi theo vòng lặp đỏ-xanh-refactor. Skill này phù hợp nhất với những kỹ sư muốn có một hướng dẫn tdd thực dụng, giữ test bám theo hành vi chứ không bám vào cách triển khai. Nếu bạn đang làm việc trong một codebase mà refactor diễn ra thường xuyên, interface rất quan trọng, và các test dễ vỡ đang làm bạn chậm lại, skill này sẽ giúp bạn viết những test có thể sống sót qua thay đổi.

Nhiệm vụ cốt lõi rất đơn giản: biến một ý tưởng tính năng còn thô thành một chuỗi bước nhỏ có thể test an toàn. tdd đặc biệt hữu ích cho công việc tự động hóa test, testing theo kiểu integration, và code hưởng lợi từ ranh giới rõ ràng hơn. Quan điểm mạnh nhất của nó là test qua public interface và chỉ mock ở đúng các ranh giới thật sự của hệ thống.

tdd dùng để làm gì

Hãy dùng tdd khi bạn muốn một workflow test-first cho hành vi mới, sửa lỗi, hoặc refactor cần một lớp an toàn. Đây là lựa chọn phù hợp khi bạn đã biết kết quả mong đợi nhưng chưa biết cách triển khai nào là gọn nhất.

Điều gì làm tdd skill này khác biệt

Repo này không chỉ đơn thuần là “viết test trước.” Nó thúc đẩy một kỷ luật rất cụ thể: tránh chia lát theo chiều ngang, ưu tiên test tập trung vào hành vi, và thiết kế interface dễ test. Nhờ vậy, tdd skill hữu ích hơn một prompt chung chung khi bạn cần những test bền vững thay vì nhanh nhưng dễ gãy.

Khi nào tdd là lựa chọn không phù hợp

Nếu bạn chỉ cần một unit test ngắn hạn, một script dùng rồi bỏ, hoặc một kiểu xác minh nội bộ phụ thuộc nặng vào mock cho các lời gọi bên trong, thì đây có lẽ không phải công cụ đúng. Skill này hướng tới phần mềm mà bạn dự định sẽ refactor, nơi chất lượng test quan trọng hơn số lượng test.

Cách dùng tdd skill

Cài đặt và nạp skill

Dùng lệnh cài đặt của directory cho bước tdd install, rồi mở SKILL.md trước. Sau đó, đọc tiếp tests.md, mocking.md, interface-design.md, refactoring.md, và deep-modules.md để nắm những quy tắc thực sự quyết định chất lượng đầu ra.

Đưa cho skill một hành vi, không phải một giải pháp

Cách dùng tdd hiệu quả nhất luôn bắt đầu từ một kết quả người dùng nhìn thấy được, một input, và một kết quả mong đợi. Cấu trúc prompt tốt:

  • “Thêm kiểm tra checkout để cart không hợp lệ trả về lỗi rõ ràng và cart hợp lệ thì hoàn tất thanh toán”
  • “Sửa lỗi khiến email trùng nhau tạo ra hai tài khoản”
  • “Viết test cho luồng retry đối với payment API, dùng public service interface”

Cấu trúc prompt yếu:

  • “Viết test cho checkout”
  • “Làm module này testable hơn”
  • “Mock database và xác minh function đã được gọi”

Đi theo vòng lặp đỏ-xanh-refactor

Bắt đầu từ hành vi nhỏ nhất có thể quan sát được, viết một test thất bại để chứng minh nó, triển khai tối thiểu để test pass, rồi refactor trong khi giữ test xanh. Đừng gom tất cả test trước rồi mới làm implementation sau; skill này cảnh báo rõ ràng về các lát cắt theo chiều ngang vì chúng tạo ra hành vi tưởng tượng thay vì hành vi đã được kiểm chứng.

Đọc các file này trước

Để thực thi thực tế, hãy ưu tiên:

  • SKILL.md cho triết lý và workflow
  • tests.md cho các pattern test tốt và xấu
  • mocking.md cho nguyên tắc chỉ mock ở ranh giới
  • interface-design.md để làm code dễ test hơn
  • refactoring.md cho những điểm cần cải thiện sau khi pass xanh đầu tiên

FAQ về tdd skill

tdd chỉ dành cho unit test thôi à?

Không. tdd skill này ưu tiên các test kiểu integration thông qua public interface, nên thường phù hợp hơn cho test automation và behavior testing so với các setup thiên về unit test cô lập.

Tôi có cần mock mọi thứ không?

Không. Một quy tắc cốt lõi trong tdd guide này là chỉ mock ở ranh giới hệ thống như external API, thời gian, tính ngẫu nhiên, hoặc đôi khi là file system hay database. Đừng mock module của chính bạn chỉ để test chạy qua.

Người mới có dùng tdd được không?

Có, nếu họ có thể mô tả hành vi mong đợi một cách rõ ràng. Đường cong học tập chính không nằm ở cú pháp; nó nằm ở việc chọn đúng ranh giới và tránh test theo chi tiết triển khai.

tdd khác gì so với một prompt bình thường?

Một prompt bình thường có thể tạo ra những test chỉ cần biên dịch được là đủ. tdd skill mang tính định hướng hơn: nó thúc đẩy test bắt đầu từ hành vi, chia nhỏ từng bước, và thiết kế interface để test ổn định trong lúc refactor.

Cách cải thiện tdd skill

Bắt đầu với input sắc hơn

Bạn sẽ nhận kết quả tốt hơn từ tdd khi đưa vào hành vi, ranh giới, và ràng buộc. Ví dụ, hãy nói “xây dựng một email sender có thể retry, dùng một service wrapper thật, nhưng mock thời gian và external provider” thay vì “làm cho cái này testable hơn.”

Chú ý các lỗi thất bại thường gặp

Những lỗi lớn nhất là over-mocking, test private method, và viết test mô tả cách code vận hành thay vì điều người dùng nhìn thấy. Nếu bản nháp đầu tiên có vẻ bám quá sát vào chi tiết triển khai, hãy sửa prompt để gọi đúng public API và kết quả quan sát được.

Lặp từ test sang design

Sau output đầu tiên, hãy dùng các phần fail để cải thiện interface design: tham số nhỏ hơn, giá trị trả về rõ hơn, và ít side effect hơn. Nếu code vẫn khó test, vấn đề có thể nằm ở hình dạng API, không phải ở test.

Yêu cầu gợi ý refactor sau khi xanh

Khi hành vi đã được bao phủ, hãy yêu cầu skill chỉ ra duplication, method dài, module quá mỏng, feature envy, hoặc primitive obsession. Đây là lúc tdd skill tạo thêm giá trị: nó giúp bạn đi từ “test pass” sang một design sạch hơn và vẫn dễ test về sau.

Đánh giá & nhận xét

Chưa có đánh giá nào
Chia sẻ nhận xét của bạn
Đăng nhập để chấm điểm và để lại nhận xét cho skill này.
G
0/10000
Nhận xét mới nhất
Đang lưu...