github-api-cache 是一个面向 GitHub 项目操作的缓存技能,目标是在会话开始时只获取一次 GitHub 项目元数据,之后所有后续操作都使用缓存数据,从而避免重复 API 调用并防止 GraphQL API 速率限制耗尽。
用途 该技能用于缓存 GitHub 项目元数据,减少对 GitHub API 的重复请求。资料指出,GitHub GraphQL API 每小时限制为 5,000 点;如果不做缓存,gh project item-list、gh project field-list、gh project list 等命令每次调用都会消耗点数,典型会话启动可能通过重复调用消耗 3,500+ 点。该技能通过在会话开始时一次性获取项目字段和项目条目,并将结果存入环境变量来解决这个问题。
主要能力
- 速率限制检查:在任何批量操作前检查可用配额,包括 GraphQL 与 REST 剩余点数,并在 GraphQL 剩余低于 100 时输出警告。
- 会话初始化缓存:在会话开始时执行一次,缓存项目字段与项目条目,并从中提取字段 ID、状态选项 ID、项目 ID 等,写入环境变量。
- 缓存数据访问函数:提供仅使用缓存数据、不产生 API 调用的函数,用于获取条目 ID、条目状态、按状态获取 issue、获取条目摘要以及检查 issue 是否在项目中。
- 缓存刷新:在明确知道数据已变化时刷新条目缓存。
- 写入操作示例:写入操作无法缓存,资料中给出设置项目状态、向项目添加 issue 的示例,并说明这些操作仍需 API 调用。
使用方式 资料中提供了完整的 shell 代码。使用前需要设置 GITHUB_PROJECT_NUM 与 GH_PROJECT_OWNER 环境变量,否则初始化会报错退出。会话初始化会执行 field-list 与 item-list,并将结果存入 GH_CACHE_FIELDS 与 GH_CACHE_ITEMS,同时提取 GH_STATUS_FIELD_ID、GH_TYPE_FIELD_ID、GH_PRIORITY_FIELD_ID、各状态选项 ID 以及 GH_PROJECT_ID 等环境变量。资料还说明,缓存数据访问函数不产生 API 调用;写入操作如设置状态、添加 issue 仍会产生 API 调用,添加 issue 后需要刷新条目缓存。资料建议在需要缓存中没有的数据时优先使用 REST API,因为 REST API 有单独的每小时 5,000 次限制,MCP 工具也使用 REST。
适用场景 该技能由 session-start 调用,在会话开始时初始化缓存。其缓存数据被 project-board-enforcement、issue-driven-development、issue-prerequisite、epic-management、autonomous-orchestration 等技能使用,用于验证、状态更新、添加 issue、Epic 操作和状态查询。资料中的 API 成本对比显示,使用缓存后会话初始化从 20-50 次调用降至 3 次,检查 issue 状态、获取字段 ID、按状态查询、同步验证从多次调用降至 0 次,设置状态从 4 次降至 1 次。
限制与注意事项 资料明确列出反模式:不应重复执行字段查找、不应在循环中轮询条目列表、不应重复获取字段 ID、不应为简单操作使用 GraphQL 而应优先使用 REST API。写入操作无法缓存,必须节省使用。资料中的检查清单要求在操作前确认缓存已初始化且非空、批量操作前检查速率限制、读取使用缓存数据、仅写入产生 API 调用、添加条目的写入后刷新缓存。资料未提供价格、收费、平台兼容性等信息,这些内容暂未提供。