setup-repo
GitHubリポジトリに標準的なブランチモデル、保護ルール、設定を適用します。developブランチを作成し、デフォルトブランチとして設定し、developとmainの両方を保護し、タグ保護を追加します。
description の原文を見る
Apply standard branch model, protection rules, and settings to a GitHub repository. Creates develop branch, sets it as default, protects develop and main, and adds tag protection.
SKILL.md 本文
GitHub リポジトリを標準ブランチモデルと保護ルールで構成します: $ARGUMENTS
リクエストを解析する
ユーザーのメッセージから以下を抽出します:
- repo: 構成するリポジトリを
owner/repo形式で指定します。名前だけが指定されている場合はamcheste/<name>と見なします。指定されていない場合は、現在の git リモートを使用します:gh repo view --json nameWithOwner -q .nameWithOwner
プリフライトチェック
- リポジトリが存在することを確認します:
gh repo view <owner/repo> - 実行予定の内容をユーザーに表示し、変更を加える前に確認を取ります
ステップ 1 — develop ブランチが存在することを確認
# develop が既に存在するかチェック
gh api repos/<owner/repo>/branches/develop 2>/dev/null && echo "exists" || echo "missing"
存在しない場合:
# main ブランチの HEAD SHA を取得
MAIN_SHA=$(gh api repos/<owner/repo>/branches/main --jq '.commit.sha')
# develop を main と同じコミット位置で作成
gh api repos/<owner/repo>/git/refs \
--method POST \
--field ref="refs/heads/develop" \
--field sha="$MAIN_SHA"
ステップ 2 — develop をデフォルトブランチに設定
gh api repos/<owner/repo> \
--method PATCH \
--field default_branch=develop \
--jq '.default_branch'
ステップ 3 — develop を保護
マージ前に PR とステータスチェックを必須にします。リポジトリに .github/workflows/validate.yml が存在するかを確認して、どのチェックを必須にするかを判断します:
gh api repos/<owner/repo>/contents/.github/workflows/validate.yml 2>/dev/null && echo "exists"
validate.yml が存在する場合、ユーザーに必須とするステータスチェック名を尋ねます(デフォルト: Lint、Commit Lint)。存在しない場合は、必須チェックなしで保護を適用します。PR だけを必須にします。
gh api repos/<owner/repo>/branches/develop/protection \
--method PUT \
--input - <<'EOF'
{
"required_status_checks": {
"strict": true,
"checks": [/* 上記から入力 */]
},
"enforce_admins": false,
"required_pull_request_reviews": {
"required_approving_review_count": 0,
"dismiss_stale_reviews": false
},
"restrictions": null,
"allow_force_pushes": false,
"allow_deletions": false
}
EOF
ステップ 4 — main を保護
マージ前に PR を必須にします。直接プッシュはできません。ここでは Commit Lint チェックは不要です(develop→main リリース PR は chore: コミットで有効ですが、main で必須チェックとして設定するのは冗長です)。
gh api repos/<owner/repo>/branches/main/protection \
--method PUT \
--input - <<'EOF'
{
"required_status_checks": {
"strict": true,
"checks": [/* develop と同じ (Commit Lint を除く) */]
},
"enforce_admins": false,
"required_pull_request_reviews": {
"required_approving_review_count": 0,
"dismiss_stale_reviews": false
},
"restrictions": null,
"allow_force_pushes": false,
"allow_deletions": false
}
EOF
ステップ 5 — タグ保護ルールセット
v* タグの誤った作成、削除、強制移動を防止します:
gh api repos/<owner/repo>/rulesets \
--method POST \
--input - <<'EOF'
{
"name": "Protect release tags",
"target": "tag",
"enforcement": "active",
"conditions": {
"ref_name": {
"include": ["refs/tags/v*"],
"exclude": []
}
},
"rules": [
{"type": "deletion"},
{"type": "non_fast_forward"},
{"type": "creation"}
]
}
EOF
サマリー
構成された内容をレポートします:
✓ develop ブランチを作成しました (または既に存在していました)
✓ develop をデフォルトブランチに設定しました
✓ develop を保護しました — PR + [チェック] を必須
✓ main を保護しました — PR + [チェック] を必須
✓ タグルールセットがアクティブ — v* タグを保護中
次のステップ:
- repo-template を使用している場合: .github/ ファイルをこのリポジトリにコピーします
- プロジェクト固有の lint/test ステップを .github/workflows/validate.yml に追加します
- 必須ステータスチェック名をワークフロージョブ名に合わせて更新します
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- amcheste
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/amcheste/mac-dev-setup / ライセンス: MIT