release
Two halves of one job: pack a curated .claude/ subset into a deterministic tar.gz, and run the release lifecycle on the root CHANGELOG.md. Same inputs → byte-identical bundle, every time.Hai nửa của một việc: đóng gói tập con .claude/ chọn lọc thành tar.gz deterministic, và chạy vòng đời phát hành trên CHANGELOG.md gốc. Cùng đầu vào → bundle giống nhau từng byte, mọi lần.
✓ Reach for it when✓ Dùng khi
- sharing/installing a curated
.claude/subsetchia sẻ/cài một tập con.claude/chọn lọc - cutting a versioned release (lock changelog, bump, tag)cắt một bản phát hành có version (khóa changelog, bump, tag)
- you need a reproducible, hashed artifactbạn cần hiện vật tái lập, có hash
✗ Won't do✗ Sẽ không làm
- pack secrets — the safety filter is non-removableđóng gói secret — bộ lọc an toàn không tắt được
- push the tag for you — that's owner-ownedtự push tag — đó là việc của chủ kit
- make any network call at runtimegọi mạng khi chạy
Preview the pack — deterministic & hashedXem trước bản đóng gói — tất định & có hash
--dry-run --compute-sha lists what would ship and the exact SHA-256 of the bundle — without writing a tarball. Run twice, same hash. real output
--dry-run --compute-sha liệt kê những gì sẽ đóng gói và đúng SHA-256 của bundle — mà không ghi tarball. Chạy hai lần, cùng một hash. đầu ra thật
bundle_root: product-spec-2.4.0 file_count: 318 total_bytes: 4626012 output_path: /home/hieubt15/Documents/vsf/product-spec/.claude/skills/release/scripts/dist/product-spec-2.4.0.tar.gz max_size: 104857600 would_be_sha256: 414c2cbac29472cdba8f8e4a95f4cb784be6ad092b730844ba7ba806dbc8ba8f over_max_size: False
The safety filter, doing its jobBộ lọc an toàn, đang làm việc
Plant secrets in a tree, then scan it. Legit files stay; secrets are dropped by an immutable rule — no flag pulls them back. real scan Cấy secret vào một cây rồi quét. File hợp lệ ở lại; secret bị loại bởi một luật không thể sửa — không cờ nào kéo lại được. quét thật
Always-dropped: .env & secrets/keys, .git/, runtime caches, session state, telemetry/*.jsonl, tests. Settings & CK-config are opt-in only.Luôn loại: .env & secret/key, .git/, cache runtime, session state, telemetry/*.jsonl, tests. Settings & CK-config phải opt-in.
The deterministic pack flowLuồng đóng gói deterministic
The safety filter — non-removableBộ lọc an toàn — không thể tắt
No flag pulls these back into a bundle. Settings & CK-config are opt-in only.Không cờ nào kéo những thứ này lại vào bundle. Settings & CK-config phải opt-in.
Release lifecycle (release.py)Vòng đời phát hành (release.py)
Lock [Unreleased] → [X.Y.Z], bump the manifest, hand the owner the tag push. The tag — never auto-pushed — fires the CI that publishes the GitHub Release.Khóa [Unreleased] → [X.Y.Z], bump manifest, đưa chủ kit lệnh push tag. Tag — không bao giờ tự push — kích CI để phát hành GitHub Release.