Skip to main content

github-actions-finops

GitHub Actions billing, workflow efficiency, and waste analysis at org or repo level. Use when investigating CI/CD costs, wasted runs, or optimizing triggers.

معلومات المصدر

المستودع
laurigates/claude-plugins
آخر نشاط في المصدر
١٠ أكتوبر ٢٠٢٦ في ١٤:٠٩
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥٩
التفرعات
٦

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
3 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
github-actions-finops
description
GitHub Actions billing, workflow efficiency, and waste analysis at org or repo level. Use when investigating CI/CD costs, wasted runs, or optimizing triggers.
user-invocable
false
allowed-tools
Bash(bash *), Bash(gh api *), Bash(gh repo *), Bash(gh workflow *), Bash(gh run *), Read, Grep, Glob, TodoWrite
created
2025-01-30T00:00:00.000Z
modified
2026-09-25T00:00:00.000Z
reviewed
2026-06-10T00:00:00.000Z
# GitHub Actions FinOps Analyze GitHub Actions usage, costs, and efficiency across organizations and repositories. ## When to Use This Skill | Use this skill when... | Use X instead when... | |------------------------|----------------------| | Analyzing CI/CD costs and billing | Debugging a specific failed workflow -- use gh-workflow-monitoring | | Identifying wasted workflow runs | Setting up new workflows -- use github-actions-workflows | | Investigating workflow trigger patterns | Managing cache keys -- use github-actions-cache-optimization | | Comparing efficiency across repos | Monitoring a single run -- use gh-workflow-monitoring | | Sweeping an org or repo for waste | Reading the billing-usage API by hand (bare repo-name filter, net vs gross, monthly trend) -- use `github-actions-plugin:actions-billing-usage` | ## Context - Current repo URL: !`git remote -v` - Workflow files: !`find . -path '*/.github/workflows/*' -maxdepth 3 -name '*.yml' -o -name '*.yaml'` - Active workflows: !`gh workflow list --json id,name,state` ## Execution Execute this GitHub Actions FinOps analysis: ### Step 1: Determine scope Read the values in [Context](#context). Parse `$OWNER` and `$REPO` from the current repo URL (e.g., `https://github.com/OWNER/REPO.git`). Run `gh api repos/$OWNER/$REPO --jq '.owner.type'` to determine if the owner is an "Organization" or "User". If Organization, set `$GITHUB_ORG` to the repo owner for org-level billing queries. If no repo context is available, ask the user for the target organization or repository. ### Step 2: Gather billing, run, and waste data Run the deterministic data-gathering script. It fetches org-level Actions billing, groups workflow runs and aggregates per-workflow durations, counts the waste indicators (skipped / bot-triggered / high-frequency), compares them against the red-flag thresholds, and emits a static fix suggestion per flagged pattern: ```bash bash "${CLAUDE_SKILL_DIR}/scripts/github-actions-finops.sh" --home-dir "$HOME" --project-dir "$(pwd)" ``` Pass `--repo $OWNER/$REPO` (and `--org $GITHUB_ORG`) when the script can't infer the target from the current checkout. Parse `STATUS=` and `ISSUES:` from the output — `STATUS=WARN` plus the `SEVERITY=WARN TYPE=...` rows are the flagged waste patterns with their suggested fixes. `BILLING_AVAILABLE=false` means the usage endpoint returned nothing — either the `admin:org` scope is missing or the org has no Actions usage in the returned window (not an error either way). ### Step 3: Analyze workflow files Read each workflow file from `.github/workflows/` and check for: 1. Missing `concurrency:` groups 2. Missing `paths:` filters on push/PR triggers 3. Missing bot-trigger guards (`if: github.event.sender.type != 'Bot'`) ### Step 4: Report findings Synthesize a summary from the script output (Step 2) and the workflow-file findings (Step 3): 1. **Billing summary** (if `BILLING_AVAILABLE=true`): `BILLING_MINUTES`, plus `BILLING_NET_USD` (what is actually billed) and `BILLING_GROSS_USD` (exposure before the public-repo discount). Quote **net** as the spend — a public repo can show a large gross and cost nothing 2. **Workflow run counts**: from the `WORKFLOW_RUNS=` / `WORKFLOW_DURATION_SECONDS=` lines 3. **Waste indicators**: the `SEVERITY=WARN TYPE=...` rows (skipped ratio, bot triggers, high-frequency) plus the workflow-file gaps from Step 3 (missing concurrency / path filters / bot guards) 4. **Recommendations**: the script's per-pattern fix suggestions, plus the workflow-YAML fixes you identified by reading the files ## API Reference | Endpoint | Purpose | Admin Required | |----------|---------|----------------| | `/orgs/{org}/settings/billing/usage` | Actions minutes, packages, storage — all products, as per-repo line items | Yes | | `/orgs/{org}/actions/cache/usage` | Org cache stats | No | | `/repos/{owner}/{repo}/actions/runs` | Workflow runs | No | | `/repos/{owner}/{repo}/actions/workflows` | Workflow definitions | No | ## Agentic Optimizations | Context | Command | |---------|---------| | Org billing | `gh api "/orgs/$ORG/settings/billing/usage" --jq '[.usageItems[] \| select(.product == "actions")] \| {minutes: ([.[].quantity] \| add), net: ([.[].netAmount] \| add)}'` | | List repos | `gh repo list $ORG --json nameWithOwner --limit 100` | | Workflow runs | `gh api "/repos/$O/$R/actions/runs?per_page=100" --jq '.workflow_runs' --jq 'length'` | | Skipped count | `gh api "..." --jq '[.workflow_runs[] | select(.conclusion == "skipped")] | length'` | | Bot triggers | `gh api "..." --jq '[.workflow_runs[] | select(.triggering_actor.type == "Bot")] | length'` | ## See Also - **github-actions-cache-optimization** - Cache-specific analysis and cleanup - **gh-workflow-monitoring** - Watching individual workflow runs
عرض على GitHub