AgentSkillsCN

openspec-archive-change

在测试工作流中保存已完成的变更。当用户希望在实施(implementation)完成后结束并保存变更时,可使用此技能。

SKILL.md
--- frontmatter
name: openspec-archive-change
description: Lưu trữ một thay đổi đã hoàn thành trong workflow thử nghiệm. Sử dụng khi người dùng muốn kết thúc và lưu trữ một thay đổi sau khi việc triển khai (implementation) đã hoàn tất.
license: MIT
compatibility: Yêu cầu openspec CLI.
metadata:
  author: openspec
  version: "1.0"
  generatedBy: "1.0.2"

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

  1. 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.

  2. 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 (done hoặ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.
  3. 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.

  4. Đá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 skill openspec-sync-specs). Sau đó tiến hành lưu trữ bất kể lựa chọn đồng bộ như thế nào.

  5. Thực hiện việc lưu trữ (archive)

    Tạo thư mục archive nếu chưa tồn tại:

    bash
    mkdir -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).
    bash
    mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name>
    
  6. 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

code
## 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.yaml khi 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.