这是一个面向 TypeScript 开发与重构的技能包,适用于使用 Effect-TS 服务、Effect Schema、事件溯源持久化和 barrel 模块架构的代码仓库,帮助按 opencode 核心团队的实践编写代码。
用途:新增功能代码或重构既有代码时,按技能内的工作流分阶段执行。实现流程为:定位(加载 architecture.md,确定行为归属模块、依赖方向、命名约定)→ 收集(加载 helpers-deep-dive.md,先检查 util/、effect/、bus/、sync/ 中是否已有工具,已有则复用,没有则先内联,仅在重复出现时抽取)→ 构建(按类型加载 service-module.md、tool-module.md、schemas-and-state.md、server-and-routes.md、test-writing.md)→ 检查门(style-dna.md)→ 评审门(review-voice.md)。重构流程为定位、研究模式(refactoring-patterns.md 决策矩阵)、收集可复用工具、再走检查与评审门。
主要能力与关键约定:所有服务必须使用 Effect(Context.Service / Layer / makeRuntime),不用普通 async 类;一个模块一个自带 barrel,文件顶层平铺导出 schema、Interface、Service、layer、defaultLayer,文件结尾用 export * as X from ".",不使用文件内 export namespace;DTO、事件、工具参数统一用 Effect Schema(Schema.Struct 与 Schema.Schema.Type),边界 schema 加 .annotate({ identifier }),字段加 .annotate({ description }),错误用 Schema.TaggedErrorClass,品牌 ID 用 Newtype,不再以 Zod 作为边界工具;写入走事件溯源 SyncEvent.run → projectors → SQLite,仅非事件溯源功能可直接写库;测试不用 mock,使用 tmpdir + Instance.provide 与真实服务,仅外部 SDK 可 mock;变量优先单词命名。
适用场景:在符合上述架构的仓库中新增服务模块、工具、数据库表与事件、服务器路由、配置与插件,或进行简化、合并、抽取、迁移、删除、稳定化与变体消除等重构。
限制:资料给出各参考文件大小与内容范围,但未提供每个文件的具体内容与代码细节;不支持的场景未说明;价格、平台等信息暂未提供。