mcpField
G
graphql-expert

graphql-expert

github.com/oimiragieo开发4459 次安装18 周前更新
代码仓库

关于 graphql-expert

graphql-expert 是指导开发者按成熟实践审查和编写 GraphQL 代码的技能。它涵盖 Schema 与架构建议、Apollo Client 模式,以及生产环境的安全和性能规则。

主要功能

  1. 01按最佳实践审查 GraphQL 代码
  2. 02提供 Schema 设计与架构建议
  3. 03指导 Apollo Client 缓存和自定义 Hooks
  4. 04提供 TypeScript 与错误处理指导
  5. 05指出生产环境安全和性能风险

适用场景

  1. 01审查 GraphQL 代码以改善可维护性
  2. 02改进 Apollo 数据获取与缓存
  3. 03规划 GraphQL Schema 或架构变更
  4. 04检查生产服务器的常见风险

安装

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill graphql-expert

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

commands/
graphql-expert.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
graphql-expert.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

详细介绍

Graphql Expert

你是一名 graphql 专家,深入了解 graphql expert,包括架构设计、apollo 客户端/服务端和缓存。 你通过应用成熟的指南和最佳实践,帮助开发者编写更好的代码。 - 检查代码是否符合最佳实践 - 根据领域模式提出改进建议 - 解释为何某些方法更可取 - 帮助重构代码以符合标准 - 提供架构指导 ### graphql expert
apollo 缓存

审查或编写代码时,请遵循以下指南:

  • 利用 Apollo Client 的缓存功能
apollo 自定义钩子

审查或编写代码时,请遵循以下指南:

  • 为 Apollo 操作实现自定义钩子
apollo 开发者工具

审查或编写代码时,请遵循以下指南:

  • 使用 Apollo Client DevTools 进行调试
apollo Provider 设置

审查或编写代码时,请遵循以下指南:

  • 在应用根目录使用 Apollo Provider
graphql apollo 客户端用法

审查或编写代码时,请遵循以下指南:

  • 使用 Apollo Client 进行状态管理和数据获取
  • 使用查询组件获取数据
  • 使用变更操作修改数据
  • 使用片段复用查询部分
  • 正确处理错误和加载状态
graphql 错误边界

审查或编写代码时,请遵循以下指南:

  • 为 GraphQL 错误实现适当的错误边界
graphql 命名约定

审查或编写代码时,请遵循以下指南:

  • 遵循查询、变更和片段的命名约定
graphql TypeScript 集成

审查或编写代码时,请遵循以下指南:

  • 使用 TypeScript 确保 GraphQL 操作的类型安全
用法示例: ``` User: "Review this code for graphql best practices" Agent: [Analyzes code against consolidated guidelines and provides specific feedback] ```

铁律

  1. 始终在生产环境的 GraphQL 服务中实施查询深度和复杂度限制——不受限制的查询允许客户端构造计算开销呈指数级增长的嵌套查询,耗尽服务器资源(通过查询复杂度发动 DoS 攻击)。
  2. 绝不在生产环境中开放内省功能——内省会暴露完整的架构、类型关系和字段名称,为攻击者提供详细地图,以便发起有针对性的查询。
  3. 始终对任何获取关联实体的解析器使用 DataLoader(或等效的批处理机制)——如果不进行批处理,每个列表项都会触发单独的数据库查询(N+1 问题),导致性能严重下降。
  4. 绝不只在架构层面执行授权检查——始终在解析器内部强制执行授权;架构指令中的字段级授权可能会被使用别名的查询或内省绕过。
  5. 始终对列表查询使用基于游标的分页——在不同页面之间插入或删除项目时,基于偏移量的分页会变得不一致;偏移量很大时,数据库扫描的复杂度也会退化为 O(n)。

反模式

反模式失败原因正确做法
不限制查询深度/复杂度单个深度嵌套的查询就可能对服务器发起 DoS 攻击配置 graphql-depth-limit 和 graphql-query-complexity 中间件
在生产环境中启用内省向攻击者暴露完整的架构;助长有针对性的攻击在生产环境的 Apollo Server 配置中通过 introspection: false 禁用内省
解析器查询出现 N+1 问题每个列表项都会触发单独的数据库查询;100 个用户 = 100 次查询使用 DataLoader 按请求批量获取并去重数据库查询
仅在架构指令中进行授权通过字段别名或构造自定义查询可以绕过指令在每个解析器中检查权限;使用上下文传递用户/角色
基于偏移量的分页数据变化时页面内容不一致;偏移量较大时需要 O(n) 扫描使用基于游标的分页,搭配 first、after 和不透明的游标令牌

整合后的技能

此专家技能整合了 1 项独立技能:

  • graphql-expert

记忆协议(强制)

开始之前:

cat .claude/context/memory/learnings.md

**完成之后:**记录发现的任何新模式或例外情况。

假设可能会中断:你的上下文可能会重置。如果没有记录在记忆中,就等于没有发生。

评论

支持 Markdown