Files
sys-analysis-design/.claude/skills/sa-conformance/GUIDE.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

7.7 KiB

Hướng dẫn sử dụng — sa-conformance (xuyên suốt)

Skill này giải quyết gì

Tài liệu kiến trúc luôn trông đầy đủ khi đọc riêng từng file. Chỗ đứt chỉ lộ ra khi nối chúng lại: một yêu cầu định hình kiến trúc mà không ai quyết định gì về nó, một NFR mức Must chưa ai đo, một component tồn tại mà không phục vụ yêu cầu nào.

Skill này nối và chỉ ra chỗ đứt. Nó có quyền chặn AG2, AG3, AG4.

Không làm ở skill này: thiết kế, viết ADR, sửa tài liệu của skill khác.

Khi nào gọi

Tình huống Có nên gọi
Trước mỗi lần trình gate ✅ --mode full — đỡ bị trả về
Sau mỗi sprint ✅ --mode dtm
Vừa viết xong một ADR ✅ --mode adl
Nhận bàn giao kiến trúc từ người khác ✅ --mode full
Nghi ngờ có quyết định nào chưa được ghi ✅
Muốn biết làm gì tiếp ❌ /sa-lifecycle
Muốn sửa chỗ đứt ❌ Skill này chỉ báo — sửa bằng skill giai đoạn

Cú pháp

/sa-conformance <PROJECT> [--mode dtm|adl|full] [--gate AG2|AG3|AG4] [--out <path>] [go]
Tham số Ý nghĩa
--mode dtm Chỉ ma trận truy vết quyết định
--mode adl Chỉ mục lục ADR + 5 kiểm tra về ADR
--mode full (mặc định) Cả hai + coverage + kết luận gate
--gate AG2 Chỉ chấm những kiểm tra chặn gate đó

Bạn sẽ nhận được gì

sa-output/<PROJECT>/00-index/
├── DTM_<PROJECT>.md    ← ma trận truy vết quyết định
└── ADL_<PROJECT>.md    ← mục lục ADR + cảnh báo

Cộng ba bảng in ra màn hình: coverage · danh sách phát hiện xếp theo mức · kết luận gate.

Đọc báo cáo coverage thế nào

DRV → ASR/QAS          8/8    100%  ✅
ASR → ADR             11/13    85%  🔴 đứt: ASR-004, ASR-009           → chặn AG2
ADR → nguồn           14/16    88%  🟠 không nguồn: ADR-006, ADR-012
QAS(Must) → bài đo      6/9     67%  🔴 thiếu: QAS-009, QAS-011, QAS-012 → chặn AG3
Ràng buộc AGD → FIT    12/18    67%  🔴 thiếu và không có nhãn: §3.2-2, §3.4-3
CMP → ASR              9/11     82%  🟠 không phục vụ ASR nào: CMP-07, CMP-10

Luôn có danh sách ID, không chỉ tỉ lệ. "85%" không hành động được; "ASR-004, ASR-009" thì hành động được ngay.

Sáu chỗ đứt và ý nghĩa

Chỗ đứt Nghĩa là Sửa bằng
DRV không có ASR/QAS Áp lực kinh doanh không được kiến trúc phục vụ /sa-2-architecture --focus asr
ASR không có ADR Yêu cầu định hình kiến trúc mà không ai quyết gì /sa-2-architecture --focus adr
ADR không có nguồn Quyết định là sở thích cá nhân Bổ sung §1 của ADR
QAS Must không có bài đo Cam kết không kiểm chứng được /sa-3-enablement --focus fit
Ràng buộc AGD không có FIT, không có nhãn Sẽ bị vi phạm mà không ai biết /sa-3-enablement --focus fit
CMP không phục vụ ASR nào Thành phần có thể thừa Rà lại SAD §4.1

Năm kiểm tra riêng cho ADR

Kiểm Phát hiện gì Hay gặp không
Chuỗi supersede ADR-A nói bị ADR-B thay, nhưng ADR-B không nói thay ADR-A Rất hay
Proposed quá 10 ngày Quyết định treo, có người đang chờ mà không ai biết Rất hay
Điểm radar ≥ 8 mà Accepted không POC Cam kết dựa trên suy đoán Hay
Nguồn đã đổi ADR dựa trên một QAS đã bị sửa/bỏ Hay, khó tự thấy
Hai ADR mâu thuẫn Hai quyết định Accepted ngược nhau cùng chủ đề Ít, nhưng đắt nhất

🔴 Kiểm tra cuối chỉ tìm được khi rà theo chủ đề (dữ liệu, tích hợp, bảo mật, hạ tầng), không phải theo số thứ tự. Đó là lý do skill này tồn tại thay vì đọc lướt sổ ADR.

Ví dụ hội thoại

Bạn:    /sa-conformance Settlement --mode full --gate AG2

Claude: [Bước 0]
        Quét được: CTX v1.0 ✅ · OPT v1.0 ✅ · QAS v1.1 🟠 · ASR v1.0 🟠 ·
                   SAD v1.0 🟠 · ICD v1.0 🟡 · 13 ADR · DAT v1.0 🟡 · SEC ❌ chưa có
        ⚠️ ICD và DAT đang 🟡 Draft — sẽ quét nhưng tách riêng, không tính vào coverage chặn.
        Xác nhận?

Bạn:    go

Claude: ① Coverage (chỉ tính artifact 🟠 trở lên)

        DRV → ASR/QAS      8/8   100%  ✅
        ASR → ADR         11/13   85%  🔴 đứt: ASR-004, ASR-009
        ADR → nguồn       11/13   85%  🟠 không nguồn: ADR-006, ADR-012
        CMP → ASR          9/11   82%  🟠 thừa?: CMP-07, CMP-10

        ② Phát hiện

        🔴 CHẶN AG2
        1. ASR-004 "chịu được POS mất kết nối ≤ 4 giờ" (ASR_… §B2)
           → không có ADR nào. ASR này ép ra cơ chế hàng đợi bền, nhưng SAD §4.1
             không có component nào đảm nhận. Chạy /sa-2-architecture --focus adr.
        2. ASR-009 "dữ liệu cá nhân trong lãnh thổ HQ" (ASR_… §B2)
           → không có ADR. Đây là ràng buộc pháp lý (CON-05), không được bỏ qua.
        3. SEC chưa tồn tại → AG2 yêu cầu Security ký. Chạy /sa-2-architecture --focus sec.

        🟠 NỢ
        4. ADR-006 "dùng Redis làm cache" — §1 không tham chiếu QAS/CON nào.
           Bổ sung nguồn, hoặc hạ xuống DEC-nn nếu điểm radar < 5.
        5. CMP-07 "NotificationRelay" không phục vụ ASR nào và không có trong BACKLOG của BA.
           Rà lại: có ai cần nó không?

        🟡 CẢI THIỆN
        6. ADR-003 đang Proposed từ 2026-08-30 (18 ngày). Ai đang chờ quyết định này?

        ⚠️ TRONG BẢN NHÁP (chưa tính)
        7. ICD 🟡: 4/9 IF-nnn chưa có cột "ai sở hữu contract".

        ③ Kết luận
        AG2: 🔴 CHẶN — 3 mục. Việc gần nhất: /sa-2-architecture --focus adr

Lỗi thường gặp

"Coverage 100% nhưng vẫn có vấn đề." Kiểm tra chất lượng liên kết, không chỉ sự tồn tại. Một ADR gắn với ASR-004 nhưng nội dung không thực sự giải quyết ASR-004 vẫn đếm là có liên kết. Skill báo được chỗ đứt, không thay được việc đọc.

"Nó chặn gate của tôi trong khi tôi đang gấp." Đó là mục đích. Nhưng bạn có thể chấp nhận có ý thức: ghi DEC-nn nêu rõ chấp nhận đứt chỗ nào, ai chấp nhận, và hạn xử lý. Chấp nhận có ghi chép khác hoàn toàn với bỏ qua.

"Ma trận trống nhiều quá, nhìn nản." Ma trận trống trung thực tốt hơn ma trận đầy do suy diễn. Ô trống là danh sách việc; ô điền bừa là cảm giác an toàn giả.

"CMP-07 không phục vụ ASR nào nhưng nó cần thật." Hợp lệ — không phải component nào cũng sinh từ ASR. Ghi vào SAD §4.1 nguồn của nó (một US trong BACKLOG của BA chẳng hạn) và skill sẽ ngừng báo.

Liên quan

  • Quan hệ phụ thuộc giữa artifact: ../sa-lifecycle/references/artifact-map.md §6
  • Tiêu chí gate: ../sa-lifecycle/references/workflow.md §2
  • Chấm điểm ADR: ../sa-lifecycle/references/decision-radar.md §2
  • Bộ BA tương ứng: ../ba-traceability/GUIDE.md
  • Template: templates/decision-traceability-matrix.md · templates/adr-ledger.md