Releases: dinhnguyenngoc/spec-driven-claude-code
Release list
v1.7.0 — Hardening by evidence: a full-kit test campaign, 12 fixes with retest proof
This release adds no new command. Every change came from one thing: a real test campaign — 58 test cases across 9 independent sandboxes (greenfield C#/Next.js, brownfield Node/Express, a 2-repo workspace, a graduated repo, 4 purpose-built fixtures), with every result re-checked on disk instead of trusted from a sub-agent's report. The campaign found 12 defects in the kit; 11 were patched with a retest proving the patch works, 1 was documented as a known limitation rather than patched with prose that cannot be verified. The three heaviest defects share one shape: a rule that exists where it is described, but is missing where it is executed.
🎯 1 · Coverage gate changed shape — no more false red
- Method-percentage is no longer a gate. In .NET the method count is dominated by auto-properties, record constructors and design-time factories, so a percentage fires false alarms while hiding the real thing — a few untested business methods behind dozens of covered auto-properties.
- Replaced by the zero-coverage-methods rule — every method measured at 0% is listed in
TEST_REPORT §Coveragewith a test or a one-line reason; a business-logic method at 0% without a reason fails the gate; structural members only need their kind named. - A method shipping code already references needs a test, not a reason — "its caller does not exist yet" only stands when nothing references it.
- Synced across all 5 representations:
rules/testing.md,commands/test.md,agents/test-engineer.md,templates/TEST_REPORT_TEMPLATE.md,CLAUDE.mdQuality Gates.
🔒 2 · A security fix must not open a new hole
- New-call precondition check (
/fix-issue) — when a fix replaces an expression with a library call on request-derived input, it must name the new call's preconditions, enforce them at the boundary, and add a test sending a type-violating value through the real route. Enforcing them is part of the fix, not out of scope. - Found the hard way: a bcrypt fix swapped a total operation (
!==, never throws) for a partial one (bcrypt.compare, throws on non-string) — one unauthenticated request crashed the API. Verified end-to-end, then closed. - Wrong-type input is now its own test class — "edge case" read as boundary values misses input of the wrong shape entirely (
rules/testing.md+ Node/PHP test overrides). - A comment asserting third-party behavior is a claim, not a fact (
rules/code-style.md) — back it with a test that exercises that exact case, or delete the claim and write the defensive code.
📌 3 · Findings and commits stop leaking
- §Commit ownership (
rules/git-workflow.md+ Agent Behavior Guideline #14) — every command either commits its own artifacts or names exactly what it left uncommitted; never fold another flow's uncommitted work into your commit. Before this, only 6 of 20 commands mentioned committing at all — which is why/deployhad to block on a dirty tree whose git tag no longer described the image. - Out-of-scope findings now have an address (
principles-and-practices.md§2.5) — three rules said "record it in the backlog" while the kit never defined where the backlog was. Findings now route by kind: AC ambiguity → SPEC Open Questions · tech debt →plans/BACKLOG.md· security → a carry-forward row. A finding stated only in chat is not recorded.
🎓 4 · Greenfield graduates to brownfield
- §Mode lifecycle — greenfield is a birth phase, not a permanent identity: once a kit-built project ships its first staged release, backward-compat and ADR-to-change start applying.
/discover§Graduation run — inventory-only: mintsdocs/CODEBASE_MAP.md, never REVERSEs over the forward spec, and flipsMode:only with your consent.
📄 5 · Specs that read for their audience
specs/EVIDENCE.md— the engineer-facingUS-ID → file:lineevidence map moves out ofSPEC.md, so the spec stays readable prose for stakeholders.- Living-state rule for scoped REVERSE — a partial baseline must say so: header
Versionstays in sync with Revision History, and "not reversed yet" is never filed under "Won't". rules/output-style.md§10 — non-specialist floor — five checkable rules for stakeholder-facing artifacts: one word one meaning · name the actor and the physical action · countable criteria instead of adjectives · state the safety net and the red branch · a kind-noun before every identifier.
⚠️ Known limitation
- Occasional language drift — a command may reply in English even though the Profile declares another language. Measured at 1 run in 9; both occurrences happened on runs that stopped at pre-flight before writing any artifact, 0 of 6 on runs that completed. Not patched: at that rate a prose fix cannot be verified. Tell Claude "reply in " and it rewrites immediately.
🧭 Also in this release
- MIT license;
README1.txt→examples/linkvault-brief.txt - User-facing docs rewritten to the §10 floor — README (EN/VN), quick-start (90 → 59 lines), both getting-started guides: every gate condition is now countable, and each one says what to do when it goes red
Full detail per change: CHANGELOG.md § [1.7.0].
v1.6.0 — One kit, any language: configurable Output Language, /export-docs, PHP/Laravel & 3 hardening rounds
Five change groups in this release: (1) configurable Output Language — artifacts & conversation follow the language declared per project (absent → Vietnamese, fully backward-compatible); (2)
/specbusiness layer & sliced legacy baselines; (3) new command/export-docs— render kit artifacts into your company's own PRD/SDD templates; (4) PHP + Laravel as the third first-class stack; (5) a three-round hardening audit across all 20 commands. Verified in sandboxes: all four/specbranches (greenfield · REVERSE · DELTA · scoped REVERSE) ran end-to-end with every mechanical gate passing.
🌐 1 · Output Language — one kit, any language
Output Language(Project Profile) — prose, artifacts and conversation in the declared language; code & identifiers always English; missing field → Vietnamese (no silent flip for ongoing projects)- Kit source is now fully English — runtime output follows the Profile; handoff markers renamed
[CẦN …]→[NEEDS …]so English-output projects carry no foreign tokens; gates grep language-neutral anchors
🧾 2 · /spec — business-ready specs & sliced legacy baselines
- Business layer — Goals & Success Metrics table, Permission Matrix (role × action), mandatory scenario class tags
@happy/@negative/@edge(✅❌⚠️ at export) - Machine-checked "no transport-only stories" guard — UI-product scenarios must be written from the user's observable perspective
--scope— scoped REVERSE — baseline a large legacy system slice by slice with a covered ∪ uncovered ledger the gate reconciles against the endpoint inventory--wireframes(as-is UI documentation for REVERSE) and--propose-goals(labeled📝P-nnproposals — numbers never invented)
📤 3 · New command: /export-docs
- Fill-only rendering of SPEC / ARCHITECTURE / reports into company templates (EXTENSION layer
.claude/local/doc-templates/) — no invented content, sign-off cells never auto-filled - Stable 1:1 ID transform
@US-XXX-Snn → AC-x.y.zviaexports/TRACE_MAP.md— refreshes never renumber - Audience register per target — stakeholder targets translate technical identifiers into business language; engineer targets keep them verbatim
- Export gate: heading census, placeholder residue, internal cross-refs, diagram & API-sample fidelity,
📝P-nnlabel fidelity
🐘 4 · Third first-class stack: PHP + Laravel
lang-php+framework-php-laravel+test-phpoverrides (Pest default — brownfield keeps PHPUnit; RFC 7807 with the documented brownfield-422 exception; host-isolated.env.testing)phpscanner plugin (composer audit with prod-block/dev-advisory split, project-local PHPStan) — wired through every downstream command (/discover→/infra→/docs→/deploy→/debug→/simplify)
🛡️ 5 · Full-kit hardening — 3 audit rounds over all 20 commands
- Traceability closed end-to-end —
NFR-xxkeyed chain across all four artifact tiers (spec → arch → plan → verify);/plan§Impact Analysis (blast radius before tasks);/archFlow Disposition (no flow silently undrawn) - Real-infrastructure isolation, proven not trusted — legacy test-suite pre-flight, connection tripwire whitelist at Gate 6, compose self-containment at
/infra//deploy - Deployment safety —
IMAGE_TAGdigest/rollback chain; newdatabase.md§Expand-contract + §DB-resident objects are source code;db/schema-snapshot/refreshed in the same change-set; the "rollback < 1 minute vs destructive migration" contradiction closed; "As-is refresh" KB-sync gates - Scan coverage disclosure —
stacks_unscannedsurfaced and gate-blocking: "not scanned" must never read as "nothing found" - Brownfield evidence, repo-resident —
/discoverendpoint inventory generalized (consumers, scheduled jobs, CLI) + Connection/Messaging/Cache inventories (credentials always masked); guided DB-schema export with per-connection consent and a 4-step transport ladder; DB MCP servers evaluated and rejected on measured evidence - Multi-repo depth —
/discover-systemgeneratesspecs/system/requirements views +contracts/event-catalog.md, bash-first incremental re-sync; 6 new fill-only templates; multi-stack repos must declare ALL stacks in the Profile, scoped by path - Agent reliability — spawn prompts standardized to carry conversation-level facts (mode/flow, scope, NFR list,
A-xxreturns); one E2E assertion contract at Gate 6 and Gate 11 alike; results/service boards read from real runner output, never from a sub-agent's report
🧭 Also in this release
- Getting-started guides —
getting-started-brownfield.md&getting-started-greenfield.md, linked from README & quick-start - Default model —
settings.jsonnow shipsclaude-sonnet-5
⚠️ Upgrade notes
- No
Output Languagein your Profile → everything stays Vietnamese — no silent language flip - A SPEC without a
Coveragefield is treated asfull(the field postdates it) - Marker rename
[CẦN <role>]→[NEEDS <role>]: update the On-missing enum in your localdoc-templates/mapping.md; older exports keep the old marker until the next re-export - Company doc templates live in
.claude/local/doc-templates/(EXTENSION — kit upgrades never touch them; keep them out of public remotes)
Full detail per change: CHANGELOG.md § [1.6.0].
v1.5.0 — Workspace Mode: run the whole pipeline from the multi-repo parent folder
Bản này thêm Workspace Mode — MỘT bộ kit đặt ở thư mục cha của sản phẩm nhiều repo
(myproject/.claude) dùng chung cho mọi repo con: phiên làm việc mở ở workspace, mọi
lệnh tự xác định repo đích rồi ghi output vào đúng repo đó; repo con chỉ giữ CONFIG
(PROJECT_PROFILE.md), không cần copy kit vào từng repo. Backward-compatible tuyệt
đối: không khaiMode: workspace→ hành vi kit không đổi một ly. Đã verify bằng
sandbox 2-repo:/discoverdừng hỏi xác nhận scope đúng thiết kế,/speckhông còn
false-greenfield ở workspace root.
Added
CLAUDE.md§Workspace Mode — meta-modeworkspace+Repos:registry cho profile
thư mục cha; scope-resolution 4 bước (xác định repo đích — không chắc thì HỎI → đọc
per-repo profile → mọi path/git theo repo đích → cross-repo: chốt contract trước,
provider → consumer); workspace disk-check gắn mọi gate (artifact không rơi ở workspace
root,git statusrepo không-đích sạch)./discoverPhase 0 — Workspace scope check — detect-once-then-declare: ≥2 git repo
con + root không có business code → liệt kê, hỏi xác nhận + duyệtService id→ ghi
registry → lặp Phase 1–4 per repo, output vào từng repo.- Khối Workspace Mode chuẩn trên 16 lệnh (
archplansecurebuildtest
reviewscaninfradocsverifydeployfix-issuehotfixdebugsimplify
inspect) — chỉ trỏ về §Workspace Mode; logic sống đúng một chỗ. microservices-multirepo.mdPattern C — Workspace-kit — layout khuyến nghị cho
cross-repo hằng ngày; A/B giữ nguyên cho kit-in-repo.
Changed
/specPhase 0 Mode Auto-Detection — thêm workspace precondition: resolve repo đích
trước, 3 tín hiệu (ARGS/CODE/DISCOVERY) dò BÊN TRONG repo đích — chặn false-greenfield
khi CODE probe chạy ở workspace root (nơi không có build manifest)./discover-system— danh sách service đọc từRepos:registry (canonical); dò thư
mục hạ xuống làm cross-check → cờ⚠️ unregistered repo/ dangling registry row.microservices-multirepo.md— chính-xác-hoá nguyên tắc: "Do NOT lump N repos into
a single /discover run" → "không gộp N repo vào MỘT Profile" (workspace mode vẫn
per-repo: mỗi repo một profile, một discovery riêng).PROJECT_PROFILE.md(template) — thêm tình huống dùng thứ 3 (sản phẩm nhiều repo)- giá trị
workspacevào bảng Mode (chỉ hợp lệ ở thư mục cha).
- giá trị
- Mặt tiền:
quick-start.mdhàng/inspectbổ sung ví dụ tra version tính năng
("export CSV được thêm ở version nào, gồm những scenario gì?") + chỉ nguồn đọc
(SPEC.md§Revision History ·CHANGELOG.md/RELEASE_NOTES).
⚠️ Upgrade notes (behavior changes)
- Không khai
Mode: workspace→ không có gì thay đổi — repo đơn / hai mode
greenfield·brownfield giữ nguyên 100% hành vi. /discoverở một thư mục cha chứa ≥2 git repo con (không có business code riêng)
giờ DỪNG HỎI xác nhận workspace thay vì khảo sát thẳng thư mục đó — flow tự động cũ
dựa vào hành vi cũ sẽ dừng sớm hơn (đúng thiết kế: never guess silently).Project Profile → Modenhận giá trị mớiworkspace— CHỈ hợp lệ ở profile thư mục
cha (kèmRepos:registry); tooling parse Profile cần biết enum mới.- Sản phẩm multi-repo theo Pattern C: không copy kit vào repo con nữa — repo con chỉ
còn.claude/PROJECT_PROFILE.md; phiên làm việc mở ở workspace root và duyệt hooks
(/hooks) một lần tại đó.
Changelog đầy đủ (kèm v1.4.0 trở về trước): CHANGELOG.md.
v1.4.0 — Full-kit hardening: verified gates, sub-agent escalation & seamless stack overrides
Bản này là đợt audit gia cố toàn kit — 19/19 lệnh: mọi Quality Gate giờ có lớp kiểm
độc lập của orchestrator (không tin báo cáo sub-agent), mọi sub-agent có đường escalation
thay vì tự quyết/tự ký, đường override stack (Node core / 5 DB / ELK) thông suốt từ lệnh
tới agent, và hoàn tất các đồng bộ STAGING-only còn sót từ v1.3.0. Không xoá nội dung nào —
thuần bổ sung và chính-xác-hoá.
Added
- Orchestrator disk-check cho mọi gate — 12 lệnh ngoài danh sách §Verification After
Delegation nhận block kiểm bất biến cơ học riêng (so tập hợp scenario/RC/OPEN, Evidence
không rỗng, score-honesty, template residue,git statusread-only…); 7 lệnh trong danh
sách nhận pointer "orchestrator tự chạy lại lệnh quyết định gate". - Phase ownership / return-early cho mọi lệnh — sub-agent không với tới user: waiver,
stakeholder ack, Security-Lead/QA sign-off,ACK_NO_SCAN, chọn license, quyết định chạm
production… → return early, orchestrator lấy quyết định ở main loop. architecture/design-system.md— điểm đáp mới cho design system (/arch§2.6):
tokens + state-per-component matrix + component contracts; khép chuỗi/specwireframes
→/archdesign system →/buildFE.- Join-key mới có producer thật —
OPEN-###(TEST_REPORT §12 →/reviewdisposition)
vàService id(Profile ←/discover→/discover-system). ascii-diagram-guide.md§8 UI Wireframe — mẫu vẽ màn hình + bảng control conventions
cho/specPhase 2.5.A-xxdisposition trên/fix-issue— assumption phải được user duyệt → AC amendment- Revision History; không quyết định behavior nào sống chỉ trong commit body.
Changed
- Join-key thống nhất:
RC-X.Y→RC-N(10 chỗ/7 file) ·T-XX→Task N.N
(7 chỗ/4 file) — producer định nghĩa, consumer theo. - Stack Profile note viết lại trên build/test/infra/deploy/docs/debug/simplify/fix-issue
- blockquote override cho 5 agent — diệt trọn họ khẳng định sai "core/test stack does not
change"; Node core giờ có đường ánh xạ lệnh (npm/prisma/jest) ở mọi tầng.
- blockquote override cho 5 agent — diệt trọn họ khẳng định sai "core/test stack does not
- Brownfield scoping:
/verifyPhase-5 đòi 100% theo change-set (baseline tích lũy,
B4 = scoped minimum) · REVERSE miễn wireframe + visual sign-off (per-change cho màn
hình bị chạm) · delta-coverage + ratchet đồng bộ 5 điểm còn thiếu. /planPrerequisites: architecture chuyển từ Optional → Required (greenfield Gate 2 /
brownfield conformance verdict 1-câu-hỏi); spec phảiStatus: Approved(cả/arch)./testE2E transport theo vị trí pipeline — greenfield trước/infrachạy Playwright
trên stack local + TestContainers; compose overlay do Test Engineer author khi thiếu.
Hardened
- Chặn fabricated sign-off — sub-agent tự điền bảng Approval/ack/waiver bị gọi tên và
cấm tường minh ở/secure,/scan,/verify,/deploy. - BLOCKING-if-run thực thi tại consumer —
/buildkiểm Gate 4 APPROVED,/infrakiểm
Gate 8 green,/deployghi chú/review-if-run;RR-Ncoverage nâng SHOULD → MUST. - Read-only guarantee kiểm bằng
gitthật —/discover,/discover-system(mọi repo
sạch),/simplify(diff đúng scope + green-before/after). /hotfixranh giới production — rollback production do human operator thực hiện (kit
đưa procedure + digest); chặn false-recovery "rollback staging nhưng báo đã khôi phục".
Fixed
- Di tích tiền-v1.3.0: release-manager (prod-server, canary tự động, đếm 7/5 section),
technical-writer ("no staging tier"), hotfix ("on live"), README×2 (/deploy → Production),
VERIFY template ("production-config"). - Dangling refs & nits:
UI_DESIGN_SYSTEM.md→architecture/design-system.md· typo
ai↔ai→api↔api· link ví dụ ADR sai convention · commentdata-uslệch cơ chế ·
near-miss "fix the id" mâu thuẫn read-only ở/discover-system· sót tiếng Việt trong
heading/scan. - Mặt tiền: README×2 + quick-start bổ sung
/inspect(thiếu từ v1.3.0), đếm đúng 19 lệnh;
/inspectphủ split-layout (specs/user-stories/*).
⚠️ Upgrade notes (behavior changes)
- Mọi gate giờ yêu cầu disk-check của orchestrator PASS trước khi present — flow tự động
cũ trình gate thẳng từ báo cáo sub-agent sẽ dừng sớm hơn (đúng thiết kế). - Brownfield
/verifykhông còn fail trên baseline chưa phủ — Phase-5 scope theo
change-set; script coverage nạp tập scenario theo Mode. /plantừ chối chạy khi thiếuarchitecture/hoặc spec cònDraft.- Tooling grep token cũ (
RC-X.Y,T-XX) phải đổi sangRC-N/Task N.N;
Profile có field optional mớiService id(multi-repo).
Changelog đầy đủ (kèm v1.3.0 trở về trước): CHANGELOG.md.
v1.3.0 — Kit governance, brownfield safety-net & STAGING-only deploy
Bản này bổ sung tầng quản trị cho kit (layering + versioning), lệnh
/inspectđể tra hiện
trạng có bằng chứng, siết mạnh kỷ luật brownfield, và đưa/deployvề đúng ranh giới STAGING.
Phần lớn số dòng còn lại là chuẩn hoá ngôn ngữ nguồn của kit sang English (output runtime vẫn tiếng Việt).
Added
/inspect— lệnh mới tra hiện trạng phần mềm: read-only, 3 tầng bằng chứng (records → code → live) + phát hiện mismatch + xếp hạng PROVEN/DESCRIBED. Được wire vào routing như ngoại lệ câu-hỏi-hiện-trạng.- Kit Layering — mô hình 3 tầng CORE / CONFIG / EXTENSION + precedence
local/ > PROJECT_PROFILE > base. PROJECT_PROFILE.md— tách thành file CONFIG riêng, user-owned, an toàn qua kit upgrade.local/(EXTENSION) —KIT_DEVIATIONS.md+README.mdcho tuỳ biến team.KIT_VERSION— file marker phiên bản (nền cho upgrade-manifest Phase 2).- Dual-Implementation Parity (
rules/testing.md) — chống bug-class "1 quy tắc có ≥2 biểu diễn → drift": ưu tiên khử bản thứ 2, nếu buộc reimplement → differential test bắt buộc. /specPhase 0 — auto-detect Mode (ARGS × CODE × DISCOVERY) → STOP / REVERSE / DELTA.
Changed
/deploy= STAGING-only — Status tối đaSTAGED; promote production là bước thủ công ngoài kit (least privilege,DEPLOY_RUNBOOK §8). Từ vựngSUCCEEDED→STAGEDtoàn bộ.- Coverage gate theo Mode — greenfield whole-repo; brownfield delta-coverage + ratchet.
/scantái cấu trúc quanh script auto-detect stack → dispatch per-stack →SCAN_SUMMARY.json→ STRIDE re-eval.- Hook
log-command-stats.py— thêm cột cost (ước tính USD theo list-price từng model) + duration + humanize token (K/M/B). - Templates (OWASP/STRIDE/CODE_REVIEW/RUNBOOK_RELEASE/TEST_REPORT/VERIFY_REPORT) & agents đồng bộ với STAGED + coverage-by-mode.
Hardened
- SCAN guard 3 trạng thái — thiếu
SCAN_REPORTgiờ block (cầnACK_NO_SCAN=1+ ghi ngoại lệ vào RELEASE_NOTES), thay vì pass thầm lặng. - Host-isolation mở rộng —
IHostedService/Kafka consumer phải tắt/redirect trong test ·ASPNETCORE_ENVIRONMENT=Testing+appsettings.Testing.json· auto-migrate trỏ container · cấm sửa config production để test pass (git statuschứng minh). - Fixture guidance: arm64 azure-sql-edge; nạp raw DDL (stored procedure/trigger) vào TestContainer.
Internal
- Chuẩn hoá ngôn ngữ nguồn kit (
.md) sang English; giữ tiếng Việt ởCLAUDE.md§Output Language/§Output Clarity +PROJECT_PROFILE.md. rules/brownfield.md+references/brownfield-pipeline.mdviết lại (Measure vs Verify · Upfront vs Per-change · WRITE-per-delta-RUN-everything · cây quyết định 9 tình huống).
⚠️ Upgrade notes (behavior changes)
/deployKHÔNG còn tự tuyên bố productionSUCCEEDED— tối đaSTAGED; script/kỳ vọng cũ dựa trênSUCCEEDEDphải đổi. Production do bước promote thủ công (RUNBOOK §8) điền.- Deploy khi chưa chạy
/scangiờ fail trừ khi setACK_NO_SCAN=1(+ ghi ngoại lệ vào RELEASE_NOTES §Known risks). - Coverage gate brownfield chuyển sang delta + ratchet (không còn ép 80% whole-repo mỗi PR).
Changelog đầy đủ (kèm v1.2.0 / v1.1.0 / v1.0.0): CHANGELOG.md.
v1.2.0 — Full-kit audit: closed traceability gaps, deduped to SSOT, faster pipeline
Đợt audit toàn bộ lệnh SDLC (rubric 5 lăng kính), kiểm chứng bằng một lần chạy thật pipeline /spec → /deploy. Mục tiêu: khép các chuỗi truy vết, bịt họ lỗi từng lọt dry-run, gom tài liệu về một nguồn, và cho kit dùng được cho mọi project.
✨ Mới
/discover-system— gộp discovery nhiều repo thành system map (service catalog, call-graph, hành trình xuyên service).- 2 rule kit-wide bắt buộc: Progress Visibility (todo sống + narrate từng bước) và Verification-After-Delegation (tự re-run check quyết-định-gate trên đĩa, không tin mù báo cáo sub-agent).
- Rule
output-style(artifact viết rõ cho đúng người đọc) + template fill-onlysystem/vàwireframes/. - Hỗ trợ Node.js qua stack overrides (bên cạnh C#/.NET).
🔒 Vững hơn — khép chuỗi truy vết & bịt lỗ hổng
- 4 chuỗi join-key khép kín:
RC-N(/securemint →/reviewcite →/scanverify) · producer→consumer handoff (scenario-traceability→/plan→/build→/fix-issue) · NFR completeness (/spec→/arch→/plan) · evidence-over-assertion (compliance phải citation, score neo theo finding, gate yêu cầu exit-0, verify-on-disk). - Digest-lock
/verify → /deploy:verify-artifact.lockghiversion + digest;/deploychỉ promote đúng digest đã verify (gate 3-outcome), không còn rebuild làm hỏng verdict./verifyvẫn optional, required trong/hotfix. - Sửa exception taxonomy: ví dụ code từng dùng class không tồn tại (
BadRequestException) / sai chữ ký (ValidationException(...Errors)) → khớperror-handling.md.
⚡ Nhanh hơn (giữ nguyên rigor)
- Cross-command dedup:
/buildgộp full-suite 2→1;/testgộp các lầndotnet test→ 1 coverage run;/reviewtin verdictTEST_REPORTthay vì re-run. - Brownfield diff-scoping (baseline vẫn full):
/secureSTRIDE delta ·/reviewreview diff ·/scanSAST diff-scoped ·/planconsume map. - Chuỗi consume-
/discover:docs/CODEBASE_MAP.mdlàm nguồn cho/spec·/arch·/plan·/infra·/docsthay vì quét lại cây. /archgộp Rejection ADR 1 bảng + bound-ADR ·/docschạy incremental ·/deploydùng--pullthay--no-cache+ bỏ sleep cố định.
🧹 Gọn & nhất quán
- Khử trùng lặp về SSOT (không mất nội dung độc nhất): xóa
references/testing-patterns.md; gom test-pattern catalog vềtesting.md, Five-Axis vềcode-review-checklist.md, ASCII diagram vềascii-diagram-guide.md;tddskill chỉ giữ cycle + Prove-It. - Gỡ project mẫu (LinkVault) khỏi kit logic → dùng cho project bất kỳ; chuẩn hóa thư mục frontend =
web/. - Khớp chuẩn ops:
docker composev2 (bỏ v1 EOL +version:), pin tag (no:latest) + hướng dẫn arm64 (azure-sql-edge),MSSQL_SA_PASSWORD, migration prod =migrations script --idempotent. - Đồng bộ tài liệu CLAUDE.md / README / quick-start: counts, tham số optional (
/spec --prototype,/arch --adr=per-component),/archlà bước required.
🛠️ Sửa lỗi (65 file · +1446 / −1013)
- Vá bảng markdown vỡ blockquote (
frontend-developer.md); thêm gate NFR coverage ở/plan; sửa boundary/discover("does not install anything" mâu thuẫn bước build);/buildPrerequisites bổ sungplans/plan.md. - Hook
log-command-stats.py: nhận diện đúng tên lệnh khi command file inline (Skill) — cột command hết(free-text).
Full Changelog: v1.1.0...v1.2.0
v1.1.0 — Easier to use, fuller brownfield coverage, faster runs
✨ Mới
- Mở task bằng câu thường — gõ "Tôi muốn thêm tính năng X", Claude tự xác định luồng phù hợp và đưa checklist lệnh để bạn chạy từng bước (hoặc để Claude chạy, dừng ở mỗi gate chờ duyệt).
quick-start.md— người mới đọc 5 phút là dùng được kit.- 4 report template mới (TEST_REPORT, VERIFY_REPORT, CODE_REVIEW, RUNBOOK/RELEASE) — agent chỉ điền vào khung có sẵn, không viết lại cấu trúc mỗi lần → nhanh hơn, format thống nhất.
- Hỗ trợ Node.js bên cạnh C#/.NET (khai báo trong Project Profile).
🏗️ Brownfield
- Cây quyết định thêm 3 tình huống hay gặp: nâng cấp dependency/vá CVE, trả nợ kỹ thuật, gỡ bỏ tính năng.
- Trả lời rõ câu hỏi thường gặp nhất: test/review/verify chạy trên toàn bộ source hay chỉ phần sửa? → Viết test mới chỉ cho phần thay đổi; chạy lại toàn bộ suite đã có — phần không đổi được chứng minh là không bị ảnh hưởng.
⚡ Nhanh hơn
- TestContainers dùng 1 container cho cả suite thay vì mỗi test class 1 container —
/testtiết kiệm nhiều phút mỗi lần chạy.
🛠️ Sửa lỗi & đồng bộ (49 file)
- 11 agent đồng bộ hoàn toàn với 17 lệnh — hết tình trạng agent hướng dẫn một đằng, lệnh yêu cầu một nẻo (vd: agent từng hướng dẫn push
:latesttrong khi kit cấm). - Thống nhất tên và ngữ nghĩa của 14 Quality Gate; sửa 2 lỗi hiển thị markdown; docker-compose chuyển về repo root nhất quán trên toàn bộ tài liệu.
Full Changelog: v1.0.0...v1.1.0
v1.0.0 — Initial release: a full SDLC harness for Claude Code
🎉 Bản phát hành đầu tiên
Bộ "harness" SDLC cho Claude Code: biến AI coding agent thành một quy trình phát triển phần mềm có kỷ luật, tái lập được — thay vì kết quả phụ thuộc vào cách mỗi người prompt. Thả thư mục .claude/ vào repo bất kỳ và bắt đầu chạy.
Có gì trong kit
- 12 lệnh pipeline từ
/specđến/deploy— mỗi bước một việc, kết thúc bằng Quality Gate phải pass mới đi tiếp. - 11 agent chuyên trách (Business Analyst, Architect, Developer, Test Engineer, Security Auditor, Release Manager…) — đúng vai cho đúng việc.
- 5 lệnh hỗ trợ:
/discover(nhận repo legacy),/debug,/fix-issue,/hotfix(sự cố production),/simplify. - Hỗ trợ brownfield — làm việc trên code legacy với kỷ luật riêng: characterization test trước khi sửa, không phá backward-compat, không refactor lan man.
- Bộ rules bắt buộc (clean code, security, testing, API, database…) — chuẩn chung cho mọi output, mặc định stack C# 12 + ASP.NET Core 8 + Next.js.
- Bảo mật 2 đầu: threat modeling STRIDE trước khi code (
/secure) + scan tự động trước khi deploy (/scan). /verifytrước khi promote — chạy toàn bộ acceptance criteria trên đúng artifact sẽ ship, không phải bản proxy.
Triết lý
Spec trước code · Test là bằng chứng · Sửa tận gốc, không vá triệu chứng · Mọi quyết định đều có ADR.