mcpField
F
finops-waste

finops-waste

github.com/laurigatesクラウド・DevOps5950 回インストール1 日前に更新
リポジトリ

finops-waste について

finops-wasteは、GitHub Actionsのコストを調べるリポジトリチーム向けスキルです。スキップされた実行、ボットのトリガー、並行実行グループ、パスフィルターを分析し、修正案を提示します。

主な機能

  1. 01スキップされたワークフロー実行の分析
  2. 02ボット起動の実行を確認
  3. 03並行実行グループの不足を検出
  4. 04パスフィルター設定の確認
  5. 05具体的な修正案の提示

活用シーン

  1. 01GitHub Actionsの無駄を監査
  2. 02PRワークフローに実行キャンセルを追加
  3. 03ボット起動によるCIノイズを削減
  4. 04単一リポジトリのワークフロー設定を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/laurigates/claude-plugins --skill finops-waste

インストール後、Claude Code で/finops-wasteを入力して読み込まれたか確認します。

同梱ファイルscripts/waste-analysis.sh

詳細

/finops:waste

GitHub Actions の無駄な実行パターンを特定し、実行可能な修正案を提示します。スキップされた実行、ボットによるトリガー、未設定の並行処理グループ、未設定のパスフィルターを分析します。

このスキルを使用する場面

次の場合にこのスキルを使用します...次の場合は代わりに関連スキルを使用します...
CI コストの無駄を解消する具体的な修正案(並行処理、パスフィルター、ボットの除外)が必要な場合請求額と健全性の概要を確認したい場合 — /finops:overview を使用します
PR ワークフローに cancel-in-progress を追加する必要がある場合ワークフローの実行頻度と所要時間の統計が必要な場合 — /finops:workflows を使用します
スキップされた実行やボットによる不要な実行を監査する場合キャッシュの肥大化や古いキャッシュを監査する場合 — /finops:caches を使用します
1 つのリポジトリのワークフロー設定を修正したい場合複数のリポジトリにわたって無駄をランキングしたい場合 — /finops:compare を使用します

コンテキスト

  • 現在のリポジトリ URL:!git remote get-url origin
  • ワークフローファイル:!find .github/workflows -maxdepth 1 \( -name '*.yml' -o -name '*.yaml' \)

パラメーター

パラメーター説明デフォルト
repoowner/name 形式のリポジトリ現在のリポジトリ

実行

1. API ベースの無駄な実行分析を行います:

bash "${SKILL_DIR}/scripts/waste-analysis.sh" "$REPO"

2. ワークフローファイルを分析します(ローカルファイルシステムが必要です):

echo ""
echo "=== Workflow File Analysis ==="

for f in .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null; do
  [ -f "$f" ] || continue
  name=$(basename "$f")
  issues=""

  # Check for concurrency
  if ! grep -q "concurrency:" "$f"; then
    issues="${issues}missing-concurrency "
  fi

  # Check for path filters (on push/pull_request without paths)
  if grep -qE "^\s*(push|pull_request):" "$f" && ! grep -q "paths:" "$f"; then
    issues="${issues}no-path-filter "
  fi

  # Check for bot filter
  if ! grep -q "github.event.sender.type" "$f" && ! grep -q "github.actor" "$f"; then
    issues="${issues}no-bot-filter "
  fi

  # Check for cancel-in-progress
  if grep -q "pull_request:" "$f" && ! grep -q "cancel-in-progress:" "$f"; then
    issues="${issues}no-cancel-in-progress "
  fi

  if [ -n "$issues" ]; then
    echo "  $name: $issues"
  else
    echo "  $name: OK"
  fi
done

修正案

分析後、検出結果に基づいて具体的な修正案を提示します。

修正:並行処理グループの追加
# Add to workflow file at top level or per-job
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true  # For PR workflows
修正:ボットトリガーのフィルター
jobs:
  build:
    # Skip if triggered by a bot
    if: github.event.sender.type != 'Bot'
    runs-on: ubuntu-latest
    steps: ...

または、特定のボット向け:

    if: github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]'
修正:パスフィルターの追加
on:
  push:
    branches: [main]
    paths:
      - 'src/**'
      - 'package.json'
      - 'package-lock.json'
    paths-ignore:
      - '**.md'
      - 'docs/**'
      - '.github/**'
  pull_request:
    paths:
      - 'src/**'
      - 'package.json'
修正:重複する PR 実行のキャンセル
concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

出力形式

=== Waste Analysis: org/repo ===

=== Skipped Runs ===
Total runs: 100
Skipped: 15 (15%)

By workflow:
  CI: 10 skipped
  CodeQL: 5 skipped

=== Bot-Triggered Runs ===
Bot-triggered: 25/100 runs

By bot:
  dependabot[bot]: 15 runs
  renovate[bot]: 10 runs

=== Workflow File Analysis ===
  ci.yml: missing-concurrency no-path-filter
  deploy.yml: OK
  codeql.yml: no-bot-filter

=== Potential Duplicate Runs ===
  Commit abc1234: 3 runs (CI, CodeQL, Security)

=== High-Frequency Workflows ===
  CI: 67 runs in sample - review trigger conditions

エージェントによる最適化

コンテキストコマンド
スキップされた実行数`gh run list --limit 100 --json conclusion --jq '[.[]
失敗した実行(簡潔な出力)gh run list --limit 50 --status failure --json name,createdAt
ワークフローファイルの確認bash "${SKILL_DIR}/scripts/waste-analysis.sh" "$REPO"
ファイル内の並行処理設定の確認grep -l "concurrency:" .github/workflows/*.yml
ボットによる実行`gh run list --limit 100 --json actor,conclusion --jq '[.[]

実行後のアクション

  1. 修正の適用を提案する:検出した各問題について、ワークフローファイルを直接編集することを提案します
  2. 影響度に基づいて優先順位を付ける:まず実行頻度の高いワークフローに注目します
  3. 推奨事項をテストする:変更はまず機能ブランチでテストするよう提案します
  4. 追跡用の Issue を作成する:最適化作業を追跡するため、必要に応じて GitHub Issue を作成します

コメント