apollo-router-plugin-creator

3周前更新 8 0 0 0

apollo-router-plugin-creator 是指导 AI Agent 为 Apollo Router 编写自定义 Rhai 脚本插件的开发型 Skill,适合需要在 GraphQL 路由层实现请求头改写、字段级鉴权、流量控制等自定义处理逻辑的场景。

Skill 安装

多 Agent 安装
npx skills add https://github.com/apollographql/skills --skill apollo-router-plugin-creator

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

Skill 详细介绍

apollographql/skills#apollo-router-plugin-creator 是 Apollo GraphQL 官方 skills 仓库中的一个 Skill,用于帮助开发者创建 Apollo Router 的自定义插件。Apollo Router 是 Apollo 提供的 GraphQL 联邦路由器(Federation Router),基于 Rust 构建,支持通过插件机制扩展其请求处理流程。这个 Skill 的核心作用,是引导 AI Agent 为 Apollo Router 编写符合规范的自定义插件,包括插件的基本结构、生命周期钩子、配置 Schema 以及与服务(Service)层的集成方式。

它本身不是一个可以独立运行的软件,也不是一个 CLI 工具或 npm 包。它本质上是面向 AI Agent 的一套指令与开发指南,属于「方法论 + 代码生成指导」型 Skill。安装之后,Agent 会在涉及 Apollo Router 插件开发的任务中,自动套用官方推荐的结构和约定,而不是凭空生成一种可能无法编译或不符合 Router 插件 API 的写法。

核心功能

  • 指导生成 Apollo Router 自定义插件的 Rust 代码骨架。
  • 说明插件如何接入 Router 的请求 / 响应生命周期。
  • 帮助定义插件配置(configuration)与对应的 Schema。
  • 说明插件与服务层(Service)之间的关系与调用方式。
  • 在需要时协助补充依赖、模块声明和目录结构。

典型任务

  • 为 Apollo Router 创建一个鉴权插件,在请求进入时校验 Header 或 Token。
  • 创建一个日志 / 观测插件,记录请求耗时或转发到外部监控系统。
  • 创建一个请求改写插件,在转发到子图(subgraph)前修改查询或变量。
  • 创建一个限流或缓存类插件的代码框架。

适合哪些用户

  • 正在使用 Apollo Router 并需要自定义扩展行为的后端 / 平台工程师。
  • 已经熟悉 GraphQL 联邦,需要快速搭出插件骨架的开发者。
  • 使用 AI Agent 辅助写 Rust 代码、希望输出更贴合官方约定的用户。

不适合哪些需求

  • 不使用 Apollo Router、只用其他 GraphQL 服务器(如 Apollo Server)的项目。
  • 期望这个 Skill 直接部署或运行 Router —— 它只负责生成 / 指导代码。
  • 完全不想接触 Rust 的用户,因为 Apollo Router 插件是 Rust 实现的。

需要区分清楚:Skill 本身提供的是「怎么写插件」的知识与代码生成能力;真正让插件运行起来的是 Apollo Router 这个外部项目,以及你本地的 Rust 工具链。这两者的能力来源不同。

Skill 安全评估

总体判断:这是一个来源可信、行为相对克制的代码生成类 Skill。它来自 Apollo GraphQL 官方仓库,主要输出是代码和说明,不涉及自动收集用户数据或连接可疑第三方服务。风险主要来自「生成的代码」和「Agent 执行权限」,而不是 Skill 本身。

来源可信度

  • 来自 Apollo GraphQL 官方组织仓库,可信度较高。
  • 内容围绕官方 Apollo Router 插件规范,与官方文档方向一致。

可能的权限与行为

  • 文件写入:生成插件代码时,Agent 可能需要在项目中新建或修改 Rust 源文件。建议在受版本控制(如 Git)的项目中操作,便于回滚。
  • Shell 执行:编译、测试 Rust 插件通常需要运行 cargo 相关命令。如果 Agent 具备自动执行 Shell 的权限,应确认这些命令只作用于本项目。
  • 修改已有代码:如果 Agent 直接改动现有 Router 配置或 Cargo 依赖,可能影响构建。建议先让 Agent 给出改动说明,再决定是否应用。
  • 网络访问:拉取 crate 依赖时可能访问网络,这属于正常构建行为,但应留意依赖来源。

风险提示与建议

  • 如果只想让 Skill 帮你生成插件代码,可以关闭 Agent 的自动执行 Shell 权限,由你自己手动运行编译和测试。
  • 生成的代码在用于生产前,应自行审阅,尤其是鉴权、限流这类涉及安全逻辑的插件。
  • 不要在插件代码中硬编码 API Key、Token 或密钥;优先使用环境变量或密钥管理方案。
  • 如果生成的插件会访问外部服务,确认目标地址、证书与鉴权方式符合你的安全要求。

这个 Skill 没有证据表明会主动读取与任务无关的敏感文件,也没有确认存在的隐蔽网络回传行为。但由于无法对仓库做完整安全审计,不应把它描述为「零风险」。把它当作一个可靠的开发辅助工具,同时保留对生成代码和 Agent 权限的正常审查即可。

Skill 使用要求

一、Agent / 客户端

该 Skill 来自 Apollo 官方 skills 仓库,采用通用的 Agent Skill 组织方式。官方没有公布完整的第三方 Agent 兼容列表。从 Skill 的工作方式看,它在支持 Skills、自定义指令或类似加载机制的 Agent 中通常都能使用:

  • Claude Code:对该类 Skill 的加载机制支持较成熟,可以优先尝试。
  • Codex、Cursor、Trae、OpenClaw、WorkBuddy:在支持自定义 Skill / 指令的环境中可以尝试,具体加载方式与兼容程度以各 Agent 当前版本为准。

官方主要面向哪一类 Agent 并无明确声明,因此这里只作为「通常兼容」参考,不代表官方逐一支持上述所有 Agent。

二、运行环境 / 依赖

项目 要求
Agent 支持 Skill / 自定义指令的 AI Agent,Claude Code 可优先尝试
Apollo Router 插件最终运行需要 Apollo Router 环境
Rust 工具链 编译 Apollo Router 插件通常需要 Rust / Cargo
网络 拉取依赖、查阅文档时可能需要

Skill 本身只是指令集合,编写阶段不一定需要本地安装 Rust;但要编译和运行生成出来的插件,就需要 Rust / Cargo 以及 Apollo Router 相关环境。具体版本请以 Apollo Router 与 Rust 官方当前要求为准。

三、权限

  • 文件读取:可选,读取现有项目结构有助于生成更贴合的代码。
  • 文件写入:可选,用于生成 / 修改插件代码。
  • Shell:可选,用于编译、测试;可关闭并手动执行。
  • 网络:可选,用于拉取依赖。

四、账号 / API Key

使用这个 Skill 本身不需要 Apollo 账号、API Key 或 Token。Apollo Router 在连接 Apollo Studio(如启用相关功能)时可能需要账号或凭证,这是 Router 侧的需求,与 Skill 无关。请勿把这类凭证写进由 Skill 生成并被提交到仓库的代码里。

最小使用条件

  1. 一个支持 Skill / 自定义指令的 AI Agent。
  2. 一个 Apollo Router 插件开发项目(或准备新建)。
  3. 编译运行时:Rust / Cargo 与 Apollo Router 环境。

Skill 安装、使用与卸载教程

一、安装

可以直接复制本页面提供的 Skill 安装指令,粘贴到对应的 Agent 或终端中执行。LemonAIKit 的 Skill 详情页已提供安装指令,这里不再重复完整安装命令。

如果你不确定自己的 Agent 如何安装,可以直接询问当前的 AI Agent:

如何安装 apollographql/skills#apollo-router-plugin-creator?

如何在 Claude Code 中安装 apollographql/skills#apollo-router-plugin-creator?

如何在 Cursor 中安装 apollographql/skills#apollo-router-plugin-creator?

让 Agent 根据自己的 Skill 加载与管理机制,给出对应的安装步骤。如果该 Skill 存在特殊官方安装要求,以官方仓库说明为准。

二、安装后如何使用

安装后,当你的任务涉及 Apollo Router 插件开发时,Agent 会套用这个 Skill 的指导。你可以直接用自然语言描述需求,例如:

使用 apollo-router-plugin-creator,帮我为 Apollo Router 写一个校验请求 Header 中 JWT 的鉴权插件。

使用 apollo-router-plugin-creator,创建一个记录每个请求耗时的日志插件,并说明需要哪些配置项。

使用 apollo-router-plugin-creator,帮我把这个 Router 插件的现有代码整理成符合官方结构的写法。

描述需求时,最好说明:插件的目标、它要介入的处理阶段、需要的配置项,以及是否要接入外部服务。信息越具体,生成的代码越贴近你的实际场景。

三、卸载

不同 Agent 的 Skill 安装位置和管理方式可能不同。通常可以:

  • 使用对应 Agent / Skill 管理器提供的删除或禁用方式移除该 Skill。
  • 直接删除对应的 Skill 目录或文件。
  • 如果不确定,直接询问当前 Agent:

如何卸载 apollographql/skills#apollo-router-plugin-creator?

如果没有统一的卸载命令,让 Agent 根据自身的 Skill 管理机制来移除,通常更稳妥。

常见问题

1. 这个 Skill 和 Apollo Router 官方文档有什么区别?

Skill 是把插件开发的规范和结构整理成 Agent 可以套用的指令,便于在对话中直接生成代码。官方文档是权威参考来源,遇到不确定的 API 或版本差异时,应以 Apollo Router 官方文档为准。

2. 不用 Rust 可以吗?

Apollo Router 的插件机制基于 Rust,因此插件本身通常需要 Rust 实现。如果你不想接触 Rust,这个 Skill 的适用范围就比较有限。是否有其他扩展方式,取决于 Apollo Router 当前版本的能力,建议查阅官方文档确认。

3. 生成的插件代码能直接用于生产吗?

不建议直接上线。生成的是骨架和参考实现,鉴权、限流、数据改写等逻辑需要你根据实际业务自行审阅、补全测试,再进行灰度发布。

4. 可以让 Agent 直接帮我编译和运行吗?

可以,但取决于你是否开放了 Shell 权限。如果担心风险,可以只让 Agent 生成代码,由你自己手动执行 cargo 相关的编译和测试命令。

5. 安装后 Agent 没有按 Skill 输出怎么办?

先确认 Skill 是否被正确加载(不同 Agent 的识别方式不同)。可以尝试在提问时显式点明,例如说明「使用 apollo-router-plugin-creator」,并检查该 Agent 当前版本是否支持你使用的 Skill 加载机制。

6. 可以同时安装到多个 Agent 吗?

通常可以,Skill 本身是文件 / 指令集,安装到不同 Agent 互不冲突。但每个 Agent 的加载路径和管理方式不同,需要分别安装与配置。

7. 在中国大陆使用有网络要求吗?

Skill 的安装与使用主要依赖你所用 Agent 和代码托管平台的访问情况。编译插件时拉取 Rust 依赖可能需要访问相应的包源,网络条件不同可能影响下载速度,可按需配置镜像源。这与 Skill 本身无关。

Skill 更新日志

版本列表
v1.2.10 最新
## 变更内容 * chore(deps): 将依赖 prettier 更新至 v3.9.8,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/79 * docs: 将 connectors 技能指向最新的 Federation 和 Connectors LTS,由 @mabuyo 提交于 https://github.com/apollographql/skills/pull/80 ## 新贡献者 * @mabuyo 在 https://github.com/apollographql/skills/pull/80 中做出了首次贡献 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.9...v1.2.10
v1.2.9
## 变更内容 * feat: 添加 authz、safelisting、config-as-code,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/69 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.8...v1.2.9
v1.2.8
## 变更内容 * chore: 将 CLAUDE.md 符号链接到 AGENTS.md 并记录版本升级,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/78 * docs: 将 rust-best-practices 技能与上游手册同步,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/76 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.7...v1.2.8
v1.2.7
## 变更内容 * chore(deps): 将依赖 prettier 更新至 v3.9.4,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/73 * chore(deps): 将依赖 prettier 更新至 v3.9.5,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/74 * chore(deps): 将依赖 prettier 更新至 v3.9.6,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/75 * docs: 澄清 federation 链接版本是下限,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/77 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.6...v1.2.7
v1.2.6
## 变更内容 * chore(deps): 将依赖 prettier 更新至 v3.8.5,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/70 * chore(deps): 将依赖 prettier 更新至 v3.9.3,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/71 * 修复 list-apollo-kotlin-versions.sh 的链接,由 @jvanderwee 提交于 https://github.com/apollographql/skills/pull/72 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.5...v1.2.6
v1.2.5
## 变更内容 * docs: 记录 rover schema --coord 形式,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/68 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.4...v1.2.5
v1.2.4
## 变更内容 * Rover schema 探索,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/67 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.3...v1.2.4
v1.2.3
## 变更内容 * 更新 Apollo Kotlin 技能以包含迁移指南,由 @martinbonnin 提交于 https://github.com/apollographql/skills/pull/66 ## 新贡献者 * @martinbonnin 在 https://github.com/apollographql/skills/pull/66 中做出了首次贡献 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.2...v1.2.3
v1.2.2
## 变更内容 * docs: 将 gh 技能固定切换为 --pin 标志,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/62 * docs: 澄清 gh cli 注释与多技能安装匹配,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/63 * docs: 修复无效的 SDL 和不匹配的复杂度库,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/64 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.1...v1.2.2
v1.2.1
## 变更内容 * feat: 将 gh skill cli 与自动发布集成,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/60 * fix(apollo-ios): 记录不受信任内容的威胁模型,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/61 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.2.0...v1.2.1
v1.2.0
## 变更内容 * ci: 强制升级插件版本,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/59 * 添加 apollo-ios 技能,由 @AnthonyMDev 提交于 https://github.com/apollographql/skills/pull/58 ## 新贡献者 * @AnthonyMDev 在 https://github.com/apollographql/skills/pull/58 中做出了首次贡献 **完整变更日志**: https://github.com/apollographql/skills/compare/v1.0.0...v1.2.0
v1.0.0
## 变更内容 * 处理 Apollo Client 技能反馈:AC4 模式、TypedDocumentNode、缓存最佳实践,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/2 * 更新 README.md,由 @debergalis 提交于 https://github.com/apollographql/skills/pull/4 * 处理 PR #1 反馈:修复 Apollo Client 4.x 文档问题,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/3 * 为 Next.js、React Router 和 TanStack Start 添加框架特定的 Apollo Client 设置指南,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/6 * chore: 配置 Renovate,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/9 * 使文档语气与 Apollo Voice 指南保持一致,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/8 * 添加针对 Apollo Client 技能的 Copilot 指令,由 @phryneas 提交于 https://github.com/apollographql/skills/pull/12 * 添加 skill-creator 技能,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/10 * 从恢复的文档访问中添加完整的 Apollo Client Suspense hooks 文档,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/11 * 添加强调共置而非复用的 fragments 参考指南,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/13 * 分离客户端和 SSR 集成指南,将 setup 重命名为 integration,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/16 * 用完整手册章节替换 rust-best-practices 摘要,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/15 * 为 JavaScript/TypeScript 代码示例添加 Prettier 格式化,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/17 * 将 apollo-client 技能与上游提交 7f665110 同步,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/18 * 使 Apollo Server 技能与 Apollo Server 5.x 文档保持一致,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/19 * 更新一些导入,由 @phryneas 提交于 https://github.com/apollographql/skills/pull/20 * 将 `skill-creator` 技能添加到活跃的 Copilot Skills,由 @phryneas 提交于 https://github.com/apollographql/skills/pull/23 * 修复 apollo-mcp-server 技能,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/21 * 为 PR 添加 skills-ref 验证工作流,由 @Copilot 提交于 https://github.com/apollographql/skills/pull/25 * 添加 Apollo Kotlin 技能,由 @BoD 提交于 https://github.com/apollographql/skills/pull/26 * Apollo Kotlin 技能:添加脚本以获取最新版本,由 @BoD 提交于 https://github.com/apollographql/skills/pull/28 * 标准化技能版本格式,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/29 * 更新指令信息,由 @dariuszkuc 提交于 https://github.com/apollographql/skills/pull/32 * chore(deps): 将依赖 prettier 固定到 3.8.1,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/33 * 修复拼写错误,由 @jvanderwee 提交于 https://github.com/apollographql/skills/pull/31 * 添加 apollo-federation 技能,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/5 * feat: 为联邦 GraphQL 超级图添加 apollo-router 技能,由 @gocamille 提交于 https://github.com/apollographql/skills/pull/22 * 添加 Claude Code 插件支持,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/34 * 修复 apollo-mcp-server 技能配置示例中不正确的字段名,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/35 * feat(apollo-router): 使交接和快速开始以技能为先,由 @gocamille 提交于 https://github.com/apollographql/skills/pull/36 * feat(skill): apollo-router-plugin-creator,由 @samuelAndalon 提交于 https://github.com/apollographql/skills/pull/30 * 从允许的工具中移除 curl,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/38 * 更新 apollo-mcp-server 技能以确保准确性,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/39 * fix: 修正 apollo-mcp-server 参考中的 CORS 配置选项,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/40 * fix: 修复损坏的链接和语法/拼写问题,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/41 * ci: 添加 AI 驱动的技能同步工作流,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/42 * refactor: 直接将技能与产品源进行比较,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/43 * ci: 在技能同步中包含新功能覆盖,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/44 * fix: 对分诊结果使用 structured_output,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/45 * fix: 将多操作示例拆分为每个文件一个操作,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/46 * 用 Claude CLI 替换 claude-code-action,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/47 * feat: 添加 GraphQL LSP 服务器配置,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/49 * chore(deps): 将依赖 prettier 更新至 v3.8.2,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/50 * chore(deps): 将依赖 prettier 更新至 v3.8.3,由 @svc-secops 提交于 https://github.com/apollographql/skills/pull/51 * feat: 从 apollo-client 仓库同步 apollo-client 技能,由 @phryneas 提交于 https://github.com/apollographql/skills/pull/52 * fix(apollo-router): 围绕 Cache-Control 头重构响应缓存,由 @abernix 提交于 https://github.com/apollographql/skills/pull/53 * docs(apollo-router): 扩展可观测性和 Redis 部署指南,由 @abernix 提交于 https://github.com/apollographql/skills/pull/54 * sync: 从 apollo-client@47c63b9795770ad581f77d892932f97b1cb2eb87 同步 apollo-client 技能,由 @github-actions[bot] 提交于 https://github.com/apollographql/skills/pull/55 * 为 apollo-router 技能添加响应缓存覆盖,由 @DaleSeo 提交于 https://github.com/apollographql/skills/pull/37 * sync: 从 apollo-client@de252731ffdc61026b01dd4be9f8d11a98daf43e 同步 apollo-client 技能,由 @github-actions[bot] 提交于 https://github.com/apollographql/skills/pull/57 ## 新贡献者 * @Copilot 在 https://github.com/apollographql/skills/pull/2 中做出了首次贡献 * @debergalis 在 https://github.com/apollographql/skills/pull/4 中做出了首次贡献 * @svc-secops 在 https://github.com/apollographql/skills/pull/9 中做出了首次贡献 * @phryneas 在 https://github.com/apollographql/skills/pull/12 中做出了首次贡献 * @DaleSeo 在 https://github.com/apollographql/skills/pull/10 中做出了首次贡献 * @BoD 在 https://github.com/apollographql/skills/pull/26 中做出了首次贡献 * @dariuszkuc 在 https://github.com/apollographql/skills/pull/32 中做出了首次贡献 * @jvanderwee 在 https://github.com/apollographql/skills/pull/31 中做出了首次贡献 * @gocamille 在 https://github.com/apollographql/skills/pull/22 中做出了首次贡献 * @samuelAndalon 在 https://github.com/apollographql/skills/pull/30 中做出了首次贡献 * @abernix 在 https://github.com/apollographql/skills/pull/53 中做出了首次贡献 **完整变更日志**: https://github.com/apollographql/skills/commits/v1.0.0

暂无评论

none
暂无评论...