Cc-skills release
Run semantic-release with preflight checks. TRIGGERS - npm run release, version bump, changelog, release automation.
install
source · Clone the upstream repo
git clone https://github.com/terrylica/cc-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/terrylica/cc-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/itp/skills/release" ~/.claude/skills/terrylica-cc-skills-release && rm -rf "$T"
manifest:
plugins/itp/skills/release/SKILL.mdsource content
/itp:release
Delegate to the repository's mise release tasks. Every repo should define its own release DAG in
.mise/tasks/release/.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
First Action: Detect Repo's Release Tasks
# Check if the repo has mise release tasks mise tasks ls 2>/dev/null | grep -i release
- If tasks exist: Delegate to
(or the repo's equivalent)mise run release:full - If no tasks: Fall back to reading the semantic-release skill for guidance
Arguments
| Flag | Short | Description |
|---|---|---|
| | Dry-run mode (preview, no modifications) |
| | Show current version and release state |
Execution
# Full release (preflight → version → sync → verify) mise run release:full # Dry-run (preview what would be released) mise run release:dry # Check current state mise run release:status
Why mise Tasks Over Prescriptive Skills
| Concern | Prescriptive Skill | mise Task Delegation |
|---|---|---|
| Repo-specific logic | Duplicated in skill | Lives in |
| DAG enforcement | Manual ordering | array enforced |
| Maintainability | Update skill + tasks | Single source in tasks |
| Portability | Assumes npm/bun | Uses whatever the repo configures |
| Secrets | Hardcoded patterns | in |
Expected mise Release Task Structure
Repos should follow the hub-and-spoke pattern:
.mise.toml # Hub: [env] + [tools] + task docs .mise/tasks/ └── release/ ├── _default # Help / navigation ├── preflight # Phase 1: Validate prerequisites ├── version # Phase 2: Bump version (semantic-release) ├── sync # Phase 3: Sync artifacts (marketplace, cache) ├── verify # Phase 4: Verify release artifacts ├── full # Orchestrator: depends on all phases ├── dry # Dry-run preview └── status # Current version info
Task DAG
┌──────────┐ │ preflight│ └─────┬────┘ │ depends ┌─────▼────┐ │ version │ └─────┬────┘ │ sequential ┌─────▼────┐ │ sync │ └─────┬────┘ │ sequential ┌─────▼────┐ │ verify │ └──────────┘
Key Patterns
# .mise/tasks/release/full (orchestrator) depends = ["release:preflight"] # Chains: preflight → version → sync → verify # .mise/tasks/release/preflight (guard) # Checks: clean dir, auth, plugins, releasable commits # .mise/tasks/release/version (core) depends = ["release:preflight"] # Runs: semantic-release (or language-specific versioning)
Fallback: No mise Tasks
If the repo has no mise release tasks, read the semantic-release skill:
Read: ${CLAUDE_PLUGIN_ROOT}/skills/semantic-release/SKILL.md Read: ${CLAUDE_PLUGIN_ROOT}/skills/semantic-release/references/local-release-workflow.md
Then follow the 4-phase workflow documented there.
Error Recovery
| Error | Resolution |
|---|---|
not found | Install mise: |
| No release tasks | Create or use fallback skill |
| Working dir not clean | or commit changes |
| Not on main branch | |
| No releasable commits | Create a or commit first |
| Wrong account | Check / in |
Reference
Post-Execution Reflection
After this skill completes, check before closing:
- Did the command succeed? — If not, fix the instruction or error table that caused the failure.
- Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
- Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.
Only update if the issue is real and reproducible — not speculative.