本技能用于处理 EGG 框架。它提供基于用户意图在核心概念、控制器和单元测试之间做选择的决策指导。作为所有 EGG 相关问题的入口点使用。覆盖模块架构、依赖注入、后台任务、EventBus 事件总线、AOP 切面编程、HTTP/MCP/Schedule 控制器、Ajv 参数校验、单元测试等。
本技能帮助根据用户意图和任务类型确定使用哪个专用的 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