mcpField
F
finops-caches

finops-caches

github.com/laurigatesCloud & DevOps5955 installsUpdated 1d ago
Repository

About finops-caches

finops-caches is a skill for analyzing GitHub Actions cache usage in a repository or across an organization. It breaks down cache size, key patterns, branch distribution, and stale caches, with commands for cleanup.

Key features

  1. 01Analyze cache size and usage
  2. 02Group caches by key prefix
  3. 03Review branch cache distribution
  4. 04Detect stale or orphaned PR caches
  5. 05Query and delete caches with gh

Use cases

  1. 01Investigating cache usage near repository limits
  2. 02Finding stale caches for cleanup
  3. 03Reviewing cache key strategy
  4. 04Analyzing cache usage across an organization

Install

Copy the command and run it in a terminal.

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

After installing, type/finops-cachesin Claude Code to confirm it loaded.

Bundled filesscripts/cache-analysis.sh

Details

From the project README

/finops:caches

Analyze GitHub Actions cache usage - size breakdown, cache key patterns, branch distribution, and stale cache detection.

When to Use

ScenarioUse this skillAlternative
Cache usage near limit or unknown/finops:caches-
Identify stale or orphaned PR caches/finops:caches-
Review cache key strategy effectiveness/finops:caches-
Quick overall repo health check/finops:overviewStart with overview first
Compare cache usage across repos/finops:compareUse compare for multi-repo view
Optimize workflow triggers, not caches/finops:wasteUse waste for workflow-level issues

Context

  • Current repo URL: !git remote get-url origin

Parameters

ParameterDescriptionDefault
repoRepository in owner/name formatCurrent repository
org:orgnameAnalyze org-wide cache usage-

Execution

bash "${SKILL_DIR}/scripts/cache-analysis.sh" $ARGS

Output Format

=== Cache Analysis: org/repo ===

Summary:
  45 caches, 2340MB used
  23% of 10GB limit

=== By Key Prefix ===
  node-modules: 12 caches, 1200MB
  playwright: 8 caches, 800MB
  turbo: 15 caches, 300MB

=== By Branch ===
  main: 10 caches, 500MB
  develop: 8 caches, 400MB
  PR 123: 3 caches, 150MB
  PR 118: 3 caches, 140MB

=== Largest Caches ===
  node-modules-linux-abc123: 180MB
  playwright-linux-def456: 150MB

=== Stale Caches (>7 days old) ===
  8 stale caches, 450MB reclaimable
  Oldest: 2025-01-15T10:30:00Z

=== PR Branch Caches ===
  12 PR caches, 580MB (check if PRs are merged/closed)

Agentic Optimizations

ContextCommand
Cache list (JSON)gh api "/repos/{owner}/{repo}/actions/caches?per_page=100" --jq '.actions_caches'
Total cache countgh api "/repos/{owner}/{repo}/actions/caches" --jq '.total_count'
Delete stale cachegh api -X DELETE "/repos/{owner}/{repo}/actions/caches/{id}"
Cache key searchgh api "/repos/{owner}/{repo}/actions/caches?key=prefix" --jq '.actions_caches[].key'
Compact summarybash "${SKILL_DIR}/scripts/cache-analysis.sh" $ARGS

Post-actions

Based on findings, suggest:

  • High % of limit -> Clean up stale caches, review key strategies
  • Many PR caches -> Add cache cleanup workflow for closed PRs
  • Large single caches -> Consider splitting or compressing
  • Stale caches -> Provide cleanup command:
    # Delete stale caches
    gh api "/repos/$REPO/actions/caches?per_page=100" \
      --jq '.actions_caches[] | select(.last_accessed_at < "CUTOFF") | .id' | \
      while read id; do gh api -X DELETE "/repos/$REPO/actions/caches/$id"; done
    

Comments

Markdown supported