diff --git a/.claude/rules/git-conventions.md b/.claude/rules/git-conventions.md index 8c4dd97..4b27f20 100644 --- a/.claude/rules/git-conventions.md +++ b/.claude/rules/git-conventions.md @@ -49,6 +49,7 @@ - 書式: `[タグ] 内容` - 言語: 日本語 - 句読点: 末尾に句点は不要 +- 例外: Dependabot が自動生成するコミット・PR(`.github/dependabot.yml` による依存更新)は `[update]` プレフィックス+英語本文(例: `[update] Bump foo from 1.2.0 to 1.3.0`)を許容し,手で書き直さない ### タグ一覧 diff --git a/.claude/skills/setup/SKILL.md b/.claude/skills/setup/SKILL.md index c0b9d7f..c31e80a 100644 --- a/.claude/skills/setup/SKILL.md +++ b/.claude/skills/setup/SKILL.md @@ -7,7 +7,7 @@ あなたはプロジェクト立ち上げのファシリテーターです. GUIDE_01(プロジェクト立ち上げフロー)を読み,各フェーズのルールを理解した上で以下の手順を実行してください. -`gh` CLI で行う GitHub リポジトリ設定のコマンドと手順は本スキルの `reference.md`(`.claude/skills/setup/reference.md`)を参照する. +`gh` CLI で行う GitHub リポジトリ設定のコマンドと,`.github/dependabot.yml` の生成規則は本スキルの `reference.md`(`.claude/skills/setup/reference.md`)を参照する. ## 基本ルール @@ -102,6 +102,14 @@ - `ENV_03_管理者用環境構築手順.md` のドラフトには,GitHub リポジトリ作成の直後の手順として `reference.md` の有効化・検証コマンドを必ず転記する(`/setup` 後にリポジトリを作った場合に管理者が単体で実行できるようにするため) - ENV_03 を書き出したら,その場で `reference.md` の手順を 1 度実行する.リモート未作成で実行できなければ Phase 7 で再試行する +### 依存バージョン更新の設定 (Dependabot Version Updates) + +上記の脆弱性検出とは別に,依存パッケージを定期的に最新化する PR を Dependabot に作らせるため,フェーズ 3 で `.github/dependabot.yml` を**ユーザーに選択を聞かずに必ず生成する**(`.gitignore` 等と同じ「設定ファイルの生成」の一部として扱う). + +- フェーズ 2 で確定した技術スタック(`ENV_01_技術スタック.md`)から対象エコシステムを決め,`reference.md`「依存バージョン更新の設定」の対応表と雛形に従って生成する +- 生成内容(対象エコシステム・更新頻度・グループ化)は他の成果物と同様にドラフトとしてユーザーに提示し,承認を得てから書き出す(「作るかどうか」は聞かず,「内容」だけを確認する) +- マニフェストがまだ存在しない場合(立ち上げ時点でコードが無い)でも,スタックが確定していれば生成してよい.Dependabot はマニフェストが置かれた時点から動き始める + ## フェーズ 7: 実装開始 1. GUIDE_01 の「CLAUDE.md の管理」セクションに従い,CLAUDE.md を最終更新する @@ -118,7 +126,7 @@ - GitHub リポジトリ作成・メンバー招待 - Issue テンプレートの用意 - CI 構築(未構築の間は GUIDE_03「CI 構築までの暫定ゲート」を適用) - - 依存バージョンの定期更新も行うならスタックに応じた `.github/dependabot.yml` を追加(エコシステムはプロジェクト固有のため setup では作らない.脆弱性検出(Dependabot alerts)は上記 4 で AI が有効化済み) + - ※ 脆弱性検出(Dependabot alerts / security updates)は上記 4 で AI が有効化済み,依存バージョン更新(`.github/dependabot.yml`)はフェーズ 3 で生成済みのため,ここでは案内しない.CI を `github-actions` で組んだら `dependabot.yml` に `github-actions` エコシステムが含まれていることを確認する(`reference.md`「依存バージョン更新の設定」) 「**全フェーズが完了しました.** @@ -128,6 +136,7 @@ 開発モード: {solo / team} CLAUDE.md を更新しました. GitHub リポジトリのセキュリティ設定(Dependabot alerts / security updates): {有効化済み / リポジトリ未作成のため未実施(ENV_03 のコマンドで有効化してください)} +依存バージョン更新(`.github/dependabot.yml`): {対象エコシステム一覧} を {更新頻度} で監視 最初の実装ステップは `{ステップ名}` です.`/implement {タスク}` で開始できます. {team の場合: 「チーム運用の管理者初期設定(GitHub repo・CI 等)は GUIDE_03 を参照してユーザー側で実施してください.」}」 diff --git a/.claude/skills/setup/reference.md b/.claude/skills/setup/reference.md index 39f65ed..e1f9466 100644 --- a/.claude/skills/setup/reference.md +++ b/.claude/skills/setup/reference.md @@ -1,6 +1,6 @@ # setup リファレンス (Setup Reference) -`/setup`(`SKILL.md`)から参照される,`gh` CLI で実行する GitHub リポジトリ設定の手順集.`/setup` の途中で AI が実行するほか,`/setup` 完了後にリポジトリを作成した場合などに管理者(人間)が単体で実行する runbook としても使う. +`/setup`(`SKILL.md`)から参照される,GitHub リポジトリまわりの設定手順集(`gh` CLI で行うリポジトリ設定と,`.github/dependabot.yml` の生成規則).`/setup` の途中で AI が実行するほか,`/setup` 完了後にリポジトリを作成した場合などに管理者(人間)が単体で実行する runbook としても使う. ## GitHub リポジトリのセキュリティ設定 (GitHub Repository Security Settings) @@ -47,5 +47,77 @@ ### 補足 (Notes) -- `.github/dependabot.yml` は「依存バージョンの定期更新 PR」の設定であり,上記の脆弱性検出とは別物.エコシステム(npm / pub / pip / cargo 等)がプロジェクト固有のため `/setup` では作らず,必要ならユーザーの指示で追加する +- `.github/dependabot.yml` は「依存バージョンの定期更新 PR」の設定であり,上記の脆弱性検出とは別物(次節).上記の有効化は `dependabot.yml` の有無に関係なく動く - アカウント設定(Settings → Code security → "Automatically enable for new repositories")を ON にしておけば以後の新規リポジトリは自動で有効になるが,テンプレートとしてはリポジトリ単位で確実に有効化する前提で運用する + +## 依存バージョン更新の設定 (Dependabot Version Updates) + +`.github/dependabot.yml` を置くと,Dependabot が依存パッケージの新バージョンを定期的に検出して更新 PR を作る(脆弱性の有無に関係なく).`/setup` のフェーズ 3 で,技術スタック(`ENV_01_技術スタック.md`)に合わせて**必ず生成する**(作るかどうかはユーザーに聞かない.内容だけドラフトとして確認する).PR のノイズを抑えるため,週 1 回・マイナー/パッチをまとめる・同時オープン数を絞る,を既定とする. + +### エコシステム対応表 (Ecosystem Mapping) + +技術スタックから `package-ecosystem` を決める.`directory` はマニフェスト(`package.json`・`pubspec.yaml` 等)があるディレクトリ(ルートなら `/`).モノレポ等で複数箇所にある場合はエントリを分けるか `directories` を使う. + +| 技術スタック | `package-ecosystem` | マニフェスト例 | +| --- | --- | --- | +| Node.js(npm / pnpm / yarn) | `npm` | `package.json` | +| Dart / Flutter | `pub` | `pubspec.yaml` | +| Python(pip / Poetry / pipenv) | `pip` | `requirements.txt`・`pyproject.toml`・`Pipfile` | +| Python(uv) | `uv` | `pyproject.toml` + `uv.lock` | +| Rust | `cargo` | `Cargo.toml` | +| Go | `gomod` | `go.mod` | +| Ruby | `bundler` | `Gemfile` | +| PHP | `composer` | `composer.json` | +| Java / Kotlin(Gradle) | `gradle` | `build.gradle(.kts)` | +| Java(Maven) | `maven` | `pom.xml` | +| .NET | `nuget` | `*.csproj` | +| Swift | `swift` | `Package.swift` | +| Docker を使う場合 | `docker` | `Dockerfile` | +| Dev Containers を使う場合 | `devcontainers` | `.devcontainer/devcontainer.json` | +| GitHub Actions(CI) | `github-actions` | `.github/workflows/*.yml` | + +- `github-actions` は**常に含める**(立ち上げ時点で workflow が無くても害は無く,後から CI を足した時に自動で対象になる) +- Docker / Dev Containers は技術スタックまたは環境構築方針(GUIDE_01「環境構築」の基本方針)で採用している場合に含める + +### 雛形 (Template) + +以下を基に,対応表で決めたエコシステムごとに `updates` エントリを 1 つずつ作る(`{...}` を置き換える). + +```yaml +# 依存パッケージの定期更新 PR(Dependabot version updates) +# 脆弱性検出(Dependabot alerts / security updates)はリポジトリ設定で有効化済み(本ファイルとは独立に動く) +version: 2 +updates: + - package-ecosystem: "{npm / pub / pip ...}" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 5 + commit-message: + prefix: "[update]" + groups: + minor-and-patch: + update-types: + - "minor" + - "patch" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "[update]" + groups: + actions: + patterns: + - "*" +``` + +- `interval`: 既定は `weekly`.更新 PR を減らしたいプロジェクトは `monthly` にしてよい +- `groups`: マイナー/パッチ更新を 1 PR にまとめる.メジャー更新は破壊的変更を含みうるため個別 PR のまま残す +- `open-pull-requests-limit`: 既定 5.放置された更新 PR が溜まるのを防ぐ +- `commit-message.prefix`: Git 規約(`.claude/rules/git-conventions.md`)の `[タグ] 内容` に合わせて `[update]` を付ける.内容部分は Dependabot が英語で生成する(例: `[update] Bump foo from 1.2.0 to 1.3.0`).これは規約の許容例外とし,手で書き直さない +- Dependabot の PR も通常の PR と同じく `main` へ直接は入らない.CI(あれば)の結果とリリースノートを確認してマージする + +### 動作確認 (Verification) + +`main` に push された後,GitHub の Insights → Dependency graph → Dependabot で各エコシステムの「Last checked」と結果を確認できる.YAML の構文エラーはここにも表示される. diff --git a/README.md b/README.md index 336e203..bdbd720 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ## 主なスラッシュコマンド -- `/setup ` — GUIDE_01 に従いプロジェクト立ち上げを対話的に進行(solo/team を選択.GitHub リポジトリの Dependabot alerts / security updates も `gh api` で有効化) +- `/setup ` — GUIDE_01 に従いプロジェクト立ち上げを対話的に進行(solo/team を選択.GitHub リポジトリの Dependabot alerts / security updates を `gh api` で有効化し,`.github/dependabot.yml` も生成) - `/implement <タスク>` — 実装パイプライン(コーディング → テスト → リファクタリング) - `/commit` / `/commit push` / `/commit merge` — コミット作成(`push` でプッシュと PR 作成まで,`merge` でマージ・プルまで) - `/auto-refactor` / `/auto-audit` — 無人運転ループ(リファクタ/ドキュメント整理,バグ/脆弱性の巡回監査).専用ブランチへ自律コミットし,push・PR・マージはしない diff --git "a/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" "b/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" index 95e5765..0ae90aa 100644 --- "a/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" +++ "b/docs/01_GUIDE/GUIDE_01_\343\203\227\343\203\255\343\202\270\343\202\247\343\202\257\343\203\210\347\253\213\343\201\241\344\270\212\343\201\222\343\203\225\343\203\255\343\203\274.md" @@ -55,8 +55,9 @@ - `gh` — GitHub CLI(PR 作成・マージ等に使用) - **基本方針**: 環境の再現性を重視し,手順書だけに頼らず構築を自動化・コード化できる方法を優先する(例: Docker,Dev Containers,Windows Sandbox,IaC ツール等). - **人間が決めること**: 開発マシンの選定,クラウドサービスのアカウント作成,環境構築方法の選択 -- **AI に依頼できること**: 環境構築手順書の作成,設定ファイルの生成,`.gitignore` の作成,Dockerfile や devcontainer.json 等の構築用ファイルの作成,GitHub リポジトリのセキュリティ設定(後述) +- **AI に依頼できること**: 環境構築手順書の作成,設定ファイルの生成,`.gitignore` の作成,Dockerfile や devcontainer.json 等の構築用ファイルの作成,GitHub リポジトリのセキュリティ設定・`.github/dependabot.yml` の生成(後述) - **GitHub リポジトリのセキュリティ設定**: GitHub の Settings → Code security にある **Dependabot alerts**(既知脆弱性の検出."Vulnerabilities" として表示される)と **Dependabot security updates** はリポジトリごとに既定で OFF のため,リポジトリを作成したら必ず有効化する.モードに関わらず `/setup` が `gh api` で有効化・検証する(コマンド・検証・トラブル対応は `.claude/skills/setup/reference.md`「GitHub リポジトリのセキュリティ設定」).`/setup` 時点でリポジトリが無い場合は,`ENV_03_管理者用環境構築手順.md` に転記した同じコマンドをリポジトリ作成後に実行する. +- **依存バージョン更新(Dependabot version updates)**: 上記とは別に,依存パッケージを定期的に最新化する PR を作らせるため,`/setup` が技術スタックに合わせて `.github/dependabot.yml` を必ず生成する(週 1 回・マイナー/パッチをまとめる・`[update]` プレフィックス.エコシステム対応表と雛形は `.claude/skills/setup/reference.md`「依存バージョン更新の設定」).Dependabot の更新 PR も通常の PR と同じく確認してからマージする. - **成果物**: - `ENV_02_環境構築手順.md` — メンバーの参加時や環境の再構築時に使う手順 - `ENV_03_管理者用環境構築手順.md` — プロジェクト作成時に一度だけ行う初期設定(リポジトリ作成,GitHub リポジトリのセキュリティ設定,外部サービスの設定等)