Agent Skills by ALSEL
汎用DevOps・インフラ⭐ リポ 41品質スコア 86/100

github-workflow-automation-v2

GitHub Workflow Automationワークフロースキル。ユーザーがGemini CLIと最新のDevOpsプラクティスにインスパイアされたAI支援によるGitHubワークフロー自動化パターンを必要とする場合に使用します。オペレーターはマージまたはハンドオフの前に、アップストリームワークフロー、コピーされたサポートファイル、およびプロベナンスを保持する必要があります。

description の原文を見る

?? GitHub Workflow Automation workflow skill. Use this skill when the user needs Patterns for automating GitHub workflows with AI assistance, inspired by Gemini CLI and modern DevOps practices and the operator should preserve the upstream workflow, copied support files, and provenance before merging or handing off.

SKILL.md 本文

🔧 GitHub Workflow Automation

Overview

このパブリックインテークコピーは、https://github.com/sickn33/antigravity-awesome-skillsからplugins/antigravity-awesome-skills/skills/github-workflow-automationをパッケージ化し、オリジンを隠さないネイティブOmni Skillsの編集形式に統合しています。

オペレーターがアップストリームワークフロー、サポートファイル、およびリポジトリコンテキストを保持する必要がある場合に使用してください。パブリック検証者とプライベート拡張者は通常のダウンストリームフローを継続します。

このインテークはコピーされたアップストリームファイルをそのまま保持し、metadata.jsonexternal_sourceブロックとORIGIN.mdをプロベナンスアンカーとして使用してレビューを可能にしています。

🔧 GitHub Workflow Automation > AI支援によるGitHub ワークフロー自動化のパターン。Gemini CLIと最新DevOpsプラクティスにインスピレーションを受けています。

パブリックな見出しにきれいにマッピングされなかったインポートされたソースセクションは、以下またはサポートファイル内に保持されています。注目すべきインポートされたセクション:1. 自動PR レビュー、✅ 良い点、⚠️ 潜在的な問題、💡 提案、🔒 セキュリティノート、2. Issue分類の自動化。

このスキルをいつ使用するか

このセクションをトリガーフィルターとして使用してください。オペレーターがファイルをロード、コマンドを実行、またはプルリクエストをオープンする前に、アクティベーション境界を明示するべきです。

  • AI を使用した PR レビューの自動化
  • Issue 分類の自動化のセットアップ
  • GitHub Actions ワークフロー の作成
  • AI を CI/CD パイプラインに統合
  • Git 操作(リベース、チェリーピック)の自動化
  • リクエストがインポートされたソースのインテント「AI支援によるGitHub ワークフロー自動化のパターン。Gemini CLIと最新DevOpsプラクティスにインスピレーションを受けています」と明確に一致する場合に使用してください。

操作テーブル

状況ここから開始重要な理由
初回利用metadata.jsonコピーされたワークフローに触れる前に、external_sourceブロックを通じてリポジトリ、ブランチ、コミット、およびインポートされたパスを確認します
プロベナンスレビューORIGIN.mdインポートされたソースのプレーンテキストの監査証跡をレビュー担当者に提供します
ワークフロー実行SKILL.md実行を実質的に変更するコピーされた最小ファイルから開始します
サポートコンテキストSKILL.mdパッケージ全体をロードしないで、最も関連性の高いコピーされたソースファイルを追加します
引き継ぎ決定## Related Skillsタスクがずれたときにオペレーターがより強力なネイティブスキルに切り替えるのに役立ちます

ワークフロー

このワークフローは意図的に編集的かつ運用的です。インポートされたソースをオペレーターにとって有用に保ちながら、ダウンストリーム拡張フローに供給するパブリックインテーク基準を満たします。

  1. ユーザーゴール、インポートされたワークフロー の範囲、およびこのスキルがタスクの正しいルーターであるかどうかを確認します。
  2. コピーされたアップストリームサポートファイルをロードする前に、概要とプロベナンスファイルを読みます。
  3. 現在のリクエストの結果を実質的に変更する参照、例、プロンプト、またはスクリプトのみをロードします。
  4. アップストリームワークフローを実行しながら、ワークノートでプロベナンスとソース境界を明示的に保ちます。
  5. アップストリームの期待値と、コピーされたファイルで指摘できる証拠に対して結果を検証します。
  6. インポートされたワークフロー の重心の外に移動したら、関連スキルにエスカレーションまたは引き継ぎます。
  7. マージまたはクロージャー前に、何が使用されたか、何が変わったか、およびレビュー担当者が何を検証する必要があるかを記録します。

インポートされたワークフローノート

インポート:📋 概要

このPRが何をするかの簡単な説明。

インポート:1. 自動PR レビュー

1.1 PR レビューアクション

# .github/workflows/ai-review.yml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Get changed files
        id: changed
        run: |
          files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)
          echo "files<<EOF" >> $GITHUB_OUTPUT
          echo "$files" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Get diff
        id: diff
        run: |
          diff=$(git diff origin/${{ github.base_ref }}...HEAD)
          echo "diff<<EOF" >> $GITHUB_OUTPUT
          echo "$diff" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: AI Review
        uses: actions/github-script@v7
        with:
          script: |
            const { Anthropic } = require('@anthropic-ai/sdk');
            const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });

            const response = await client.messages.create({
              model: "claude-3-sonnet-20240229",
              max_tokens: 4096,
              messages: [{
                role: "user",
                content: `Review this PR diff and provide feedback:

                Changed files: ${{ steps.changed.outputs.files }}

                Diff:
                ${{ steps.diff.outputs.diff }}

                Provide:
                1. Summary of changes
                2. Potential issues or bugs
                3. Suggestions for improvement
                4. Security concerns if any

                Format as GitHub markdown.`
              }]
            });

            await github.rest.pulls.createReview({
              owner: context.repo.owner,
              repo: context.repo.repo,
              pull_number: context.issue.number,
              body: response.content[0].text,
              event: 'COMMENT'
            });
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

1.2 レビューコメントパターン

# AI レビュー構造

## 例

### 例 1:アップストリームワークフローを直接要求

```text
@github-workflow-automation-v2 を使用して <task> を処理してください。コピーされたアップストリームワークフローから開始し、結果を実質的に変更するファイルのみをロードし、プロベナンスを回答に目立つようにしてください。
```

**説明:** これはオペレーターがインポートされたワークフローを必要としているが、リポジトリ全体を必要としない場合の最も安全な出発点です。

### 例 2:プロベナンスを根拠としたレビューを要求

```text
metadata.json と ORIGIN.md に対して @github-workflow-automation-v2 をレビューしてから、最初にロードしたいコピーされたアップストリームファイルを説明し、その理由を述べてください。
```

**説明:** レビューまたはトラブルシューティング前に、オリジンと ファイル選択の正確で監査可能な説明が必要な場合は、これを使用してください。

### 例 3:実行前にコピーされたサポートファイルを絞り込む

```text
@github-workflow-automation-v2 を <task> に使用してください。結果を実質的に変更するコピーされた参照、例、またはスクリプトのみをロードし、進める前にファイルを明示的に名前付けしてください。
```

**説明:** これにより、デフォルトではコピーされたパッケージ全体をロードするのではなく、漸進的な開示とスキルを整合させます。

### 例 4:レビューアーパケットを作成

```text
コピーされたアップストリームファイルとプロベナンスを使用して @github-workflow-automation-v2 をレビューしてから、マージ前のギャップを要約してください。
```

**説明:** これは PR が人的レビューを待っているときに、繰り返し可能な監査パケットが必要な場合に便利です。

### インポートされた使用ノート

#### インポート:利用可能なコマンド

| コマンド              | 説明                 |
| :------------------- | :-------------------------- |
| `@ai-helper explain` | このPRのコードを説明 |
| `@ai-helper review`  | AIコードレビューをリクエスト      |
| `@ai-helper fix`     | 問題の修正案を提案    |
| `@ai-helper test`    | テストケースを生成         |
| `@ai-helper docs`    | ドキュメントを生成      |
| `/rebase`            | PRをmainにリベース         |
| `/update`            | PRブランチをmainから更新  |
| `/approve`           | ボットで承認済みとしてマーク     |
| `/label bug`         | 「bug」ラベルを追加             |
| `/assign @user`      | ユーザーに割り当て              |
```

---

## ベストプラクティス

生成されたパブリックスキルをアップストリームリポジトリ周辺のレビュー可能なパッケージング層として扱ってください。目標は、プロベナンスを明示的に保つことと、実行を実質的に改善するコピーされたソース材料のみをロードすることです。

- [ ] APIキーをGitHub Secretsに保存
- [ ] ワークフローで最小限の権限を使用
- [ ] すべての入力を検証
- [ ] ログで機密データを公開しない
- [ ] 依存関係をキャッシュ
- [ ] 並列テスト用のマトリックスビルドを使用
- [ ] パスフィルターで不要なジョブをスキップ

### インポートされた操作ノート

#### インポート:ベストプラクティス

### セキュリティ

- [ ] APIキーをGitHub Secretsに保存
- [ ] ワークフローで最小限の権限を使用
- [ ] すべての入力を検証
- [ ] ログで機密データを公開しない

### パフォーマンス

- [ ] 依存関係をキャッシュ
- [ ] 並列テスト用のマトリックスビルドを使用
- [ ] パスフィルターで不要なジョブをスキップ
- [ ] 重い作業には自己ホストランナーを使用

### 信頼性

- [ ] ジョブにタイムアウトを追加
- [ ] レート制限を適切に処理
- [ ] リトライロジックを実装
- [ ] ロールバック手順を用意

---

## トラブルシューティング

### 問題:オペレーターがインポートされたコンテキストをスキップして、あまりにも一般的な回答をした

**症状:** 結果が`plugins/antigravity-awesome-skills/skills/github-workflow-automation`のアップストリームワークフローを無視し、プロベナンスに触れないか、コピーされたソースファイルをまったく使用していません。
**解決策:** `metadata.json`、`ORIGIN.md`、および最も関連性の高いコピーされたアップストリームファイルを再度開きます。`external_source`ブロックを最初に確認してから、継続する前にプロベナンスを再度述べます。

### 問題:レビュー中にインポートされたワークフローが不完全に感じられる

**症状:** レビュー担当者は生成された`SKILL.md`を見ることができますが、どの参照、例、またはスクリプトが現在のタスクに重要であるかをすばやく判断できません。
**解決策:** 取ったパスを正当化する正確なコピーされた参照、例、スクリプト、またはアセットを指摘します。ギャップがまだ実在する場合は、それを隠すのではなく PR に記録します。

### 問題:タスクが異なる専門分野にずれた

**症状:** インポートされたスキルは正しい場所から開始されますが、作業はデバッグ、アーキテクチャ、デザイン、セキュリティ、またはリリースオーケストレーションに変わり、ネイティブスキルがより適切に処理します。
**解決策:** 関連スキルセクションを使用して意図的に引き継ぎます。インポートされたプロベナンスを目立つようにして、次のスキルがコンテキストなしで開始するのではなく、適切なコンテキストを継承できるようにしてください。



## 関連スキル

- `@00-andruia-consultant` - インポートされたスキルがコンテキストを確立した後、作業がそのネイティブ専門分野でより適切に処理される場合に使用してください。
- `@00-andruia-consultant-v2` - インポートされたスキルがコンテキストを確立した後、作業がそのネイティブ専門分野でより適切に処理される場合に使用してください。
- `@10-andruia-skill-smith` - インポートされたスキルがコンテキストを確立した後、作業がそのネイティブ専門分野でより適切に処理される場合に使用してください。
- `@10-andruia-skill-smith-v2` - インポートされたスキルがコンテキストを確立した後、作業がそのネイティブ専門分野でより適切に処理される場合に使用してください。

## 追加リソース

このサポートマトリックスと以下のリンクされたファイルをこのインポートされたスキルのオペレーターパケットとして使用してください。これらは汎用スキャフォルディングではなく、実際のコピーされたソース材料を反映する必要があります。

| リソースファミリー | レビュー担当者に提供するもの | パス例 |
| --- | --- | --- |
| `references` | アップストリームからコピーされた参照ノート、ガイド、または背景材料 | `references/n/a` |
| `examples` | アップストリームからコピーされた動作例または再利用可能なプロンプト | `examples/n/a` |
| `scripts` | 実行または検証を実質的に変更するアップストリームヘルパースクリプト | `scripts/n/a` |
| `agents` | ルーティングまたは委譲ノート(インポートされたパッケージの本当の一部)| `agents/n/a` |
| `assets` | ソースパッケージからコピーされたサポートアセットまたはスキーマ | `assets/n/a` |



### インポートされた参照ノート

#### インポート:リソース

- [Gemini CLI GitHub Action](https://github.com/google-github-actions/run-gemini-cli)
- [GitHub Actions ドキュメント](https://docs.github.com/en/actions)
- [GitHub REST API](https://docs.github.com/en/rest)
- [CODEOWNERS シンタックス](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)

#### インポート:✅ 良い点

- 良好な構造化コード
- 良好なテストカバレッジ
- 明確な命名規則

#### インポート:⚠️ 潜在的な問題

1. **行 42**:null ポインタ例外の可能性
   ```javascript
   // 現在
   user.profile.name;
   // 提案
   user?.profile?.name ?? "Unknown";
   ```

2. **行 78**:エラーハンドリングを検討してください
   ```javascript
   // try-catchまたは.catch()を追加
   ```

#### インポート:💡 提案

- 検証ロジックを別の関数に抽出することを検討してください
- パブリックメソッド用の JSDoc コメントを追加

#### インポート:🔒 セキュリティノート

- 機密データ露出は検出されません
- API キーハンドリングは正しく見えます

1.3 フォーカスレビュー

# 特定のファイルタイプのみをレビュー
- name: Filter code files
  run: |
    files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | \
            grep -E '\.(ts|tsx|js|jsx|py|go)$' || true)
    echo "code_files=$files" >> $GITHUB_OUTPUT

# コンテキスト付きレビュー
- name: AI Review with context
  run: |
    # 関連するコンテキストファイルを含める
    context=""
    for file in ${{ steps.changed.outputs.files }}; do
      if [[ -f "$file" ]]; then
        context+="=== $file ===\n$(cat $file)\n\n"
      fi
    done

    # フルファイルコンテキスト付きで AI に送信

インポート:2. Issue 分類の自動化

2.1 自動ラベル付け Issue

# .github/workflows/issue-triage.yml
name: Issue Triage

on:
  issues:
    types: [opened]

jobs:
  triage:
    runs-on: ubuntu-latest
    permissions:
      issues: write

    steps:
      - name: Analyze issue
        uses: actions/github-script@v7
        with:
          script: |
            const issue = context.payload.issue;

            // AI を呼び出して分析
            const analysis = await analyzeIssue(issue.title, issue.body);

            // ラベルを適用
            const labels = [];

            if (analysis.type === 'bug') {
              labels.push('bug');
              if (analysis.severity === 'high') labels.push('priority: high');
            } else if (analysis.type === 'feature') {
              labels.push('enhancement');
            } else if (analysis.type === 'question') {
              labels.push('question');
            }

            if (analysis.area) {
              labels.push(`area: ${analysis.area}`);
            }

            await github.rest.issues.addLabels({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: issue.number,
              labels: labels
            });

            // 初期レスポンスを追加
            if (analysis.type === 'bug' && !analysis.hasReproSteps) {
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: issue.number,
                body: `このイシューをご報告いただきありがとうございます。

調査を支援するため、以下の情報をご提供ください:
- イシューを再現するための手順
- 期待される動作
- 実際の動作
- 環境(OS、バージョンなど)

これにより、イシューをより迅速に解決できます。🙏`
              });
            }

2.2 Issue 分析プロンプト

const TRIAGE_PROMPT = `
Analyze this GitHub issue and classify it:

Title: {title}
Body: {body}

Return JSON with:
{
  "type": "bug" | "feature" | "question" | "docs" | "other",
  "severity": "low" | "medium" | "high" | "critical",
  "area": "frontend" | "backend" | "api" | "docs" | "ci" | "other",
  "summary": "one-line summary",
  "hasReproSteps": boolean,
  "isFirstContribution": boolean,
  "suggestedLabels": ["label1", "label2"],
  "suggestedAssignees": ["username"] // based on area expertise
}
`;

2.3 古い Issue の管理

# .github/workflows/stale.yml
name: Manage Stale Issues

on:
  schedule:
    - cron: "0 0 * * *" # 毎日

jobs:
  stale:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/stale@v9
        with:
          stale-issue-message: |
            このイシューは最近アクティビティがないため、自動的に古い(stale)とマークされました。
            さらにアクティビティがない場合は、14日後にクローズされます。

            このイシューがまだ関連性がある場合:
            - コメントで更新を追加
            - `stale` ラベルを削除

            ご協力ありがとうございます!🙏

          stale-pr-message: |
            このPRは自動的に古い(stale)とマークされました。更新するか、14日後にクローズされます。

          days-before-stale: 60
          days-before-close: 14
          stale-issue-label: "stale"
          stale-pr-label: "stale"
          exempt-issue-labels: "pinned,security,in-progress"
          exempt-pr-labels: "pinned,security"

インポート:3. CI/CD 統合

3.1 スマートテスト選択

# .github/workflows/smart-tests.yml
name: Smart Test Selection

on:
  pull_request:

jobs:
  analyze:
    runs-on: ubuntu-latest
    outputs:
      test_suites: ${{ steps.analyze.outputs.suites }}

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Analyze changes
        id: analyze
        run: |
          # 変更されたファイルを取得
          changed=$(git diff --name-only origin/${{ github.base_ref }}...HEAD)

          # 実行するテストスイートを決定
          suites="[]"

          if echo "$changed" | grep -q "^src/api/"; then
            suites=$(echo $suites | jq '. + ["api"]')
          fi

          if echo "$changed" | grep -q "^src/frontend/"; then
            suites=$(echo $suites | jq '. + ["frontend"]')
          fi

          if echo "$changed" | grep -q "^src/database/"; then
            suites=$(echo $suites | jq '. + ["database", "api"]')
          fi

          # 具体的なものがない場合はすべて実行
          if [ "$suites" = "[]" ]; then
            suites='["all"]'
          fi

          echo "suites=$suites" >> $GITHUB_OUTPUT

  test:
    needs: analyze
    runs-on: ubuntu-latest
    strategy:
      matrix:
        suite: ${{ fromJson(needs.analyze.outputs.test_suites) }}

    steps:
      - uses: actions/checkout@v4

      - name: Run tests
        run: |
          if [ "${{ matrix.suite }}" = "all" ]; then
            npm test
          else
            npm test -- --suite ${{ matrix.suite }}
          fi

3.2 AI 検証によるデプロイ

# .github/workflows/deploy.yml
name: Deploy with AI Validation

on:
  push:
    branches: [main]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Get deployment changes
        id: changes
        run: |
          # 最後のデプロイ以降のコミットを取得
          last_deploy=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
          if [ -n "$last_deploy" ]; then
            changes=$(git log --oneline $last_deploy..HEAD)
          else
            changes=$(git log --oneline -10)
          fi
          echo "changes<<EOF" >> $GITHUB_OUTPUT
          echo "$changes" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: AI Risk Assessment
        id: assess
        uses: actions/github-script@v7
        with:
          script: |
            // デプロイのリスクを分析
            const prompt = `
            Analyze these changes for deployment risk:

            ${process.env.CHANGES}

            Return JSON:
            {
              "riskLevel": "low" | "medium" | "high",
              "concerns": ["concern1", "concern2"],
              "recommendations": ["rec1", "rec2"],
              "requiresManualApproval": boolean
            }
            `;

            // AI を呼び出して結果をパース
            const analysis = await callAI(prompt);

            if (analysis.riskLevel === 'high') {
              core.setFailed('High-risk deployment detected. Manual review required.');
            }

            return analysis;
        env:
          CHANGES: ${{ steps.changes.outputs.changes }}

  deploy:
    needs: validate
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: Deploy
        run: |
          echo "Deploying to production..."
          # デプロイコマンドをここに配置

3.3 ロールバック自動化

# .github/workflows/rollback.yml
name: Automated Rollback

on:
  workflow_dispatch:
    inputs:
      reason:
        description: "ロールバックの理由"
        required: true

jobs:
  rollback:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Find last stable version
        id: stable
        run: |
          # 最後に成功したデプロイを見つける
          stable=$(git tag -l 'v*' --sort=-version:refname | head -1)
          echo "version=$stable" >> $GITHUB_OUTPUT

      - name: Rollback
        run: |
          git checkout ${{ steps.stable.outputs.version }}
          # 安定版をデプロイ
          npm run deploy

      - name: Notify team
        uses: slackapi/slack-github-action@v1
        with:
          payload: |
            {
              "text": "🔄 本番環境が ${{ steps.stable.outputs.version }} にロールバックされました",
              "blocks": [
                {
                  "type": "section",
                  "text": {
                    "type": "mrkdwn",
                    "text": "*ロールバック実行*\n• バージョン: `${{ steps.stable.outputs.version }}`\n• 理由: ${{ inputs.reason }}\n• 実行者: ${{ github.actor }}"
                  }
                }
              ]
            }

インポート:4. Git 操作

4.1 自動リベース

# .github/workflows/auto-rebase.yml
name: Auto Rebase

on:
  issue_comment:
    types: [created]

jobs:
  rebase:
    if: github.event.issue.pull_request && contains(github.event.comment.body, '/rebase')
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Setup Git
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

      - name: Rebase PR
        run: |
          # PR ブランチをフェッチ
          gh pr checkout ${{ github.event.issue.number }}

          # main にリベース
          git fetch origin main
          git rebase origin/main

          # フォースプッシュ
          git push --force-with-lease
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Comment result
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: '✅ main に正常にリベースされました!'
            })

4.2 スマートチェリーピック

// コンフリクト処理を行う AI 支援チェリーピック
async function smartCherryPick(commitHash: string, targetBranch: string) {
  // コミット情報を取得
  const commitInfo = await exec(`git show ${commitHash} --stat`);

  // 潜在的なコンフリクトをチェック
  const targetDiff = await exec(
    `git diff ${targetBranch}...HEAD -- ${affectedFiles}`
  );

  // AI 分析
  const analysis = await ai.analyze(`
    I need to cherry-pick this commit to ${targetBranch}:

    ${commitInfo}

    Current state of affected files on ${targetBranch}:
    ${targetDiff}

    Will there be conflicts? If so, suggest resolution strategy.
  `);

  if (analysis.willConflict) {
    // 手動解決用のブランチを作成
    await exec(
      `git checkout -b cherry-pick-${commitHash.slice(0, 7)} ${targetBranch}`
    );
    const result = await exec(`git cherry-pick ${commitHash}`, {
      allowFail: true,
    });

    if (result.failed) {
      // AI 支援コンフリクト解決
      const conflicts = await getConflicts();
      for (const conflict of conflicts) {
        const resolution = await ai.resolveConflict(conflict);
        await applyResolution(conflict.file, resolution);
      }
    }
  } else {
    await exec(`git checkout ${targetBranch}`);
    await exec(`git cherry-pick ${commitHash}`);
  }
}

4.3 ブランチクリーンアップ

# .github/workflows/branch-cleanup.yml
name: Branch Cleanup

on:
  schedule:
    - cron: '0 0 * * 0'  # 週次
  workflow_dispatch:

jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Find stale branches
        id: stale
        run: |
          # 30日更新されていないブランチ
          stale=$(git for-each-ref --sort=-committerdate refs/remotes/origin \
            --format='%(refname:short) %(committerdate:relative)' | \
            grep -E '[3-9][0-9]+ days|[0-9]+ months|[0-9]+ years' | \
            grep -v 'origin/main\|origin/develop' | \
            cut -d' ' -f1 | sed 's|origin/||')

          echo "branches<<EOF" >> $GITHUB_OUTPUT
          echo "$stale" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Create cleanup PR
        if: steps.stale.outputs.branches != ''
        uses: actions/github-script@v7
        with:
          script: |
            const branches = `${{ steps.stale.outputs.branches }}`.split('\n').filter(Boolean);

            const body = `## 🧹 古いブランチのクリーンアップ

以下のブランチは30日以上更新されていません:

${branches.map(b => `- \`${b}\``).join('\n')}

### アクション:
- [ ] 各ブランチをレビュー
- [ ] 不要になったブランチを削除
- 特定のブランチを保持するには、\`/keep branch-name\` とコメント
`;

            await github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: '古いブランチのクリーンアップ',
              body: body,
              labels: ['housekeeping']
            });

インポート:5. オンデマンド支援

5.1 @mention ボット

# .github/workflows/mention-bot.yml
name: AI Mention Bot

on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]

jobs:
  respond:
    if: contains(github.event.comment.body, '@ai-helper')
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Extract question
        id: question
        run: |
          # @ai-helper の後のテキストを抽出
          question=$(echo "${{ github.event.comment.body }}" | sed 's/.*@ai-helper//')
          echo "question=$question" >> $GITHUB_OUTPUT

      - name: Get context
        id: context
        run: |
          if [ "${{ github.event.issue.pull_request }}" != "" ]; then
            # PR の場合 - diff を取得
            gh pr diff ${{ github.event.issue.number }} > context.txt
          else
            # Issue の場合 - 説明を取得
            gh issue view ${{ github.event.issue.number }} --json body -q .body > context.txt
          fi
          echo "context=$(cat context.txt)" >> $GITHUB_OUTPUT
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: AI Response
        uses: actions/github-script@v7
        with:
          script: |
            const response = await ai.chat(`
              Context: ${process.env.CONTEXT}

              Question: ${process.env.QUESTION}

              Provide a helpful, specific answer. Include code examples if relevant.
            `);

            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: response
            });
        env:
          CONTEXT: ${{ steps.context.outputs.context }}
          QUESTION: ${{ steps.question.outputs.question }}

5.2 コマンドパターン


#### インポート:6. リポジトリ設定

### 6.1 CODEOWNERS

.github/CODEOWNERS

グローバルオーナー

  • @org/core-team

フロントエンド

/src/frontend/ @org/frontend-team *.tsx @org/frontend-team *.css @org/frontend-team

バックエンド

/src/api/ @org/backend-team /src/database/ @org/backend-team

インフラ

/.github/ @org/devops-team /terraform/ @org/devops-team Dockerfile @org/devops-team

ドキュメント

/docs/ @org/docs-team *.md @org/docs-team

セキュリティ機密

/src/auth/ @org/security-team /src/crypto/ @org/security-team


### 6.2 ブランチ保護

```yaml
# GitHub API 経由で設定
- name: Configure branch protection
  uses: actions/github-script@v7
  with:
    script: |
      await github.rest.repos.updateBranchProtection({
        owner: context.repo.owner,
        repo: context.repo.repo,
        branch: 'main',
        required_status_checks: {
          strict: true,
          contexts: ['test', 'lint', 'ai-review']
        },
        enforce_admins: true,
        required_pull_request_reviews: {
          required_approving_review_count: 1,
          require_code_owner_reviews: true,
          dismiss_stale_reviews: true
        },
        restrictions: null,
        required_linear_history: true,
        allow_force_pushes: false,
        allow_deletions: false
      });

インポート:制限事項

  • このスキルは、タスクが上記で説明されている範囲と明確に一致する場合にのみ使用してください。
  • 出力を環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必須の入力、権限、安全の境界、または成功基準が不足している場合は、停止して明確化を求めてください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
diegosouzapw
リポジトリ
diegosouzapw/awesome-omni-skills
ライセンス
MIT
最終更新
2026/5/10

Source: https://github.com/diegosouzapw/awesome-omni-skills / ライセンス: MIT

関連スキル

汎用DevOps・インフラ⭐ リポ 502

superpowers-streamer-cli

SuperPowers デスクトップストリーマーの npm パッケージをインストール、ログイン、実行、トラブルシューティングできます。ユーザーが npm から `superpowers-ai` をセットアップしたい場合、メールまたは電話でサインインもしくはアカウント作成を行いたい場合、ストリーマーを起動したい場合、表示されたコントロールリンクを開きたい場合、後で停止したい場合、またはソースコードへのアクセスなしに npm やランタイムの一般的な問題から復旧したい場合に使用します。

by rohanarun
汎用DevOps・インフラ⭐ リポ 493

catc-client-ops

Catalyst Centerのクライアント操作・監視機能 - 有線・無線クライアントのリスト表示・フィルタリング、MACアドレスによる詳細なクライアント検索、クライアント数分析、時間軸での分析、SSIDおよび周波数帯によるフィルタリング、無線トラブルシューティング機能を提供します。MACアドレスやIPアドレスでのクライアント検索、サイト別やSSID別のクライアント数集計、無線周波数帯の分布分析、Wi-Fi信号の問題調査が必要な場合に活用できます。

by automateyournetwork
汎用DevOps・インフラ⭐ リポ 39,967

ci-cd-and-automation

CI/CDパイプラインの設定を自動化します。ビルドおよびデプロイメントパイプラインの構築または変更時に使用できます。品質ゲートの自動化、CI内のテストランナー設定、またはデプロイメント戦略の確立が必要な場合に活用します。

by addyosmani
汎用DevOps・インフラ⭐ リポ 39,967

shipping-and-launch

本番環境へのリリース準備を行います。本番環境へのデプロイ準備が必要な場合、リリース前チェックリストが必要な場合、監視機能の設定を行う場合、段階的なロールアウトを計画する場合、またはロールバック戦略が必要な場合に使用します。

by addyosmani
OpenAIDevOps・インフラ⭐ リポ 38,974

linear-release-setup

Linear Releaseに向けたCI/CD設定を生成します。リリース追跡の設定、LinearのCIパイプライン構築、またはLinearリリースとのデプロイメント連携を実施する際に利用できます。GitHub Actions、GitLab CI、CircleCIなど複数のプラットフォームに対応しています。

by novuhq
Anthropic ClaudeDevOps・インフラ⭐ リポ 2,159

tracking-application-response-times

API エンドポイント、データベースクエリ、サービスコール全体にわたるアプリケーションのレスポンスタイムを追跡・最適化できます。パフォーマンス監視やボトルネック特定の際に活用してください。「レスポンスタイムを追跡する」「API パフォーマンスを監視する」「遅延を分析する」といった表現で呼び出せます。

by jeremylongshore
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: diegosouzapw · diegosouzapw/awesome-omni-skills · ライセンス: MIT