A file-based SDLC harness for Claude Code · W0–W3Một harness SDLC file-based cho Claude Code · W0–W3

Make every change
earn its way to ship.
Bắt mọi thay đổi
tự chứng minh trước khi ship.

PlanLập kế hoạch BuildThực thi VerifyKiểm thử GateChặn ObserveQuan sát

Not prose reminders — a coordinated .claude-style rig that enforces the workflow at runtime: 68 hs:* skills, 66 hooks in three tiers, 273 scripts, and a compliance gate that advises push / pr / ship and traces every step — with an agent cage that hard-blocks forgery on the spot and safety floors that never loosen. Every gate, approval, and decision is traced with an actor. Không phải lời nhắc — mà cả một bộ kiểu .claude phối hợp, ép quy trình ngay lúc chạy: 68 skill hs:*, 66 hook ba hạng, 273 script, và một gate compliance khuyên push / pr / ship và ghi trace mọi bước — kèm cũi agent chặn cứng giả-mạo tại chỗ và các safety floor không bao giờ nới lỏng. Mọi gate, duyệt và quyết định đều được trace kèm actor.

hs:plan
workflow
hs:cook
TDD red→green
hs:test
100% pass
The rig
gate · trace · telemetry
How enforcement works ↓Cơ chế enforcement ↓
✨
New in v7.5.1 — a patch: the Windows launchers run under cmd.exe, the installers take a Python that has the deps, and a finished hs-rops run leaves nothing behind. v7.5.0 — the harness installs onto OpenCode v2, its ninth runtime besides Claude Code, through a bridge shared with pi; a compliance gate can ask you instead of only refusing, so a secret-file read, shell reads included, waits for your yes; hs-secrets compare and hint check a credential without showing it; hs-usage admit sizes a fan-out by the machine's load and the quota; and hs-rops runs that stall, lose their session or start in a fresh tmux pane now finish or say why. → What's new · The rig Mới ở v7.5.1 — bản vá: launcher Windows chạy được dưới cmd.exe, trình cài chọn Python đã có đủ thư viện, và lượt hs-rops đã xong không để sót gì. v7.5.0 — harness cài được lên OpenCode v2, runtime thứ chín ngoài Claude Code, qua bridge dùng chung với pi; gate compliance có thể hỏi bạn thay vì chỉ từ chối, nên đọc tệp bí mật, kể cả qua shell, phải chờ bạn đồng ý; hs-secrets compare và hint kiểm credential mà không hiện nó ra; hs-usage admit định cỡ fan-out theo tải máy và quota; và các lượt hs-rops bị treo, rớt session hay khởi động trong pane tmux mới giờ chạy xong hoặc nói rõ vì sao. → Có gì mới · Bộ máy
Before the pipeline · how enforcement worksTrước quy trình · cơ chế enforcement

Personal-first — local advises, the cage never loosensPersonal-first — local khuyên, cũi không bao giờ nới

One person, one machine, one clone. The local gate never blocks you — it advises and traces every step. No reviewer roster, no approval quorum, no team/solo posture to choose. What the harness never loosens: the path-keyed write floors. v4.0.0.Một người, một máy, một clone. Gate local không bao giờ chặn bạn — nó khuyên và ghi trace mọi bước. Không roster người duyệt, không quorum, không phải chọn thế team/solo. Cái harness không bao giờ nới: các sàn ghi theo đường-dẫn. v4.0.0.

Local — advisoryLocal — advisory

You commit / push / ship straight throughBạn commit / push / ship thẳng

  • Gate: a hard stage with a missing receipt emits [advisory] + a gate_advisory trace and proceeds — no human blockGate: hard stage thiếu receipt phát [advisory] + trace gate_advisory rồi đi tiếp — không chặn người
  • Pre-push: WARNs on a missing receipt, but still BLOCKS the two floors — destructive-to-protected + secretPre-push: WARN khi thiếu receipt, nhưng vẫn CHẶN hai floor — destructive-to-protected + secret
  • Agent cage: path-keyed write floors — never loosenedNhốt agent: sàn ghi theo đường-dẫn — không bao giờ nới

The one hard local block is the artifact-forgery arm (the agent cage).Chốt cứng local duy nhất là nhánh chống giả-mạo-artifact (cũi agent).

Always hard — the cageLuôn cứng — cái cũi

No CI required — these hold on every machineKhông cần CI — cái này giữ trên mọi máy

  • Path-keyed write floor: a subagent writes only within its delegated scope — a write outside it is blocked on the spot, no bypass by retrying or rewordingSàn ghi theo đường-dẫn: subagent chỉ ghi trong phạm vi được giao — ghi ra ngoài bị chặn tại chỗ, không lách được bằng thử lại hay đổi cách diễn đạt
  • Safety floors: destructive-to-protected-paths and secret-pattern writes are hard-blocked at pre-commit and pre-push, full stopSafety floor: ghi đè đường-dẫn-được-bảo-vệ và secret-pattern bị chặn cứng ở pre-commit và pre-push, không ngoại lệ
  • Artifact-forgery block: a claimed verification / review-decision / plan-approval that doesn't match its real anchor (hash, provenance) is rejected — you can't fake the receiptChặn giả-mạo artifact: một verification / review-decision / plan-approval khai báo mà không khớp anchor thật (hash, provenance) sẽ bị từ chối — không giả được biên nhận

Optional: wire .github/workflows/receipts-gate.yml into your own CI if you also want a hard remote presence gate on PR/push→main.Tùy chọn: nối .github/workflows/receipts-gate.yml vào CI của bạn nếu muốn thêm một hard gate hiện-diện ở remote trên PR/push→main.

📘
Reading the gate pages below? The gate at push / pr / ship advises and traces — it never blocks you. What stays hard: the path-keyed write floors, and the artifact-forgery block. The receipts-gate is optional — wire it into your own CI if you want a hard remote presence gate too. Full detail on Configure.Đọc các trang gate bên dưới? Gate tại push / pr / ship khuyên và ghi trace — nó không bao giờ chặn bạn. Cái vẫn cứng: các sàn ghi theo đường-dẫn và chặn giả-mạo artifact. Receipts-gate là tùy chọn — nối vào CI của bạn nếu muốn thêm một hard gate hiện-diện ở remote. Chi tiết đầy đủ ở Cấu hình.
The enforced loopVòng được ép

One spine — plan, cook, test, ship — and a gate that says noMột xương sống — plan, cook, test, ship — và một gate biết nói không

An idea enters at plan; a human-approved, test-verified change leaves at ship — or it doesn't leave at all. The gate at ship reads acceptance artifacts off the filesystem and advises (exit 0) with an actionable reason — what actually holds the line is the agent cage and the safety floors underneath it. Usage of the whole rig flows back as observability.Ý tưởng vào ở plan; một thay đổi đã-người-duyệt, đã-test ra ở ship — hoặc không ra được. Gate tại ship đọc artifact nghiệm thu từ filesystem và khuyên (exit 0) kèm lý do xử lý được — cái thực sự giữ vững ranh giới là cũi agent và các safety floor bên dưới nó. Mức dùng của cả bộ chảy ngược về thành quan trắc.

Optional · ungatedTùy chọn · không gate
hs:discoverhs:researchhs:brainstorm

Figure out what to build. No stage requires their output — run them when the problem is fuzzy, skip them when it's clear. They feed hs:plan ↓Tìm xem nên làm gì. Không stage nào đòi đầu ra của chúng — chạy khi vấn đề còn mơ hồ, bỏ khi đã rõ. Chúng nạp vào hs:plan ↓

01

hs:plan

Research → constraint-scan → red-team → validate. The plan is a contract; cook only runs once a human approves it.Research → constraint-scan → red-team → validate. Plan là hợp đồng; cook chỉ chạy khi người duyệt.

DefineĐịnh nghĩa
02

hs:cook

Per-phase TDD red→green. Writes a machine verification.json; traces every step with an actor.TDD đỏ→xanh từng phase. Ghi verification.json máy-ghi; trace mọi bước kèm actor.

BuildThực thi
03

hs:test

unit / integration profiles, 100% pass is the gate, a tight QA report, verdict into the artifact.profile unit / integration, 100% pass là gate, QA report gọn, verdict vào artifact.

VerifyKiểm thử
04

hs:ship

The gate here reads verification + review-decision + plan-approval off the filesystem (critique-consensus is an opt-in fourth) and advises (exit 0) with an actionable reason — it never blocks. What holds locally regardless: the agent cage and the safety floors.Gate tại đây đọc verification + review-decision + plan-approval từ filesystem (critique-consensus là cái thứ tư tùy chọn) và khuyên (exit 0) kèm lý do xử lý được — nó không bao giờ chặn. Cái vẫn giữ vững ở local bất kể: cũi agent và các safety floor.

ReleasePhát hành
The return edge: a stage advisory (exit 0 + an actionable reason) sends you back to cook/test — the discipline, the artifacts, and the workflow lens are what hold the line locally, no remote CI required. critique-consensus (from hs:critique) can be required at pr/ship if a stage opts in — so a change that was never critiqued can be held back. The workflow lens then compares the chain you declared against the chain you actually ran. Cạnh quay về: một stage cho advisory (exit 0 + lý do xử lý được) đẩy bạn về cook/test — kỷ luật, các artifact, và workflow lens là cái giữ vững ranh giới tại local, không cần remote CI. critique-consensus (từ hs:critique) có thể bị đòi ở pr/ship nếu một stage bật tùy chọn — nên thay đổi chưa từng được critique có thể bị giữ lại. Workflow lens rồi so chuỗi bạn khai báo với chuỗi bạn thực sự chạy.
68
hs:* skills in the suiteskill hs:* trong bộ
66
hooks · 3 tiershook đăng ký · 3 hạng
18447
unit + invariant tests pass (948f7a1a3)test unit + invariant pass (948f7a1a3)
0
network calls in the gate pathlần gọi mạng trong đường gate
Under the hoodBên trong

What lives in harness/ — the whole rigCái gì nằm trong harness/ — cả bộ

The product is the harness/ tree: skills, hooks, scripts, rules, data, schemas, install, tests. Delete the directory and the harness is gone — a CI invariant forbids the string .claude/skills/ inside harness/.Sản phẩm là cây harness/: skills, hooks, scripts, rules, data, schemas, install, tests. Xóa thư mục là gỡ sạch — một invariant CI cấm chuỗi .claude/skills/ trong harness/.

🧩 68 skills68 skillplugins/hs
  • SDLC spine: plan · cook · test · shipXương sống: plan · cook · test · ship
  • orchestrators, review, debug, research, ideation, docsđiều phối, review, debug, nghiên cứu, ý tưởng, docs
  • packaged as plugin hs → /hs:planđóng gói plugin hs → /hs:plan
🪝 66 hooks · 3 tiers66 hook · 3 hạng/hooks
  • telemetry sinks (ON, fail-open)sink telemetry (ON, fail-open)
  • memory-gap nudge (OFF)memory-gap nudge (OFF)
  • gate_stage · write_guard (compliance)gate_stage · write_guard (compliance)
🛠️ 273 scripts273 script/scripts
  • stage_detector · artifact_check · fs_guardstage_detector · artifact_check · fs_guard
  • claims · plan_approval · plan_graph
  • analyze_telemetry · spec_graph · decision_register
📐 15 rules15 rule/rules
  • harness-contract.md (≤75 lines, always-load)(≤75 dòng, luôn-load)
  • tdd-discipline · verification-mechanism
  • workflow-handoffs · counting-discipline
  • + process-management, the newest+ process-management, mới nhất
🧪 16 schemas16 schema/schemas
  • artifact-verification · review-decision
  • plan-approval · critique-consensus
  • bakeoff-verdict · harness-release
📦 Install + manifestCài + manifest/install
  • install.py --target (one command)(một lệnh)
  • manifest.json (sha256 tracked files)(sha256 file tracked)
  • verify_install.py --strict
🤝
Honest by design: the contract names its own limits in plain words. The gate is a presence gate (it stops forgotten steps, not a determined cheater); actor is attribution, not authentication (it raises the cost of lying, it doesn't prove identity); the config gate is tamper-visible (editable in an emergency, but the diff shows). No claim of security the code doesn't have.Trung thực theo thiết kế: contract tự nêu giới hạn bằng lời thẳng. Gate là presence gate (chặn bước bị quên, không chặn kẻ cố gian); actor là attribution, không phải authentication (tăng giá nói dối, không chứng minh danh tính); config gate là tamper-visible (sửa được khi khẩn, nhưng lộ diff). Không claim bảo mật mà code chưa có.
Under the hoodBên trong

One dispatch CLI drives every skill — hs-runMột CLI dispatch chạy mọi skill — hs-run

Every SDLC-spine skill drives hs-run <domain> <verb>, a deterministic step-sequence engine: 13 domains, 24 verbs. Most domains expose one next door; cook has 8 verbs and plan has 5. Each verb returns a JSON envelope (state, next_action, artifacts, refs) on one of six exit codes — 0 done, 1 findings, 2 broken, 3 deliberate refusal, 10 needs a model turn, 11 one more deterministic step. Configuration and admin are a separate CLI, hs-cli: skills --on/--off (restart to apply), components, migrate, trust.Mọi skill trong xương sống SDLC chạy hs-run <domain> <verb>, một engine bước chạy tất định: 13 domain, 24 verb. Hầu hết domain chỉ có một cửa next; cook có 8 verb và plan có 5. Mỗi verb trả envelope JSON (state, next_action, artifacts, refs) trên một trong sáu mã thoát — 0 xong, 1 phát hiện, 2 hỏng, 3 từ chối có chủ đích, 10 cần lượt model, 11 còn một bước tất định. Cấu hình và quản trị nằm ở một CLI riêng, hs-cli: skills --on/--off (khởi động lại để áp dụng), components, migrate, trust.