mcpField
G
github-actions-creator

github-actions-creator

github.com/davila7クラウド・DevOps33.0k203 回インストール今日更新
リポジトリ

github-actions-creator について

GitHub Actions のワークフローファイル作成を支援するスキルです。プロジェクトのファイルや既存の CI/CD を確認し、用途に応じた構成パターンとセキュリティ上の指針を示します。

主な機能

  1. 01プロジェクトとツールの確認
  2. 02曖昧な依頼への確認質問
  3. 03CI・デプロイ・リリースのパターン
  4. 04テストマトリクスとキャッシュの指針
  5. 05ワークフローのセキュリティ推奨事項

活用シーン

  1. 01CI のテストや lint の設定
  2. 02デプロイまたはリリースのワークフロー作成
  3. 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 を書く前に、プロジェクトをスキャンして技術スタックを把握します。

  1. 言語・フレームワークの指標を確認する:

    • package.json → Node.js(React、Next.js、Vue、Angular、Svelte などを確認)
    • requirements.txt / pyproject.toml / setup.py → Python
    • go.mod → Go
    • Cargo.toml → Rust
    • pom.xml / build.gradle → Java/Kotlin
    • Gemfile → Ruby
    • composer.json → PHP
    • pubspec.yaml → Dart/Flutter
    • Package.swift → Swift
    • *.csproj / *.sln → .NET
  2. 既存の CI/CD を確認する:

    • .github/workflows/ → 既存のワークフロー(競合を避ける)
    • Dockerfile → コンテナビルドが利用可能
    • docker-compose.yml → マルチサービス構成
    • vercel.json / netlify.toml → デプロイ先
    • terraform/ / pulumi/ → Infrastructure as Code
  3. ツールを確認する:

    • .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@v4Java/Kotlin
dtolnay/rust-toolchain@stableRust ツールチェーン
ruby/setup-ruby@v1bundler キャッシュ付きの Ruby
actions/setup-dotnet@v4.NET SDK
ビルドとデプロイのアクション
アクション用途
docker/build-push-action@v6Docker のマルチプラットフォームビルド
docker/login-action@v3Docker レジストリの認証
aws-actions/configure-aws-credentials@v4AWS の認証
google-github-actions/auth@v2GCP の認証
azure/login@v2Azure の認証
cloudflare/wrangler-action@v3Cloudflare Workers のデプロイ
amondnet/vercel-action@v25Vercel へのデプロイ
品質とセキュリティのアクション
アクション用途
github/codeql-action/analyze@v3CodeQL による SAST スキャン
aquasecurity/trivy-action@masterコンテナの脆弱性スキャン
codecov/codecov-action@v4カバレッジのアップロード
actions/dependency-review-action@v4PR における依存関係の監査
ユーティリティのアクション
アクション用途
actions/cache@v4汎用的なキャッシュ
actions/upload-artifact@v4ビルド成果物の保存
actions/download-artifact@v4ジョブ間での成果物の取得
softprops/action-gh-release@v2GitHub Releases の作成
slackapi/slack-github-action@v2Slack への通知
peter-evans/create-pull-request@v7自動 PR の作成

セキュリティのベストプラクティス(必ず従うこと)

  1. 最小限の権限: ワークフローまたはジョブのレベルで必ず permissions を宣言してください
  2. アクションはメジャーバージョンに固定: 可読性のため @main や完全な SHA ではなく @v4 を使用してください
  3. シークレットを決して echo しない: シークレットはマスクされますが、echo ${{ secrets.X }} は避けてください
  4. Environments を使用: 本番環境へのデプロイには、保護ルールを設定した GitHub Environments を使用してください
  5. 入力を検証: workflow_dispatch では、入力値を検証してください
  6. スクリプトインジェクションを回避: run: 内で ${{ github.event.*.body }} を直接使用せず、環境変数経由で渡してください
  7. GITHUB_TOKEN を使用: 可能な場合は PAT よりも ${{ secrets.GITHUB_TOKEN }} を優先してください
  8. 同時実行の制御: 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. ワークフローの動作内容 — 1段落の要約
  2. 必要なシークレット — Settings > Secrets でユーザーが設定する必要のあるシークレットの一覧
  3. 必要な権限 — ワークフローがリポジトリのデフォルト以外の権限を必要とする場合
  4. テスト方法 — ワークフローのトリガー方法(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つのワークフローを作成することを推奨します。

コメント