Trong nhiều team phát triển nhỏ, việc duy trì tài liệu kỹ thuật (README, API spec, hướng dẫn triển khai) thường bị lảng vảng vì thiếu người chuyên trách và áp lực deadline. Bài viết này chia sẻ quy trình thực tế áp dụng AI để tự động sinh và cập nhật tài liệu, giúp team tiết kiệm 60‑70% thời gian so với cách thủ công. **1. Bối cảnh và thách thức** - Team 5‑7 lập trình viên, không có technical writer. - Mỗi sprint có 3‑5 tính năng mới, tài liệu cũ nhanh chóng lỗi thời. - Review tài liệu thủ công tốn 2‑3 giờ/tuần, dễ bỏ sót chi tiết. **2. Kiến trúc giải pháp** - **Thu thập ngữ cảnh**: Sử dụng Git hook (pre‑push) để lấy diff code, commit message, PR description. - **Prompt engineering**: Xây dựng prompt mẫu yêu cầu mô hình ngôn ngữ lớn (LLM) tóm tắt thay đổi, sinh markdown phù hợp (cấu trúc: Overview, Breaking changes, Migration guide, Examples). - **Pipeline CI/CD**: Tích hợp step gọi API LLM trong GitHub Actions; kết quả ghi đè file docs/feature‑<id>.md và mở PR tự động để team review. - **Human‑in‑the‑loop**: Reviewer chỉ cần duyệt PR, không cần viết từ đầu. **3. Kết quả đạt được** - Thời gian viết tài liệu giảm từ ~2.5h/tuần xuống ~0.7h/tuần. - Độ phủ tài liệu (coverage) tăng từ 55% lên 92% theo metric tự động kiểm tra sự tồn tại của các section bắt buộc. - Số lượng bug do tài liệu sai lệch giảm 40% trong 3 tháng đầu. **4. Lời khuyên áp dụng** - Bắt đầu với một template prompt nhỏ, test trên 1‑2 feature trước khi mở rộng. - Lưu version prompt trong repo để rollback dễ dàng khi mô hình cập nhật. - Thiết lập quy tắc naming convention cho file tài liệu để AI dễ dàng định vị. - Kết hợp lint cho markdown (markdownlint) trong pipeline để đảm bảo định dạng nhất quán. **5. Lưu ý rủi ro** - LLM có thể hallucinate tham số API; luôn yêu cầu reviewer kiểm tra kỹ phần "Breaking changes". - Chi phí token tăng theo số lượng diff lớn; cân nhắc tóm tắt diff trước khi gửi cho mô hình. Với quy trình trên, team nhỏ cũng có thể duy trì tài liệu chất lượng cao mà không cần nhân sự chuyên biệt, biến tài liệu thành tài sản sống cùng codebase.