SDD BoardVS Code extension for the Spec-Driven Development workflow. Version hiện tại: 1.3.0. Two panels in one extension:
Installation
Hoặc VS Code → VS Code tự động cập nhật khi có version mới. Panel 1 — Review BoardCách dùngBước 1 — Chạy một review command trong Claude Code
Claude phân tích và ghi file vào
Extension quét mọi thư mục Bước 2 — Mở Review Panel
VS Code tự hiện thông báo "Mở ngay?" khi file findings vừa được tạo. Bước 3 — Review từng finding Mỗi finding hiển thị:
Danh sách sắp xếp pending → deferred → đã xử lý, trong mỗi nhóm là critical → major → minor. Bấm để xử lý:
Finding Lọc nhanh bằng Severity / Status dropdown ở toolbar trên, hoặc ô Search (issue / suggestion / section). Khi mọi finding đã có quyết định (
Bước 4 — Apply Bấm "⚡ Apply to PRD" ở thanh dưới. Extension mở terminal
Còn finding QC findings (
|
| Setting | Mặc định | Ý nghĩa |
|---|---|---|
sddBoard.reviewer |
reviewer |
Tên người review, ghi vào {slug}-review-log.yaml. Đọc lúc runtime — đổi xong là lần ghi report tiếp theo dùng ngay, không phải cài lại / build lại extension |
sddBoard.clarifyPrompt |
(prompt no-tech) | ⚠️ Hiện không có tác dụng — nút 💬 Giải thích đã bị tắt từ bản 1.1.0. Setting còn khai báo để giữ giá trị team đã cấu hình, chờ tính năng bật lại |
Thứ tự ưu tiên: Workspace (.vscode/settings.json trong repo project) > User > default. File mẫu copy được: sample/.vscode/settings.json.
Tính năng
| Tính năng | Mô tả |
|---|---|
| Multi-command | Hỗ trợ findings từ /refine-prd, /review-context, /review-tech-docs, /qc-analyze |
| Lens tabs | All / QA / DEV / SA / PO (refine-prd — 4 lăng kính) hoặc PRD / BDD / TECH (review-context / review-tech-docs, theo prefix của check_id). Lens rỗng thì không hiện tab; file /qc-analyze chỉ có tab QA |
| Edge-case advisory | resolution_edge_cases hiện ngay trên card và trong modal Modify — PO thấy hệ luỵ trước khi Accept |
| Jump to source | Bấm 📍 section hoặc câu trích dẫn → mở file nguồn cạnh panel, nhảy tới dòng: khớp quote → heading uc_id → heading section → đầu file |
| auto_fixable badge | ⚡ auto-fix / 👤 human trên mỗi finding |
| check_id label | P1, B2, T3 hiển thị khi dùng review-context / review-tech-docs |
| Progress bar | Thanh tiến độ % đã review |
| Filter + Search | Severity, Status dropdown + tìm kiếm toàn văn qua issue / suggestion / section |
| Smart Apply | Tự chọn --resume command đúng theo loại findings file |
| Lossless round-trip | Ghi trạng thái ngay lên file YAML gốc, giữ nguyên mọi field khác (prd_version, applied_to_version, sign_off, domain…) — những field điều khiển logic full-vs-delta và sign-off gate của lần chạy command sau |
| Auto-detect | Tự tìm findings files trong mọi .agent/review/, kể cả submodule |
| File watcher | Tự refresh sidebar khi findings file được tạo / sửa / xoá |
Panel 2 — Living Documentation
Dashboard traceability health của toàn project, đọc từ .trace-mirror/, .living-docs/ hoặc .trace/.
Cách mở
Ctrl+Shift+P→ "SDD Board: Open Living Documentation"- Sidebar: Activity Bar → SDD Board → view Living Docs → nút Open Dashboard
- Right-click một file
.tsvtrong Explorer → "SDD Board: Open Living Documentation"
Dashboard
13 ô thống kê, tính trên toàn bộ scenario rows đọc được:
| Ô | Nội dung |
|---|---|
| PRDs | tổng số PRD · n approved |
| Use Cases | tổng số UC · n approved / n draft |
| Scenarios | tổng SC trong scope (đã loại ORPHANED) · số SC theo platform (web 12 · app 8) |
| Code Coverage | % SC có implemented_by — xanh ≥ 90%, cam ≥ 70%, đỏ dưới đó |
| Test Coverage | % SC có test |
| Drift | SC có status = DRIFT |
| Untracked | SC chưa có code |
| Gap | SC có code nhưng thiếu test |
| Orphaned | 🔴 code còn, spec đã xoá — không nằm trong mẫu số Scenarios |
| Tech Docs | số file *-tech-design*.md trong các thư mục tech-docs/ |
| QC Pass | QC pass · n fail / skip / not run |
| Dev Self-Check | dev_selftest pass · n fail / not run |
| Waiting | SC đang chờ dev + chờ PO (qc_owner) |
Cảnh báo audit
Ngay dưới các ô thống kê, panel hiện các cờ mà /validate-traces ghi vào trace-report.json (summary.*_count + issues.*). Dòng đầu là cổng tạo PR: đỏ khi còn cờ 🔴, xanh khi sạch, kèm thời điểm audit. Nếu biên bản chỉ phủ một domain / PRD / UC (scope.kind ≠ all), panel ghi rõ chưa phải audit đầy đủ.
| Mức | Cờ | Ý nghĩa |
|---|---|---|
| 🔴 chặn PR | ORPHANED · TRACE_ORPHAN · SEAM_UNWIRED · STUB_UNRESOLVED |
Code đang hỏng theo kiểu build xanh, test xanh vẫn không lộ ra. Mặc định mở sẵn |
| 🟠 cần xử lý | LEDGER_BEHIND_CODE · PRD_UNTRACKED_EDIT · PRD_DRIFT · BDD_DRIFT · TECHDOC_DRIFT · FE_TECHDOC_DRIFT · TECHDOC_STALE_VS_BDD · DESIGNSPEC_DRIFT · DESIGNSPEC_STALE_VS_BDD · SERVICE_UNROUTED |
Code/tài liệu chưa theo kịp spec — không chặn PR, nhưng xử lý trước khi coi tính năng là xong. LEDGER_BEHIND_CODE nên xử lý đầu tiên: chưa xử lý thì số UNTRACKED/GAP chưa phải số thật |
| ⓘ không phải lỗi | PRD_STALE_REF · TECHDOC_STALE_REF · SEAM_PENDING · STUB_PENDING |
Nhãn version cũ, hoặc đang chờ UC sở hữu được gen |
Bấm vào một cờ để xem từng mục kèm lệnh xử lý (fix) do framework ghi. DRIFT / GAP / UNTRACKED không lặp lại ở đây vì bảng per-scenario đã hiện từng dòng. Khi chỉ đọc được TSV thô (chưa có trace-report.json), panel nhắc chạy /validate-traces — cờ audit được tính lúc audit, không nằm trong sổ TSV.
Drill down: PRD → Use Case → bảng per-scenario
| SC | Platform | Title | Spec | Gen | Code | Tests | QC | Waiting | Status |
|---|---|---|---|---|---|---|---|---|---|
| PAY-UC01-SC1 | app | Happy path | 1.2 | 1.2 | ✓ | 1 class | — | — | ✅ OK |
| PAY-UC01-SC1 | web | Happy path | 1.2 | 1.2 | ✓ | 2 class | ✅ pass | — | ✅ OK |
| PAY-UC01-SC2 | web | Refund | 1.3 | 1.2 | ✓ | 1 class | 🔴 fail | dev | ⚠️ DRIFT |
Hover Code để xem file implement, hover Waiting để xem qc_blocked_by.
Platform — sc_id chỉ độc nhất trong (UC × platform): mỗi platform đánh SC từ 1, nên PAY-UC01-SC1 của web và của app là hai scenario khác nhau. Panel đọc platform từ trace-report.json hoặc từ tên sổ {UC-ID}-{platform}.tsv, xếp các SC cùng platform liền nhau. Report sinh trước khi framework thêm field này hiện —.
Status badges:
- ✅ OK — spec ver = gen ver, code + tests tồn tại
- ⚠️ DRIFT — spec ver ≠ gen ver (scenario đã sửa, code chưa update)
- 🔴 GAP — code tồn tại nhưng chưa có tests
- UNTRACKED — chưa có code implement
- 🔴 ORPHANED — code còn nhưng scenario đã bị xoá khỏi
.feature. Cờ chặn PR; không tính vào mẫu số Scenarios (nó không còn là scope) nên có ô thống kê riêng. Xử lý: xoá code + test, hoặc đưa scenario trở lại
Tính năng:
- Filter theo PRD status (All / Approved / Draft / Other)
- Search theo UC/SC ID, title hoặc platform
- Filter theo status (OK / DRIFT / GAP / UNTRACKED) — ORPHANED vẫn hiện ở "All statuses"
- Live reload khi
.trace/,.trace-mirror/hoặc.living-docs/thay đổi
Data source — thứ tự ưu tiên
| # | Nguồn | Khi nào |
|---|---|---|
| 1 | .trace-mirror/trace-report.json |
Framework ≥ 0.4.3. Mirror sinh từ report đã gộp nên phủ mọi service → dùng một mình nó |
| 2 | .living-docs/trace-report.json |
Umbrella + spec_source, mở thẳng spec repo — report đã gộp, dùng một mình nó |
| 3 | .trace/trace-report.json |
Sổ gốc mount trong workspace này, hoặc mirror của bản < 0.4.3. Merge nhiều store, bỏ qua report trùng nội dung |
| 4 | .trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv, rồi .trace-mirror/{UC-ID}-{platform}.tsv |
Chưa có report — parse TSV thô (bỏ qua _seams.tsv). Mirror giữa hai lần /sync chỉ có TSV vừa copy, nên vẫn được đọc; SC đã thấy (theo {sc_id, platform}) không cộng lần hai |
Quét đệ quy tới độ sâu 8, bỏ qua node_modules, .git, out, dist, build, target, vendor… nên tìm được cả store nằm trong submodule. Hai cột mới của framework 0.4.3 — service (đội/submodule sở hữu SC) và design_spec_version (chỉ FE/App) — được đọc từ cả JSON lẫn TSV; TSV cũ thiếu cột thì về —.
Dữ liệu được ghi bởi /generate-bdd, /generate-code, /dev-gen-test; cập nhật bởi /validate-traces.
Vì sao đọc CẢ HAI tên. SDD Framework ≥ 0.4.3 tách sổ gốc khỏi bản sao:
Path Vai trò Git .trace/authoritative — .tsv+trace-history.jsonl, không regenerate đượcphải commit .trace-mirror/bản sao để panel chạy được ở workspace không chứa sổ gốc gitignore Trước 0.4.3 cả hai cùng tên
.trace— chính va chạm đó là lý do framework đổi tên (một luật gitignore viết theo tên có thể xoá sạch sổ gốc). Panel đọc cả hai nên chạy đúng với mọi phiên bản framework, không cần phát hành đồng bộ.Mirror thắng tuyệt đối khi có mặt — nếu đọc thêm cả sổ mà nó mirror thì mọi scenario bị đếm hai lần, làm phồng tổng số, mẫu số coverage, và mọi con số drift/gap. Với workspace < 0.4.3 (cả hai cùng tên) panel khử trùng bằng cách so nội dung report.
Yêu cầu
- VS Code
1.85.0trở lên - Plugin @educa-corp/sdd-framework đã cài trong Claude Code (
npx @educa-corp/sdd-framework --init) - Living Documentation cần một
.trace-mirror/,.living-docs/hoặc.trace/trong workspace; Review Board cần.agent/review/*-findings.yaml
Uninstall
code --uninstall-extension EducaCorp.sdd-board
Liên quan
- @educa-corp/sdd-framework — Claude Code plugin chứa toàn bộ workflow commands