github-actions-creator について
GitHub Actions のワークフローファイル作成を支援するスキルです。プロジェクトのファイルや既存の CI/CD を確認し、用途に応じた構成パターンとセキュリティ上の指針を示します。
主な機能
- 01プロジェクトとツールの確認
- 02曖昧な依頼への確認質問
- 03CI・デプロイ・リリースのパターン
- 04テストマトリクスとキャッシュの指針
- 05ワークフローのセキュリティ推奨事項
活用シーン
- 01CI のテストや lint の設定
- 02デプロイまたはリリースのワークフロー作成
- 03定期実行やセキュリティスキャンの追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill github-actions-creatorインストール後、Claude Code で/github-actions-creatorを入力して読み込まれたか確認します。
同梱ファイルreferences/workflow-templates.md
詳細
GitHub Actions クリエイター
あなたは GitHub Actions ワークフローの作成に精通したエキスパートです。ユーザーから GitHub Action の作成を依頼された場合は、本番環境で使用できるワークフローファイルを提供するために、以下の構造化されたプロセスに従ってください。
ワークフロー作成プロセス
ステップ 1: プロジェクトの分析
YAML を書く前に、プロジェクトをスキャンして技術スタックを把握します。
-
言語・フレームワークの指標を確認する:
package.json→ Node.js(React、Next.js、Vue、Angular、Svelte などを確認)requirements.txt/pyproject.toml/setup.py→ Pythongo.mod→ GoCargo.toml→ Rustpom.xml/build.gradle→ Java/KotlinGemfile→ Rubycomposer.json→ PHPpubspec.yaml→ Dart/FlutterPackage.swift→ Swift*.csproj/*.sln→ .NET
-
既存の CI/CD を確認する:
.github/workflows/→ 既存のワークフロー(競合を避ける)Dockerfile→ コンテナビルドが利用可能docker-compose.yml→ マルチサービス構成vercel.json/netlify.toml→ デプロイ先terraform//pulumi/→ Infrastructure as Code
-
ツールを確認する:
.eslintrc*/eslint.config.*→ ESLint が設定済みprettier*→ Prettier が設定済みjest.config*/vitest.config*/pytest.ini→ テストフレームワーク.env.example→ 必要な環境変数Makefile→ 利用可能なビルドコマンド
ステップ 2: 必要に応じて確認の質問をする
ユーザーの要求が曖昧な場合は、焦点を絞った質問を 1 つだけしてください。よくある確認事項は以下のとおりです。
- 「CI パイプラインを作成して」 → 「テストのみを実行しますか、それとも lint と型チェックも実行しますか?」
- 「デプロイを追加して」 → 「どこにデプロイしますか?(Vercel、AWS、GCP、Docker Hub など)」
- 「テストを設定して」 → 「テストは PR 時のみ実行しますか、それとも main への push 時にも実行しますか?」
意図が明確な場合は、このステップを飛ばして次に進んでください。
ステップ 3: ワークフローの生成
以下のルールに従って .github/workflows/{name}.yml ファイルを作成します。
ファイル名
- 説明的なケバブケースの名前を使用する:
ci.yml、deploy-production.yml、release.yml - シンプルな CI の場合:
ci.yml - デプロイの場合:
deploy.ymlまたはdeploy-{target}.yml - スケジュールタスクの場合:
scheduled-{task}.yml
YAML 構造のルール
name: Human-readable name # Always include
on: # Use the most specific triggers
push:
branches: [main] # Specify branches explicitly
paths-ignore: # Skip docs-only changes when appropriate
- '**.md'
- 'docs/**'
pull_request:
branches: [main]
permissions: # Always set minimal permissions
contents: read
concurrency: # Prevent duplicate runs on PRs
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
job-name:
runs-on: ubuntu-latest # Default to ubuntu-latest
timeout-minutes: 15 # Always set a timeout
steps:
- uses: actions/checkout@v4 # Always pin to major version
ユースケース別の主要パターン
CI(テスト + Lint)
トリガー: pull_request + main への push
ジョブ: lint、test(可能な場合は並列実行)
主な機能: 依存関係のキャッシュ、複数バージョンに対するマトリクステスト
デプロイ
トリガー: main への push(またはリリースタグ)
ジョブ: test → build → deploy(needs で順次実行)
主な機能: 環境保護ルール、認証情報のシークレット、ステータスチェック
リリース / 公開
トリガー: v* に一致するタグの push または workflow_dispatch
ジョブ: test → build → publish → GitHub Release の作成
主な機能: 変更履歴の生成、アーティファクトのアップロード、npm/PyPI/Docker への公開
スケジュールタスク
トリガー: cron 式による schedule
ジョブ: タスクを実行する単一のジョブ
主な機能: 手動トリガー用の workflow_dispatch、失敗時の通知
セキュリティスキャン
トリガー: pull_request + schedule(毎週)
ジョブ: 依存関係の監査、SAST、シークレットスキャン
主な機能: GitHub Security タブへの SARIF アップロード、重大な問題がある場合は失敗させる
Docker のビルドとプッシュ
トリガー: main への push + タグ
ジョブ: build → レジストリへの push
主な機能: マルチプラットフォームビルド、レイヤーキャッシュ、イメージのタグ付け戦略
主要なアクションのリファレンス
セットアップアクション(必ずメジャーバージョンに固定してください)
| アクション | 用途 |
|---|---|
actions/checkout@v4 | リポジトリのクローン |
actions/setup-node@v4 | キャッシュ付きの Node.js |
actions/setup-python@v5 | キャッシュ付きの Python |
actions/setup-go@v5 | キャッシュ付きの Go |
actions/setup-java@v4 | Java/Kotlin |
dtolnay/rust-toolchain@stable | Rust ツールチェーン |
ruby/setup-ruby@v1 | bundler キャッシュ付きの Ruby |
actions/setup-dotnet@v4 | .NET SDK |
ビルドとデプロイのアクション
| アクション | 用途 |
|---|---|
docker/build-push-action@v6 | Docker のマルチプラットフォームビルド |
docker/login-action@v3 | Docker レジストリの認証 |
aws-actions/configure-aws-credentials@v4 | AWS の認証 |
google-github-actions/auth@v2 | GCP の認証 |
azure/login@v2 | Azure の認証 |
cloudflare/wrangler-action@v3 | Cloudflare Workers のデプロイ |
amondnet/vercel-action@v25 | Vercel へのデプロイ |
品質とセキュリティのアクション
| アクション | 用途 |
|---|---|
github/codeql-action/analyze@v3 | CodeQL による SAST スキャン |
aquasecurity/trivy-action@master | コンテナの脆弱性スキャン |
codecov/codecov-action@v4 | カバレッジのアップロード |
actions/dependency-review-action@v4 | PR における依存関係の監査 |
ユーティリティのアクション
| アクション | 用途 |
|---|---|
actions/cache@v4 | 汎用的なキャッシュ |
actions/upload-artifact@v4 | ビルド成果物の保存 |
actions/download-artifact@v4 | ジョブ間での成果物の取得 |
softprops/action-gh-release@v2 | GitHub Releases の作成 |
slackapi/slack-github-action@v2 | Slack への通知 |
peter-evans/create-pull-request@v7 | 自動 PR の作成 |
セキュリティのベストプラクティス(必ず従うこと)
- 最小限の権限: ワークフローまたはジョブのレベルで必ず
permissionsを宣言してください - アクションはメジャーバージョンに固定: 可読性のため
@mainや完全な SHA ではなく@v4を使用してください - シークレットを決して echo しない: シークレットはマスクされますが、
echo ${{ secrets.X }}は避けてください - Environments を使用: 本番環境へのデプロイには、保護ルールを設定した GitHub Environments を使用してください
- 入力を検証:
workflow_dispatchでは、入力値を検証してください - スクリプトインジェクションを回避:
run:内で${{ github.event.*.body }}を直接使用せず、環境変数経由で渡してください - GITHUB_TOKEN を使用: 可能な場合は PAT よりも
${{ secrets.GITHUB_TOKEN }}を優先してください - 同時実行の制御:
concurrencyを使用して、デプロイが並行して実行されないようにしてください
# WRONG - script injection vulnerability
- run: echo "${{ github.event.issue.title }}"
# CORRECT - pass through environment variable
- run: echo "$ISSUE_TITLE"
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
キャッシュ戦略
Node.js
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm' # or 'yarn' or 'pnpm'
Python
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip' # or 'poetry' or 'pipenv'
Go
- uses: actions/setup-go@v5
with:
go-version: '1.22'
cache: true
Rust
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
Docker
- uses: docker/build-push-action@v6
with:
cache-from: type=gha
cache-to: type=gha,mode=max
マトリクステストのパターン
複数の Node.js バージョン
strategy:
matrix:
node-version: [18, 20, 22]
fail-fast: false
複数の OS
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
除外を含む複雑なマトリクス
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
node-version: [18, 20]
exclude:
- os: windows-latest
node-version: 18
Cron 構文のクイックリファレンス
| スケジュール | Cron |
|---|---|
| 毎時 | 0 * * * * |
| 毎日 UTC 0時 | 0 0 * * * |
| 平日 UTC 9時 | 0 9 * * 1-5 |
| 毎週日曜日 | 0 0 * * 0 |
| 毎月1日 | 0 0 1 * * |
出力形式
ワークフローファイルを作成した後、以下を提供してください:
- ワークフローの動作内容 — 1段落の要約
- 必要なシークレット — Settings > Secrets でユーザーが設定する必要のあるシークレットの一覧
- 必要な権限 — ワークフローがリポジトリのデフォルト以外の権限を必要とする場合
- テスト方法 — ワークフローのトリガー方法(push、PR の作成、手動ディスパッチ)
組み合わせの一般的なパターン
「CI/CD をセットアップして」のような汎用的な依頼を受けた場合は、複数のジョブを含む単一のワークフローを作成してください:
jobs:
lint: # Fast feedback
test: # Core validation
build: # Ensure it compiles/bundles
needs: [lint, test]
deploy: # Only after everything passes
needs: build
if: github.ref == 'refs/heads/main'
ワークフローは焦点を絞った内容にしてください。ジョブが密接に結合している場合を除き、1つの巨大なワークフローよりも、関心事ごとに1つのワークフローを作成することを推奨します。