release
Run the pi-ralph release flow end-to-end. Use when the user asks to release patch, minor, major, beta, or an explicit semver; includes non-interactive release execution, GitHub Actions monitoring with gh, npm trusted publishing verification, draft release note cleanup, and publishing the GitHub Release.
ソース情報
- リポジトリ
- d-kimuson/pi-ralph
- ソースの最終更新活動
- 2026年5月22日 02:49
- 検出された SKILL.md の言語
- 英語
- スター
- 1
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- release
- description
- Run the pi-ralph release flow end-to-end. Use when the user asks to release patch, minor, major, beta, or an explicit semver; includes non-interactive release execution, GitHub Actions monitoring with gh, npm trusted publishing verification, draft release note cleanup, and publishing the GitHub Release.
# pi-ralph Release
Use this skill to perform an end-to-end release for this repository.
## Inputs
Interpret the user's argument as the release version spec:
- `patch`, `minor`, `major`, `beta`
- or an explicit semver such as `0.1.0` / `0.1.0-beta.0`
If no version spec is present, ask the user which one to use.
## Preconditions
1. Work from the repository root.
2. Inspect the current branch and working tree:
```bash
git branch --show-current
git status --short
```
3. If there are unrelated uncommitted changes, stop and ask the user how to handle them.
4. If release-related changes were just made, commit them before running release because `scripts/release.ts` requires a clean working tree.
5. Confirm SSH signing config used by `scripts/release.ts`:
```bash
git config --get gpg.format
git config --get commit.gpgsign
git config --get tag.gpgsign
```
Expected values are `ssh`, `true`, `true`. 6. Confirm npm trusted publishing is configured for this package on npmjs.com:
- Package: `@kimuson/pi-ralph`
- Publisher: GitHub Actions
- Organization/user: `d-kimuson`
- Repository: `pi-ralph`
- Workflow filename: `release.yaml` (filename only, not `.github/workflows/release.yaml`)
- Environment name: empty unless `.github/workflows/release.yaml` is changed to use one
- Allowed action: `npm publish`
Do not use or add an `NPM_TOKEN`; this release flow relies on GitHub Actions OIDC (`id-token: write`) and `npm publish --provenance`. The workflow uses `--ignore-scripts` so the development-only `prepare` hook does not run during publish.
## Release command
Run the non-interactive release:
```bash
VERSION_SPEC="patch" # replace with the user's requested spec
pnpm release -- -y --version "$VERSION_SPEC"
```
The script runs audit/build/package-shape/gatecheck/test checks, updates `package.json`, creates a signed release commit, creates a signed tag, and pushes commits and tags.
## If push fails because the branch has no upstream
The release commit and tag may already exist locally. Push the current branch with upstream, then push tags:
```bash
BRANCH="$(git branch --show-current)"
git push --set-upstream origin "$BRANCH"
git push --tags
```
Do not rerun `pnpm release` unless the local release commit/tag were removed or the previous run failed before creating them.
## Monitor GitHub Actions
After tags are pushed, find and watch the Release workflow run:
```bash
gh run list --workflow Release --limit 5
RUN_ID="<id from the vX.Y.Z row>"
gh run watch "$RUN_ID" --exit-status
```
A reusable one-liner variant:
```bash
TAG="v0.0.0"; RUN_ID="$(gh run list --workflow Release --limit 20 --json databaseId,headBranch,event --jq ".[] | select(.headBranch == \"$TAG\" and .event == \"push\") | .databaseId" | head -n 1)"; test -n "$RUN_ID" && gh run watch "$RUN_ID" --exit-status
```
If the workflow fails, inspect logs before taking corrective action:
```bash
gh run view "$RUN_ID" --log-failed
```
## Verify publish
After the workflow succeeds:
```bash
TAG="v0.0.0" # replace
npm view @kimuson/pi-ralph version
gh release view "$TAG" --json tagName,name,isDraft,isPrerelease,url
```
For prereleases, verify the expected dist-tag too:
```bash
npm view @kimuson/pi-ralph dist-tags --json
```
## Rewrite and publish GitHub Release
The workflow creates a draft release. Inspect the generated notes:
```bash
TAG="v0.0.0" # replace
gh release view "$TAG" --json body --jq .body
```
Rewrite the notes according to `docs/release-note-guideline.md`. The generated draft is based on commit logs, so categories and wording may be wrong from the pi package user perspective. Remove internal-only updates, move entries to the correct category, merge intermediate same-release fixes into their related feature, and rewrite commit-message phrasing into release-note prose.
For a second-pass review before publishing, delegate a focused review to another agent:
```bash
RELEASE_URL="https://github.com/d-kimuson/pi-ralph/releases/tag/v0.0.0" # replace
pi -p "Read docs/release-note-guideline.md, review the Release Note at $RELEASE_URL, and identify concrete changes that should be made. Do not edit files or GitHub releases; only report findings."
```
Apply the review findings when they are consistent with the guideline.
Publish the draft with the rewritten notes:
```bash
TAG="v0.0.0" # replace
NOTES_FILE="/tmp/pi-ralph-$TAG-release-notes.md"
$EDITOR "$NOTES_FILE" # or write the file with the agent's file tool
gh release edit "$TAG" --notes-file "$NOTES_FILE" --draft=false
```
Confirm it is public:
```bash
gh release view "$TAG" --json tagName,name,isDraft,isPrerelease,url
```
## Final report
Report:
- released tag/version
- local release command used
- GitHub Actions run ID and result
- npm version/dist-tag verification result
- GitHub Release URL and draft/public state
- any follow-up commits created for release automation or skill updates
GitHubで見る