skills/pre-release-obsidian-plugin/SKILL.md
Validates a project is ready to tag and ship. Use when tagging a release, cutting a version, shipping a package, or asking "are we ready to release?" Checks repo hygiene, CI status, docs, version sync, and build verification. Optimized for Obsidian plugins with fallback detection for other project types.
npx skillsauth add philoserf/claude-code-setup skills/pre-release-obsidian-pluginInstall 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 a project is ready to tag and release. Runs every check, reports a summary, and blocks on failures.
Invoke with an optional version argument:
/pre-release-obsidian-plugin — detect version from package.json, manifest.json, or similar/pre-release-obsidian-plugin 1.2.0 — verify against a specific expected versionDetect the project type from the root directory before running checks. This determines which commands and files to verify.
Obsidian plugin (primary path): manifest.json contains an id field and obsidian appears in devDependencies. Expect package.json, manifest.json, versions.json, and build artifacts main.js, styles.css.
Other projects: Detect from go.mod (Go), pyproject.toml (Python), Cargo.toml (Rust), or fall back to generic checks. Adapt commands accordingly — the checklist structure stays the same, but the specific commands change.
Run all checks from the project root. Use parallel tool calls where checks are independent. Report results as they complete.
Run these in parallel:
git status must show no uncommitted changes (staged or unstaged). Untracked files are acceptable only if covered by .gitignore.main (or the repo's default). Releases should be tagged from the default branch.git fetch origin then compare HEAD with origin/main. Warn if behind.gh pr list --base main --state open should be empty or the user should acknowledge pending PRs.Run the project's validation pipeline. For Obsidian plugins, this is typically a single command that covers multiple concerns.
bun run validate, make validate, etc.). For Obsidian plugins, this typically runs type checking, linting, build, and verifies artifacts exist. If no validate script exists, run check/lint, test, and build as separate steps.bun test, go test ./..., pytest, etc.). Skip if the validate script already ran tests.walkthrough.md exists, run uvx showboat verify walkthrough.md to confirm code blocks match current source. Skip if no walkthrough exists.bun audit --audit-level=critical, uv pip audit, go vuln check, etc.). Warn on high severity, block on critical.package.json → versionmanifest.json → version (Obsidian plugins)versions.json — must have an entry mapping the target version to a minAppVersion (Obsidian plugins)Cargo.toml, pyproject.toml, go.mod — as applicable
If versions disagree, suggest running the version-bump script (e.g., bun run version) if one exists.CHANGELOG.md (or equivalent) must have a section for the target version.gh run list --branch main --limit 1 should show a successful run. If the latest run failed, report which jobs failed.git tag -l <version> must be empty (tag doesn't already exist).git log --oneline <last-tag>..HEAD so the user can review what's included.Present a summary table after all checks complete:
Pre-Release Gate: v2.0.0 (Obsidian plugin)
===========================================
| # | Check | Status | Details |
|----|------------------------|--------|--------------------------------|
| 1 | Clean working tree | PASS | |
| 2 | On default branch | PASS | main |
| 3 | Up to date with remote | PASS | |
| 4 | No open PRs | WARN | 1 open PR (#36) |
| 5 | Validate | PASS | types, lint, build, artifacts |
| 6 | Tests pass | PASS | 12 tests |
| 7 | Walkthrough current | PASS | showboat verified |
| 8 | Dependency audit | PASS | |
| 9 | Version consistency | PASS | 2.0.0 across all files |
| 10 | CHANGELOG entry | PASS | 2.0.0 section found |
| 11 | CI passing | PASS | |
| 12 | Tag available | PASS | 2.0.0 not yet tagged |
| 13 | Prior release exists | PASS | 1.5.0 |
| 14 | Changes since last tag | INFO | 8 commits |
Result: READY (0 failures, 1 warning)
If all checks pass (no FAIL status), ask the user if they want to proceed with tagging. The release workflow is tag-push — GitHub Actions handles building and publishing the release:
git tag -a <version> -m "Release <version>"
git push origin <version>
For Obsidian plugins, this triggers the release workflow which builds the plugin and creates a GitHub release with main.js, styles.css, and manifest.json as assets.
If any check fails, list the failures and suggest specific fixes. Do not offer to tag.
release-obsidian-pluginvc-shiptesting
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.