mcpField
G
GitHub Push

GitHub Push

github.com/alfredang开发37 次安装
代码仓库

关于 GitHub Push

用于安全推送代码到 GitHub 的 Claude Code 技能,先扫描凭据和敏感文件,再执行提交与推送。它还可在缺少 README.md 时生成文档,并处理仓库信息与可选的拉取请求。

主要功能

  1. 01推送前扫描密钥和凭据
  2. 02检查待提交文件中的敏感内容
  3. 03缺少时生成 README.md
  4. 04生成提交信息并推送到 GitHub
  5. 05可选创建拉取请求并设置仓库信息

适用场景

  1. 01推送前检查代码库是否包含凭据
  2. 02为缺少说明文件的项目生成 README.md
  3. 03提交并推送经过安全检查的更改
  4. 04按需创建拉取请求并更新仓库资料

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alfredang/skills --skill github-push

安装后在 Claude Code 中输入/github-push确认已加载。

附带文件examples.mdscripts/scan-secrets.sh

详细介绍

GitHub 推送

命令

/github-push 或 github-push

导航

Git 与安全

关键词

github push,git push,机密检测,API 密钥扫描,凭据扫描,安全检查,推送到 github,提交并推送,机密扫描器,README 生成器,安全推送,安全推送,推送前钩子,泄漏检测,API 密钥泄露,密码泄露

描述

通过自动扫描已暴露的机密、API 密钥和凭据,安全地将代码推送到 GitHub。如果缺少 README.md,则自动生成;配置仓库描述、线上站点 URL 和主题,并启用 GitHub Discussions。

执行

此技能通过订阅计划的 Claude Code运行。请勿使用按量付费的 API 密钥。所有 AI 操作都应通过已激活订阅的 Claude Code CLI 环境执行。

响应

我会帮助你安全地推送到 GitHub!

工作流包括:

步骤描述
机密扫描检测已暴露的 API 密钥、密码和凭据
文件审查检查不应提交的敏感文件
README 生成如果缺少 README.md,则通过 /create_github_readme 技能自动生成
Git 提交暂存并使用 AI 生成的消息提交
推送推送到远程仓库
创建 PR可选创建拉取请求
仓库简介自动调用 /github-about 设置描述、线上站点 URL 和主题

说明

执行 /github_push 时,请遵循以下工作流:

阶段 1:机密检测(必须)

在执行任何 Git 操作之前,扫描代码库以查找已暴露的机密。这是一项阻断性要求——如果发现机密,请勿继续。

1.1 扫描已暂存文件
git diff --cached --name-only
1.2 机密模式检测

扫描所有已暂存文件,查找以下模式:

AWS 凭据

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 密钥(通用)

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,}['"]

私钥

-----BEGIN (RSA|DSA|EC|OPENSSH|PGP) PRIVATE KEY-----
-----BEGIN PRIVATE KEY-----

数据库连接字符串

postgres(ql)?://[^\s'"]+
mysql://[^\s'"]+
mongodb(\+srv)?://[^\s'"]+
redis://[^\s'"]+

OAuth 和 Bearer 令牌

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_\-]+['"]

云服务提供商机密

# 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,}

通用机密

password\s*[:=]\s*['"][^'"]{8,}['"]
secret\s*[:=]\s*['"][^'"]{8,}['"]
credential\s*[:=]\s*['"][^'"]{8,}['"]
private[_-]?key\s*[:=]\s*['"][^'"]+['"]

JWT 令牌

eyJ[A-Za-z0-9_-]*\.eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*
1.3 检查敏感文件

绝不应提交的文件:

  • .env、.env.*(环境文件)
  • *.pem、*.key、*.p12、*.pfx(证书/密钥)
  • credentials.json、secrets.json、config.secret.*
  • id_rsa、id_dsa、id_ecdsa、id_ed25519(SSH 密钥)
  • *.keystore、*.jks(Java 密钥库)
  • .htpasswd、.netrc、.npmrc(身份验证文件)
  • wp-config.php(WordPress 配置)
  • 包含凭据的 database.yml
  • 包含 SECRET_KEY 的 settings.py

重要:切勿将机密存储在配置文件中!

切勿将机密硬编码在以下配置文件中:

  • config.json、config.yaml、config.toml
  • settings.json、settings.py、settings.js
  • app.config.js、next.config.js、vite.config.ts
  • 任何会提交到版本控制的文件

应将机密存储在以下位置:

  • .env 文件(必须列入 .gitignore)
  • Python 项目的 uv 机密文件(uv 支持加载 .env)
  • 平台机密管理器(Vercel、Railway、Fly.io 环境变量)
  • 云机密管理器(AWS Secrets Manager、GCP Secret Manager、Azure Key Vault)

确认 .gitignore 包含:

grep -E "^\.env|^\.env\.|\.pem$|\.key$|credentials|secrets" .gitignore
1.4 机密检测结果

如果发现机密:

  1. 停止——不要继续推送
  2. 列出所有检测到的机密及其文件和行号
  3. 提供补救步骤:
    • 从文件中移除机密
    • 将机密移至 .env 文件(确保 .env 已列入 .gitignore)
    • 对于 Python/uv 项目,使用 .env 和 uv run,它会自动加载环境变量
    • 使用 process.env.SECRET_NAME(Node.js)或 os.environ["SECRET_NAME"](Python)
    • 切勿将机密存储在配置文件中(如 config.json、settings.py 等)
    • 将敏感文件添加到 .gitignore
    • 如果已提交,指导如何重写历史记录

发现机密时的输出示例:

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

如果未发现机密:

Security scan complete: No secrets detected.
Proceeding with push...
第 2 阶段:生成 README

检查项目根目录中是否存在 README.md:

ls README.md 2>/dev/null

如果不存在 README.md:

  1. 调用 /create_github_readme 技能,生成一份专业的 README
  2. 该 README 技能会自动截取屏幕截图、添加徽章、技术栈、架构图等内容
  3. 技能完成后,将生成的 README.md(以及创建的 screenshot.png)加入暂存区

如果 README.md 已存在:

  • 跳过此阶段,除非用户明确要求重新生成 README
第 3 阶段:Git 操作
3.1 检查状态
git status
git diff --cached --stat
3.2 将文件加入暂存区

如果有文件需要加入暂存区:

git add <specific-files>

重要: 切勿使用 git add -A 或 git add .,始终添加指定文件,以避免意外提交敏感文件。

3.3 生成提交消息

根据更改内容:

  • 分析修改了哪些文件
  • 了解更改的性质(功能、修复、重构、文档等)
  • 遵循 Conventional Commits 规范,生成简洁的提交消息:
    • feat: 新功能
    • fix: 修复错误
    • docs: 文档
    • refactor: 代码重构
    • test: 测试
    • chore: 维护
3.4 提交
git commit -m "$(cat <<'EOF'
<type>: <description>

<optional body>

Co-Authored-By: Claude <[email protected]>
EOF
)"
3.5 推送
git push origin <branch>

如果推送因上游更改而失败:

git pull --rebase origin <branch>
git push origin <branch>
第 4 阶段:拉取请求(可选)

如果用户要求创建 PR:

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
)"
第 5 阶段:仓库简介(自动调用 /github-about)

推送后,自动运行 /github-about 技能,更新仓库的 About 部分。

/github-about 技能将:

  1. 描述 — 分析代码库并设置有吸引力的仓库描述(如果尚未设置)
  2. 在线站点 URL — 检测部署 URL(Vercel、GitHub Pages、Netlify 等)并设置主页
  3. 主题 — 分析技术栈(语言、框架、平台)并添加相关主题

只需调用 /github-about——它会自动处理身份验证、检测和更新。

5.4 启用 Discussions

/github-about 完成后,如果尚未启用 Discussions,也请启用:

gh repo view --json hasDiscussionsEnabled

如果未启用 Discussions:

gh repo edit --enable-discussions

功能

  • 扫描 20 多种类型的暴露密钥和凭据
  • 检测不应提交的敏感文件
  • 通过 /create_github_readme 技能自动生成专业的 README.md
  • 使用 AI 生成提交消息
  • 通过安全检查推送到 GitHub
  • 创建附带说明的拉取请求
  • 自动调用 /github-about 设置仓库描述、在线站点 URL 和主题
  • 自动启用 GitHub Discussions
  • 支持所有 Git 工作流(功能分支、main)

检测到的安全模式

类别示例
云凭据AWS、GCP、Azure、Heroku
API 密钥OpenAI、Anthropic、Stripe、Twilio、SendGrid
身份验证令牌OAuth、Bearer、JWT、会话令牌
数据库 URLPostgreSQL、MySQL、MongoDB、Redis
私钥RSA、DSA、EC、SSH、PGP
平台令牌GitHub、Slack、Discord webhook
通用机密信息代码中的密码、凭据、机密信息

后续步骤

运行 /github_push 后:

  1. 在 GitHub 上确认推送成功
  2. 检查 Actions 中的 CI/CD 状态
  3. 检查生成的 README
  4. 在 GitHub 上确认仓库描述、主题和在线站点 URL
  5. 检查 Discussions 是否已启用并设置好类别
  6. 如果已创建 PR,分享 PR 链接
  7. 留意 GitHub 发出的安全警报

评论

支持 Markdown