بنقرة واحدة
release
Cut a new jq-jit release — pre-flight, bench, version bump, tag, push. Single PR.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Cut a new jq-jit release — pre-flight, bench, version bump, tag, push. Single PR.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | release |
| description | Cut a new jq-jit release — pre-flight, bench, version bump, tag, push. Single PR. |
Cut a release from the current branch in one PR: benchmark capture +
Cargo.toml bump + docs/benchmark-history.{tsv,md}. Tag & push after
auto-merge; .github/workflows/release.yml then builds binaries, creates
the GitHub Release, and bumps the Homebrew tap.
Run autonomously end-to-end. Only pause if the regression gate (step 4) exceeds 1.30.
Extract the target from user input:
| User says | Behavior |
|---|---|
| "release" / "リリース" (no arg) | Auto-detect bump from commits since last tag |
| "release patch/minor/major" | Force that bump |
| "release v1.5.0" | Explicit version |
Auto-detect scans git log v<latest>..HEAD --pretty=%s:
feat!: / <type>!: / BREAKING CHANGE: → major; feat: →
minor; otherwise → patch.
1. Pre-flight. cwd = repo root (git rev-parse --show-toplevel).
cargo build --release → zero warnings (hard project rule; fix or
stop, never suppress). cargo test --release → pass.
2. Version + branch. Compute vX.Y.Z; ensure git tag -l vX.Y.Z
is empty. On main → git checkout -b release/vX.Y.Z. On any other
branch → stay (release bundles with current WIP, which is intentional);
commit/stash unrelated dirty edits first (ask if intent is unclear).
3. Benchmark. Run in the background (run_in_background: true):
python3 .claude/skills/release/scripts/update_history.py vX.Y.Z
It runs bench/comprehensive.sh (~10 min), appends to
docs/benchmark-history.tsv, and regenerates the slim .md (last 5
columns). Never poll — wait for the completion notification.
4. Regression gate. Per benchmark, ratio = new / previous (skip
rows with an empty previous column — new patterns, no baseline).
| Max ratio | Action |
|---|---|
| ≤ 1.05 | Continue. |
| 1.05–1.30 | Re-run bench once (this appends a second vX.Y.Z column — dedup the TSV or use a temp label first). Still in range → confirmed regression: investigate (git log v<prev>..HEAD --oneline, inspect the regressed benchmarks), fix + re-bench. Too involved → gh issue create for the regression, then continue the release on record. |
| > 1.30 | Stop. Show the user which benchmarks regressed and by how much; don't bump or PR. |
FAIL/TIMEOUT entries → suspect bench-data drift before code regression
(e.g. #316: ltrim+tonum+arith failed because the data prefix didn't
match the filter).
5. Bump. sed -i '' -E 's/^version = "[^"]+"/version = "X.Y.Z"/' Cargo.toml, then cargo check --release to verify it parses.
6. Commit. One commit chore: release vX.Y.Z staging Cargo.toml
docs/benchmark-history.tsv + docs/benchmark-history.md (on top of
any pre-existing WIP commits).7. PR + auto-merge.
gh pr create --title "release vX.Y.Z" --body "<summary>"
gh pr merge --auto --merge
Body: one-line release summary, a note that history columns were appended for vX.Y.Z, and a bench line ("no regression > 5%" or "regressed: , see #issue"). Wait for auto-merge in the background — don't poll.
8. Tag + push. After auto-merge completes:
git checkout main && git pull --ff-only
git tag -a vX.Y.Z -m "release vX.Y.Z"
git push origin vX.Y.Z
Tag push triggers release.yml: binaries for linux-x86_64 /
macos-arm64, GitHub Release with auto-generated notes, and Homebrew
tap formula bump — all automatic, no manual edits.
9. Wrap-up. Report: PR # + merge SHA, tag pushed, release Actions
run (gh run list --workflow=release.yml -L 1), bench delta (best
speedup / worst regression vs the previous version).
sleep; rely on the background completion
notification.git bisect (e.g. step 4 investigation): git bisect reset
does NOT rebuild. The leftover target/release/jq-jit belongs to
whatever commit bisect evaluated last. Always cargo build --release
before any re-bench or perf comparison — a stale binary once nearly
shipped a wrong v1.5.0 regression analysis (67a28be→5d80c22).
Verify with md5 -q target/release/jq-jit if unsure.