skills/obsidian-release-check/SKILL.md
Validates an Obsidian plugin is ready to tag and ship. Use when tagging a release, cutting a version, publishing or shipping a plugin, running a pre-release check, or asking "are we ready to release?" Checks repo hygiene, CI status, docs, version sync, and build verification.
npx skillsauth add philoserf/claude-code-setup skills/obsidian-release-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Systematic verification that an Obsidian plugin is ready to tag. Delegates all mechanical checks to a shell script in the repo and interprets its output.
The script ships with this skill at ~/.claude/skills/obsidian-release-check/scripts/release-check.sh. It resolves the plugin repo root via git rev-parse --show-toplevel and operates from there, so invoke it from anywhere inside the plugin's working tree.
~/.claude/skills/obsidian-release-check/scripts/release-check.sh [VERSION]
VERSION to check against the current package.json version.VERSION (e.g. 1.5.0) to verify readiness for a specific target version.The script prints a summary table of 15 checks, then (when there are commits since the last tag) a git log --oneline of those commits, then a result line. Exit codes:
0 — all pass, ready to tag (Result: READY (0 failures, 0 warnings))1 — one or more FAIL rows, blocked (Result: BLOCKED)2 — WARN rows only, user can acknowledge and proceed (Result: READY with non-zero warning count)On any FAIL or WARN, the script keeps the per-check log files and prints their location to stderr: Release check logs preserved at: /var/folders/.../tmp.XXXX. Open those logs when the details column points to a path inside.
Pre-Release Gate: 1.5.0 (Obsidian plugin)
=============================================
| # | Check | Status | Details
|----|------------------------|--------|--------
| 1 | Deps current | PASS |
| 2 | Clean working tree | PASS |
| 3 | On default branch | PASS | main
| 4 | Up to date with remote | WARN | behind by 2
| 5 | No open PRs | PASS |
| 6 | Validate | PASS | validate script
| 7 | Tests pass | SKIP | run by validate
| 8 | Walkthrough current | SKIP | no walkthrough.md
| 9 | Dependency audit | PASS |
| 10 | Version consistency | FAIL | pkg=1.5.0 mf=1.4.0 vj=false
| 11 | CHANGELOG entry | PASS | ## 1.5.0 found
| 12 | CI passing | PASS |
| 13 | Tag available | PASS | 1.5.0 not yet tagged
| 14 | Prior release exists | PASS | 1.4.0
| 15 | Changes since last tag | INFO | 8 commits since 1.4.0
Result: BLOCKED (1 failures, 1 warnings)
Show the script's table to the user as-is. Then:
obsidian-release to cut the prep PR.Deps current — bun update --latest bumped package.json / bun.lock; review, commit (chore(deps): update), and re-run. If the update itself failed, see the log path in the details column.Clean working tree — commit or stash the modified filesOn default branch — git checkout <default> (details column shows current vs expected)Validate / Build / Tests pass / Walkthrough current / Dependency audit — open the log path printed in the details column and work the first error. Build only appears when package.json has no validate script; the two are mutually exclusive.Version consistency — edit package.json, then npm_package_version=X.Y.Z bun run version to sync manifest.json and versions.jsonCHANGELOG entry — add ## <version> section to CHANGELOG.mdCI passing — gh run view <id> on the failed run (the name is in the details column); fix and pushTag available — either bump to a new version, or git tag -d <version> and git push --delete origin <version> if the tag was created in errorUp to date with remote (behind) — git pull --ff-only to catch upNo open PRs (N open) — review with gh pr list --base main --state open; merge, close, or acknowledgeCI passing (no recent runs) — push a commit or re-run the latest workflow, wait for success, then re-run the gateCI passing (last run was skipped/cancelled/neutral/action_required) — the most recent workflow didn't produce a real verdict. Usually safe to acknowledge if it was skipped by path filters or a conditional; otherwise re-run that workflow until you get a success.walkthrough.md)If all checks pass (or warnings are acknowledged), hand off to the obsidian-release skill — it runs the prep-PR-based release workflow.
obsidian-releasetesting
Audits ~/.claude/skills/ for unused entries, duplicate names, missing descriptions, and the longest descriptions. Use when trimming the user-level skill set, asking which skills are unused, finding duplicates, or auditing skill hygiene.
tools
Publishes and manages Flowershow sites with the `fl` CLI (the Go-based successor to the deprecated `@flowershow/publish` npm package). Use when publishing a note or folder to Flowershow, syncing updates to an existing site, managing auth, listing or deleting sites, or installing/upgrading the CLI.
tools
Copy edits prose while preserving voice and register. Use when asked to edit, copy edit, line edit, proofread, revise, polish, tighten, rewrite, or clean up essays, articles, drafts, or fiction. Flags wordiness, passive voice, clichés, hedging, and nominalizations with bracket markup or clean rewrites.
tools
Improves CLAUDE.md by analyzing conversation patterns. Use when Claude keeps repeating a mistake, when teaching a new preference, or when consolidating guidance from repeated instructions. Captures recurring corrections and style preferences into project instructions.