원클릭으로
egg
// 本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事件总线、AOP 切面编程、HTTP/MCP/Schedule 控制器、Ajv 参数校验、单元测试等。
// 本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事件总线、AOP 切面编程、HTTP/MCP/Schedule 控制器、Ajv 参数校验、单元测试等。
Use when creating API endpoints, implementing protocol handlers, exposing interfaces for specific clients, adding parameter validation, or applying middleware to controllers. Covers HTTP, MCP and Schedule controllers, Ajv/TypeBox parameter validation, and Middleware (function-style and AOP) for EGG framework applications.
本技能用于处理 EGG 基础核心概念,包括模块架构、@SingletonProto、@ContextProto、@Inject 装饰器、动态注入、BackgroundTaskHelper 后台任务、EventBus 事件总线和 AOP 切面编程。用于理解 EGG 的基础构建块、依赖注入、对象生命周期管理、运行时多实现动态选择、请求返回后的异步任务处理、事件驱动架构和横切关注点。
本技能用于编写 EGG 应用的单元测试。覆盖 HTTP 接口测试、Service/DI 对象测试、Mock 数据模拟、BackgroundTask 和 EventBus 测试。使用 @eggjs/mock、app.httpRequest()、app.getEggObject()、mm() 等 API。
| name | egg |
| description | 本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事件总线、AOP 切面编程、HTTP/MCP/Schedule 控制器、Ajv 参数校验、单元测试等。 |
| allowed-tools | Read |
本技能帮助根据用户意图和任务类型确定使用哪个专用的 EGG 技能。EGG 文档组织为两个主要领域:
egg-core skill):模块架构、依赖注入、对象生命周期、EventBus 事件总线、AOP 切面编程egg-controller skill):用于 API 端点的各种协议特定控制器egg-unittest skill):HTTP 接口测试、Service/DI 对象测试、Mock 模拟、BackgroundTask 和 EventBus 测试egg-core skill 当用户询问:用户询问关于:
@SingletonProto vs @ContextProto 的使用@Inject 的依赖注入AccessLevel)module.yml、package.json)触发关键词:
示例查询:
egg-controller skill 当用户询问:用户询问关于:
触发关键词:
示例查询:
egg-unittest skill 当用户询问:用户询问关于:
触发关键词:
示例查询:
询问:用户是在询问构建块/框架内部 OR 实现特定接口?
构建块/框架内部 → 使用 egg-core skill
实现特定接口 → 使用 egg-controller skill
如果用户的意图可能是核心 OR 控制器(例如,"如何实现一个需要跨模块访问的服务?"):
决策优先级:核心概念优先
理由:即使服务将在控制器中使用,关于跨模块访问(AccessLevel)的基本问题是一个核心概念。一旦理解了核心结构,用户就可以在控制器中应用它。
行动:
egg-core skillAccessLevel.PUBLIC)egg-controller skill| 协议/用例 | 主要技能 | 次要技能 |
|---|---|---|
| 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 | - |
当问题同时涉及核心概念 AND 控制器实现时:
egg-core skill 开始解释 SingletonProto 和 AccessLevelegg-controller skill 实现注入此服务的 HTTP 控制器。"如果用户明确提及特定控制器类型:
egg-controller skill(HTTPController 是显式的)如果用户问"什么是 X?"或"Y 如何工作?":
egg-core skillegg-controller skill如果用户问"如何实现 X?"或"给我看 Y 的代码?":
| 用户意图 | 关键词 | 使用技能 |
|---|---|---|
| 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 |
用户:"@SingletonProto 和 @ContextProto 有什么区别?"
分析:问题关于核心装饰器和对象生命周期
决策:使用 egg-core skill
用户:"如何在 EGG 中创建模块?"
分析:问题关于模块架构(核心概念)
决策:使用 egg-core skill
用户:"如何创建返回 JSON 的 HTTP controller?"
分析:问题关于实现特定协议(HTTP)
决策:使用 egg-controller skill
用户:"我需要创建一个可以被 HTTP 控制器使用的服务。如何实现?"
分析:用户需要理解核心概念(跨模块访问)AND 控制器实现
决策:首先使用 egg-core skill(基础)
响应:
@SingletonProto 配合 AccessLevel.PUBLIC 使服务可访问@Inject() myService: MyServiceegg-controller skill。"用户:"如何在 HTTPController 中使用 @Inject 访问用户服务?"
分析:用户明确提及 HTTPController(控制器类型)但询问 @Inject(核心概念)
决策:使用 egg-controller skill(HTTPController 是明确意图)
响应:
@Inject 的 HTTPController 实现egg-core skill"用户:"帮我写个 UserController 的单元测试"
分析:问题关于编写测试代码
决策:使用 egg-unittest skill
用户:"POST 请求测试报 403 错误"
分析:测试中遇到 CSRF 问题
决策:使用 egg-unittest skill
优先考虑显式控制器提及:如果用户命名特定控制器(HTTP),即使涉及核心概念也使用控制器技能
基础先行:如果实现前需要理解核心概念,先解释核心概念
简短上下文可以接受:当路由到一个技能时,提及另一个技能的存在以供后续问题
混合响应可接受:当意图真正混合时,提供两个技能的简短上下文但专注于主要意图
渐进式披露:除非明确要求,不要同时加载两个技能。让用户引导探索
本技能(egg skill)应该:
egg-core skillegg-controller skillegg-unittest skill