一键导入
cut-release
Cut a new Fabrik release — gathers changes since last tag, writes release notes, delegates publication to scripts/cut-release.sh
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Cut a new Fabrik release — gathers changes since last tag, writes release notes, delegates publication to scripts/cut-release.sh
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | cut-release |
| description | Cut a new Fabrik release — gathers changes since last tag, writes release notes, delegates publication to scripts/cut-release.sh |
| user_invocable | true |
Cut a new Fabrik release. Your job is to author the release notes; scripts/cut-release.sh does everything else (commit, tag, push as @arbeithand, watch workflow, verify identity, file doc-update issue).
Invoked as /cut-release or /cut-release v0.0.67. If no version is provided, suggest the next patch bump from the current latest tag.
git describe --tags --abbrev=0v prefix and that it's greater than the latest tag.This is the part requiring judgment — do not delegate it.
git log <last-tag>..HEAD --oneline to enumerate commits since the last release.Co-Authored-By lines.release-notes/<version>.md (one file per release, archived in-tree). The release workflow reads this path directly via ${{ github.ref_name }} — there is no repo-root release-notes.md and you should not create one (it is .gitignored).Use this schema:
# Fabrik <version>
## Summary
<1-3 sentences. Punchy headline themes only. This block is what the Discussions
announcement post will contain — everything else lives on the GitHub Release page.>
## Features
- Description (#issue)
## Fixes
- Description (#issue)
## Improvements
- Description (#issue)
## Internal
- One-line summary of internal churn
## Upgrading
\```bash
# Auto-upgrade from a running Fabrik instance
# Fabrik checks for new releases each poll cycle and upgrades automatically with --auto-upgrade
# Or download directly (auto-detects OS and architecture)
gh release download --repo handarbeit/fabrik \
--pattern "fabrik_*_$(uname -s | tr A-Z a-z)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz" \
-O - | tar xz
\```
Both the # Fabrik <version> heading and the ## Summary section are required. The script validates both and refuses to proceed on either failure.
Sizing the Summary. This block IS the Discussions announcement body. Aim for somewhere between a short paragraph (50–80 words for a patch release) and a few themed bullets (~150–250 words for a release with multiple headline features). It should read as a standalone announcement — someone scanning the Discussions feed should immediately understand what shipped and roughly what it does.
What to include:
What NOT to include:
A one-line tagline is too terse. A duplicate of the body sections is too long. Aim for "the elevator pitch."
scripts/cut-release.sh v0.0.67
The script handles, in order:
<version> not already taken locally or on origin; release-notes/<version>.md exists, heading is exactly # Fabrik <version>, and contains a ## Summary section. Working tree must be clean except for release-notes/<version>.md (either untracked or modified) — any other dirty file aborts.FABRIK_TOKEN from .env; aborts unless gh api user resolves to @arbeithand.go build ./... and go test -race ./.... Skippable only via --skip-tests (last resort).release-notes/<version>.md and commits it with GIT_AUTHOR_* + GIT_COMMITTER_* env vars so the commit is arbeithand <handarbeit@handarbeit.io>. Verifies the resulting %an <%ae> matches; aborts otherwise.credential.helper= and credential.https://github.com.helper= nuked, plus PAT-in-URL. This is the exact incantation needed on this machine to push as the bot rather than the default gh auth identity.conclusion == "success" via gh run view (the --exit-status flag alone is not trusted).release.author.login and the latest Discussion's author.login. Aborts loudly if either is not arbeithand, with a pointer to rotate the PUBLIC_REPO_RELEASE_TOKEN repo secret (root cause of every wrong-identity recurrence so far).fabrik:yolo — all authored by arbeithand via the PAT.Flags:
--skip-tests — skip the race-tested suite (use only if it's already known-green from a recent run).--no-doc-issue — skip the doc-update issue creation.If the script exits 0, the release is live and verified. Report:
If the script exits non-zero, surface the script's last error message verbatim. Do NOT attempt to repair the half-published state automatically — the script intentionally avoids destructive cleanup. The cleanup commands are commented at the bottom of the script for reference; relay them to the user and ask how they want to proceed.
scripts/cut-release.sh to bypass a check — every guard exists because something failed once. The bot-identity guards in particular took three deletion-and-republish cycles to diagnose (the workflow secret PUBLIC_REPO_RELEASE_TOKEN is the root cause when the wrong-identity attribution bug recurs).arbeithand PAT (i.e., the handarbeit/fabrik publisher) can use it. Fork maintainers cutting their own fork releases would need to parameterize the constants at the top.Bootstrap a project to use Fabrik (the GitHub-Project-driven SDLC pipeline orchestrator that drives Claude Code workers through Specify/Research/Plan/Implement/Review/Validate stages). Use this skill when the user wants to install, set up, initialize, or get started with Fabrik for the first time — especially when they ask "how do I get started with Fabrik", "install Fabrik", "set up Fabrik in this project", or mention Fabrik in a project where no `.fabrik/` directory exists yet. Walks through prerequisites, binary install, GitHub Project board setup, `fabrik init`, secret configuration, and the first run.
Audit Fabrik docs against recently shipped features — files gap issues for undocumented behavior, closes issues whose gaps are now covered
Build, test, vet, and format the Fabrik codebase
Check the current state of the Fabrik project board and running workers