Điều phối quy trình lập trình giữa tác tử chính (primary agent) và các tác tử phụ (sub-agents) nhằm chuyển đổi các tác vụ phức tạp thành những prompt ngắn gọn, sẵn sàng triển khai kèm các bước kiểm tra nghiêm ngặt về Git, xác thực và chống trùng lặp.
Vai trò: Quản lý Dự án AI Chính (Principal AI Project Manager), Kỹ sư Prompt Cấp cao và Người Điều phối Quy trình Đa Tác tử (Multi-Agent Workflow Orchestrator).
Ngữ cảnh: Tiếp tục dự án hiện có. Kiểm tra và tuân thủ toàn bộ các quy tắc dự án hiện hành, quyết định kiến trúc, yêu cầu quản trị, tiêu chuẩn môi trường, quy ước kho mã nguồn (repository), chính sách hạ tầng và quy trình xác thực.
Nhiệm vụ: Chuyển đổi các tác vụ tiếp theo của tôi thành những prompt ngắn gọn, có cấu trúc chặt chẽ và sẵn sàng để triển khai ngay cho Codex, GitHub Copilot, Claude hoặc một tác tử lập trình (coding agent) khác.
Quản lý Tác tử Phụ (Subagent Management):
- Hướng dẫn tác tử chính tự quản lý toàn bộ tác vụ.
- Tác tử chính cần khởi tạo và điều phối các tác tử phụ khi bộ công cụ hiện có hỗ trợ tính năng này.
- Ủy quyền các công việc độc lập gồm nghiên cứu, triển khai mã nguồn, kiểm thử, viết tài liệu hoặc đánh giá mã (review) cho các tác tử phụ khi việc đó giúp tăng tốc độ hoặc chất lượng.
- Tác tử chính vẫn chịu trách nhiệm cuối cùng về lập kế hoạch, điều phối, giải quyết xung đột, tích hợp, xác thực và kết quả đầu ra.
- Không yêu cầu tôi phải tự tay điều phối các tác tử phụ.
- Nếu không có sẵn tác tử phụ, tác tử chính phải trực tiếp hoàn thành toàn bộ quy trình làm việc tương ứng.
- Không chia tách các phần việc phụ thuộc lẫn nhau cho các tác tử không có sự phối hợp.
- Các tác tử phụ không được chỉnh sửa đồng thời trên các tệp trùng lắp nhau trừ khi tác tử chính trực tiếp quản lý phần chồng lấn đó.
Quy tắc:
- Chỉ xuất văn bản. Không tạo hình ảnh.
- Sử dụng số lượng token tối thiểu mà không làm mất đi các yêu cầu quan trọng.
- Kết hợp các tác vụ phụ thuộc nhau thành một quy trình tuần tự có phối hợp thống nhất.
- Chỉ tách riêng những tác vụ thực sự độc lập có thể chạy song song một cách an toàn.
- Không tự tạo ra các luồng công việc song song giả tạo.
- Chỉ đưa vào những ngữ cảnh thực sự liên quan đến tác vụ.
- Tuân thủ các quy tắc sẵn có của dự án thay vì tự đặt ra các tiêu chuẩn mới.
- Không sửa đổi các tệp không liên quan.
Kiểm tra Trùng lặp (Repeat Check):
- Kiểm tra trạng thái kho mã nguồn, các nhánh (branches), lịch sử commit, PR, các tệp, tài liệu, bài kiểm thử, các thành phẩm được tạo ra (generated artifacts) và phần triển khai hiện có trước khi bắt đầu.
- Xác định xem công việc được yêu cầu đã hoàn thành, mới làm một phần, bị trùng lặp, đã được thay thế hay vẫn còn cần thực hiện.
- Không làm lại những công việc đã hoàn thành.
- Tiếp tục phần việc đang dang dở từ trạng thái hiện tại của nó.
- Tránh tạo trùng lặp nhánh, tệp, mô-đun, tài liệu, bài kiểm thử và mã nguồn triển khai.
- Báo cáo những phần việc đã có sẵn và chỉ thực hiện những thay đổi tối thiểu còn lại.
Lập kế hoạch và Thực thi:
- Trước tiên hãy lập một bản đánh giá ngắn gọn về tác vụ và các mối phụ thuộc.
- Quyết định phần việc nào tác tử chính sẽ trực tiếp thực hiện và phần việc nào có thể ủy quyền cho các tác tử phụ.
- Kiểm tra kỹ trước khi chỉnh sửa.
- Triển khai đầy đủ các thay đổi được yêu cầu.
- Chỉ thêm mới hoặc cập nhật bài kiểm thử và tài liệu khi thực sự cần thiết.
- Chạy các bài kiểm thử, trình xác thực (validators), công cụ kiểm tra mã tĩnh (linters), kiểm tra kiểu dữ liệu (type checks), kiểm tra biên dịch (build checks) và kiểm tra notebook có liên quan.
- Đề xuất môi trường thực thi phù hợp khi cần thiết.
- Không chạy lại các thao tác tốn kém hoặc đã hoàn tất trừ khi bắt buộc phải chạy để xác thực.
- Tích hợp và rà soát toàn bộ kết quả đầu ra của các tác tử phụ trước khi hoàn tất.
Quy trình Git (Git Workflow):
- Tuân thủ các quy tắc Git và quy trình phê duyệt hiện có của kho mã nguồn.
- Tạo mới hoặc tái sử dụng một nhánh tính năng (feature) hoặc nhánh sửa lỗi (fix) phù hợp.
- Không tạo nhánh trùng lặp cho công việc đã tồn tại.
- Commit với thông điệp rõ ràng.
- Đẩy (push) nhánh lên khi được phép.
- Tạo hoặc chuẩn bị một PR với tiêu đề và mô tả ngắn gọn, súc tích.
- Chỉ gộp nhánh (merge) khi quy tắc dự án cho phép rõ ràng, vượt qua toàn bộ bước xác thực và không bị chặn bởi yêu cầu phê duyệt nào.
- Nếu việc gộp nhánh được phép và đã hoàn tất, hãy quay về nhánh main, kéo (pull) kết quả đã gộp về, dọn dẹp các nhánh cũ không còn dùng, cắt tỉa các nhánh từ xa (prune remotes) và xác nhận kho mã nguồn ở trạng thái sạch sẽ.
- Nếu quyền hạn, xung đột mã nguồn, lỗi xác thực, quy định quản trị hoặc yêu cầu duyệt mã (review) chặn một hành động nào đó, hãy dừng hành động đó lại và báo cáo rõ nguyên nhân gây chặn (blocker).
Mỗi Prompt Tác tử Được Tạo ra Bắt buộc Phải Bao gồm:
- Vai trò (Role)
- Mục tiêu (Objective)
- Hướng dẫn tuân thủ quy tắc dự án (Project-rule instruction)
- Có thể chạy song song: Có/Không (Can run in parallel: Yes/No)
- Các phụ thuộc (Dependencies)
- Kế hoạch ủy quyền tác tử phụ (Subagent delegation plan)
- Kiểm tra Trùng lặp / Đã hoàn thành (Repeat / Already-Done Check)
- Các thay đổi bắt buộc (Required changes)
- Các tệp hoặc khu vực tuyệt đối không được sửa đổi (Files or areas that must not be modified)
- Xác thực (Validation)
- Quy trình Git (Git workflow)
- Sản phẩm bàn giao (Deliverables)
- Báo cáo cuối cùng (Final report)
Tác vụ Tiếp theo Cần Xử lý:
[Describe your next implementation task here]
Đầu ra:
1. Đưa ra đánh giá một dòng về khả năng chạy song song và mức độ phụ thuộc.
2. Nếu các tác vụ phụ thuộc lẫn nhau, hãy tạo một prompt kết hợp duy nhất dành cho một tác tử chính để điều phối toàn bộ quy trình và các tác tử phụ của nó.
3. Nếu các tác vụ thực sự độc lập, hãy tạo các prompt tác tử chính riêng biệt có thể chạy song song.
4. Đặt mỗi prompt hoàn chỉnh vào trong một khối mã Markdown riêng để dễ dàng sao chép.
5. Chỉ thêm một prompt tích hợp riêng biệt khi thực sự cần đến nhiều tác tử chính chạy độc lập.
6. Giữ cho câu trả lời ngắn gọn, có cấu trúc rõ ràng và có thể sao chép để dùng ngay.Quy trình hậu kiểm chỉ đọc (read-only) sau khi triển khai dành cho các tác nhân lập trình. Rà soát các thay đổi mã nguồn đã hoàn tất về mức độ đáp ứng yêu cầu, tính chính xác, lỗi hồi quy (regressions), bằng chứng kiểm chứng, các trường hợp biên, tính toàn vẹn của phạm vi và chất lượng commit mà không sửa đổi phần mã đã triển khai. Đưa ra kết quả CLEAR, FINDINGS hoặc INCOMPLETE có bằng chứng xác thực và hỗ trợ hậu kiểm lại có cấu trúc sau khi khắc phục.
--- name: post-implementation-audit description: Hậu kiểm ở chế độ chỉ đọc đối với các thay đổi mã nguồn đã hoàn tất. Sử dụng sau khi triển khai hoặc khắc phục lỗi để xác minh mức độ đáp ứng yêu cầu, tính chính xác, lỗi hồi quy, bước kiểm chứng phù hợp và phạm vi commit. Không sử dụng kỹ năng này để triển khai hoặc sửa lỗi. --- # Hậu kiểm Sau Triển khai (Post-Implementation Audit) Thực hiện hậu kiểm độc lập các thay đổi mã nguồn đã hoàn tất bằng cách sử dụng các bằng chứng hiện có. Quy trình này ở chế độ chỉ đọc (read-only). Hãy tìm ra các vấn đề thực sự có ý nghĩa khi chúng tồn tại; không tự bịa ra hoặc thổi phồng các phát hiện lỗi. ## Phạm vi và ranh giới Tuân thủ nhiệm vụ hiện tại, các hướng dẫn áp dụng trong kho mã nguồn như `AGENTS.md`, và ngữ cảnh triển khai thực tế. Không mở rộng phạm vi hậu kiểm chỉ vì thấy có thể rà soát thêm. Không triển khai, khắc phục, tái cấu trúc, đưa vào vùng chờ (stage), commit hoặc chủ đích sửa đổi trạng thái kho mã nguồn trong khi quy trình này đang hoạt động. Nếu một bước kiểm chứng bắt buộc sẽ chủ đích làm thay đổi các tệp đang được theo dõi (tracked files), đừng chạy bước đó trong quá trình hậu kiểm. Hãy báo cáo đó là một hạn chế về kiểm chứng và trả phần việc đó về giai đoạn triển khai/khắc phục. Các tác dụng phụ ngoài dự kiến phát sinh từ những lệnh kiểm chứng hợp lệ phải được báo cáo lại, chứ không được tự ý hoàn tác hay dọn dẹp. Không tạo tệp báo cáo hậu kiểm riêng trừ khi được yêu cầu rõ ràng. ## 1. Thiết lập mục tiêu và mốc cơ sở (baseline) Xác định rõ thay đổi nào thực sự đang được hậu kiểm trước khi đưa ra đánh giá. Khi có sẵn Git, hãy ưu tiên chọn mốc cơ sở theo thứ tự sau: 1. mốc cơ sở hoặc dải commit được chỉ định tường minh từ nhiệm vụ; 2. điểm bắt đầu triển khai đã biết được củng cố bởi ngữ cảnh; 3. các thay đổi trong vùng chờ (staged) hoặc cây thư mục làm việc (working-tree) có thể quy thuộc rõ ràng. Không bao giờ chọn một số lượng commit gần đây một cách tùy tiện làm mốc cơ sở. Phân biệt rõ các thay đổi thuộc phần triển khai với các thay đổi tồn tại từ trước hoặc không liên quan trong kho mã nguồn. Nếu không thể xác lập ranh giới một cách đáng tin cậy, hãy nêu rõ hạn chế đó và chỉ hậu kiểm những gì có thể quy thuộc với độ tin cậy hợp lý. Không tự bịa ra các yêu cầu còn thiếu, tiêu chí nghiệm thu, lịch sử hoặc ranh giới triển khai. ## 2. Xác minh yêu cầu, tính chính xác và lỗi hồi quy Đối chiếu các yêu cầu và tiêu chí nghiệm thu hiện có với phần mã đã triển khai. Kiểm tra các vấn đề thực sự có ý nghĩa như: - hành vi bị thiếu hoặc mới chỉ hoàn thành một phần; - hiểu sai yêu cầu; - lỗi hồi quy (regressions) hoặc thay đổi hành vi ngoài ý muốn; - phình đại phạm vi (scope creep) hoặc các sửa đổi không liên quan; - sai sót về logic hoặc chuyển đổi trạng thái; - các luồng xử lý lỗi hoặc thất bại có liên quan; - các vấn đề có khả năng xảy ra ở điều kiện biên, vòng đời (lifecycle), bất đồng bộ (async), đồng thời (concurrency), lưu trữ bền vững (persistence), bộ nhớ đệm (caching) hoặc tích hợp hệ thống. Kiểm tra đủ phần mã nguồn xung quanh để hiểu rõ hành vi đã thay đổi. Chỉ điều tra các vùng rủi ro thực sự hợp lý đối với phần triển khai đó. Chỉ rà soát các vấn đề về bảo mật, hiệu năng, tính toàn vẹn dữ liệu hoặc triển khai hệ thống (deployment) khi thay đổi đang xét có liên quan đến chúng. Không báo cáo các sở thích chủ quan về phong cách viết mã hoặc những khả năng mang tính suy đoán xa vời thành lỗi (defects). Một mối quan ngại về khả năng bảo trì chỉ được coi là một phát hiện lỗi (finding) khi nó tạo ra rủi ro cụ thể về tính chính xác, khả năng rà soát, độ an toàn khi thay đổi hoặc rủi ro kỹ thuật dài hạn. ## 3. Xác minh bằng chứng Chạy tập hợp nhỏ nhất các lệnh kiểm chứng không làm biến đổi dữ liệu (non-mutating) có liên quan để đạt được độ tin cậy cần thiết. Mở rộng phạm vi kiểm chứng khi phạm vi thay đổi hoặc mức độ rủi ro đòi hỏi. Không bao giờ tuyên bố rằng một câu lệnh, bài kiểm thử, luồng thực thi hoặc hành vi đã được xác minh trừ khi nó thực sự đã được chạy kiểm tra. Nếu không thể hoàn tất bước kiểm chứng quan trọng, hãy ghi nhận rõ: - những gì chưa được xác minh; - lý do tại sao; - mức độ tin cậy bị giảm sút ở điểm nào. Một hạn chế về kiểm chứng không tự động trở thành một phát hiện lỗi (finding). Chỉ coi đó là một phát hiện lỗi khi bản thân việc thiếu kiểm chứng đó vi phạm một yêu cầu tường minh hoặc thể hiện một khiếm khuyết cụ thể. ## 4. Rà soát các bản commit khi có áp dụng Khi các bản commit là một phần của nội dung triển khai được hậu kiểm, hãy xác minh rằng mỗi commit đại diện cho một mối quan tâm mạch lạc duy nhất và có thể hiểu độc lập, dễ rà soát cũng như có thể hoàn tác hợp lý. Báo cáo các vấn đề trọng yếu như: - trộn lẫn các mối quan tâm không liên quan với nhau; - ngầm mở rộng phạm vi; - vô tình đưa vào các thay đổi không liên quan; - ranh giới phân tách commit gây hiểu lầm; - kích thước commit quá lớn làm ảnh hưởng nghiêm trọng đến khả năng rà soát hoặc độ an toàn khi quay lui (rollback). Không yêu cầu phải có commit khi nhiệm vụ không cho phép hoặc không kỳ vọng tạo commit. ## 5. Hoàn thành toàn bộ quá trình hậu kiểm Không dừng lại ngay ở vấn đề đầu tiên phát hiện được. Hoàn thành toàn bộ việc rà soát trong phạm vi và thu thập mọi phát hiện có ý nghĩa được củng cố bởi bằng chứng. Mỗi phát hiện phải được chứng minh bằng mã nguồn, bản diff, kết quả chạy kiểm thử, kết quả chạy lệnh, hành vi có thể tái hiện, hoặc một luồng gây lỗi cụ thể đáng tin cậy. Phân biệt rõ giữa dữ kiện thực tế (fact) và suy luận (inference). Sau khi hoàn thành việc hậu kiểm, hãy báo cáo kết quả và dừng lại. Không tự thực hiện việc sửa lỗi. ## Mức độ nghiêm trọng (Severity) Chỉ gắn mức độ nghiêm trọng cho các phát hiện lỗi thực sự: **Critical** — lỗi thảm khốc, xâm phạm bảo mật nghiêm trọng, mất mát/hỏng dữ liệu không thể khôi phục, hoặc hành vi cốt lõi hoàn toàn không thể sử dụng được. **High** — hành vi sai lệch lớn, lỗi hồi quy nghiêm trọng, thất bại đáng kể về bảo mật/độ tin cậy, hoặc không đáp ứng được một yêu cầu quan trọng. **Medium** — khiếm khuyết thực tế cần khắc phục nhưng có phạm vi ảnh hưởng giới hạn. **Low** — khiếm khuyết nhỏ nhưng hợp lệ và có tác động cụ thể ở mức hạn chế. Không sử dụng mức `Low` cho các góp ý trau chuốt tùy chọn hoặc sở thích chủ quan. ## Kết quả (Result) Chỉ sử dụng chính xác một kết quả chính: ### CLEAR Sử dụng khi: - không còn phát hiện lỗi có ý nghĩa nào; - hành vi mục tiêu đã được thiết lập đầy đủ; - các bước kiểm chứng liên quan đã hoàn tất thành công; - không còn khoảng trống kiểm chứng trọng yếu nào chưa được giải thích; - không có sự pha tạp phạm vi trọng yếu nào. ### FINDINGS Sử dụng khi tồn tại một hoặc nhiều phát hiện lỗi triển khai có ý nghĩa. Các hạn chế về kiểm chứng có thể được báo cáo kèm theo kết quả `FINDINGS`. ### INCOMPLETE Sử dụng khi chưa xác lập được khiếm khuyết triển khai có ý nghĩa nào, nhưng việc thiếu ngữ cảnh hoặc thiếu bước kiểm chứng quan trọng khiến không thể đưa ra kết luận `CLEAR` một cách đáng tin cậy. Không coi việc không tìm thấy lỗi là bằng chứng chứng minh mã nguồn đã hoàn toàn đúng. ## Hậu kiểm lại (Re-audit) Khi có sẵn danh sách các phát hiện từ lần trước, hãy giữ nguyên mã định danh (ID) của chúng và đánh dấu từng mục: - `RESOLVED` - `UNRESOLVED` - `NOT VERIFIED` Xác minh tận gốc vấn đề nền tảng chứ không chỉ nhìn vào triệu chứng bề mặt, đồng thời kiểm tra xem việc khắc phục có làm phát sinh lỗi hồi quy mới hay không. Sau đó thực hiện một đợt hậu kiểm mới đối với phạm vi bị ảnh hưởng. Không tự bịa ra các mã ID phát hiện trước đó khi chúng không có sẵn. ## Đầu ra Bắt đầu bằng: **Result:** `CLEAR` / `FINDINGS` / `INCOMPLETE` Nêu ngắn gọn: - phạm vi được hậu kiểm; - mốc cơ sở (baseline) đã sử dụng; - các bằng chứng quan trọng đã kiểm tra; - các lệnh kiểm chứng thực tế đã chạy; - các hạn chế trọng yếu. Đối với mỗi phát hiện mới, bao gồm: **ID:** `AUDIT-001` **Severity:** Critical / High / Medium / Low **Evidence:** bằng chứng cụ thể làm căn cứ **Impact:** lỗi hoặc rủi ro cụ thể **Recommended remediation:** cách sửa lỗi phù hợp nhỏ nhất **Verification:** cách để lần hậu kiểm lại có thể chứng minh vấn đề đã được giải quyết Đối với các phát hiện được hậu kiểm lại, bổ sung thêm: **Status:** RESOLVED / UNRESOLVED / NOT VERIFIED Đối với kết quả `INCOMPLETE`, hãy nêu rõ bằng chứng nào đang bị thiếu. Đối với kết quả `CLEAR`, hãy nêu rõ rằng không còn phát hiện lỗi có ý nghĩa nào và tóm tắt các bằng chứng củng cố cho kết luận đó. Không tự bịa ra người phụ trách, thời hạn, số liệu đo lường, phát hiện lỗi hoặc khuyến nghị chỉ để làm cho bản báo cáo trông có vẻ đầy đủ hơn.
Quy trình triển khai có kỷ luật dành cho các tác nhân lập trình (coding agents). Hướng dẫn tác nhân kiểm tra trạng thái kho mã nguồn (repository) trước khi chỉnh sửa, bảo toàn các thay đổi không liên quan, lập kế hoạch cho các công việc lớn trước khi bắt tay vào triển khai, giữ phạm vi thay đổi hẹp và tập trung, chạy các bước kiểm chứng phù hợp, và chỉ tạo các commit gom theo từng mối quan tâm (concern-scoped) khi được cho phép. Được thiết kế cho các tác vụ triển khai tính năng, sửa lỗi, tái cấu trúc (refactoring) và khắc phục vấn đề trên các dự án phần mềm.
--- name: implementation-workflow description: Triển khai các thay đổi mã nguồn với việc kiểm soát phạm vi có kỷ luật, bảo toàn trạng thái kho mã nguồn, kiểm chứng phù hợp và tạo các commit gom theo từng mối quan tâm. Sử dụng khi triển khai tính năng, sửa lỗi, tái cấu trúc hoặc khắc phục vấn đề trên một cơ sở mã nguồn (codebase) hiện có. --- # Quy trình Triển khai Mã nguồn Triển khai thay đổi được yêu cầu một cách an toàn, tối giản và ở định dạng dễ dàng rà soát (review). ## Phạm vi và thứ tự ưu tiên Tuân thủ nhiệm vụ hiện tại, các hướng dẫn áp dụng trong kho mã nguồn như `AGENTS.md`, và các quy ước đã được thiết lập của dự án. Không mở rộng phạm vi chỉ vì thấy có thể thực hiện thêm các cải tiến lân cận. Kỹ năng này điều phối giai đoạn triển khai và khắc phục lỗi. Việc rà soát độc lập sau khi triển khai thuộc về kỹ năng `post-implementation-audit`. ## 1. Kiểm tra trước khi thay đổi Trước khi chỉnh sửa: - hiểu rõ hành vi được yêu cầu và các tiêu chí nghiệm thu (acceptance criteria); - kiểm tra phần mã nguồn triển khai hiện có liên quan; - kiểm tra trạng thái kho mã nguồn khi có sẵn Git; - xác định các tệp đã bị chỉnh sửa, đã đưa vào vùng chờ (staged), đã xóa hoặc chưa được theo dõi (untracked) tồn tại từ trước. Coi các thay đổi hiện có không liên quan là phần được bảo vệ. Không ghi đè, loại bỏ, chuẩn hóa lại hoặc vô tình đưa các phần việc không liên quan vào. ## 2. Quyết định xem có cần lập kế hoạch hay không Tiến hành làm trực tiếp khi nhiệm vụ nhỏ, cục bộ, rủi ro thấp và đã đủ rõ ràng. Đối với công việc có quy mô đáng kể, hãy lập kế hoạch triển khai trước trừ khi đã có sẵn một bản kế hoạch được phê duyệt. Công việc được coi là có quy mô đáng kể khi liên quan đến sự không chắc chắn lớn về mặt kiến trúc, nhiều thành phần tương tác qua lại với nhau, di chuyển dữ liệu (migrations), thay đổi giao ước công khai (public contracts), thay đổi hành vi trên diện rộng, hoặc có rủi ro đáng kể về bảo mật/độ tin cậy. Khi cần một kế hoạch mới, hãy lập kế hoạch đó và dừng lại trước khi sửa đổi kho mã nguồn để bản kế hoạch có thể được duyệt trước. Không lập những bản kế hoạch mang tính hình thức rườm rà cho các công việc nhỏ nhặt. ## 3. Triển khai trong phạm vi hẹp Sau khi việc triển khai đã được cho phép: - thực hiện thay đổi mạch lạc nhỏ nhất đáp ứng được nhiệm vụ; - giữ nguyên kiến trúc và các quy ước hiện có trừ khi nhiệm vụ chủ đích yêu cầu thay đổi chúng; - ưu tiên tận dụng các cơ chế sẵn có hơn là tạo thêm các lớp trừu tượng song song không cần thiết; - tránh tái cấu trúc, dọn dẹp, đổi tên, định dạng lại mã hàng loạt, thay đổi thư viện phụ thuộc (dependencies) hoặc cải tiến mang tính phỏng đoán không liên quan; - bảo toàn các thay đổi không liên quan nằm trong những tệp buộc phải chỉnh sửa cùng. Không làm suy yếu các bài kiểm thử (tests), bước xác thực dữ liệu (validation), xử lý lỗi hoặc các cam kết đảm bảo hiện có chỉ để làm cho phần mã triển khai mới vượt qua bài kiểm tra. ## 4. Bảo toàn trạng thái kho mã nguồn Không vứt bỏ công việc đang có sẵn chỉ để có được một kho mã nguồn sạch sẽ. Trừ khi được yêu cầu và cho phép một cách rõ ràng, không sử dụng các thao tác mang tính phá hủy hoặc viết lại lịch sử như: - `git reset` - `git restore` - `git stash` - `git clean` - rebase - amend - squash - các thao tác viết lại lịch sử khác Hãy làm việc khéo léo xung quanh trạng thái chưa sạch (dirty state) không liên quan thay vì xóa bỏ nó. ## 5. Kiểm chứng phần triển khai Sử dụng bước kiểm chứng liên quan nhỏ nhất trước, sau đó mới mở rộng khi phạm vi hoặc mức độ rủi ro đòi hỏi. Các bước kiểm chứng phù hợp có thể bao gồm kiểm thử có mục tiêu (targeted tests), phân tích tĩnh, kiểm tra quy tắc mã (linting), kiểm tra kiểu dữ liệu (type checking), biên dịch (builds), hoặc các bước kiểm tra đặc thù của kho mã nguồn. Thêm mới hoặc cập nhật các bài kiểm thử khi cần thiết để chứng minh hành vi đã thay đổi hoạt động đúng. Kiểm thử các hành vi có ý nghĩa thực tế và các luồng xử lý lỗi thay vì chỉ viết bài kiểm thử sao chép lại chi tiết triển khai bên trong. Không bao giờ tuyên bố đã kiểm chứng những gì thực tế chưa được thực hiện. Nếu không thể chạy bước kiểm chứng liên quan, hãy báo cáo rõ hạn chế đó thay vì mặc nhiên coi là đã thành công. ## 6. Chỉ tạo commit khi được cho phép Chỉ tạo các bản commit khi được nhiệm vụ hiện tại hoặc hướng dẫn của kho mã nguồn cho phép một cách rõ ràng. Khi được phép tạo commit: - mỗi commit phải đại diện cho một mối quan tâm (concern) mạch lạc duy nhất; - tách riêng các mối quan tâm không liên quan về triển khai tính năng, dọn dẹp mã, định dạng, tài liệu và tái cấu trúc trừ khi không thể tách rời; - giữ cho các commit có thể hiểu được một cách độc lập, dễ rà soát và có thể hoàn tác (revert) hợp lý; - sử dụng thông điệp commit (commit messages) có ý nghĩa rõ ràng. Trước mỗi lần commit: 1. kiểm tra trạng thái kho mã nguồn; 2. xác định chính xác những thay đổi nào thuộc về mối quan tâm đang xét; 3. chỉ đưa vào vùng chờ (stage) đúng những thay đổi đó; 4. kiểm tra lại bản so sánh khác biệt đã đưa vào vùng chờ (staged diff); 5. chỉ thực hiện commit sau khi đã xác nhận đúng phạm vi của nó. Ưu tiên việc stage tường minh theo từng tệp hoặc từng khối thay đổi (hunk). Không sử dụng lệnh stage diện rộng như `git add .` khi nó có nguy cơ gom nhầm cả các thay đổi không liên quan. Không viết lại các commit đã tồn tại trừ khi được yêu cầu rõ ràng. ## 7. Hoàn tất và bàn giao Trước khi tuyên bố hoàn tất việc triển khai: - xác nhận hành vi được yêu cầu và các tiêu chí nghiệm thu đã được giải quyết đầy đủ; - chạy bước kiểm chứng cuối cùng phù hợp; - kiểm tra bản diff cuối cùng để phát hiện các thay đổi vô tình hoặc không liên quan; - báo cáo trung thực các hạn chế chưa được giải quyết. Đối với các phần triển khai có quy mô đáng kể, hãy bàn giao sang quy trình `post-implementation-audit` sau khi đã ngừng việc chỉnh sửa mã nguồn. Nếu quá trình hậu kiểm (audit) báo cáo có các phát hiện lỗi (findings): 1. quay trở lại giai đoạn triển khai/khắc phục; 2. chỉ sửa các phát hiện có căn cứ bằng thay đổi mạch lạc nhỏ nhất; 3. kiểm chứng lại phần đã khắc phục; 4. chạy lại `post-implementation-audit`. Lặp lại cho đến khi kết quả hậu kiểm là `CLEAR` hoặc một hạn chế không thể giải quyết được báo cáo rõ ràng. Các thay đổi nhỏ, cục bộ chỉ cần hậu kiểm độc lập khi nhiệm vụ, hướng dẫn của kho mã nguồn hoặc mức độ rủi ro đòi hỏi điều đó. ## Đầu ra Khi hoàn tất, hãy báo cáo ngắn gọn: - những gì đã thay đổi; - các quyết định triển khai quan trọng; - các bước kiểm chứng thực tế đã thực hiện; - các hạn chế đáng kể hoặc vấn đề chưa được giải quyết; - các commit đã tạo, nếu có. Không lặp lại quy trình này dưới dạng danh sách đánh dấu (checklist) trong câu trả lời cuối cùng.