skills/dimon94/npm-release/SKILL.md
Use when ready to publish a new version of cc-devflow npm package to npm registry
npx skillsauth add aiskillstore/marketplace npm-releaseInstall 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.
Standardized release process for cc-devflow npm package ensuring consistent versioning, changelog maintenance, and safe publishing.
Core Principle: Atomic release - all version markers (package.json, CHANGELOG.md, git tag) must stay in sync.
Use this skill when:
Don't use when:
Follow Semantic Versioning:
| Type | Version Change | When | |------|---------------|------| | Patch | 2.4.3 → 2.4.4 | Bug fixes, minor improvements | | Minor | 2.4.4 → 2.5.0 | New features, backward compatible | | Major | 2.5.0 → 3.0.0 | Breaking changes |
# 1. Verify git status
git status
# MUST show: "On branch main", "working tree clean"
# 2. Check current version
cat package.json | grep version
# e.g., "version": "2.4.3"
# 3. Review recent changes
git log --oneline -10
STOP if:
Step 1: Update CHANGELOG.md
Add new version section at the top (after ---):
## [X.Y.Z] - YYYY-MM-DD
### 🎯 Release Title
Brief description of main changes.
#### Changed / Added / Fixed
- Bullet point 1
- Bullet point 2
#### Benefits
- ✅ Benefit 1
- ✅ Benefit 2
Step 2: Update package.json
# Manually edit or use npm version
npm version patch --no-git-tag-version # For patch release
npm version minor --no-git-tag-version # For minor release
npm version major --no-git-tag-version # For major release
Or edit directly:
{
"version": "X.Y.Z"
}
Step 1: Create Release Commit
git add CHANGELOG.md package.json
git commit -m "$(cat <<'EOF'
chore(release): bump version to X.Y.Z
Release X.Y.Z - [Brief title]
主要变更:
- 变更点 1
- 变更点 2
Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
EOF
)"
Step 2: Create Annotated Tag
git tag -a vX.Y.Z -m "$(cat <<'EOF'
Release vX.Y.Z - [Brief title]
🎯 Main changes:
- Change 1
- Change 2
Benefits:
✅ Benefit 1
✅ Benefit 2
Full changelog: https://github.com/Dimon94/cc-devflow/blob/main/CHANGELOG.md
EOF
)"
Step 3: Verify
# Check commit
git log --oneline -1
# Check tag
git tag -l "v2.4.*" | tail -3
# Verify tag annotation
git show vX.Y.Z
Step 1: Push to GitHub
# Push commits
git push origin main
# Push tags
git push origin vX.Y.Z
# Or push all tags: git push origin --tags
Step 2: Create GitHub Release (Optional)
Via GitHub CLI:
gh release create vX.Y.Z \
--title "vX.Y.Z - [Title]" \
--notes-file <(sed -n '/## \[X.Y.Z\]/,/## \[/p' CHANGELOG.md | head -n -1)
Or manually at: https://github.com/Dimon94/cc-devflow/releases/new
Step 3: Publish to npm
# Test publish first (dry-run)
npm publish --dry-run
# Actual publish
npm publish
# Verify publication
npm view cc-devflow version
| Step | Command | Purpose |
|------|---------|---------|
| Check status | git status | Verify clean state |
| Check version | grep version package.json | Current version |
| Bump version | Edit package.json | Update version number |
| Update changelog | Edit CHANGELOG.md | Document changes |
| Create commit | git commit -m "chore(release): ..." | Commit version bump |
| Create tag | git tag -a vX.Y.Z -m "..." | Tag release |
| Push commits | git push origin main | Push to GitHub |
| Push tags | git push origin vX.Y.Z | Push tag to GitHub |
| Publish npm | npm publish | Publish to registry |
Problem: Version bumped but no changelog entry
Fix: Always update CHANGELOG.md BEFORE committing
Problem: package.json shows 2.4.4 but CHANGELOG.md shows 2.4.3
Fix: Double-check all version numbers match before committing
Problem: Tag points to wrong commit
Fix: Always commit first, then tag, then push both together
Problem: Published package is broken
Fix: Run npm publish --dry-run first to catch issues
Problem: Failed to connect to github.com port 443
Fix:
# Option 1: Retry after network stabilizes
git push origin main
git push origin vX.Y.Z
# Option 2: Switch to SSH (if HTTPS blocked)
git remote set-url origin [email protected]:Dimon94/cc-devflow.git
git push origin main
If git push fails with timeout:
Check network connectivity:
curl -I https://github.com 2>&1 | head -5
Try SSH instead of HTTPS:
git remote -v # Check current remote URL
git remote set-url origin [email protected]:Dimon94/cc-devflow.git
If SSH fails (publickey error):
ssh -T [email protected]Commits and tags are safe locally:
After successful release:
# 1. Verify GitHub tag
open https://github.com/Dimon94/cc-devflow/tags
# 2. Verify npm package
npm view cc-devflow version
npm view cc-devflow time
# 3. Test installation
npm install -g cc-devflow@latest
cc-devflow --version # Should show new version
If published version has critical bugs:
# 1. Unpublish from npm (within 72 hours)
npm unpublish [email protected]
# 2. Delete git tag locally and remotely
git tag -d vX.Y.Z
git push origin :refs/tags/vX.Y.Z
# 3. Revert commit
git revert HEAD
# 4. Fix bug and re-release with new patch version
Note: npm unpublish is only available within 72 hours of publication. After that, publish a new patch version instead.
Following this workflow ensures:
[PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.