
Finops Compare
- 54 installs
- 49 repo stars
- Updated August 4, 2026
- laurigates/claude-plugins
Helps with ai & agent building tasks.
About
finops-compare is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- finops-compare
- AI & Agent Building
- AI-coding skill
Finops Compare by the numbers
- 54 all-time installs (skills.sh)
- Ranked #6,946 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/laurigates/claude-plugins --skill finops-compareAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 54 |
|---|---|
| repo stars | ★ 49 |
| Last updated | August 4, 2026 |
| Repository | laurigates/claude-plugins ↗ |
What it does
Helps with ai & agent building tasks.
Files
/finops:compare
Compare GitHub Actions FinOps metrics across multiple repositories - cache usage, workflow frequency, failure rates, and efficiency.
When to Use
| Scenario | Use this skill | Alternative |
|---|---|---|
| Compare CI metrics across org repos | /finops:compare | - |
| Identify worst-performing repos in org | /finops:compare | - |
| Org-wide cache or failure audit | /finops:compare | - |
| Deep-dive into a single repo's caches | /finops:caches | Use caches for single-repo detail |
| Deep-dive into a single repo's workflows | /finops:workflows | Use workflows for per-repo analysis |
| Quick summary of current repo only | /finops:overview | Use overview for single-repo snapshot |
Parameters
| Parameter | Description | Default |
|---|---|---|
org | GitHub organization name (required) | - |
repos... | Space-separated list of repo names | All org repos |
--limit N | Limit auto-discovery to N repos | 30 |
Usage Examples
# Compare specific repos
/finops:compare myorg repo1 repo2 repo3
# Compare all repos in org (up to 30)
/finops:compare myorg
# Compare more repos
/finops:compare myorg --limit 50Execution
bash "${SKILL_DIR}/scripts/compare-repos.sh" $ARGSOutput Format
=== FinOps Comparison: myorg ===
Discovering repos (limit: 30)...
Found 25 repos
=== Cache Usage ===
Repository Caches Size (MB)
---------- ------ ---------
frontend-app 45 2340
backend-api 32 1850
shared-libs 18 420
...
=== Workflow Activity (last 30 days) ===
Repository Runs Success Failed Skip Rate
---------- ---- ------- ------ ---------
frontend-app 156 140 10 3%
backend-api 89 85 2 2%
...
=== Failure Rates (top 15) ===
Repository Total Failed Rate
---------- ----- ------ ----
legacy-service 45 12 26%
experimental-repo 20 5 25%
...
=== Active Workflows ===
Repository Workflows
---------- ---------
frontend-app 8
backend-api 5
...
=== Summary ===
Total cache usage: 8450MB across 25 repos
Repos exceeding 1GB cache:
frontend-app: 2340MB
backend-api: 1850MB
Repos with >20% failure rate:
legacy-service: 26%
experimental-repo: 25%Agentic Optimizations
| Context | Command |
|---|---|
| List org repos (JSON) | gh api "/orgs/{org}/repos?per_page=100&sort=pushed" --jq '.[].full_name' |
| Cache count per repo | gh api "/repos/{owner}/{repo}/actions/caches" --jq '.total_count' |
| Workflow runs (JSON) | gh api "/repos/{owner}/{repo}/actions/runs?per_page=100" --jq '.workflow_runs' |
| Compact multi-repo compare | bash "${SKILL_DIR}/scripts/compare-repos.sh" $ARGS |
Post-actions
Based on comparison results:
- High cache repos: Run
/finops:caches <repo>for detailed analysis - High failure repos: Run
/finops:workflows <repo>to investigate - High activity repos: Run
/finops:waste <repo>to find optimizations - Create report: Consider creating a GitHub issue with findings
#!/usr/bin/env bash
# Compare Repos FinOps
# Compares GitHub Actions FinOps metrics across repositories in an organization.
# Usage: bash compare-repos.sh <org> [repo1 repo2 ...] [--limit N]
#
# Args:
# org GitHub organization name (required)
# repos Space-separated repo names (default: all org repos)
# --limit Max repos for auto-discovery (default: 30)
# shellcheck disable=SC2016 # jq expressions use $ for variable references, not shell expansion
set -euo pipefail
if [[ $# -eq 0 ]]; then
echo "Usage: bash compare-repos.sh <org> [repo1 repo2 ...] [--limit N]"
exit 1
fi
ORG="$1"
shift
LIMIT=30
REPOS=()
while [[ $# -gt 0 ]]; do
case $1 in
--limit)
LIMIT="$2"
shift 2
;;
*)
REPOS+=("$1")
shift
;;
esac
done
echo "=== FinOps Comparison: $ORG ==="
echo ""
# Discover repos if not specified
if [[ ${#REPOS[@]} -eq 0 ]]; then
echo "Discovering repos (limit: $LIMIT)..."
mapfile -t REPOS < <(gh repo list "$ORG" --json name --limit "$LIMIT" --jq '.[].name')
echo "Found ${#REPOS[@]} repos"
echo ""
fi
# === Cache Usage ===
echo "=== Cache Usage ==="
printf "%-40s %10s %12s\n" "Repository" "Caches" "Size (MB)"
printf "%-40s %10s %12s\n" "----------" "------" "---------"
for repo in "${REPOS[@]}"; do
result=$(gh api "/repos/$ORG/$repo/actions/cache/usage" 2>/dev/null || echo "")
if [[ -n "$result" ]]; then
count=$(echo "$result" | jq -r '.active_caches_count // 0')
size=$(echo "$result" | jq -r '.active_caches_size_in_bytes // 0')
size_mb=$((size / 1024 / 1024))
if [[ "$count" -gt 0 || "$size_mb" -gt 0 ]]; then
printf "%-40s %10d %12d\n" "$repo" "$count" "$size_mb"
fi
fi
done
echo ""
# === Workflow Activity ===
echo "=== Workflow Activity (last 30 days) ==="
printf "%-40s %8s %8s %8s %10s\n" "Repository" "Runs" "Success" "Failed" "Skip Rate"
printf "%-40s %8s %8s %8s %10s\n" "----------" "----" "-------" "------" "---------"
for repo in "${REPOS[@]}"; do
result=$(gh api "/repos/$ORG/$repo/actions/runs?per_page=100" 2>/dev/null || echo "")
if [[ -n "$result" ]]; then
stats=$(echo "$result" | jq -r '
.workflow_runs |
if length > 0 then
{
total: length,
success: ([.[] | select(.conclusion == "success")] | length),
failed: ([.[] | select(.conclusion == "failure")] | length),
skipped: ([.[] | select(.conclusion == "skipped")] | length)
} |
"\(.total)\t\(.success)\t\(.failed)\t\(if .total > 0 then (.skipped * 100 / .total | floor) else 0 end)%"
else empty end
')
if [[ -n "$stats" ]]; then
printf "%-40s %s\n" "$repo" "$stats"
fi
fi
done
echo ""
# === Failure Rates ===
echo "=== Failure Rates (top 15) ==="
printf "%-40s %8s %8s %10s\n" "Repository" "Total" "Failed" "Rate"
printf "%-40s %8s %8s %10s\n" "----------" "-----" "------" "----"
{
for repo in "${REPOS[@]}"; do
result=$(gh api "/repos/$ORG/$repo/actions/runs?per_page=100&status=completed" 2>/dev/null || echo "")
if [[ -n "$result" ]]; then
stats=$(echo "$result" | jq -r '
.workflow_runs |
if length > 0 then
{
total: length,
failed: ([.[] | select(.conclusion == "failure")] | length)
} |
select(.failed > 0) |
"\(.total)\t\(.failed)\t\(.failed * 100 / .total | floor)%"
else empty end
')
if [[ -n "$stats" ]]; then
printf "%-40s %s\n" "$repo" "$stats"
fi
fi
done
} | head -15
echo ""
# === Active Workflows ===
echo "=== Active Workflows ==="
printf "%-40s %10s\n" "Repository" "Workflows"
printf "%-40s %10s\n" "----------" "---------"
for repo in "${REPOS[@]}"; do
count=$(gh workflow list --repo "$ORG/$repo" --json id --jq 'length' 2>/dev/null || echo "0")
if [[ "$count" -gt 0 ]]; then
printf "%-40s %10s\n" "$repo" "$count"
fi
done
echo ""
# === Summary ===
echo "=== Summary ==="
TOTAL_CACHE=0
for repo in "${REPOS[@]}"; do
size=$(gh api "/repos/$ORG/$repo/actions/cache/usage" --jq '.active_caches_size_in_bytes // 0' 2>/dev/null || echo "0")
TOTAL_CACHE=$((TOTAL_CACHE + size))
done
echo "Total cache usage: $((TOTAL_CACHE / 1024 / 1024))MB across ${#REPOS[@]} repos"
echo ""
echo "Repos exceeding 1GB cache:"
for repo in "${REPOS[@]}"; do
size=$(gh api "/repos/$ORG/$repo/actions/cache/usage" --jq '.active_caches_size_in_bytes // 0' 2>/dev/null || echo "0")
if [[ "$size" -gt 1073741824 ]]; then
echo " $repo: $((size / 1024 / 1024))MB"
fi
done
echo ""
echo "Repos with >20% failure rate:"
for repo in "${REPOS[@]}"; do
result=$(gh api "/repos/$ORG/$repo/actions/runs?per_page=50&status=completed" 2>/dev/null || echo "")
if [[ -n "$result" ]]; then
rate=$(echo "$result" | jq -r '
.workflow_runs |
if length > 0 then
([.[] | select(.conclusion == "failure")] | length) * 100 / length | floor
else 0 end
')
if [[ "$rate" -gt 20 ]]; then
echo " $repo: ${rate}% failure rate"
fi
fi
done
Related skills
AI & Agent Buildingagents