mcpField
F
finops-caches

finops-caches

github.com/laurigates云与 DevOps5955 次安装1 天前更新
代码仓库

关于 finops-caches

finops-caches 是用于分析仓库或组织内 GitHub Actions 缓存的技能,可按大小、键模式和分支分布拆解缓存,并检测过期缓存及提供清理命令。

主要功能

  1. 01分析缓存大小和用量
  2. 02按键前缀汇总缓存
  3. 03查看各分支缓存分布
  4. 04检测过期或孤立的 PR 缓存
  5. 05使用 gh 查询和删除缓存

适用场景

  1. 01排查接近仓库限额的缓存用量
  2. 02查找待清理的过期缓存
  3. 03审查缓存键策略
  4. 04分析组织范围的缓存用量

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/finops-caches确认已加载。

附带文件scripts/cache-analysis.sh

详细介绍

/finops:caches

分析 GitHub Actions 缓存用量,包括大小分布、缓存键模式、分支分布和过期缓存检测。

适用场景

场景使用此技能替代方案
缓存用量接近上限或未知/finops:caches-
查找过期或孤立的 PR 缓存/finops:caches-
检查缓存键策略的有效性/finops:caches-
快速检查整个仓库的健康状况/finops:overview先从概览开始
比较多个仓库的缓存用量/finops:compare使用 compare 查看多个仓库
优化工作流触发器,而非缓存/finops:waste使用 waste 检查工作流级问题

上下文

  • 当前仓库 URL:!git remote get-url origin

参数

参数描述默认值
repo采用 owner/name 格式的仓库当前仓库
org:orgname分析整个组织的缓存用量-

执行

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

输出格式

=== 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 优化

上下文命令
缓存列表(JSON)gh api "/repos/{owner}/{repo}/actions/caches?per_page=100" --jq '.actions_caches'
缓存总数gh api "/repos/{owner}/{repo}/actions/caches" --jq '.total_count'
删除过期缓存gh api -X DELETE "/repos/{owner}/{repo}/actions/caches/{id}"
搜索缓存键gh api "/repos/{owner}/{repo}/actions/caches?key=prefix" --jq '.actions_caches[].key'
精简摘要bash "${SKILL_DIR}/scripts/cache-analysis.sh" $ARGS

后续操作

根据分析结果,建议:

  • 用量占上限的比例较高 -> 清理过期缓存,检查缓存键策略
  • PR 缓存较多 -> 为已关闭的 PR 添加缓存清理工作流
  • 单个缓存较大 -> 考虑拆分或压缩
  • 存在过期缓存 -> 提供清理命令:
    # 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
    

评论

支持 Markdown