---
name: deps
description: 依存関係更新、パッケージ保守、Dependabot設定確認・PR調査に使う。更新を検証し、PRのmergeは明示依頼がある場合だけ行う。
---

# 依存更新とDependabot保守を完了する

現在のworktreeで、package manager管理と同梱・直接取得の依存を更新し、lock file、必要な互換修正、Dependabot設定、検証を整える。releaseと製品versionは変更しない。

## 権限

`$deps` は次のローカル変更を許可する。

- 依存manifest、lock file、依存更新に必要な互換コード・テスト・文書。API変更が複数の呼び出し元、adapter、mock、fixtureへ波及する場合は、既存挙動を保つために必要な全箇所を対象にする。
- 同梱・直接取得する外部依存と、その取得URL、version pin、checksum、ライセンス表記。製品versionと既存の取得・配布方式は維持する。
- `.github/dependabot.yml` / `.yaml` の点検と、[設定基準](references/dependabot-config.md)に照らした権限内の修正・新規作成。
- 開いているDependabot PRの読み取り点検と `mergeable / superseded / held / pending` の分類。

現在checkout中のbranchとworktreeを使い、通常は依存差分を未stage・未commitで残す。新しいbranch・worktree・clone、branch切替、stage、commit、push、PR作成は行わない。代わりに既存の未コミット変更を保持し、重なるfileでも変更箇所を安全に分離できるbatchを進める。分離できないbatchだけを競合箇所付きの `held` とし、独立するbatchは続ける。branchやPRを作るかという一般的な選択のために停止しない。

Git・GitHubへの書き込みは、現在の依頼に含まれる操作だけを行う。

- 「commitして」は依存変更だけをstageして現在branchへ日本語commitを作る。「commitしてpush」はそのcommitを設定済みupstreamへ通常pushする。
- branch作成、branch切替、PR作成は個別に明示された場合だけ行う。PR作成の明示は、そのPRに必要な専用branchの作成を含む。
- Dependabot PRのmergeまたはmerge queue投入は、「取り込んで」「mergeして」または `--dependabot-only` が指定された場合だけ行う。通常の `$deps` は分類まで行う。
- 明示されたpushがbranch protectionや未許可deployで完了できない場合は、検証済み差分を保持してblockerを報告する。代替branchやPRへ自動で切り替えない。

既定範囲は **security / patch / minor / majorのすべて**。`--no-major` が無い限りmajorも実際に試し、API変更は既存の公開挙動を保つ互換移行と検証まで完了する。呼び出し箇所や変更fileが多いだけでは `needs-followup` にしない。

language/runtime/target framework世代、製品の公開契約・挙動の再設計、外部資格情報・環境の変更が不可欠なbatchは、本skillの権限外とする。そのbatchで加えたmanifest、lock file、互換修正だけを開始前状態へ戻し、現在版、目標版、失敗command、残作業を `needs-followup` として記録する。既存差分と先に成功したbatchを保持し、reset、checkout、stashは使わない。安全に戻せなければ同じmanifest / lock fileを使う後続batchを `held` とし、fileが独立するbatchを続ける。

release、製品version、language/runtime/target framework世代、package source・registry・資格情報、PR close、admin bypass、force pushは変更しない。Dependabotの `ignore` 増減、entry削除、`target-branch` 変更、`schedule.interval` の方針変更、repository設定トグルも変更せず、必要性と影響を報告する。例外として `--close-superseded` は、既定branchが同等以上のversionを含むと再確認した `superseded` PRだけをcloseできる。

## モードを決める

`--nuget-only` は実行前に `--manual-only --ecosystem=nuget` へ正規化する。他ecosystemや他の `only` 系との併用は矛盾として終了する。`--manual-only` / `--dependabot-only` / `--config-only` / `--security-only` / `--major-only` は同時に1つだけ指定できる。複数指定、`--major-only --no-major`、`--config-only --no-config` は書き込み前に報告して終了する。

| mode | Dependabot設定 | 手動更新 | Dependabot PR |
|---|---|---|---|
| 通常 | 点検・権限内修正 | security / patch / minor / major | 全PRを分類。自然言語で明示された場合だけmerge |
| `--manual-only` | skip | security / patch / minor / major | skip |
| `--dependabot-only` | skip | skip | 既存PRを点検し、flag自体をmerge許可として順次取り込む |
| `--config-only` | 点検・権限内修正 | skip | skip |
| `--security-only` | skip | vulnerableと解消に必要な直接依存 | security PRを分類。自然言語で明示された場合だけmerge |
| `--major-only` | skip | majorだけ | major PRを分類。自然言語で明示された場合だけmerge |

補助flag:

- `--dry-run`: 選択modeを読み取りだけで棚卸しして実行計画を作り、file、Git/GitHub、依存解決状態を変更しない。
- `--no-config`: 通常modeの設定点検を報告だけにする。
- `--no-major`: 通常modeまたは `--manual-only` のmajorを試さず、現在版と目標版を候補報告する。
- `--ecosystem=<名前>`: 全経路を指定ecosystemへ限定する。`vendored` は同梱・直接取得依存の本skill内分類名。
- `--close-superseded`: 前述の条件を満たす `superseded` PRだけをcloseする。

通常実行と `--manual-only` はvendored依存も含む。他ecosystemへの限定時は対象外、`--config-only` は対応可否の報告まで、`--dependabot-only` は既存PRだけを扱う。

## 必要な経路だけ読む

1. `--dependabot-only` 以外は [棚卸しと共通契約](references/inventory.md) を読む。`--dependabot-only` はPRの実在情報からecosystemとdirectoryを確定する。
2. 通常modeと `--config-only` は [Dependabot設定](references/dependabot-config.md) を読む。`--no-config` でも点検と報告は行う。
3. 通常mode、`--manual-only`、`--security-only`、`--major-only` は [手動更新](references/manual-updates.md) を読む。検出したecosystemに応じて同fileから詳細referenceへ進む。
4. 通常mode、`--dependabot-only`、`--security-only`、`--major-only` は [Dependabot PR](references/dependabot.md) を読む。対象PRが0件でも分類結果を記録する。

`--dry-run` は選択経路を読み取りと計画だけで最後まで実行し、更新command、Git/GitHub書き込み、PRのmerge/closeを行わず、確認した全結果を示して終了する。

## 完了条件

- 選択scopeのmanager管理依存とvendored依存を確認し、対象外・未確認を区別した。
- 成功batchだけが `verified` の差分として残り、失敗batchは既存差分を傷付けず開始前状態へ戻したか、安全に戻せない範囲を `held` にした。
- 選択scopeのinstall/restore、frozen lock、build、test、lint/typecheckと、outdated・vulnerable・deprecatedの再棚卸しを既存手段で完了した。
- Dependabot設定とPRは、選択modeが含む項目だけを最新状態で判定した。外部書き込みを行った場合は対象remote commitとrequired checks、既定branchへの反映も確認した。
- packageごとの旧版→新版、更新種別、breaking change、移行した呼び出し元・test・mock・fixture、互換修正、検証command、現在branch、残した差分、PRの `mergeable / merged / queued / superseded / held / pending`、`needs-followup`、残る脆弱性・deprecated理由を簡潔に報告した。

「更新残りなし」「脆弱性なし」は、選択scopeのmanager管理依存とvendored依存の両方を確認できた場合だけ報告する。native依存は実行したarchitectureと静的確認だけのarchitectureを分ける。すべて `verified` なら安定した依存状態を `$vava` へ引き渡せる。`needs-followup` があればリリース可能とは扱わない。
