| name | release |
| description | Automates the complete release process for this Obsidian plugin. This skill should be used when the user requests to publish a new version, bump version numbers, sync versions across files, update changelog, build, tag, and publish to GitHub. |
Release Management Skill - Obsidian Plugin
Overview
This skill automates the complete release workflow for this Obsidian plugin, ensuring consistent versioning, changelog updates, and proper publication to GitHub.
IMPORTANT: This project uses manual releases (not automated CI). The GitHub Actions release workflow is disabled to avoid conflicts.
Project Structure
Files that need version updates:
package.json- Source of truth for version (ALWAYS update first)manifest.json- Obsidian plugin manifest (MUST match package.json)versions.json- Obsidian version compatibility mappingCHANGELOG.md- Release history
Pre-Release Checklist
Before starting a release:
- Ensure all tests pass:
npm test - Ensure build succeeds:
npm run build - Ensure working directory is clean:
git status - Ensure you're on the master branch:
git branch --show-current
Release Workflow
1. Determine Version Bump
Follow semantic versioning (SemVer):
- MAJOR (x.0.0): Breaking changes, incompatible API changes
- MINOR (0.x.0): New features, backward compatible
- PATCH (0.0.x): Bug fixes, backward compatible
2. Update Versions
Update version in ALL these files:
package.jsonmanifest.jsonversions.json(add new entry if minAppVersion changes)
3. Update CHANGELOG.md
Add a new section at the top:
## [X.Y.Z] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes in existing functionality
### Fixed
- Bug fixes
4. Build and Test
npm run build
npm test
5. Commit and Tag
git add -A
git commit -m "chore: release vX.Y.Z"
git tag -a vX.Y.Z -m "Release vX.Y.Z"
6. Push to GitHub
git push origin master
git push origin vX.Y.Z
7. Create GitHub Release (MANUAL)
IMPORTANT: Create the release manually with gh CLI. Do NOT rely on GitHub Actions.
gh release create vX.Y.Z \
--repo roomi-fields/obsidian-substack \
--title "vX.Y.Z" \
--notes "Release notes here..." \
main.js manifest.json styles.css
The release MUST include these files as assets:
main.js- Compiled plugin codemanifest.json- Plugin manifeststyles.css- Plugin styles
8. Deploy to Test Vault (Optional)
powershell -ExecutionPolicy Bypass -File "deployment/scripts/deploy.ps1"
Troubleshooting
Release already exists
If creating a release fails because it already exists:
# Delete existing release
gh release delete vX.Y.Z --repo roomi-fields/obsidian-substack --yes
# Delete and recreate tag
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z
# Create release again
gh release create vX.Y.Z ...
Tag already exists
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
Version mismatch
Always update ALL version files:
- package.json
- manifest.json
- versions.json
Why Manual Releases?
The GitHub Actions release workflow (.github/workflows/release.yml) is disabled because:
- We create releases manually with specific release notes
- Automated releases would conflict with manually created ones
- Manual control allows better release note customization
To re-enable automated releases, edit .github/workflows/release.yml and uncomment the on: push: tags: section.