From dev-core
Set up commit standards and release automation — Commitizen, commitlint, semantic-release, Release Please, Lefthook/Husky. Triggers: "release setup" | "setup releases" | "commit standards" | "setup release automation".
npx claudepluginhub roxabi/roxabi-plugins --plugin dev-coreThis skill is limited to using the following tools:
Let:
Provides standard release-please configurations for GitHub Actions workflows to automate semantic versioning, changelog generation, and releases for Node.js, Python, Helm, and multi-package repos.
Configures Google's release-please for automated semantic versioning, changelog generation, and GitHub releases in single-package and monorepo repositories.
Sets up Git hooks with Husky, lint-staged, pre-commit framework, and commitlint to automate linting, formatting, testing, and commit message validation before CI.
Share bugs, ideas, or general feedback.
Let:
F := --force flag present in $ARGUMENTS
σ := .claude/stack.yml
D✅(label) := Display: {label} ✅ Configured
D⏭(label) := Display: {label} ⏭ Already configured
D⚠(label) := Display: {label} ⚠️ Install failed — check network/lockfile
Configure commit standards and release automation: Commitizen + commitlint, hook runner (Lefthook or Husky), and semantic-release or Release Please.
Can run standalone (/release-setup) or be called by /init after /ci-setup.
Check prerequisites and per-component state before any installation.
Verify σ exists:
test -f .claude/stack.yml && echo "found" || echo "missing"
missing → warn: "stack.yml not found — release-setup reads runtime and hook runner from it."
→ DP(A) Run /env-setup first | Proceed manually
Proceed manually → continue with defaults (runtime: node, package_manager: npm, hooks.tool: none).
Check per-component config file existence in parallel:
test -f .lefthook.yml && echo "has_lefthook" || echo "no_lefthook"
test -d .husky && echo "has_husky" || echo "no_husky"
test -f .commitlintrc.cjs && echo "has_commits" || echo "no_commits"
test -f release.config.cjs && echo "has_sr" || echo "no_sr"
test -f release-please-config.json && echo "has_rp" || echo "no_rp"
Set booleans from results:
has_hook_runner := has_lefthook ∨ has_huskyhas_commits := .commitlintrc.cjs ∃has_releases := release.config.cjs ∃ ∨ release-please-config.json ∃has_lefthook := .lefthook.yml ∃F overrides all guards → treat all booleans as false (re-run all components).
Read configuration and detect environment.
Read σ fields: runtime, package_manager, hooks.tool, commands.lint, commands.typecheck.
Defaults if σ missing: runtime=node, package_manager=npm, hooks.tool=none, commands.lint=npm run lint, commands.typecheck=npm run typecheck.
Detect existing hook runner via file checks:
test -f .lefthook.yml && echo "lefthook" || (test -d .husky && echo "husky" || echo "none")
Detect branches:
git branch -r | grep -E 'staging|develop|main|master'
Store as branch_list. Default to ['main'] if only one or none detected.
Phase 2 — Hook Runner → Read ${CLAUDE_SKILL_DIR}/cookbooks/hook-runner.md, execute.
Phase 3 — Commit Standards → Read ${CLAUDE_SKILL_DIR}/cookbooks/commit-standards.md, execute.
Phase 4 — Release Automation → Read ${CLAUDE_SKILL_DIR}/cookbooks/release-automation.md, execute.
Phase 5 — Summary (below).
Display results and generated files. Do NOT run git add or git commit.
Display summary table:
Release Setup Complete
======================
Hook runner ✅ Configured / ⏭ Already configured / ⏭ Skipped
Commit standards ✅ Configured / ⏭ Already configured / ⏭ Python not supported / ⏭ Skipped
Release automation ✅ Configured / ⏭ Already configured / ⏭ Skipped
List generated files (only those actually written):
Generated files:
.lefthook.yml
.pre-commit-config.yaml (Python only)
.husky/pre-commit (Husky only)
.husky/commit-msg (Husky + Commitizen)
.commitlintrc.cjs (Commitizen chosen)
release.config.cjs (semantic-release chosen)
release-please-config.json (Release Please chosen)
.release-please-manifest.json (Release Please chosen)
Display suggested commit command:
Suggested commit:
git add <generated-files>
git commit -m "chore: add release setup"
$ARGUMENTS