ワンクリックで
oad-release
OpenAgentd workflow for version bumps, release PRs, GitHub releases, and release notes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
OpenAgentd workflow for version bumps, release PRs, GitHub releases, and release notes.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Select and create accurate software architecture, workflow, interaction, data, state, and deployment diagrams.
OpenAgentd workflow for keeping the compact feature catalogue and README aligned with user-visible changes.
Research first, propose a step-by-step implementation plan, and wait for explicit approval before writing any code.
Semantic search over the retained OpenAgentd feature catalogue, ADRs, and repository instructions using the turbovec experiment index.
OpenAgentd TDD workflow — write a failing test before the code that makes it pass, reproduce a bug with a test before fixing it. Use when implementing any logic, fixing any bug, or changing any existing behavior in backend (pytest) or frontend (Bun/RTL) code.
OpenAgentd testing reference — environment setup, run commands, and fix patterns for backend (pytest) and frontend (Bun/RTL). Load this for running, fixing, or adding coverage to existing tests. For writing a failing test before new code, use oad/test-driven-development instead.
| name | oad/release |
| description | OpenAgentd workflow for version bumps, release PRs, GitHub releases, and release notes. |
app/version.txt.1.0.0 -> 1.1.0.1.0.0 -> 1.0.1.1.0.5 -> 1.0.6; do not bump minor just because there have been several patches.feat/, fix/, chore/) is not signal — judge from diff content.git status --short
git branch --show-current
git log --oneline --no-merges main..HEAD
gh issue list --repo lthoangg/openagentd --state open --search "<keyword from diff or feature area>" --limit 20
gh issue list --repo lthoangg/openagentd --state all --search "<keyword from diff or feature area> in:title,body" --limit 20
gh issue view <issue-number> --repo lthoangg/openagentd --comments --json number,title,state,labels,body,comments
Fixes #<issue-number> or Closes #<issue-number> in the release PR body so GitHub closes it on merge; use Refs #<issue-number> when the release is related but should not close it.gh label create "included-in-v<version>" --repo lthoangg/openagentd --description "Included in v<version>" --color "0E8A16" || true
gh issue edit <issue-number> --repo lthoangg/openagentd --add-label "included-in-v<version>"
Refs instead of Fixes:gh issue comment <issue-number> --repo lthoangg/openagentd --body "Included in the v<version> release PR: <pr-url>."
git diff --name-only main..HEAD
git diff --stat main..HEAD -- documents/docs/features.md README.md documents/adrs
documents/docs/features.md first; it is the canonical feature catalogue.README.md only when the product story or first-run setup changes.Docs: no user-facing behavior changed).Ready to release
<version>. Proceed? (yes / no)
main. Check both the Core (pytest) and Web (lint + typecheck + tests) workflows on the latest commit:# Get the SHA of the commit you are about to release from
git rev-parse HEAD
# List the most recent runs of each CI workflow and confirm conclusion=success
gh run list --workflow=core.yml --branch=main --limit=3
gh run list --workflow=web.yml --branch=main --limit=3
# If either shows failure, inspect and fix before continuing:
gh run view <run-id> --log-failed
main. Fix the failures first, push the fix to main, confirm CI goes green, then resume the release.release/ branch on top of it.app/version.txt is the single human-edited source of truth for release versioning.scripts/bump_version.sh <version>
app/version.txtpyproject.tomluv.lockweb/package.jsondesktop/src-tauri/tauri.conf.jsondesktop/src-tauri/Cargo.tomldesktop/src-tauri/Cargo.lockmobile/src-tauri/tauri.conf.jsonmobile/src-tauri/Cargo.tomlmobile/src-tauri/Cargo.lockdocuments/docs/features.md (updated: and Latest release:)app/version.txt drives the tag name both release workflows use (v<X.Y.Z>), while bundled artefacts and app metadata read from the Tauri/Cargo files, and CI also enforces cargo check --locked for desktop/mobile. The helper keeps those surfaces in sync instead of relying on manual multi-file edits.scripts/check_version_consistency.sh
chore: bump version to <version>.Fix frontend update restart (v0.3.3 -> v0.3.4).uv run ruff format app/ tests/
uv run ruff format --check app/ tests/
git add app/version.txt pyproject.toml uv.lock web/package.json \
desktop/src-tauri/tauri.conf.json desktop/src-tauri/Cargo.toml \
desktop/src-tauri/Cargo.lock \
mobile/src-tauri/tauri.conf.json mobile/src-tauri/Cargo.toml \
mobile/src-tauri/Cargo.lock \
documents/docs/features.md
git commit -m "<release commit title>"
git push -u origin <branch>
gh pr create --title "<release PR title>" --body "<bullet-point release summary>" --base main
PR body shape:
Release PR for v<version>.
- Add or improve <user-visible outcome>.
- Fix <user-visible bug or behavior>.
- Update desktop, mobile, backend, web, and lockfile versions in lockstep to <version>.
Watch CI in-session until it completes. Do not create scheduled reminders or background follow-up tasks; keep polling directly in the current release workflow:
gh pr checks <pr-number> --watch
# or, if --watch is not suitable:
gh pr checks <pr-number>
gh pr view <pr-number> --comments --json comments,reviews
gh api repos/lthoangg/openagentd/pulls/<pr-number>/comments \
--jq '.[] | "FILE: \(.path):\(.line // .original_line)\nAUTHOR: \(.user.login)\n---\n\(.body)\n==="'
gh pr merge <pr-number> --merge --delete-branch --admin to preserve the multi-commit history of the feature branch.--squash only when the branch is a single logical change (e.g. metadata-only bump).--admin is required when branch protection blocks solo-author PRs on REVIEW_REQUIRED; confirm with the user before using it.main.git checkout main && git pull --ff-only
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^)
git log ${PREV_TAG}..HEAD --oneline --no-merges
Skip commits unrelated to this branch's user-facing work (e.g. earlier docs-only commits that landed on main separately).
Tight, user-facing notes.
Prefer detailed bullets for ## What's changed; one bullet per user-visible capability, fix, or behavior change.
Inspect each included commit's full message body, stats, and changed files before drafting bullets. Do not rely on commit subjects alone:
git log ${PREV_TAG}..HEAD --format=fuller --no-merges
git show --stat --oneline <commit>...
git show --name-only --format=fuller <commit>...
Group related commits into a single bullet when they ship one visible outcome, but split distinct outcomes even if they landed in the same area.
Skip version-bump commits.
Treat commit subjects as raw material.
Paraphrase; do not transcribe.
Lead with user-visible behavior change.
Avoid internals unless required to explain a fix.
Keep each bullet concise; include enough detail that users can tell what changed without reading the changelog.
Sections:
## Breaking Changes: only if migration required. Include only the required migration steps.## What's changed: bullet list of user-noticeable changes, grouped by outcome.**Full changelog:** https://github.com/lthoangg/openagentd/compare/<prev>...<next>.## Tests section.Both workflows publish into the same v<X.Y.Z> tag (introduced in
1.0.9 — older releases used a separate v<X.Y.Z>-desktop tag). Whichever
workflow runs first creates the release; the other appends artefacts via
gh release upload --clobber. Run release.yml first so the canonical
auto-generated notes come from the PyPI workflow.
# CLI / PyPI release (~90 seconds)
gh workflow run release.yml --field confirm=release
gh run list --workflow=release.yml --limit=3
# Watch this workflow in-session until status=completed conclusion=success before continuing.
# Desktop release (~20–25 minutes for the matrix build)
gh workflow run release-desktop.yml --field confirm=release-desktop --field channel=stable
gh run list --workflow=release-desktop.yml --limit=3
# Watch this workflow in-session until status=completed conclusion=success.
latest.json and can rewrite the release body as a side effect (observed on v1.24.0 — notes patched between the CLI and desktop runs were reverted to the auto-generated text). Wait for status=completed conclusion=success on release-desktop.yml before editing.tauri.yml workflow fails right after the version-bump commit, inspect it before retrying the release workflows. The common failure mode is stale desktop/src-tauri/Cargo.lock / mobile/src-tauri/Cargo.lock; fix those on main, push, and re-run the release only after tauri.yml is green.## What's changed, adding ## Breaking Changes only when migration is required. Keep installation and upgrade instructions in the README./tmp/release-notes-v<version>.md), not to a file under the repository workspace. This keeps ad-hoc release artefacts out of the repo tree./tmp file, then verify:gh release edit v<version> --repo lthoangg/openagentd --notes-file /tmp/release-notes-v<version>.md
gh release view v<version> --repo lthoangg/openagentd | sed -n '/## What.s changed/,/Full changelog/p'
## Install or ## Upgrade sections:gh release view v<version> --repo lthoangg/openagentd | grep -E '^## (Install|Upgrade)' && exit 1 || true