A

test-driven-development

bởi addyosmani

Skill test-driven-development giúp bạn thay đổi code bằng cách viết trước một test đang fail, rồi sửa đúng phần nhỏ nhất để test pass. Hãy dùng khi cần thay đổi logic, sửa lỗi, ngăn regressions và xử lý edge case, nơi bằng chứng quan trọng hơn một bản vá nghe có vẻ hợp lý.

Stars18.8k
Yêu thích0
Bình luận0
Đã thêm21 thg 4, 2026
Danh mụcSkill Testing
Lệnh cài đặt
npx skills add addyosmani/agent-skills --skill test-driven-development
Điểm tuyển chọn

Skill này đạt 84/100, cho thấy đây là một mục khá tốt trong thư mục cho người dùng muốn có quy trình TDD thân thiện với agent, với các tín hiệu kích hoạt rõ ràng và hướng dẫn từng bước. Nó sẽ giúp agent chọn và thực thi skill với ít đoán mò hơn so với một prompt chung chung, dù vẫn chỉ là một skill đơn tệp, không có script hay tài liệu hỗ trợ đi kèm.

84/100
Điểm mạnh
  • Khả năng kích hoạt cao: phần mô tả nêu rõ các tình huống áp dụng như triển khai logic mới, sửa lỗi và thay đổi hành vi.
  • Quy trình vận hành rõ ràng: trình bày vòng lặp RED-GREEN-REFACTOR cùng thời điểm nên dùng hoặc nên tránh.
  • Độ sâu thực hành tốt: nội dung khá đầy đủ, có nhiều heading, ràng buộc và ví dụ code thay vì văn bản mẫu cho có.
Điểm cần lưu ý
  • Không có file hỗ trợ hay lệnh cài đặt: người dùng chỉ nhận được `SKILL.md`, nên việc áp dụng phụ thuộc nhiều vào việc đọc kỹ tài liệu.
  • Được gắn nhãn thử nghiệm/test và không có tham chiếu bên ngoài, nên mức độ tin cậy chủ yếu dựa vào chính nội dung chứ không phải tooling hay trích dẫn.
Tổng quan

Tổng quan về skill test-driven-development

Skill test-driven-development giúp bạn thay đổi code bằng cách chứng minh hành vi trước, rồi mới triển khai bản sửa nhỏ nhất để test pass. Skill này phù hợp nhất với developer và agent đang xử lý thay đổi logic, sửa lỗi, trường hợp biên và regression — những tình huống mà “trông có vẻ đúng” là chưa đủ. Nếu bạn cần test-driven-development skill để giảm phán đoán mơ hồ, hướng dẫn này sẽ cho bạn biết khi nào nó phù hợp và nó thực sự cải thiện điều gì: chỉnh sửa an toàn hơn, yêu cầu rõ hơn, và ít phải quay lại sửa sau một patch ban đầu.

Skill này dùng để làm gì

Hãy dùng test-driven-development khi tác vụ làm thay đổi hành vi: thêm function mới, đổi điều kiện, tái hiện bug, hoặc bất kỳ việc nào có thể âm thầm làm hỏng code hiện có. Skill này đặc biệt hữu ích khi repo đã có test sẵn và bạn muốn agent làm việc bên trong hệ thống “chứng cứ” của dự án thay vì tự bịa hành vi từ đầu.

Điểm khác biệt nằm ở đâu

Giá trị cốt lõi là tính kỷ luật: viết test fail trước, rồi chỉ triển khai phần code tối thiểu mà test chứng minh được. Cách này cho agent một mục tiêu cụ thể, phát hiện sớm các giả định còn thiếu, và giúp giữ phạm vi sửa lỗi thật hẹp. Với test-driven-development for Skill Testing, đây thường là ranh giới giữa một patch nghe có vẻ hợp lý và một patch đã được xác minh.

Khi nào không phù hợp

Đừng dùng skill này cho các thay đổi không liên quan đến hành vi khi chạy: sửa copy, cập nhật nội dung tĩnh, hoặc chỉnh config thuần túy. Nếu project có rất ít hoặc gần như không có coverage test, skill vẫn có thể hữu ích, nhưng việc áp dụng sẽ chậm hơn vì chính test harness có thể cần được thiết lập trước khi quy trình này tạo ra giá trị.

Cách dùng skill test-driven-development

Cài đặt và kiểm tra skill

Hãy dùng luồng cài đặt của repository cho test-driven-development install:

npx skills add addyosmani/agent-skills --skill test-driven-development

Sau khi cài xong, hãy bắt đầu với SKILL.md. Trong repository này không có các thư mục rules/, resources/, hay scripts/ bổ sung để dựa vào, nên việc chính là đọc kỹ file skill và đối chiếu hướng dẫn của nó với codebase của bạn.

Biến một yêu cầu mơ hồ thành prompt có thể kiểm thử

Cách dùng test-driven-development usage tốt nhất luôn bắt đầu bằng mô tả hành vi, không phải yêu cầu giải pháp. Một input tốt sẽ nghe như: “Thêm test fail cho validation email rỗng, rồi triển khai bản sửa tối thiểu trong src/auth.ts.” Một input yếu sẽ nghe như: “Làm login tốt hơn.” Hãy nêu kết quả quan sát được, file hoặc module nếu biết, và rủi ro regression mà bạn quan tâm.

Làm theo vòng lặp RED-GREEN-REFACTOR

Hãy dùng skill này như một workflow: trước hết viết test thất bại với code hiện tại, sau đó viết thay đổi code nhỏ nhất để test pass, rồi chỉ refactor nếu test vẫn pass. Nếu lỗi khó tái hiện, hãy dừng lại và làm rõ test case trước khi đụng vào implementation. Skill này hiệu quả nhất khi case fail đủ cụ thể để chứng minh bug.

Đọc đúng file trước

Với repo này, phần đọc đầu tiên quan trọng nhất là SKILL.md. Sau đó hãy kiểm tra cấu hình test cục bộ trong project đích của bạn: cấu hình test runner, quy ước test đang dùng, và các test gần nhất quanh phần code bạn định sửa. Nếu project đã có pattern rõ ràng, hãy theo đúng; nếu chưa, hãy giữ test thật tối thiểu và thật rõ ràng.

FAQ về skill test-driven-development

Đây có chỉ dành cho kỹ sư giàu kinh nghiệm không?

Không. Người mới vẫn có thể dùng test-driven-development, nhưng họ cần một điểm khởi đầu thật rõ: một hành vi, một test fail, một bản sửa tối thiểu. Skill này dễ học hơn khi áp dụng cho các lỗi nhỏ hơn là cho những tính năng rộng.

Nó khác gì một prompt bình thường?

Một prompt bình thường có thể chỉ yêu cầu code “chạy được”. Skill này thì đòi hỏi bằng chứng. test-driven-development guide buộc agent định nghĩa thành công là một test pass, nhờ đó giảm mơ hồ và giúp việc review dễ hơn.

Khi nào tôi không nên chọn nó?

Hãy bỏ qua skill này cho tài liệu, định dạng, hoặc những thay đổi không thể biểu diễn bằng hành vi khi chạy. Cũng nên bỏ qua nếu project không có test harness khả dụng và bạn chỉ cần một chỉnh sửa nhanh không liên quan đến hành vi.

Nó có phù hợp với mọi hệ sinh thái không?

Về nguyên tắc là có, nhưng lệnh test, assertion, và cấu trúc file cụ thể sẽ phụ thuộc vào stack. Skill này không phụ thuộc framework; quy ước của repo cục bộ sẽ quyết định bạn dùng Jest, Vitest, pytest, JUnit, hay một runner khác.

Cách cải thiện skill test-driven-development

Cho agent một case fail sắc hơn

Input mạnh nhất là nêu rõ hành vi đang fail, kết quả mong đợi, và điều kiện biên. Ví dụ: “Khi parseDate("") chạy, nó պետք ném InvalidDateError; hãy thêm test trước, rồi vá parser.” Điều này giúp test-driven-development skill tránh những suy đoán triển khai mơ hồ.

Chia sẻ phong cách test đang có

Hãy nhắc đến các file test ở gần đó, quy ước đặt tên, và mọi helper hoặc fixture mà project đã dùng sẵn. Nếu repo đang dùng table-driven tests, mocks, hoặc integration tests cho hành vi tương tự, hãy nói rõ. Khớp với quy ước cục bộ sẽ tăng độ tin cậy và giúp output dễ merge hơn.

Theo dõi các lỗi thất bại phổ biến

Những lỗi lớn nhất là viết implementation trước test, dùng một test vốn đã pass, và mở rộng phạm vi sửa quá xa khỏi case fail. Nếu output đầu tiên quá rộng, hãy yêu cầu test fail nhỏ nhất có thể và chỉ một patch tối thiểu. Đó thường là đường nhanh nhất để có test-driven-development usage đáng tin cậy.

Lặp lại dựa trên bằng chứng, không phải phỏng đoán

Sau lượt đầu tiên, hãy yêu cầu điểm chứng minh tiếp theo: một edge case khác, một regression test, hoặc một refactor nhưng vẫn giữ các test pass. Nếu bug tinh vi, hãy yêu cầu tóm tắt hành vi trước/sau cùng với chính xác tên test cần thêm. Cách này giữ workflow bám vào hành vi quan sát được thay vì giả định.

Đá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...