github-actions
GitHub Actionsのワークフロー作成・セキュリティ管理・バージョン管理を行うスキル。新規ワークフローファイル(.yml)の作成や既存ワークフローの修正、アクションバージョンの確認・更新、CI/CDのセキュリティ監査など、`actions/`・`uses:`・`.github/workflows`に関わる作業全般で活用できます。
description の原文を見る
GitHub Actions 워크플로우 생성, 보안 및 버전 관리 스킬. 다음 상황에서 사용: (1) 새 워크플로우 파일(.yml) 작성 시, (2) 기존 워크플로우 수정 시, (3) 액션 버전 검토 또는 업데이트 시, (4) CI/CD 보안 감사 시, (5) 'actions/', 'uses:', 'workflow', '.github/workflows' 키워드가 포함된 작업 시
SKILL.md 本文
GitHub Actions
注: GitHub Actions ワークフロー実行および結果表示、Issue/PR 管理などの
ghCLI 関連タスクについては、githubスキルを一緒にロードして参照してください。
注意点 (Anti-patterns)
1. 古いバージョンの使用
# ❌ 古いバージョン - 最も一般的なミス
uses: actions/checkout@v4 # v6 が最新の場合
# ✅ 最新メジャーバージョン (gh release view で確認後に使用)
uses: actions/checkout@v6
最新バージョンで提供されるパフォーマンス改善とセキュリティパッチを見落とさないようにします。
バージョン確認コマンド:
gh release view --repo {owner}/{repo} --json tagName --jq '.tagName'
# 例
gh release view --repo actions/checkout --json tagName --jq '.tagName'
gh release view --repo oven-sh/setup-bun --json tagName --jq '.tagName'
注: セキュリティに敏感な環境や信頼度が低いサードパーティ アクションについては、SHA ピニング(
@a1b2c3...) を検討してください。
2. 機密情報のハードコード
# ❌ ハードコード - セキュリティ リスク
env:
API_KEY: "sk-1234567890"
DATABASE_PASSWORD: "mypassword123"
# ✅ secrets を使用
env:
API_KEY: ${{ secrets.API_KEY }}
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
パスワードや API キーなどの機密情報がそのまま公開され、セキュリティ インシデントにつながる可能性があります。 セキュリティ上重要な情報は、必ずリポジトリまたは組織のシークレットに保存して読み込む必要があります。
参考: Using secrets
3. 入力値インジェクション脆弱性
# ❌ インジェクション脆弱 - github.event を直接使用
run: echo "${{ github.event.issue.title }}"
run: gh issue comment ${{ github.event.issue.number }} --body "${{ github.event.comment.body }}"
# ✅ 環境変数で渡してインジェクション防止
env:
ISSUE_TITLE: ${{ github.event.issue.title }}
COMMENT_BODY: ${{ github.event.comment.body }}
run: |
echo "$ISSUE_TITLE"
gh issue comment ${{ github.event.issue.number }} --body "$COMMENT_BODY"
悪意のあるユーザーが Issue タイトルやコメントにシェル コマンドを注入する可能性があります。
4. pull_request_target イベントの誤用
# ⚠️ 危険 - フォークのコードを信頼されたコンテキストで実行
on: pull_request_target
steps:
- uses: actions/checkout@v{N}
with:
ref: ${{ github.event.pull_request.head.sha }} # 危険!
pull_request_target イベントはフォークの PR でもシークレットにアクセスできます。フォーク コードをチェックアウトすると、悪意のあるコードが実行される可能性があります。
5. プリインストール ツールの重複設定
# ❌ 不要なセットアップ - node、npm、npx は既にインストール済み
steps:
- uses: actions/setup-node@v{N}
- run: npx some-command
# ✅ そのまま使用
steps:
- run: npx some-command
- run: python script.py
- run: docker build .
重複インストールはワークフロー実行時間を増やし、不要なネットワーク リクエストを発生させます。
主要なプリインストール ツール: Node.js、npm、npx、Python、pip、Ruby、gem、Go、Docker、git、gh、curl、wget、jq、yq
主要な未インストール ツール: Bun、Deno、Rust、Zig、pnpm、Poetry、Ruff
プリインストール ツールの確認:
- Ubuntu: https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md
- macOS: https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
- Windows: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md
ベストプラクティス (Best Practices)
最小権限の原則
権限はできるだけ下位レベルで宣言します。スコープは狭く保ちます:
# ✅ 権限スコープ: workflow > job > step (狭いほど良好)
jobs:
build:
permissions:
contents: read # job レベルで必要な権限のみ
推奨ワークフロー構造
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
# バージョンは gh release view で確認後に使用
- uses: actions/checkout@v{N}
- name: Setup Bun
uses: oven-sh/setup-bun@v{N}
よく使用されるイベント
on:
push: # プッシュ時
branches: [main]
pull_request: # PR 作成/更新時
branches: [main]
workflow_dispatch: # 手動実行
schedule: # スケジュール実行
- cron: "0 0 * * 1" # 毎週月曜日 00:00 UTC
release: # リリース作成時
types: [published]
workflow_call: # 他のワークフローから呼び出し
よく使用される権限
permissions:
contents: read # CI (ビルド/テスト)、コード チェックアウト
contents: write # コミット/プッシュ
pull-requests: write # PR コメント ボット
issues: write # Issue コメント
packages: write # パッケージ デプロイ (contents: write と一緒に)
id-token: write # OIDC クラウド認証 (contents: read と一緒に)
よく使用されるアクション
# バージョンは gh release view --repo {owner}/{repo} --json tagName --jq '.tagName' で確認
steps:
- uses: actions/cache@v{N} # 依存関係のキャッシング
- uses: actions/checkout@v{N} # コード チェックアウト
- uses: actions/download-artifact@v{N} # アーティファクト ダウンロード
- uses: actions/upload-artifact@v{N} # アーティファクト アップロード
- uses: oven-sh/setup-bun@v{N} # Bun セットアップ
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dalestudy
- リポジトリ
- dalestudy/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/dalestudy/skills / ライセンス: MIT
関連スキル
superpowers-streamer-cli
SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。
catc-client-ops
Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。
ci-cd-and-automation
CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。
shipping-and-launch
本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。
linear-release-setup
Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。
tracking-application-response-times
API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。