ai-agents/skills/supply-chain-hardening/SKILL.md
GitHub Actions の SHA ピン留め(pinact 必須)と Dependabot・Renovate のクールダウン設定(14日間)をリポジトリに適用し、サプライチェーン攻撃対策を実施する。ユーザーが「サプライチェーン対策」「GHA ピン留め」「Dependabot クールダウン」「pinact」「supply chain hardening」に言及した場合に使用する。
npx skillsauth add hodanov/my-pde supply-chain-hardeningInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
GitHub Actions の SHA ピン留めと Dependabot / Renovate のクールダウン設定を段階的に適用するスキル。
Phase 0: pinact インストール確認(必須前提条件)
Phase 1: 現状分析レポート
Phase 2: GitHub Actions SHA ピン留め(pinact 使用)
Phase 3: Dependabot / Renovate クールダウン設定
Phase 4: 検証
スコープ制御: $ARGUMENTS で対象を絞れる。
all(デフォルト): Phase 2 + 3 の両方gha: Phase 2 のみdependabot: Phase 3 のみpinact は本スキルの必須前提条件である。
which pinact && pinact --version
インストール方法は公式ドキュメントを案内する: https://github.com/suzuki-shunsuke/pinact/blob/main/INSTALL.md
⚠️ pinact がインストールされていません。
以下のドキュメントを参考にインストールしてください:
https://github.com/suzuki-shunsuke/pinact/blob/main/INSTALL.md
例(Go):
go install github.com/suzuki-shunsuke/pinact/cmd/pinact@latest
例(Homebrew):
brew install suzuki-shunsuke/pinact/pinact
インストール後に再度このスキルを実行してください。
pinact が確認できるまで以降のフェーズには進まないこと。
リポジトリの現状を調べ、分析レポートを作成する。
リポジトリルートで調査スクリプトを実行し、現状を自動取得する。
bash scripts/scan-repo.sh
スクリプトは以下の項目を出力する:
uses: の総数# vX.Y.Z コメント付き)./.github/)の数(ピン留め不要として除外)*.yml@ref)の数cooldown / minimumReleaseAge の設定状況分析結果をテーブル形式でユーザーに提示する。
| カテゴリ | 項目 | 状態 |
| ---------- | ---------------------- | ----------------- |
| GHA | 未ピン留め Action 数 | X 箇所 |
| GHA | ピン留め済み Action 数 | Y 箇所 |
| Dependabot | cooldown 設定 | 未設定 / 設定済み |
| Renovate | minimumReleaseAge | 未設定 / 設定済み |
全て対策済みの場合: その旨を報告し、Phase 4 の検証のみ実行する。
詳細手順は references/gha-pinning-guide.md を参照。
pinact run .github/workflows/*
pinact は全ワークフローの未ピン留め Action を一括で SHA ピン留めするSHA # vX.Y.Z 形式のコメントも自動付与されるpinact run --verify で整合性チェックpinact run --verify .github/workflows/*
pinact run で再ピン留めする./.github/common/ や ./.github/workflows/*.yml)は ピン留め対象外org/repo/.github/workflows/x.yml@ref)は SHA ピン留め対象とする詳細手順は references/dependabot-cooldown-guide.md を参照。
.github/dependabot.yml の各エコシステムに以下を追加する:
cooldown:
default-days: 14
cooldown が設定済みのエコシステムはスキップするdefault-days が 14 未満の場合は 14 に引き上げるかユーザーに確認するrenovate.json(または .renovaterc.json)の packageRules に以下を追加する:
{
"matchManagers": ["github-actions"],
"minimumReleaseAge": "14 days"
}
minimumReleaseAge が設定済みの場合はスキップするmatchManagers を省略するユーザーに Dependabot の導入を提案し、.github/dependabot.yml のテンプレートを提示する。
# 未ピン留めの外部 Action がゼロであること
# SHA(40桁の16進数)が付いていない uses: 行を抽出する
grep -rn 'uses:' .github/workflows/ \
| grep -v '@[a-f0-9]\{40\}' \
| grep -v '^\.\/'
# → 0 行であること
注意:
@branchや@tagで意図的に参照している Action(自己参照など)がある場合は、 リポジトリに合わせて追加のgrep -vで除外すること。除外パターンはユーザーに確認する。
# dependabot.yml の全エコシステムに cooldown が設定されていること
grep -c 'cooldown' .github/dependabot.yml
# renovate の場合
grep 'minimumReleaseAge' renovate.json
最終的な対策状況をテーブル形式で報告する。
| カテゴリ | 対策前 | 対策後 |
| ------------------- | ------ | ------ |
| GHA 未ピン留め | X 箇所 | 0 箇所 |
| Dependabot cooldown | 未設定 | 14 日 |
development
旅行会社の予約メールなどの生テキストから、旅程(交通機関・宿泊)を抽出して Google Calendar primary にイベント登録する。フォーマットは問わない。登録前にユーザー承認を必須化し、開始 30 分前のポップアップ通知をデフォルトで付ける運用。
documentation
AIとの壁打ちで整理したプラン、または別ファイルの設計メモや実装メモを、読みやすいMarkdown形式の実装プランに整形して `docs/plan/YYYY-MM-DD_<plan-name>.md` に保存する作業で使う。会話中に提案したプランの書き出し、テキストメモの構造化、見出し整理、表への変換、チェックリスト化、保存が必要なときに使う。
data-ai
AIとの壁打ちで整理したプラン、または指定ファイルの内容を GitHub Issue として作成する。セッション内のプランの Issue 化、既存プランファイルからの Issue 作成、config によるデフォルト値設定が必要なときに使う。
tools
変更をコミットしてドラフトPRを作成する一連のGit/ghワークフロー。ユーザーが「コミットして」「PR作って」「draft PR」等を求めたときに使用し、status/diff確認・命令形コミット・push・gh pr create --draft(--assignee hodanov)まで実行する。