
Github Release
- 1.1k installs
- 946 repo stars
- Updated July 2, 2026
- jezweb/claude-skills
github-release provides documented workflows for Prepare and publish GitHub releases. Sanitizes code for public release (secrets scan, personal artifacts, LICENSE/README validation), creates version tags, and
About
The github-release skill prepare and publish GitHub releases Sanitizes code for public release secrets scan personal artifacts LICENSE README validation creates version tags and publishes via gh CLI Trigger with release publish open source prepare for release create release or github release GitHub Release Sanitize and release projects to GitHub Two-phase workflow safety checks first then tag and publish Prerequisites gh CLI installed and authenticated gh auth status gitleaks installed for secrets scanning brew install gitleaks or download from GitHub Git repository with a remote configured Workflow Phase 1 Sanitize Run these checks before any public release Scan for Secrets BLOCKER bash gitleaks detect no-git source verbose If secrets found STOP Remove secrets move to environment variables Check git history with git log S secret_value if in history use BFG Repo-Cleaner If gitleaks not installed do manual checks bash Check for env files find name env not path node_modules Check config files for hardcoded secrets grep ri api_key token secret password wrangler toml wrangler jsonc dev vars 2 dev null
- `gh` CLI installed and authenticated (`gh auth status`)
- `gitleaks` installed for secrets scanning (`brew install gitleaks` or download from GitHub)
- Git repository with a remote configured
- `SESSION.md` - session state
- `planning/`, `screenshots/` - working directories
Github Release by the numbers
- 1,135 all-time installs (skills.sh)
- +21 installs in the week ending Jul 29, 2026 (Skillselion tracking)
- Ranked #23 of 248 Release Management skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 31, 2026 (Skillselion catalog sync)
github-release capabilities & compatibility
- Capabilities
- `gh` cli installed and authenticated (`gh auth s · `gitleaks` installed for secrets scanning (`brew · git repository with a remote configured · `session.md` session state · `planning/`, `screenshots/` working directorie
- Use cases
- documentation
What github-release says it does
# GitHub Release Sanitize and release projects to GitHub.
Two-phase workflow: safety checks first, then tag and publish.
npx skills add https://github.com/jezweb/claude-skills --skill github-releaseAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.1k |
|---|---|
| repo stars | ★ 946 |
| Security audit | 3 / 3 scanners passed |
| Last updated | July 2, 2026 |
| Repository | jezweb/claude-skills ↗ |
How do I use github-release for the task described in its SKILL.md triggers?
Prepare and publish GitHub releases. Sanitizes code for public release (secrets scan, personal artifacts, LICENSE/README validation), creates version tags, and publishes via gh CLI. Trigger with 'rel.
Who is it for?
Teams invoking github-release when the user request matches documented triggers and prerequisites.
Skip if: Skip when cached docs are missing, the request is a negative trigger, or another sibling skill owns the workflow.
When should I use this skill?
Prepare and publish GitHub releases. Sanitizes code for public release (secrets scan, personal artifacts, LICENSE/README validation), creates version tags, and publishes via gh CLI. Trigger with 'release', 'publish', 'op
What you get
Step-by-step guidance grounded in github-release documentation and reference files.
- Git release tags
- Changelog text
- GitHub release
By the numbers
- Reads version from package.json via node -p require('./package.json').version
- Supports monorepo scoped tags such as mypackage-v1.0.0
Files
GitHub Release
Sanitize and release projects to GitHub. Two-phase workflow: safety checks first, then tag and publish.
Prerequisites
ghCLI installed and authenticated (gh auth status)gitleaksinstalled for secrets scanning (brew install gitleaksor download from GitHub)- Git repository with a remote configured
Workflow
Phase 1: Sanitize
Run these checks before any public release. Stop on blockers.
1. Scan for Secrets (BLOCKER)
gitleaks detect --no-git --source=. --verboseIf secrets found: STOP. Remove secrets, move to environment variables. Check git history with git log -S "secret_value" — if in history, use BFG Repo-Cleaner.
If gitleaks not installed, do manual checks:
# Check for .env files
find . -name ".env*" -not -path "*/node_modules/*"
# Check config files for hardcoded secrets
grep -ri "api_key\|token\|secret\|password" wrangler.toml wrangler.jsonc .dev.vars 2>/dev/null2. Remove Personal Artifacts
Check for and remove session/planning files that shouldn't be published:
SESSION.md— session stateplanning/,screenshots/— working directoriestest-*.ts,test-*.js— local test files
Either delete them or add to .gitignore.
3. Validate LICENSE
ls LICENSE LICENSE.md LICENSE.txt 2>/dev/nullIf missing: create one. Check the repo visibility (gh repo view --json visibility -q '.visibility'). Use MIT for public repos. For private repos, consider a proprietary license instead.
4. Validate README
Check README exists and has basic sections:
grep -i "## Install\|## Usage\|## License" README.mdIf missing sections, add them before release.
5. Check .gitignore
Verify essential patterns are present:
grep -E "node_modules|\.env|dist/|\.dev\.vars" .gitignore6. Build Test (non-blocking)
npm run build 2>&17. Dependency Audit (non-blocking)
npm audit --audit-level=high8. Create Sanitization Commit
If any changes were made during sanitization:
git add -A
git commit -m "chore: prepare for release"Phase 2: Release
1. Determine Version
Check package.json for current version, or ask the user. Ensure version starts with v prefix.
2. Check Tag Doesn't Exist
git tag -l "v[version]"If it exists, ask user whether to delete and recreate or use a different version.
3. Show What's Being Released
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
git log --oneline --no-merges HEAD | head -20
else
git log --oneline --no-merges ${LAST_TAG}..HEAD
fi4. Create Tag and Push
git tag -a v[version] -m "Release v[version]"
git push origin $(git branch --show-current)
git push origin --tags5. Create GitHub Release
gh release create v[version] \
--title "Release v[version]" \
--notes "[auto-generated from commits]"For pre-releases add --prerelease. For drafts add --draft.
6. Report
Show the user:
- Release URL
- Next steps (npm publish if applicable, announcements)
Reference Files
| When | Read |
|---|---|
| Detailed safety checks | references/safety-checklist.md |
| Release mechanics | references/release-workflow.md |
Release Workflow
Detailed reference for the tag-push-release mechanics.
Version Detection
Check package.json first:
node -p "require('./package.json').version" 2>/dev/nullIf no package.json, ask user for version. Always prefix with v (e.g., v1.0.0).
Monorepo Tags
In monorepos, use scoped tags:
# Single repo
git tag -a v1.0.0 -m "Release v1.0.0"
# Monorepo
git tag -a mypackage-v1.0.0 -m "Release mypackage v1.0.0"Tag Conflicts
If tag already exists locally:
# Delete local tag
git tag -d v1.0.0
# If also on remote (dangerous — confirm with user)
git push origin :refs/tags/v1.0.0Push Sequence
Always push branch first, then tags:
BRANCH=$(git branch --show-current)
git push origin ${BRANCH}
git push origin --tagsIf push fails:
- Set upstream:
git push -u origin ${BRANCH} - Check auth:
gh auth status - Verify remote:
git remote -v
Release Notes
Generate from commits since last tag:
LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -z "$LAST_TAG" ]; then
git log --oneline --no-merges HEAD
else
git log --oneline --no-merges ${LAST_TAG}..HEAD
fiFormat as markdown bullet list under ## What's New.
gh release create
# Standard release
gh release create v1.0.0 --title "Release v1.0.0" --notes "## What's New
- Feature A
- Bug fix B"
# Pre-release (beta/rc)
gh release create v1.0.0-beta.1 --title "v1.0.0 Beta 1" --notes "..." --prerelease
# Draft (not published)
gh release create v1.0.0 --title "Release v1.0.0" --notes "..." --draftPost-Release
Depending on project type:
- npm package:
npm publish - Announce: Social media, relevant communities
- Update docs: Ensure README references latest version
Safety Checklist
Pre-release safety checks for public repositories.
Blockers (must pass)
| Check | How | Fail action |
|---|---|---|
| No secrets in files | gitleaks detect --no-git --source=. | Remove secrets, check git history |
| No secrets in git history | git log -S "sk_" -S "ghp_" -S "PRIVATE KEY" | BFG Repo-Cleaner |
| LICENSE exists | ls LICENSE* | Create MIT or proprietary |
| Remote URL is correct | git remote -v | Fix with git remote set-url |
Warnings (should fix)
| Check | How | Recommendation |
|---|---|---|
| README has Install/Usage/License | `grep -i "## Install\ | ## Usage" README.md` |
| .gitignore has essentials | `grep "node_modules\ | \.env" .gitignore` |
| No personal artifacts | ls SESSION.md planning/ screenshots/ 2>/dev/null | Delete or .gitignore |
| Build succeeds | npm run build | Fix before release |
| No critical vulnerabilities | npm audit --audit-level=high | npm audit fix |
| No large files (>1MB) | find . -size +1M -not -path "*/node_modules/*" -not -path "*/.git/*" | Git LFS or external storage |
Common Secret Patterns
| Pattern | Example |
|---|---|
| API keys | sk_live_..., ghp_..., AKIA... |
| Tokens | Bearer eyJ..., xoxb-... |
| Private keys | -----BEGIN PRIVATE KEY----- |
| Passwords | password = "...", DB_PASSWORD=... |
| Cloudflare | account_id in committed wrangler files with real IDs |
Package.json Fields
For npm packages, verify these fields before publish:
{
"name": "@scope/package",
"version": "1.0.0",
"description": "Clear description",
"license": "MIT",
"repository": { "type": "git", "url": "https://github.com/..." },
"keywords": ["relevant", "terms"]
}Related skills
How it compares
Choose github-release for guided git tag and GitHub release mechanics rather than App Store marketing copy or OWASP security audits.
FAQ
What does github-release do?
Prepare and publish GitHub releases. Sanitizes code for public release (secrets scan, personal artifacts, LICENSE/README validation), creates version tags, and publishes via gh CLI. Trigger with 'release', 'publish', 'op
When should I use github-release?
Prepare and publish GitHub releases. Sanitizes code for public release (secrets scan, personal artifacts, LICENSE/README validation), creates version tags, and publishes via gh CLI. Trigger with 'release', 'publish', 'op
What are common prerequisites?
--- name: github-release description: "Prepare and publish GitHub releases.
Is Github Release safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.