Skip to content

Releases: dinhnguyenngoc/spec-driven-claude-code

v1.7.0 — Hardening by evidence: a full-kit test campaign, 12 fixes with retest proof

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 29 Aug 17:03

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 §Coverage with 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.md Quality 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 /deploy had 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: mints docs/CODEBASE_MAP.md, never REVERSEs over the forward spec, and flips Mode: only with your consent.

📄 5 · Specs that read for their audience

  • specs/EVIDENCE.md — the engineer-facing US-ID → file:line evidence map moves out of SPEC.md, so the spec stays readable prose for stakeholders.
  • Living-state rule for scoped REVERSE — a partial baseline must say so: header Version stays 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.txtexamples/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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 14 Aug 16:01

Five change groups in this release: (1) configurable Output Language — artifacts & conversation follow the language declared per project (absent → Vietnamese, fully backward-compatible); (2) /spec business 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 /spec branches (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-nn proposals — 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.z via exports/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-nn label fidelity

🐘 4 · Third first-class stack: PHP + Laravel

  • lang-php + framework-php-laravel + test-php overrides (Pest default — brownfield keeps PHPUnit; RFC 7807 with the documented brownfield-422 exception; host-isolated .env.testing)
  • php scanner 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-endNFR-xx keyed chain across all four artifact tiers (spec → arch → plan → verify); /plan §Impact Analysis (blast radius before tasks); /arch Flow 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 safetyIMAGE_TAG digest/rollback chain; new database.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 disclosurestacks_unscanned surfaced and gate-blocking: "not scanned" must never read as "nothing found"
  • Brownfield evidence, repo-resident/discover endpoint 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-system generates specs/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-xx returns); 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 guidesgetting-started-brownfield.md & getting-started-greenfield.md, linked from README & quick-start
  • Default modelsettings.json now ships claude-sonnet-5

⚠️ Upgrade notes

  • No Output Language in your Profile → everything stays Vietnamese — no silent language flip
  • A SPEC without a Coverage field is treated as full (the field postdates it)
  • Marker rename [CẦN <role>][NEEDS <role>]: update the On-missing enum in your local doc-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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 20 Jul 13:54

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 khai Mode: workspace → hành vi kit không đổi một ly. Đã verify bằng
sandbox 2-repo: /discover dừng hỏi xác nhận scope đúng thiết kế, /spec không còn
false-greenfield ở workspace root.

Added

  • CLAUDE.md §Workspace Mode — meta-mode workspace + 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 status repo không-đích sạch).
  • /discover Phase 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ệt Service 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 (arch plan secure build test
    review scan infra docs verify deploy fix-issue hotfix debug simplify
    inspect) — chỉ trỏ về §Workspace Mode; logic sống đúng một chỗ.
  • microservices-multirepo.md Pattern C — Workspace-kit — layout khuyến nghị cho
    cross-repo hằng ngày; A/B giữ nguyên cho kit-in-repo.

Changed

  • /spec Phase 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ị workspace vào bảng Mode (chỉ hợp lệ ở thư mục cha).
  • Mặt tiền: quick-start.md hàng /inspect bổ 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 → Mode nhận giá trị mới workspace — CHỈ hợp lệ ở profile thư mục
    cha (kèm Repos: 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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 16 Jul 14:02

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 status read-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 /spec wireframes
    /arch design system → /build FE.
  • Join-key mới có producer thậtOPEN-### (TEST_REPORT §12 → /review disposition)
    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 /spec Phase 2.5.
  • A-xx disposition 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.YRC-N (10 chỗ/7 file) · T-XXTask 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.
  • Brownfield scoping: /verify Phase-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.
  • /plan Prerequisites: architecture chuyển từ Optional → Required (greenfield Gate 2 /
    brownfield conformance verdict 1-câu-hỏi); spec phải Status: Approved (cả /arch).
  • /test E2E transport theo vị trí pipeline — greenfield trước /infra chạ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/build kiểm Gate 4 APPROVED, /infra kiểm
    Gate 8 green, /deploy ghi chú /review-if-run; RR-N coverage nâng SHOULD → MUST.
  • Read-only guarantee kiểm bằng git thật/discover, /discover-system (mọi repo
    sạch), /simplify (diff đúng scope + green-before/after).
  • /hotfix ranh 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.mdarchitecture/design-system.md · typo
    ai↔aiapi↔api · link ví dụ ADR sai convention · comment data-us lệ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;
    /inspect phủ 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 /verify khô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.
  • /plan từ chối chạy khi thiếu architecture/ hoặc spec còn Draft.
  • Tooling grep token cũ (RC-X.Y, T-XX) phải đổi sang RC-N / Task N.N;
    Profile có field optional mới Service 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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 08 Jul 03:12

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 /deploy về đú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.md cho 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.
  • /spec Phase 0 — auto-detect Mode (ARGS × CODE × DISCOVERY) → STOP / REVERSE / DELTA.

Changed

  • /deploy = STAGING-only — Status tối đa STAGED; promote production là bước thủ công ngoài kit (least privilege, DEPLOY_RUNBOOK §8). Từ vựng SUCCEEDEDSTAGED toàn bộ.
  • Coverage gate theo Mode — greenfield whole-repo; brownfield delta-coverage + ratchet.
  • /scan tá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_REPORT giờ block (cần ACK_NO_SCAN=1 + ghi ngoại lệ vào RELEASE_NOTES), thay vì pass thầm lặng.
  • Host-isolation mở rộngIHostedService/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 status chứ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.md viế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)

  • /deploy KHÔNG còn tự tuyên bố production SUCCEEDED — tối đa STAGED; script/kỳ vọng cũ dựa trên SUCCEEDED phải đổi. Production do bước promote thủ công (RUNBOOK §8) điền.
  • Deploy khi chưa chạy /scan giờ fail trừ khi set ACK_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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 26 Jun 03:09

Đợ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-only system/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 (/secure mint → /review cite → /scan verify) · 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.lock ghi version + digest; /deploy chỉ promote đúng digest đã verify (gate 3-outcome), không còn rebuild làm hỏng verdict. /verify vẫ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ớp error-handling.md.

⚡ Nhanh hơn (giữ nguyên rigor)

  • Cross-command dedup: /build gộp full-suite 2→1; /test gộp các lần dotnet test1 coverage run; /review tin verdict TEST_REPORT thay vì re-run.
  • Brownfield diff-scoping (baseline vẫn full): /secure STRIDE delta · /review review diff · /scan SAST diff-scoped · /plan consume map.
  • Chuỗi consume-/discover: docs/CODEBASE_MAP.md làm nguồn cho /spec·/arch·/plan·/infra·/docs thay vì quét lại cây.
  • /arch gộp Rejection ADR 1 bảng + bound-ADR · /docs chạy incremental · /deploy dùng --pull thay --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; tdd skill 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 compose v2 (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), /arch là 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); /build Prerequisites bổ sung plans/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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 10 Jun 15:37

✨ 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 — /test tiế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 :latest trong 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

Choose a tag to compare

@dinhnguyenngoc dinhnguyenngoc released this 10 Jun 10:27

🎉 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).
  • /verify trướ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.