Verdaccio Pull Request Workflow
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
$ npx skills add UfoMiao/zcf --skill zcf-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UfoMiao/zcf zcf-release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/zcf-release .claude/skills/zcf-release && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .claude/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add UfoMiao/zcf --skill zcf-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UfoMiao/zcf zcf-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/zcf-release .agents/skills/zcf-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .agents/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UfoMiao/zcf --skill zcf-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UfoMiao/zcf zcf-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/zcf-release .cursor/skills/zcf-release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .cursor/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/UfoMiao/zcf.git --path .claude/skills/zcf-release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add UfoMiao/zcf --skill zcf-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UfoMiao/zcf zcf-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/zcf-release .gemini/skills/zcf-release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .gemini/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install UfoMiao/zcf zcf-releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add UfoMiao/zcf --skill zcf-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/zcf-release .github/skills/zcf-release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .github/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add UfoMiao/zcf --skill zcf-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UfoMiao/zcf zcf-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UfoMiao/zcf.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/zcf-release .opencode/skills/zcf-release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "zcf-release" agent skill from https://github.com/UfoMiao/zcf/tree/main/.claude/skills/zcf-release into .opencode/skills/zcf-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "zcf-release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
zcf-releaseAutomates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request.
Run as /zcf-release with a patch, minor or major flag, or an exact version such as a beta, this skill acts as a release assistant. It checks that the working directory is a project root with a package.json and is in a releasable state, then analyzes everything changed since the last release tag with git.
From that analysis it writes a CHANGELOG entry with English first and Chinese second, sorted into groups such as new features, optimization and fixes, creates a changeset file with a timestamped name and uses changeset to update the version number. Because the main branch is protected, it creates a release branch and pull request, commits code changes without manual tags, and relies on GitHub Actions to publish to npm and tag after the PR merges. Its allowed tools cover reading files and running git, pnpm, node, date, cat and gh.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 63cb2d0. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Read(**)Exec(gitpnpmnodedatecatgh)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitpnpmnodetsxghchangesetFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
claude.aiFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
ZCF Release Automation loads about 3.4k tokens when it runs. Until then it costs about 17 tokens; SKILL.md has 561 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from UfoMiao/zcf at commit 63cb2d0, republished under its MIT licence (© UfoMiao). 561 words, ~3,371 tokens.
.claude/skills/zcf-release/SKILL.md (or your agent's skills folder).Automate version release and code commit using changeset.
/zcf-release [-p|-mi|-ma|<version>]-p or --patch: Patch version (default) - bug fixes, minor changes-mi or --minor: Minor version - new features, backward compatible-ma or --major: Major version - breaking changes, incompatible<version>: Specific version number (e.g., 1.2.3, 2.0.0-beta.1) - directly use provided versionYou are a professional release management assistant responsible for:
Parse arguments: $ARGUMENTS
VERSION_TYPE="patch" # Default to patch version
SPECIFIC_VERSION="" # For user-specified exact version
# Check if argument looks like a version number (matches semver pattern)
if [[ "$ARGUMENTS" =~ ^[0-9]+\.[0-9]+\.[0-9]+([.-].*)?$ ]]; then
SPECIFIC_VERSION="$ARGUMENTS"
VERSION_TYPE="custom"
echo "🚀 Preparing to release exact version: $SPECIFIC_VERSION"
else
case "$ARGUMENTS" in
-p|--patch)
VERSION_TYPE="patch"
;;
-mi|--minor)
VERSION_TYPE="minor"
;;
-ma|--major)
VERSION_TYPE="major"
;;
"")
VERSION_TYPE="patch"
;;
*)
echo "❌ Unknown parameter: $ARGUMENTS"
echo "Usage: /zcf-release [-p|-mi|-ma|<version>]"
echo "Examples:"
echo " /zcf-release -p # Patch version bump"
echo " /zcf-release -mi # Minor version bump"
echo " /zcf-release -ma # Major version bump"
echo " /zcf-release 1.2.3 # Exact version"
echo " /zcf-release 2.0.0-beta.1 # Pre-release version"
exit 1
;;
esac
echo "🚀 Preparing to release $VERSION_TYPE version"
fiCheck if the current working directory meets release conditions:
# Ensure in project root directory
if [ ! -f "package.json" ]; then
echo "❌ Error: package.json not found, please run in project root"
exit 1
fi
# Check for uncommitted changes and handle automatically
HAS_UNCOMMITTED=false
if ! git diff --quiet || ! git diff --cached --quiet; then
echo "⚠️ Detected uncommitted changes:"
git status --short
echo ""
HAS_UNCOMMITTED=true
fi
echo "✅ Working directory status OK"Analyze all changes since last release:
# Get last release tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
echo "📊 No previous version tag found, analyzing all commits"
COMMITS=$(git log --oneline)
else
echo "📊 Last version: $LAST_TAG"
echo "Analyzing changes since $LAST_TAG..."
COMMITS=$(git log $LAST_TAG..HEAD --oneline)
fi
# Show commit history
echo -e "\n📝 Changes:"
echo "$COMMITS"
# Analyze file changes
echo -e "\n📁 File change statistics:"
if [ -z "$LAST_TAG" ]; then
git diff --stat
else
git diff --stat $LAST_TAG..HEAD
fiBased on code change analysis, I will generate CHANGELOG following these standards:
Format Requirements:
Example Format:
## New Features
- Add technical execution guidelines with command best practices
- Support automated release command /zcf-release
- Automatic quote handling for Windows paths
## 新功能
- 添加技术执行指南文档,提供命令执行最佳实践
- 支持自动化发版命令 /zcf-release
- Windows 路径自动加引号处理
## Optimization
- Prioritize ripgrep for better search performance
- Improve template file organization
## 优化
- 优先使用 ripgrep 提升搜索性能
- 改进模板文件组织结构
## Fixes
- Fix Windows path backslash escaping issue
## 修复
- 修复 Windows 路径反斜杠丢失问题Create changeset file based on analysis:
# Generate timestamp
TIMESTAMP=$(date +%Y%m%d%H%M%S)
CHANGESET_FILE=".changeset/release-$TIMESTAMP.md"
# Create changeset file
echo "📝 Creating changeset file..."
if [ "$VERSION_TYPE" = "custom" ]; then
# For specific version, use the exact version number
cat > "$CHANGESET_FILE" << EOF
---
"zcf": $SPECIFIC_VERSION
---
[Bilingual CHANGELOG content generated based on actual changes]
EOF
echo "✅ Changeset file created with exact version: $SPECIFIC_VERSION"
else
# For version type (patch/minor/major), use the type
cat > "$CHANGESET_FILE" << EOF
---
"zcf": $VERSION_TYPE
---
[Bilingual CHANGELOG content generated based on actual changes]
EOF
echo "✅ Changeset file created with version type: $VERSION_TYPE"
fiUse changeset to update version number and CHANGELOG:
echo "🔄 Updating version number and CHANGELOG..."
pnpm changeset version
# Note: The changeset version command will automatically:
# 1. Update package.json version
# 2. Generate/update CHANGELOG.md
# 3. DELETE the temporary changeset file in .changeset/ directory
# No manual cleanup needed!
# Get new version number
NEW_VERSION=$(node -p "require('./package.json').version")
if [ "$VERSION_TYPE" = "custom" ]; then
echo "📦 New version set to: v$NEW_VERSION (specified: $SPECIFIC_VERSION)"
else
echo "📦 New version: v$NEW_VERSION"
fi
# Show CHANGELOG update
echo -e "\n📋 CHANGELOG has been updated, please review the content"
echo "✅ Temporary changeset file has been automatically deleted"Create release branch first, then handle commits separately to avoid polluting main branch:
echo "🚀 Creating release branch..."
# Create and switch to release branch
RELEASE_BRANCH="release/v$NEW_VERSION"
git checkout -b "$RELEASE_BRANCH"
# Handle uncommitted changes first (if any)
if [ "$HAS_UNCOMMITTED" = true ]; then
echo "📝 Committing pre-release changes..."
# Stage only the uncommitted changes (exclude changeset modifications)
git add .
git reset HEAD package.json CHANGELOG.md 2>/dev/null || true
# Check if there are still changes to commit after reset
if ! git diff --quiet --staged; then
# Analyze the staged changes to generate appropriate commit message
echo "🔍 Analyzing uncommitted changes..."
CHANGED_FILES=$(git diff --staged --name-only)
# Generate commit message based on changed files
COMMIT_TYPE="chore"
COMMIT_SCOPE=""
COMMIT_DESCRIPTION="pre-release changes"
# Analyze file patterns to determine commit type and scope
if echo "$CHANGED_FILES" | grep -E "\.(md|txt)$" >/dev/null; then
if echo "$CHANGED_FILES" | grep -i "readme" >/dev/null; then
COMMIT_TYPE="docs"
COMMIT_SCOPE="readme"
COMMIT_DESCRIPTION="update README documentation"
elif echo "$CHANGED_FILES" | grep -E "\.claude/" >/dev/null; then
COMMIT_TYPE="docs"
COMMIT_SCOPE="commands"
COMMIT_DESCRIPTION="update command documentation"
else
COMMIT_TYPE="docs"
COMMIT_DESCRIPTION="update documentation"
fi
elif echo "$CHANGED_FILES" | grep -E "\.(ts|js|tsx|jsx)$" >/dev/null; then
if echo "$CHANGED_FILES" | grep -E "test|spec" >/dev/null; then
COMMIT_TYPE="test"
COMMIT_DESCRIPTION="update tests"
else
COMMIT_TYPE="feat"
COMMIT_DESCRIPTION="code changes"
fi
elif echo "$CHANGED_FILES" | grep -E "\.json$" >/dev/null; then
if echo "$CHANGED_FILES" | grep "package" >/dev/null; then
COMMIT_TYPE="chore"
COMMIT_DESCRIPTION="update dependencies"
else
COMMIT_TYPE="chore"
COMMIT_DESCRIPTION="update configuration"
fi
fi
# Build commit message
if [ -n "$COMMIT_SCOPE" ]; then
COMMIT_MSG="${COMMIT_TYPE}(${COMMIT_SCOPE}): ${COMMIT_DESCRIPTION}"
else
COMMIT_MSG="${COMMIT_TYPE}: ${COMMIT_DESCRIPTION}"
fi
# Add file list to commit body
COMMIT_BODY=""
for file in $CHANGED_FILES; do
COMMIT_BODY="${COMMIT_BODY}- Update ${file}
"
done
COMMIT_BODY="${COMMIT_BODY}
🤖 Generated with [Claude Code](https://claude.ai/code)
# Create the commit
git commit -m "${COMMIT_MSG}
${COMMIT_BODY}"
echo "✅ Pre-release changes committed: $COMMIT_MSG"
else
echo "ℹ️ No additional changes to commit after version update"
fi
fi
echo "💾 Committing release version changes..."
# Add version-related changes
git add package.json CHANGELOG.md
# Create release version commit
git commit -m "chore: release v$NEW_VERSION
- Update version to $NEW_VERSION
- Update CHANGELOG.md
- Generated by /zcf-release command"
# Push release branch to remote and set upstream tracking
git push -u origin "$RELEASE_BRANCH"
# If push fails due to conflicts, use force-with-lease to safely overwrite
# git push --force-with-lease origin "$RELEASE_BRANCH"
# Set upstream tracking if not set automatically
git branch --set-upstream-to=origin/$RELEASE_BRANCH $RELEASE_BRANCH
### 8. Create Pull Request
```bash
echo "📋 Creating pull request..."
# Create pull request using gh CLI following the project's PR template
gh pr create --title "🚀 Release v$NEW_VERSION" --body "$(cat <<'EOF'
## Description
Release version v$NEW_VERSION with automated version bump and CHANGELOG update.
This release includes important changes, please review CHANGELOG.md for details.
## Type of Change
- [x] New feature
- [ ] Bug fix
- [ ] Breaking change
- [x] Documentation update
## Testing
- [x] Tests added/updated
- [x] All tests pass
- [x] Coverage maintained
## Checklist
- [x] Code follows style guidelines
- [x] Self-review completed
- [x] Documentation updated
- [x] No new warnings introduced
## Release Notes
⚠️ **IMPORTANT**: After merge, GitHub Actions will automatically:
- Create release tag
- Publish to npm
- Generate GitHub Release
🤖 Generated by /zcf-release command
EOF
)"
echo -e "\n✅ Release preparation complete!"
echo "📦 Version v$NEW_VERSION is ready"
echo "🔗 Pull request created successfully"
echo ""
echo "⚠️ IMPORTANT: Review and merge the PR to trigger the release"
echo "⚠️ Do NOT create or push tags manually!"
echo "🤖 After PR merge, GitHub Actions will automatically:"
echo " - Create the release tag"
echo " - Publish to npm"
echo " - Generate GitHub Release"
echo "👀 View release status: https://github.com/UfoMiao/zcf/actions"⚠️ CRITICAL: NEVER create or push Git tags manually! GitHub Actions will automatically:
Manual tags will cause conflicts with the automated release process!
release/v{version} branchchangeset version automatically deletes temporary changeset files.changeset/ directory should only contain config files, not temporary release filesgh CLI: Ensure GitHub CLI is installed and authenticated for PR creationVersion Parameter Examples:
/zcf-release or /zcf-release -p - Auto patch bump (2.9.11 → 2.9.12)/zcf-release -mi - Auto minor bump (2.9.11 → 2.10.0) /zcf-release -ma - Auto major bump (2.9.11 → 3.0.0)/zcf-release 1.5.0 - Exact version (→ 1.5.0)/zcf-release 3.0.0-alpha.1 - Pre-release version (→ 3.0.0-alpha.1)Now starting release process...
© UfoMiao, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/zcf-release of UfoMiao/zcf.
Open the folder on GitHubat commit 63cb2d0
ZCF Release Automation next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| ZCF Release Automation this skillUfoMiao/zcf | 6.1k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Hunk Release Workflowmodem-dev/hunk | 9.6k | — | ~3.8k | Automated safety check: Pass | MIT | |
| ClawRouter Release ChecklistBlockRunAI/ClawRouter | 6.6k | — | ~1.4k | Automated safety check: Pass | MIT | |
| npm Package Publisherklaudworks/universal-skills | 181 | — | ~923 | Automated safety check: Pass | MIT | |
| CI Automationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.4k | Automated safety check: Notes | MIT |
verdaccio/verdaccio
Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
BlockRunAI/ClawRouter
Walks the agent through every ClawRouter release step in order, from the version bump and changelog entry to build, tests, npm publish, git tag and GitHub release.
klaudworks/universal-skills
Releases an npm package by committing changes, bumping the version with npm version, pushing the tag and checking the GitHub Actions publish.
jeremylongshore/tons-of-skills-marketplace
A skill your agent uses when running GitHub Actions locally, creating task runner recipes, generating changelogs from git history, managing GitHub PRs/issues/releases programmatically, or creating…
iOfficeAI/AionUi
Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.
UfoMiao/zcf
Onboards a corporate sponsor to ZCF by listing it in the three READMEs, and optionally registers its API preset and places ad cards in docs.
UfoMiao/zcf
Analyzes the current branch's changes since it diverged from base and opens a pull request through the GitHub CLI with an auto-generated, standardized description.
UfoMiao/zcf
Compares code changes since the last Git tag with the multilingual docs and CLAUDE.md, then updates them or only reports mismatches with --check-only.
Works with
Categories
Automates a version release with changesets: analyzes code changes, writes a bilingual CHANGELOG, bumps the version and commits through a release branch and pull request. Run as /zcf-release with a patch, minor or major flag, or an exact version such as a beta, this skill acts as a release assistant.json and is in a releasable state, then analyzes everything changed since the last release tag with git.
ZCF Release Automation fits situations like: cutting a patch, minor or major release of an npm package that uses changesets; generating a bilingual changelog from the changes since the last tag; preparing a release pull request for a protected main branch.
Run `npx skills add UfoMiao/zcf --skill zcf-release -a claude-code`. Or copy the skill folder (.claude/skills/zcf-release in UfoMiao/zcf) into .claude/skills/zcf-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UfoMiao/zcf --skill zcf-release -a codex`. Or copy the skill folder (.claude/skills/zcf-release in UfoMiao/zcf) into .agents/skills/zcf-release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add UfoMiao/zcf --skill zcf-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/zcf-release, .gemini/skills/zcf-release, .github/skills/zcf-release and .opencode/skills/zcf-release in your project.
Going by SKILL.md and its folder, ZCF Release Automation needs the command-line tools its instructions call (git, pnpm, node, tsx, gh and changeset). Our summary lists: A Node project with a package.json and changesets; git, pnpm and the gh CLI. Its frontmatter pre-approves these tools: Read(**), Exec(git, pnpm, node, date, cat, gh).
SKILL.md names 1 domain. In commands or code: claude.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
ZCF Release Automation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with ZCF Release Automation: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Hunk Release Workflow (modem-dev/hunk, 9.6k stars), ClawRouter Release Checklist (BlockRunAI/ClawRouter, 6.6k stars) and npm Package Publisher (klaudworks/universal-skills, 181 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
UfoMiao (a GitHub organization) maintains it in UfoMiao/zcf, which has 6,079 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on August 31, 2026.
Source: UfoMiao/zcf on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.