본문으로 건너뛰기
cccskills
무료GitHub에 공개

supply-chain-hardening

GitHub Actions の SHA ピン留め(pinact 必須)と Dependabot・Renovate のクールダウン設定(14日間)をリポジトリに適用し、サプライチェーン攻撃対策を実施する。

ユーザーが「サプライチェーン対策」「GHA ピン留め」「Dependabot クールダウン」「pinact」「supply chain hardening」に言及した場合に使用する。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구GitHub

실행 점수 미검증

설치 방법 보기

포함된 파일(4)

  • SKILL.md7.0 KB
  • references/dependabot-cooldown-guide.md3.8 KB
  • references/gha-pinning-guide.md3.1 KB
  • scripts/scan-repo.sh1.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Supply Chain Hardening

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 のみ

Phase 0: pinact インストール確認

pinact は本スキルの必須前提条件である。

which pinact && pinact --version
  • pinact がインストール済み → Phase 1 に進む
  • 未インストールの場合 → 作業を中断し、ユーザーにインストールを促す

インストール方法は公式ドキュメントを案内する: 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 が確認できるまで以降のフェーズには進まないこと。


Phase 1: 現状分析レポート

リポジトリの現状を調べ、分析レポートを作成する。

1-1. リポジトリの現状を取得

リポジトリルートで調査スクリプトを実行し、現状を自動取得する。

bash scripts/scan-repo.sh

スクリプトは以下の項目を出力する:

  • GitHub Actions ワークフロー一覧
  • 未ピン留めの外部 Action
  • ピン留め済みの Action
  • Dependabot / Renovate 設定の存在
  • Dependabot の cooldown 設定状況
  • Renovate の minimumReleaseAge 設定状況

1-2. GitHub Actions 分析

  • ワークフローファイル数
  • uses: の総数
  • SHA ピン留め済みの数(# vX.Y.Z コメント付き)
  • 未ピン留めの外部 Action 一覧(ファイル名・行番号付き)
  • ローカル参照(./.github/)の数(ピン留め不要として除外)
  • reusable workflow(*.yml@ref)の数

1-3. Dependabot / Renovate 分析

  • 使用している依存管理ツール(Dependabot / Renovate / なし)
  • 設定済みのエコシステム一覧
  • cooldown / minimumReleaseAge の設定状況
  • 自動マージルールの有無

1-4. 分析結果の提示

分析結果をテーブル形式でユーザーに提示する。

| カテゴリ   | 項目                   | 状態              |
| ---------- | ---------------------- | ----------------- |
| GHA        | 未ピン留め Action 数   | X 箇所            |
| GHA        | ピン留め済み Action 数 | Y 箇所            |
| Dependabot | cooldown 設定          | 未設定 / 設定済み |
| Renovate   | minimumReleaseAge      | 未設定 / 設定済み |

全て対策済みの場合: その旨を報告し、Phase 4 の検証のみ実行する。


Phase 2: GitHub Actions SHA ピン留め

詳細手順は references/gha-pinning-guide.md を参照。

2-1. pinact で一括ピン留め

pinact run .github/workflows/*
  • pinact は全ワークフローの未ピン留め Action を一括で SHA ピン留めする
  • SHA # vX.Y.Z 形式のコメントも自動付与される

2-2. pinact run --verify で整合性チェック

pinact run --verify .github/workflows/*
  • 既にピン留め済みの Action も含め、SHA とタグの対応が正しいか検証する
  • 不整合がある場合はエラーが表示される → pinact run で再ピン留めする

2-3. 注意事項

  • ローカル参照(./.github/common/ や ./.github/workflows/*.yml)は ピン留め対象外
  • reusable workflow(org/repo/.github/workflows/x.yml@ref)は SHA ピン留め対象とする
  • ピン留め後のバージョンが 2 週間以上前のリリースであることを確認する

Phase 3: Dependabot / Renovate クールダウン設定

詳細手順は references/dependabot-cooldown-guide.md を参照。

3-1. Dependabot の場合

.github/dependabot.yml の各エコシステムに以下を追加する:

cooldown:
  default-days: 14
  • 既に cooldown が設定済みのエコシステムはスキップする
  • default-days が 14 未満の場合は 14 に引き上げるかユーザーに確認する

3-2. Renovate の場合

renovate.json(または .renovaterc.json)の packageRules に以下を追加する:

{
  "matchManagers": ["github-actions"],
  "minimumReleaseAge": "14 days"
}
  • 既に minimumReleaseAge が設定済みの場合はスキップする
  • 全エコシステム共通で適用する場合は matchManagers を省略する

3-3. どちらも未導入の場合

ユーザーに Dependabot の導入を提案し、.github/dependabot.yml のテンプレートを提示する。


Phase 4: 検証

4-1. GHA ピン留めの検証

# 未ピン留めの外部 Action がゼロであること
# SHA(40桁の16進数)が付いていない uses: 行を抽出する
grep -rn 'uses:' .github/workflows/ \
  | grep -v '@[a-f0-9]\{40\}' \
  | grep -v '^\.\/'
# → 0 行であること

注意: @branch や @tag で意図的に参照している Action(自己参照など)がある場合は、 リポジトリに合わせて追加の grep -v で除外すること。除外パターンはユーザーに確認する。

4-2. Dependabot / Renovate の検証

# dependabot.yml の全エコシステムに cooldown が設定されていること
grep -c 'cooldown' .github/dependabot.yml

# renovate の場合
grep 'minimumReleaseAge' renovate.json

4-3. 結果レポート

最終的な対策状況をテーブル形式で報告する。

| カテゴリ            | 対策前 | 対策後 |
| ------------------- | ------ | ------ |
| GHA 未ピン留め      | X 箇所 | 0 箇所 |
| Dependabot cooldown | 未設定 | 14 日  |

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Convert Claude markdown subagent files to Codex CLI TOML format. Parses YAML frontmatter and body, applies model/permission/tool mappings, and outputs to agents/codex/<name>.toml.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

Create or update a Markdown blog draft from recent work and export it with `YYYY-MM-DD_slug.md` naming. Output directory can be set via environment variable or CLI option; if missing, ask the user and pass it explicitly.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

変更をコミットしてドラフトPRを作成する一連のGit/ghワークフロー。ユーザーが「コミットして」「PR作って」「draft PR」等を求めたときに使用し、status/diff確認・命令形コミット・push・gh pr create --draft(--assignee hodanov)まで実行する。ユーザーの明示リクエストが無くても、実装完了後にcommitやPRが必要になった場面(dev-workflowのcommitフェーズ等)では必ずこれを使う。`git commit` や `gh pr create` を単体でBash直接実行しない。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

1 つの作業ツリーに混ざった差分を、変更理由ごとの意味単位のコミットへ分割する。ユーザーが「コミットを分割して」「意味単位で分けて」「commit-split」等を求めたとき、または機能追加・付随リファクタ・設定/ドキュメント修正が 1 コミットに混在していると気づいたときに使用する。分割案を提示して承認を得てからステージし、コミットごとに単独で成立することを確認する。メッセージ規約・push・PR の作成は commit-and-draft-pr へ委譲する。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

gitleaks + pre-commit を使ってローカルコミット時のクレデンシャル混入を機械的にブロックする。「クレデンシャル漏洩防止」「シークレット混入対策」「gitleaks」「pre-commit シークレット」「credential leak prevention」に言及した場合に使用する。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

依存パッケージ(Go modules / npm / Terraform provider / GitHub Actions / pre-commit 等)の アップグレードを、outdated 検出 → CHANGELOG・破壊的変更の確認 → 更新 → lint/test 検証 → コミットまで一連の手順で安全に適用する。「依存更新」「パッケージを上げて」「dependency update」 「go get -u」「npm update」「provider を上げる」等に言及されたときに使用する。

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

hodanov/my-pde32026년 10월 23일 업데이트

hodanov의 스킬 모두 보기

이 스킬의 문제 신고