Lưu trữ một thay đổi đã hoàn thành trong workflow thử nghiệm.
Đầu vào: Tùy chọn chỉ định tên thay đổi. Nếu bỏ trống, hãy kiểm tra xem có thể suy luận từ ngữ cảnh hội thoại hay không. Nếu mơ hồ hoặc không rõ ràng, bạn PHẢI yêu cầu chọn từ các thay đổi có sẵn.
Các bước
- •
Nếu không cung cấp tên thay đổi, yêu cầu chọn
Chạy lệnh
openspec list --jsonđể lấy danh sách các thay đổi có sẵn. Sử dụng công cụ AskUserQuestion để người dùng chọn.Chỉ hiển thị các thay đổi đang hoạt động (active - chưa được lưu trữ). Bao gồm schema đã sử dụng cho mỗi thay đổi nếu có.
QUAN TRỌNG: KHÔNG được đoán hoặc tự ý chọn thay đổi. Luôn để người dùng quyết định.
- •
Kiểm tra trạng thái hoàn thành của artifact
Chạy lệnh
openspec status --change "<name>" --jsonđể kiểm tra việc hoàn thành artifact.Phân tích JSON để hiểu:
- •
schemaName: Workflow đang được sử dụng. - •
artifacts: Danh sách các artifact kèm trạng thái (donehoặc trạng thái khác).
Nếu có bất kỳ artifact nào chưa
done:- •Hiển thị cảnh báo liệt kê các artifact chưa hoàn thành.
- •Sử dụng công cụ AskUserQuestion để xác nhận người dùng có muốn tiếp tục hay không.
- •Chỉ tiếp tục nếu người dùng xác nhận.
- •
- •
Kiểm tra trạng thái hoàn thành của task
Đọc file task (thường là
tasks.md) để kiểm tra các task chưa hoàn thành.Đếm số task được đánh dấu
- [ ](chưa xong) so với- [x](đã xong).Nếu tìm thấy task chưa hoàn thành:
- •Hiển thị cảnh báo cho biết số lượng task chưa xong.
- •Sử dụng công cụ AskUserQuestion để xác nhận người dùng có muốn tiếp tục hay không.
- •Chỉ tiếp tục nếu người dùng xác nhận.
Nếu không có file task: Tiếp tục mà không cần thông báo cảnh báo về task.
- •
Đánh giá trạng thái đồng bộ delta spec
Kiểm tra các delta spec tại
openspec/changes/<name>/specs/. Nếu không có, tiếp tục mà không cần hỏi về đồng bộ.Nếu tồn tại delta spec:
- •So sánh mỗi delta spec với spec chính tương ứng tại
openspec/specs/<capability>/spec.md. - •Xác định những thay đổi sẽ được áp dụng (thêm mới, sửa đổi, xóa bỏ, đổi tên).
- •Hiển thị bản tóm tắt tổng hợp trước khi hỏi ý kiến.
Các lựa chọn trong thông báo:
- •Nếu cần thay đổi: "Đồng bộ ngay (khuyến nghị)", "Lưu trữ mà không đồng bộ".
- •Nếu đã được đồng bộ: "Lưu trữ ngay", "Vẫn đồng bộ lại", "Hủy bỏ".
Nếu người dùng chọn đồng bộ, hãy thực hiện logic
/opsx:sync(sử dụng skillopenspec-sync-specs). Sau đó tiến hành lưu trữ bất kể lựa chọn đồng bộ như thế nào. - •So sánh mỗi delta spec với spec chính tương ứng tại
- •
Thực hiện việc lưu trữ (archive)
Tạo thư mục archive nếu chưa tồn tại:
bashmkdir -p openspec/changes/archive
Tạo tên mục tiêu bằng ngày hiện tại:
YYYY-MM-DD-<tên-thay-đổi>Kiểm tra xem mục tiêu đã tồn tại chưa:
- •Nếu có: Báo lỗi, đề xuất đổi tên bản lưu trữ hiện có hoặc sử dụng ngày khác.
- •Nếu không: Di chuyển thư mục thay đổi vào thư mục lưu trữ (archive).
bashmv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
- •
Hiển thị tóm tắt
Hiển thị tóm tắt hoàn tất lưu trữ bao gồm:
- •Tên thay đổi.
- •Schema đã sử dụng.
- •Vị trí lưu trữ.
- •Việc các spec có được đồng bộ hay không (nếu có).
- •Ghi chú về bất kỳ cảnh báo nào (artifact/task chưa xong).
Đầu ra khi thành công
## Hoàn tất lưu trữ **Thay đổi:** <change-name> **Schema:** <schema-name> **Đã lưu trữ tại:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** ✓ Đã đồng bộ với specs chính (hoặc "Không có delta specs" hoặc "Đã bỏ qua đồng bộ") Tất cả artifact đã hoàn thành. Tất cả task đã hoàn thành.
Nguyên tắc an toàn (Guardrails)
- •Luôn yêu cầu chọn thay đổi nếu không được cung cấp.
- •Sử dụng biểu đồ artifact (openspec status --json) để kiểm tra việc hoàn thành.
- •Không chặn việc lưu trữ vì các cảnh báo - chỉ thông báo và xác nhận.
- •Giữ lại file
.openspec.yamlkhi di chuyển vào archive (nó di chuyển cùng với thư mục). - •Hiển thị tóm tắt rõ ràng về những gì đã xảy ra.
- •Nếu yêu cầu đồng bộ, sử dụng phương pháp openspec-sync-specs (do agent điều khiển).
- •Nếu delta spec tồn tại, luôn thực hiện đánh giá đồng bộ và hiển thị bản tóm tắt tổng hợp trước khi yêu cầu xác nhận.