Dùng AI viết user story: prompt, bản nháp mẫu, chỗ phải sửa
Ví dụ trọn vẹn khi dùng AI viết user story: bối cảnh đầu vào, prompt, bản nháp minh họa, những chỗ PO đã sửa và story cuối kèm AC.
Viết bởi Phan Lâm Duy Khôi
AI viết user story tốt khi bạn đưa đủ bối cảnh (người dùng, quy tắc đã chốt, phạm vi) và yêu cầu AI ghi câu hỏi thay vì tự đoán. Trước khi gửi team, PO vẫn phải sửa quy tắc bị bịa, bỏ phần ngoài phạm vi và thêm trường hợp lỗi còn thiếu.
Dùng AI viết user story có ổn không?
Ổn, nếu bạn đưa đủ bối cảnh và sửa bản nháp trước khi gửi team. AI viết đúng mẫu rất nhanh. Chỗ AI hay sai là quy tắc nghiệp vụ, phạm vi và các trường hợp lỗi. Những thông tin đó nằm trong đầu bạn và người phụ trách nghiệp vụ, không có sẵn trong prompt.
Phần dưới đây đi trọn một lượt trên cùng một ví dụ. Bạn sẽ thấy bối cảnh đầu vào, prompt, bản nháp của AI, bảng những chỗ PO đã sửa, và story cuối kèm acceptance criteria. Ví dụ là tính năng đặt lịch cho một spa nhỏ. Tên spa và mọi quy tắc đều là giả định.
Nếu bạn chưa quen user story hay acceptance criteria (tiêu chí chấp nhận, gọi tắt là AC), hai bài dưới đây giải thích từ đầu.
Cần chuẩn bị đầu vào gì trước khi viết prompt?
Bản nháp tốt hay không phần lớn do bước này. Anthropic (công ty làm ra Claude) khuyên nên coi AI như một nhân viên mới rất giỏi nhưng chưa biết gì về cách làm của team. Bạn giải thích càng cụ thể, kết quả càng sát.
Với một user story, đầu vào nên có năm phần: ai đang gặp khó, họ đang xoay xở thế nào, quy tắc đã chốt, phạm vi lần này và phần chưa làm.
Ví dụ minh họa: Hương Bưởi là một spa nhỏ (tên hư cấu). Đây là bối cảnh PO ghi lại sau buổi nói chuyện với chủ spa:
- Khách đang đặt lịch qua tin nhắn fanpage. Chủ spa tự trả lời từng tin. Buổi tối hay sót tin, có lúc xếp hai khách vào cùng một giờ.
- Spa có 3 phòng và 4 kỹ thuật viên. Một khung giờ chỉ còn trống khi còn cả phòng lẫn kỹ thuật viên rảnh.
- Spa mở cửa từ 9:00 đến 20:00. Dịch vụ dài 60 hoặc 90 phút và phải xong trước giờ đóng cửa. Giờ bắt đầu cách nhau 30 phút.
- Khách phải đặt trước ít nhất 2 giờ. Lần này chưa thu cọc, khách trả tiền tại spa.
- Sau khi đặt, khách thấy màn hình xác nhận, còn spa nhận một email báo lịch mới.
- Chưa làm lần này: thanh toán online, chọn kỹ thuật viên, đổi và hủy lịch trên web.
Để ý dòng thứ hai. Đây là quy tắc dễ bị bỏ sót nhất, vì người ngoài thường nghĩ còn phòng là còn chỗ.
Prompt viết user story nên có những gì?
Prompt dưới đây dùng được với ChatGPT, Claude hay công cụ khác. Prompt này khác prompt chia nhỏ story trong bài 5 prompt. Nó nhận một bối cảnh đã chốt và yêu cầu viết cả story lẫn AC trong một lượt.
Bạn là một Product Owner có kinh nghiệm. Hãy viết user story và acceptance criteria cho tính năng dưới đây. Bối cảnh: - Ai đang gặp khó: [nhóm người dùng, trong tình huống nào] - Hiện họ xoay xở thế nào: [mô tả ngắn] - Quy tắc đã chốt: [con số, giới hạn, điều kiện] - Trong phạm vi lần này: [liệt kê] - Chưa làm lần này: [liệt kê] Yêu cầu: 1. Viết một user story theo mẫu "Là…, tôi muốn…, để…". Phần "để…" phải nói điều gì sẽ khác đi. 2. Viết tối đa 8 acceptance criteria dạng Given / When / Then. Mỗi tiêu chí có một hành động và một kết quả kiểm tra được. 3. Có ít nhất một tiêu chí cho trường hợp lỗi. 4. Chỉ dùng quy tắc trong phần bối cảnh. Không thêm con số, thời hạn hay tính năng mới. 5. Chỗ nào thiếu thông tin, ghi vào mục "Câu hỏi còn mở" thay vì tự đoán.
Hai dòng cuối quan trọng nhất. Chúng yêu cầu AI ghi lại câu hỏi thay vì tự điền vào chỗ trống. Nhưng không phải lúc nào AI cũng làm theo. Tài liệu của Anthropic cũng nói các cách này chỉ giảm được lỗi bịa, không loại bỏ hết. Vì vậy bạn vẫn phải đọc kỹ bản nháp.
Bản nháp AI trông thế nào?
Dưới đây là bản nháp minh họa. Mình tự viết nó dựa trên những lỗi hay gặp ở bản nháp AI. Đây không phải kết quả chạy thật trên một công cụ cụ thể.
- Story: Là người dùng, tôi muốn đặt lịch spa trực tuyến, để tiện hơn và tiết kiệm thời gian.
- AC1. Given khách ở trang đặt lịch, When khách chọn dịch vụ, Then hệ thống hiển thị các khung giờ còn phòng trống.
- AC2. Given khách đã chọn khung giờ, When khách nhập họ tên, số điện thoại và bấm Đặt lịch, Then lịch hẹn được tạo và khách nhận SMS xác nhận.
- AC3. Given khách chọn kỹ thuật viên yêu thích, When kỹ thuật viên đó bận, Then hệ thống gợi ý kỹ thuật viên khác.
- AC4. Given khách đã đặt lịch, When khách hủy trước 24 giờ, Then lịch được hủy miễn phí.
- AC5. Hệ thống tải danh sách khung giờ nhanh chóng và dễ sử dụng trên điện thoại.
- AC6. Hệ thống gửi tin nhắn nhắc lịch trước 1 giờ.
- Câu hỏi còn mở: Khách có cần đăng nhập để đặt lịch không?
Nhìn lướt thì bản này khá ổn: đúng mẫu, có Given / When / Then, còn có cả câu hỏi mở. Chính vì trông ổn nên càng phải đọc chậm. Bản nháp có ba thứ không có trong bối cảnh, hai tính năng nằm ngoài phạm vi, và bỏ sót vài quy tắc đã chốt.
PO đã sửa những gì, và vì sao?
| Bản nháp AI | Vấn đề | Cách sửa |
|---|---|---|
| Là người dùng… để tiện hơn | Không rõ là ai. Phần “để…” không nói điều gì sẽ khác đi | Nêu rõ khách là ai, trong tình huống nào. Phần “để…” nói về việc biết chắc đã có chỗ |
| Còn phòng trống (AC1) | Sai quy tắc. Cần còn cả phòng lẫn kỹ thuật viên | Chỉ hiện giờ còn ít nhất một phòng và một kỹ thuật viên rảnh suốt thời lượng dịch vụ |
| Khách nhận SMS xác nhận (AC2) | Kênh này không có trong bối cảnh. Chủ spa chưa quyết | Khách thấy màn hình xác nhận, spa nhận email. Chuyển việc gửi tin nhắn vào câu hỏi mở |
| Chọn kỹ thuật viên yêu thích (AC3) | Nằm ngoài phạm vi lần này | Bỏ. Đã có trong phần chưa làm |
| Hủy miễn phí trước 24 giờ (AC4) | Con số do AI tự điền. Hủy lịch cũng nằm ngoài phạm vi | Bỏ. Tách thành story riêng sau khi chủ spa chốt chính sách hủy |
| Nhanh chóng và dễ sử dụng (AC5) | Không kiểm thử được | Bỏ. Nếu cần ngưỡng thời gian, chốt với dev rồi ghi số cụ thể |
| Nhắc lịch trước 1 giờ (AC6) | Tính năng mới và con số mới | Bỏ. Ghi vào backlog để hỏi chủ spa sau |
| (bản nháp không nhắc tới) | Thiếu quy tắc đặt trước 2 giờ, dịch vụ phải xong trước 20:00, và trường hợp hai khách chọn cùng một giờ | Thêm ba tiêu chí, xem bản cuối bên dưới |
Để ý cột giữa. Không chỗ sửa nào cần kỹ năng viết. Chỗ nào cũng cần một thứ AI không có: quy tắc thật của spa và quyết định về phạm vi.
Câu hỏi mở của AI về đăng nhập cũng có ích. Nó cho PO thấy mình chưa ghi rõ điều này. Sau khi hỏi lại, chủ spa chọn không bắt khách đăng nhập, nên bản cuối chỉ cần họ tên và số điện thoại.
Story cuối cùng kèm acceptance criteria trông thế nào?
Đây là bản sau khi PO sửa và rà lại cùng dev và QA. Bạn có thể chép về làm khung cho story của mình.
Tên ngắn: Khách tự đặt lịch trên website Là khách muốn đặt lịch ở spa Hương Bưởi vào lúc spa chưa kịp trả lời tin nhắn, tôi muốn tự chọn dịch vụ và một giờ còn trống trên website, để biết chắc mình đã có chỗ mà không phải chờ spa nhắn lại. Trong phạm vi lần này: chọn dịch vụ, chọn ngày và giờ, nhập họ tên và số điện thoại, màn hình xác nhận, email báo cho spa. Chưa làm lần này: thanh toán online, chọn kỹ thuật viên, đổi và hủy lịch, tin nhắn nhắc lịch. Acceptance criteria: 1. Given khách đã chọn một dịch vụ 90 phút, When khách mở danh sách giờ của một ngày, Then chỉ hiện những giờ còn ít nhất một phòng và một kỹ thuật viên rảnh suốt 90 phút. 2. Given khách đã chọn một dịch vụ 90 phút, When khách mở danh sách giờ, Then giờ muộn nhất là 18:30, để dịch vụ xong lúc 20:00. 3. Given bây giờ là 14:10, When khách mở danh sách giờ của hôm nay, Then giờ sớm nhất là 16:30. 4. Given khách đã chọn giờ, When khách nhập họ tên, số điện thoại và bấm Đặt lịch, Then màn hình hiện ngày, giờ và dịch vụ đã đặt, và spa nhận một email có cùng thông tin. 5. Given khách để trống số điện thoại, When khách bấm Đặt lịch, Then lịch không được tạo và ô số điện thoại hiện thông báo lỗi. 6. Given giờ 17:00 chỉ còn một chỗ, When hai khách cùng bấm Đặt lịch cho giờ đó, Then chỉ một lịch được tạo; khách còn lại thấy thông báo giờ này vừa hết chỗ và được chọn giờ khác. Câu hỏi còn mở: - Có gửi tin nhắn xác nhận cho khách không? (chủ spa quyết) - Số điện thoại thế nào thì hợp lệ? (dev đề xuất, chủ spa duyệt) - Nội dung nguyên văn của các thông báo lỗi. (PO chốt cùng chủ spa)
Bản cuối có sáu tiêu chí, tiêu chí nào cũng cho ra kết quả đạt hoặc không đạt. Con số nào cũng truy được về bối cảnh chủ spa đã xác nhận. Ví dụ, 16:30 ở tiêu chí 3 đến từ hai quy tắc: đặt trước ít nhất 2 giờ, và giờ bắt đầu cách nhau 30 phút.
Phần bị cắt không mất đi. Hủy lịch và nhắc lịch được tách thành các mục riêng trong backlog, chờ chủ spa chốt quy tắc.
Có nên nhờ AI soát lại bản đã sửa không?
Có, nhưng giao cho AI một vai khác. Lúc này bạn không cần AI viết thêm. Bạn cần nó chỉ ra chỗ còn mơ hồ.
Đây là user story và acceptance criteria đã chốt. Hãy đóng vai một QA (người kiểm thử) lần đầu đọc chúng. Với mỗi tiêu chí, cho biết bạn sẽ thử bằng thao tác nào và nhìn vào đâu để biết là đạt. Liệt kê những tiêu chí chưa trả lời được hai câu đó, kèm câu hỏi bạn sẽ hỏi PO. Không viết thêm tiêu chí mới. [dán story và acceptance criteria]
Kết quả của bước này là một danh sách câu hỏi, không phải quyết định. Câu nào hợp lý thì bạn hỏi lại chủ spa hoặc dev, rồi cập nhật ticket.
Dùng AI viết user story hay mắc những lỗi nào?
- Chỉ đưa vào một câu yêu cầu, không kèm bối cảnh. AI sẽ lấp chỗ trống bằng thứ nghe hợp lý nhất.
- Giữ nguyên “Là người dùng”. Phần “là ai” quyết định giờ nào, màn hình nào và trường hợp nào cần nghĩ tới.
- Giữ một tiêu chí chỉ vì nó nghe hay. Tính năng ngoài phạm vi đã lọt vào AC sẽ thành việc thật của team.
- Bỏ qua mục câu hỏi mở. Đây thường là phần có ích nhất của bản nháp, vì nó chỉ ra chỗ bạn chưa chốt.
- Dán dữ liệu khách thật vào prompt. Một bối cảnh như ví dụ trên không cần tên hay số điện thoại của ai cả.
Mình đang gom các prompt kèm kết quả mẫu như bài này thành một kho tài nguyên AI cho PO. Nếu muốn nhận thông báo khi kho mở, bạn để lại email bên dưới.
Câu hỏi thường gặp
Dùng prompt này với ChatGPT được không?
Được. Prompt này không phụ thuộc công cụ. Kết quả có thể khác nhau giữa các công cụ và giữa các lần chạy, nên lần nào bạn cũng cần đọc và sửa bản nháp.
AI có viết luôn được acceptance criteria không?
Có, AI viết được bản nháp dạng Given / When / Then. Nhưng con số, giới hạn và phạm vi trong tiêu chí phải đến từ quy tắc đã chốt, không phải từ AI.
Nên đưa bao nhiêu bối cảnh vào prompt?
Đủ để một đồng nghiệp mới đọc xong là viết được story mà không cần hỏi lại. Tức là có: ai đang gặp khó, họ đang xoay xở thế nào, quy tắc đã chốt, phạm vi lần này và phần chưa làm.
Có nên dán ghi chú họp hay tin nhắn của khách vào prompt không?
Chỉ dán khi công ty cho phép dùng công cụ đó với loại dữ liệu này. Thường bạn chỉ cần tóm tắt bối cảnh bằng lời của mình, không cần tên hay số điện thoại của ai.
Nguồn kiểm tra
Bài liên quan
- User story là gì? Cách viết cho người mới, kèm mẫu và ví dụ: Mẫu “Là…, tôi muốn…, để…” là phần dễ. Bài này chỉ cách chọn đúng người dùng, đúng vấn đề và cắt story đủ nhỏ, kèm ví dụ trước và sau.
- Acceptance criteria là gì? Cách viết để QA kiểm thử được: Cách viết acceptance criteria rõ đến mức QA đọc xong là biết phải thử gì, kèm ví dụ mã giảm giá và mẫu dùng ngay.
- 5 prompt AI mình dùng lại mỗi sprint khi làm PO: Năm prompt copy dùng ngay cho nghiên cứu, user story, acceptance criteria, edge case và giao việc cho AI agent, kèm bước kiểm tra PO không được bỏ qua.
- Brief cho AI agent: mẫu giao việc dành cho Product Owner: Mẫu brief bảy dòng cho AI agent, PO điền trong vài phút: mục tiêu, phạm vi, cách kiểm tra, điểm dừng. Kèm ví dụ minh họa và bảng lỗi hay gặp.