API设计
- 作者仓库星标 18,996
- 许可证 MIT
- 作者更新于 实时读取
- 作者仓库 egg
- 领域
- AI 智能
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 94 / 100 · 已通过审计
- 作者 / 版本 / 许可
- @eggjs · MIT
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 即装即用
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- 未声明(默认跨平台)
- 底层运行要求
- 无特殊要求
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: egg
description: 本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事…
category: AI 智能
runtime: 无特殊运行时
---
# egg 输出预览
## PART A: 任务判断
- 适用问题:提示词、Agent 工作流、模型评估或自动化推理。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“概述 / 技能选择逻辑 / 使用 egg-core skill 当用户询问:”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于提示词、Agent 工作流、模型评估或自动化推理,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“概述 / 技能选择逻辑 / 使用 egg-core skill 当用户询问:”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文没有稳定的斜杠命令要求。安装验证后通常全局生效,直接在对话里点名这个 Skill 并描述任务即可。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“概述 / 技能选择逻辑 / 使用 egg-core skill 当用户询问:”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: egg
description: 本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事…
category: AI 智能
source: eggjs/egg
---
# egg
## 什么时候使用
- 把 AI / Agent方向的常用动作沉淀成 Agent 可调用的技能 适合处理AI Agent、提示词、模型评估与自动化推理,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查…
- 面向提示词、Agent 工作流、模型评估或自动化推理,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「概述 / 技能选择逻辑 / 使用 egg-core skill 当用户询问:」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "egg" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> 概述 / 技能选择逻辑 / 使用 egg-core skill 当用户询问:
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> 无特殊运行时 | 读取文件、写入/修改文件 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} EGG 决策指南
概述
本技能帮助根据用户意图和任务类型确定使用哪个专用的 EGG 技能。EGG 文档组织为两个主要领域:
- 核心概念(
egg-coreskill):模块架构、依赖注入、对象生命周期、EventBus 事件总线、AOP 切面编程 - 控制器(
egg-controllerskill):用于 API 端点的各种协议特定控制器 - 单元测试(
egg-unittestskill):HTTP 接口测试、Service/DI 对象测试、Mock 模拟、BackgroundTask 和 EventBus 测试
技能选择逻辑
使用 egg-core skill 当用户询问:
用户询问关于:
- 模块架构和组织
@SingletonProtovs@ContextProto的使用- 使用
@Inject的依赖注入 - 对象生命周期和实例化
- 模块之间的访问控制(
AccessLevel) - 模块配置(
module.yml、package.json) - 使用限定符解决命名冲突
- 请求返回后执行异步任务(BackgroundTaskHelper)
- 事件驱动架构(EventBus、@Event)
- AOP 切面编程(@Advice、@Pointcut、@Crosscut)
触发关键词:
- module、workspace、modules
- singleton、单例、@SingletonProto
- context、request context、@ContextProto
- inject、injection、dependency injection、@Inject
- prototype、lifecycle、实例化
- background task、异步任务、后台任务、BackgroundTaskHelper
- eventbus、event bus、事件总线、事件驱动、@Event、emit、发布订阅、解耦
- aop、切面、aspect、advice、pointcut、crosscut、拦截器、横切关注点
- access level、private、public、@ModuleQualifier
- configuration、module config
示例查询:
- "如何在 EGG 中创建模块?"
- "SingletonProto 和 ContextProto 有什么区别?"
- "如何注入服务?"
- "如何访问其他模块的对象?"
- "EGG 中的 AccessLevel 是什么?"
- "如何用 EventBus 解耦异步任务?"
- "EventBus 和 BackgroundTaskHelper 有什么区别?"
- "如何用 AOP 给所有 Service 加日志?"
使用 egg-controller skill 当用户询问:
用户询问关于:
- 创建 API 端点或接口
- 实现特定协议处理器(HTTP、MCP 等)
- 连接到外部系统或客户端
- 处理传入的请求/响应
- 控制器级别的装饰器和模式
- 参数校验(Ajv + TypeBox)
- 控制器中间件(Middleware,函数式或 AOP 写法)
触发关键词:
- controller、控制器
- HTTP、API、REST、endpoint
- MCP、LLM、AI、tool
- schedule、timer、cron、scheduled、定时
- SSE、streaming、server-sent events
- validate、校验、参数校验、ajv、typebox、schema
- middleware、中间件、拦截器、洋葱模型、@Middleware
示例查询:
- "如何创建 HTTP controller?"
- "如何实现 MCP 接口?"
- "怎么实现定时任务?"
- "帮我给接口加上参数校验"
- "如何给控制器加中间件?"
- "怎么写一个鉴权中间件?"
使用 egg-unittest skill 当用户询问:
用户询问关于:
- 编写单元测试或集成测试
- 使用 @eggjs/mock 进行测试
- 测试 HTTP 接口(app.httpRequest)
- 测试 Service/DI 对象
- Mock 数据或依赖
- 测试 BackgroundTaskHelper 或 EventBus
触发关键词:
- test、测试、单测、单元测试、unittest、unit test
- mock、mm、@eggjs/mock、mockCsrf、mockHttpclient、mockSession、mockContext
- httpRequest、supertest
- getEggObject、mockModuleContextScope
- eventWaiter、BackgroundTaskHelper 测试
- vitest、describe、it、beforeAll
示例查询:
- "如何写单元测试?"
- "如何测试 HTTP 接口?"
- "如何 mock 一个 Service?"
- "POST 请求测试报 CSRF 错误"
- "如何测试 ContextProto 的 Service?"
- "怎么测试后台任务是否执行完成?"
- "怎么测试 EventBus 事件是否被正确处理?"
决策框架
步骤 1:识别意图类型
询问:用户是在询问构建块/框架内部 OR 实现特定接口?
构建块/框架内部 → 使用 egg-core skill
- 理解 EGG 如何工作
- 组织代码结构
- 管理对象生命周期
- 设置模块
实现特定接口 → 使用 egg-controller skill
- 创建 API/端点
- 处理不同协议
- 处理请求/响应
步骤 2:检查模糊意图
如果用户的意图可能是核心 OR 控制器(例如,"如何实现一个需要跨模块访问的服务?"):
决策优先级:核心概念优先
理由:即使服务将在控制器中使用,关于跨模块访问(AccessLevel)的基本问题是一个核心概念。一旦理解了核心结构,用户就可以在控制器中应用它。
行动:
- 使用
egg-coreskill - 解释概念(例如,
AccessLevel.PUBLIC) - 核心解释后,建议:"如果你需要在特定控制器中使用它,请使用
egg-controllerskill
步骤 3:协议/用例特定指示器
| 协议/用例 | 主要技能 | 次要技能 |
|---|---|---|
| HTTP API | egg-controller |
- |
| MCP | egg-controller |
- |
| Scheduled Tasks | egg-controller |
- |
| Parameter validation | egg-controller |
- |
| Controller Middleware | egg-controller |
- |
| Background tasks | egg-core |
- |
| Event-driven / EventBus | egg-core |
- |
| AOP / 切面编程 | egg-core |
- |
| Cross-module injection | egg-core |
- |
| Module structure | egg-core |
- |
| Object lifecycle | egg-core |
- |
| Unit Testing | egg-unittest |
- |
| Mock / Test helpers | egg-unittest |
- |
冲突解决规则
规则 1:基础优先
当问题同时涉及核心概念 AND 控制器实现时:
- 示例:"如何实现一个 HTTP 控制器可以使用的单例服务?"
- 决策:从
egg-coreskill 开始解释 SingletonProto 和 AccessLevel - 后续:"现在你理解了服务定义,使用
egg-controllerskill 实现注入此服务的 HTTP 控制器。"
规则 2:显式覆盖
如果用户明确提及特定控制器类型:
- 示例:"如何使用 HTTPController 配合 ContextProto 服务?"
- 决策:使用
egg-controllerskill(HTTPController 是显式的) - 后续:解释 HTTPController 实现,如果需要简要提及来自核心概念的 ContextProto
规则 3:学习语境
如果用户问"什么是 X?"或"Y 如何工作?":
- 核心概念问题 → 使用
egg-coreskill - 控制器类型问题 → 使用
egg-controllerskill - 一般 EGG 问题 → 使用本技能的决策框架
如果用户问"如何实现 X?"或"给我看 Y 的代码?":
- 实现特定问题 → 根据决策框架加载特定 skill
快速参考表
| 用户意图 | 关键词 | 使用技能 |
|---|---|---|
| Module architecture | module、workspace、organization | egg-core skill |
| Object lifecycle | singleton、context、lifecycle | egg-core skill |
| Dependency injection | inject、@Inject、dependency | egg-core skill |
| Access control | private、public、cross-module | egg-core skill |
| Background tasks | background task、异步任务、后台任务 | egg-core skill |
| Event-driven | eventbus、事件总线、@Event、emit | egg-core skill |
| AOP 切面编程 | aop、切面、advice、pointcut、crosscut | egg-core skill |
| HTTP endpoints | HTTP、API、REST | egg-controller skill |
| LLM/AI integration | MCP、tool、prompt | egg-controller skill |
| Scheduling | schedule、cron、timer | egg-controller skill |
| Param validation | validate、校验、ajv、typebox、schema | egg-controller skill |
| Middleware 中间件 | middleware、中间件、拦截器、@Middleware | egg-controller skill |
| Unit testing | test、mock、unittest、单测 | egg-unittest skill |
| Mock dependencies | mock、mm、mockCsrf、mockHttpclient | egg-unittest skill |
示例
示例 1:明确的核心意图
用户:"@SingletonProto 和 @ContextProto 有什么区别?"
分析:问题关于核心装饰器和对象生命周期
决策:使用 egg-core skill
用户:"如何在 EGG 中创建模块?"
分析:问题关于模块架构(核心概念)
决策:使用 egg-core skill
示例 2:明确的控制器意图
用户:"如何创建返回 JSON 的 HTTP controller?"
分析:问题关于实现特定协议(HTTP)
决策:使用 egg-controller skill
示例 3:模糊意图(核心 > 控制器)
用户:"我需要创建一个可以被 HTTP 控制器使用的服务。如何实现?"
分析:用户需要理解核心概念(跨模块访问)AND 控制器实现
决策:首先使用 egg-core skill(基础)
响应:
- 解释
@SingletonProto配合AccessLevel.PUBLIC使服务可访问 - 展示如何注入服务:
@Inject() myService: MyService - 后续:"现在你可以在 HTTPController 中注入此服务。实现详情请使用
egg-controllerskill。"
示例 4:显式控制器加上核心知识
用户:"如何在 HTTPController 中使用 @Inject 访问用户服务?"
分析:用户明确提及 HTTPController(控制器类型)但询问 @Inject(核心概念)
决策:使用 egg-controller skill(HTTPController 是明确意图)
响应:
- 展示配合
@Inject的 HTTPController 实现 - 简要解释 @Inject 如何工作(核心概念摘要)
- 注意:"包含限定符的详细 @Inject 使用,请使用
egg-coreskill"
示例 5:测试相关
用户:"帮我写个 UserController 的单元测试"
分析:问题关于编写测试代码
决策:使用 egg-unittest skill
用户:"POST 请求测试报 403 错误"
分析:测试中遇到 CSRF 问题
决策:使用 egg-unittest skill
路由最佳实践
优先考虑显式控制器提及:如果用户命名特定控制器(HTTP),即使涉及核心概念也使用控制器技能
基础先行:如果实现前需要理解核心概念,先解释核心概念
简短上下文可以接受:当路由到一个技能时,提及另一个技能的存在以供后续问题
混合响应可接受:当意图真正混合时,提供两个技能的简短上下文但专注于主要意图
渐进式披露:除非明确要求,不要同时加载两个技能。让用户引导探索
技能交互
本技能(egg skill)应该:
- 为框架内部概念路由到
egg-coreskill - 为协议特定实现路由到
egg-controllerskill - 为测试相关问题路由到
egg-unittestskill - 当意图模糊时提供决策指导
- 当存在有用的上下文时交叉引用技能
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核