GitHub Push
GitHub Push
Command
/github-push or github-push
Navigate
Git & Security
Keywords
github push, git push, secret detection, api key scan, credential scan, security check, push to github, commit and push, secret scanner, readme generator, safe push, secure push, pre-push hook, leak detection, api key exposed, password exposed
Description
Securely push code to GitHub by automatically scanning for exposed secrets, API keys, and credentials. Auto-generates README.md if missing, configures repo description, live site URL, topics, and enables GitHub Discussions.
Execution
This skill runs using Claude Code with subscription plan. Do NOT use pay-as-you-go API keys. All AI operations should be executed through the Claude Code CLI environment with an active subscription.
Response
I'll help you securely push to GitHub!
The workflow includes:
| Step | Description |
|---|---|
| Secret Scan | Detect exposed API keys, passwords, and credentials |
| File Review | Check for sensitive files that shouldn't be committed |
| README Gen | Auto-generate README.md via /create_github_readme skill if missing |
| Git Commit | Stage and commit with AI-generated message |
| Push | Push to remote repository |
| PR Create | Optionally create a pull request |
| Repo About | Auto-invoke /github-about to set description, live site URL, and topics |
Instructions
When executing /github_push, follow this workflow:
Phase 1: Secret Detection (MANDATORY)
Before ANY git operations, scan the codebase for exposed secrets. This is a blocking requirement - do not proceed if secrets are found.
1.1 Scan Staged Files
git diff --cached --name-only
1.2 Secret Pattern Detection
Scan ALL staged files for these patterns:
AWS Credentials
AKIA[0-9A-Z]{16}
aws_access_key_id\s*=\s*['"][A-Za-z0-9/+=]+['"]
aws_secret_access_key\s*=\s*['"][A-Za-z0-9/+=]+['"]
API Keys (Generic)
api[_-]?key\s*[:=]\s*['"][A-Za-z0-9_\-]{20,}['"]
apikey\s*[:=]\s*['"][A-Za-z0-9_\-]{20,}['"]
api[_-]?secret\s*[:=]\s*['"][A-Za-z0-9_\-]{20,}['"]
Private Keys
-----BEGIN (RSA|DSA|EC|OPENSSH|PGP) PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----
Database Connection Strings
postgres(ql)?://[^\s'"]+
mysql://[^\s'"]+
mongodb(\+srv)?://[^\s'"]+
redis://[^\s'"]+
OAuth & Bearer Tokens
bearer\s+[A-Za-z0-9\-_.~+/]+=*
oauth[_-]?token\s*[:=]\s*['"][A-Za-z0-9_\-]+['"]
access[_-]?token\s*[:=]\s*['"][A-Za-z0-9_\-]+['"]
refresh[_-]?token\s*[:=]\s*['"][A-Za-z0-9_\-]+['"]
Cloud Provider Secrets
# Google Cloud
AIza[0-9A-Za-z\-_]{35}
# Azure
[a-zA-Z0-9+/]{86}==
# Heroku
[hH]eroku.*[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}
# Stripe
sk_live_[0-9a-zA-Z]{24}
rk_live_[0-9a-zA-Z]{24}
pk_live_[0-9a-zA-Z]{24}
# Twilio
SK[0-9a-fA-F]{32}
# SendGrid
SG\.[a-zA-Z0-9_-]{22}\.[a-zA-Z0-9_-]{43}
# Slack
xox[baprs]-[0-9]{10,13}-[0-9]{10,13}[a-zA-Z0-9-]*
# GitHub
gh[pousr]_[A-Za-z0-9_]{36,}
# OpenAI
sk-[A-Za-z0-9]{48}
# Anthropic
sk-ant-[A-Za-z0-9\-_]{90,}
Generic Secrets
password\s*[:=]\s*['"][^'"]{8,}['"]
secret\s*[:=]\s*['"][^'"]{8,}['"]
credential\s*[:=]\s*['"][^'"]{8,}['"]
private[_-]?key\s*[:=]\s*['"][^'"]+['"]
JWT Tokens
eyJ[A-Za-z0-9_-]*\.eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*
1.3 Check for Sensitive Files
Files that should NEVER be committed:
.env,.env.*(environment files)*.pem,*.key,*.p12,*.pfx(certificates/keys)credentials.json,secrets.json,config.secret.*id_rsa,id_dsa,id_ecdsa,id_ed25519(SSH keys)*.keystore,*.jks(Java keystores).htpasswd,.netrc,.npmrc(auth files)wp-config.php(WordPress config)database.ymlwith credentialssettings.pywith SECRET_KEY
IMPORTANT: Never store secrets in config files!
Secrets should NEVER be hardcoded in configuration files like:
config.json,config.yaml,config.tomlsettings.json,settings.py,settings.jsapp.config.js,next.config.js,vite.config.ts- Any file that gets committed to version control
Where to store secrets instead:
.envfiles (must be in.gitignore)uvsecret files for Python projects (uvsupports.envloading)- Platform secret managers (Vercel, Railway, Fly.io environment variables)
- Cloud secret managers (AWS Secrets Manager, GCP Secret Manager, Azure Key Vault)
Verify .gitignore includes:
grep -E "^\.env|^\.env\.|\.pem$|\.key$|credentials|secrets" .gitignore
1.4 Secret Detection Results
If secrets are found:
- STOP - Do not proceed with push
- List all detected secrets with file:line locations
- Provide remediation steps:
- Remove the secret from the file
- Move secrets to
.envfile (ensure.envis in.gitignore) - For Python/uv projects, use
.envwithuv runwhich auto-loads environment variables - Use
process.env.SECRET_NAME(Node.js) oros.environ["SECRET_NAME"](Python) - NEVER store secrets in config files (config.json, settings.py, etc.)
- Add sensitive files to .gitignore
- If already committed, guide through history rewrite
Example output when secrets found:
SECURITY ALERT: Secrets detected in staged files!
File: src/config.js:15
Type: API Key
Pattern: api_key = "sk-abc123..."
File: .env:3
Type: Database URL
Pattern: DATABASE_URL=postgres://user:password@...
BLOCKED: Cannot push until secrets are removed.
Remediation:
1. Remove secrets from config files (NEVER store secrets in config files!)
2. Move secrets to .env file (ensure .env is in .gitignore)
3. For Python/uv: use .env file - uv run auto-loads environment variables
4. Access via: process.env.API_KEY (Node.js) or os.environ["API_KEY"] (Python)
5. Run: git reset HEAD <file> to unstage
If NO secrets found:
Security scan complete: No secrets detected.
Proceeding with push...
Phase 2: README Generation
Check if a README.md exists in the project root:
ls README.md 2>/dev/null
If no README.md exists:
- Invoke the
/create_github_readmeskill to generate a professional README - The readme skill will auto-capture screenshots, add badges, tech stack, architecture diagrams, and more
- After the skill completes, stage the generated
README.md(andscreenshot.pngif created)
If README.md already exists:
- Skip this phase unless the user explicitly requests README regeneration
Phase 3: Git Operations
3.1 Check Status
git status
git diff --cached --stat
3.2 Stage Files
If files need staging:
git add <specific-files>
Important: Never use git add -A or git add . - always add specific files to avoid accidentally committing sensitive files.
3.3 Generate Commit Message
Based on the changes:
- Analyze what files were modified
- Understand the nature of changes (feature, fix, refactor, docs, etc.)
- Generate a concise commit message following conventional commits:
feat:new featurefix:bug fixdocs:documentationrefactor:code refactoringtest:testschore:maintenance
3.4 Commit
git commit -m "$(cat <<'EOF'
<type>: <description>
<optional body>
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
3.5 Push
git push origin <branch>
If push fails due to upstream changes:
git pull --rebase origin <branch>
git push origin <branch>
Phase 4: Pull Request (Optional)
If user requests PR creation:
gh pr create --title "<title>" --body "$(cat <<'EOF'
## Summary
- Change 1
- Change 2
## Test Plan
- [ ] Test 1
- [ ] Test 2
---
Generated with [Claude Code](https://claude.ai/code)
EOF
)"
Phase 5: Repository About (Auto-invoke /github-about)
After pushing, automatically run the /github-about skill to update the repo's About section.
The /github-about skill will:
- Description — Analyze the codebase and set a compelling repo description (if not already set)
- Live Site URL — Detect deployment URLs (Vercel, GitHub Pages, Netlify, etc.) and set the homepage
- Topics — Analyze tech stack (languages, frameworks, platforms) and add relevant topics
Simply invoke /github-about — it handles authentication, detection, and updates automatically.
5.4 Enable Discussions
After /github-about completes, also enable discussions if not already enabled:
gh repo view --json hasDiscussionsEnabled
If discussions are NOT enabled:
gh repo edit --enable-discussions
Capabilities
- Scan for 20+ types of exposed secrets and credentials
- Detect sensitive files that shouldn't be committed
- Auto-generate professional README.md via
/create_github_readmeskill - Create AI-powered commit messages
- Push to GitHub with safety checks
- Create pull requests with descriptions
- Auto-invoke
/github-aboutto set repo description, live site URL, and topics - Auto-enable GitHub Discussions
- Support for all git workflows (feature branches, main)
Security Patterns Detected
| Category | Examples |
|---|---|
| Cloud Credentials | AWS, GCP, Azure, Heroku |
| API Keys | OpenAI, Anthropic, Stripe, Twilio, SendGrid |
| Auth Tokens | OAuth, Bearer, JWT, Session tokens |
| Database URLs | PostgreSQL, MySQL, MongoDB, Redis |
| Private Keys | RSA, DSA, EC, SSH, PGP |
| Platform Tokens | GitHub, Slack, Discord webhooks |
| Generic Secrets | Passwords, credentials, secrets in code |
Next Steps
After running /github_push:
- Verify the push succeeded on GitHub
- Check Actions for CI/CD status
- Review the generated README
- Verify repo description, topics, and live site URL on GitHub
- Check that Discussions are enabled and categories are set up
- Share PR link if created
- Monitor for any security alerts from GitHub
More from alfredang/skills
github about
Auto-update GitHub repo description, live site URL, and topics. Analyzes your codebase to generate a compelling description, detects deployment URLs, and adds relevant topics. Use when setting up a repo, after deploying, or to polish your GitHub presence. Use when the user says "update github about", "update repo about", "set repo description", "add topics", "update about section", "github about", or any reference to updating a GitHub repository's about/description/topics/homepage.
36notebooklm
Deep research and slide presentation generator using NotebookLM MCP. Performs deep research on topics, then generates professional slide presentations with white background and Arial font based on research sources.
27create github readme
Generate or update a professional GitHub README.md file following open standards with tech badges, architecture diagrams, auto-captured screenshots via Playwright MCP, setup instructions, and acknowledgements. Auto-pushes to GitHub after generation.
22linkedin-project-post
Generate exciting LinkedIn posts to showcase your vibe coding projects with emojis, hashtags, features, tech stack, and call-to-action for engagement.
19vercel-deployment
Deploy projects to Vercel with automatic configuration. Sets project name from folder name, deploys with --yes flag, and disables Vercel Authentication (SSO protection) post-deploy via API. Use when deploying to Vercel, running "deploy to vercel", "vercel deploy", or any Vercel deployment task. Handles both preview and production deployments.
17github pages
Deploy to GitHub Pages with auto-generated Actions workflow. Detects project type, creates deploy workflow, enables GitHub Pages and Actions automatically via API. Use when deploying static sites, React, Vite, or Next.js apps to GitHub Pages.
16