Trigger Obsidian plugin release (beta, RC, or stable)
Triggers Obsidian plugin releases (beta, RC, or stable) with automated versioning and GitHub workflow management.
/plugin marketplace add cameronsjo/claude-marketplace/plugin install obsidian-dev@cameronsjo[beta|rc|stable]/obsidian.release beta # Create beta release for BRAT
/obsidian.release rc # Create release candidate
/obsidian.release stable # Prepare stable release (via Release Please)
/obsidian.release # Interactive - ask which type
[beta])For BRAT users to test in-progress changes:
[beta] keyword in commit message1.2.0-beta.5+abc1234[rc])For final testing before stable:
[rc] keyword in commit message1.2.0-rc.1For production/community plugin listing:
Before any release:
# Verify clean working directory
git status
# Ensure tests pass
npm test
# Ensure build succeeds
npm run build
# Check current version
cat manifest.json | jq '.version'
# Check for open Release Please PR
gh pr list --state open --search "chore(main): release"
# Option A: Add [beta] to new commit
git add .
git commit -m "feat: add new feature [beta]"
git push
# Option B: Amend last commit with [beta]
git commit --amend -m "$(git log -1 --format=%B) [beta]"
git push --force-with-lease
The beta-release.yml workflow will:
[beta] keyword{next-version}-beta.{commit-count}+{short-sha}# Add [rc] to commit message
git commit -m "chore: prepare release candidate [rc]"
git push
The rc-release.yml workflow will:
[rc] keyword{next-version}-rc.{count}# Check for Release Please PR
gh pr list --state open --search "chore(main): release"
# Review the PR changes
gh pr view {pr-number}
# Merge when ready
gh pr merge {pr-number} --merge
Release Please will:
# List recent releases
gh release list --limit 10
# View specific release
gh release view v1.2.0
# Check GitHub Actions status
gh run list --limit 5
Check commit message includes [beta]:
git log -1 --format=%B
# If missing, amend:
git commit --amend -m "$(git log -1 --format=%B) [beta]"
git push --force-with-lease
BRAT requires manifest.json version to match release tag:
# Check release assets
gh release view v1.2.0-beta.1 --json assets
# Re-upload fixed manifest if needed
gh release upload v1.2.0-beta.1 manifest.json --clobber
# Delete release and tag
gh release delete v1.2.0-beta.1 --yes --cleanup-tag
If versions.json is out of sync:
# Get current version
VERSION=$(jq -r '.version' manifest.json)
MIN_VERSION=$(jq -r '.minAppVersion' manifest.json)
# Update versions.json
jq --arg v "$VERSION" --arg m "$MIN_VERSION" '. + {($v): $m}' versions.json > tmp.json
mv tmp.json versions.json
git add versions.json
git commit -m "chore: update versions.json for $VERSION"
git push
For testers installing via BRAT:
{github-username}/{repo-name}| Change Type | Version Bump | Example |
|---|---|---|
| Breaking change | Major | 1.0.0 → 2.0.0 |
| New feature | Minor | 1.0.0 → 1.1.0 |
| Bug fix | Patch | 1.0.0 → 1.0.1 |
| Beta | Prerelease | 1.1.0-beta.1 |
| RC | Prerelease | 1.1.0-rc.1 |
Use conventional commits:
feat: → minor bumpfix: → patch bumpfeat!: or BREAKING CHANGE: → major bumpAfter triggering release:
🚀 Release triggered!
Type: Beta
Version: 1.2.0-beta.5+abc1234
Commit: feat: add new feature [beta]
📋 Next steps:
- Monitor: gh run watch
- Verify: gh release view 1.2.0-beta.5+abc1234
- Test: Install via BRAT
🔗 BRAT install: username/repo-name