mcpField
G
GitHub Push

GitHub Push

github.com/alfredang開発37 回インストール
リポジトリ

GitHub Push について

GitHub へのコードプッシュ前に認証情報や機密ファイルを確認する、Claude Code 向けスキルです。README.md の生成やリポジトリ情報の更新にも対応し、必要に応じてプルリクエストを作成します。

主な機能

  1. 01プッシュ前のシークレットと認証情報の検出
  2. 02ステージ済みファイルの機密内容チェック
  3. 03README.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 へのプッシュ、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 プロジェクトでは、環境変数を自動的に読み込む uv run で .env を使用します
    • 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:リポジトリの About(/github-about を自動実行)

プッシュ後、リポジトリの About セクションを更新するため、/github-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 が作成されている場合は、リンクを共有します
  7. GitHub からのセキュリティアラートがないか監視します

コメント