用途:该技能面向使用 Effect-TS 编写 TypeScript 的场景,帮助创建、组合和运行 Effect。Effect 是 Effect-TS 的基础类型,表示可能成功(值 A)、失败(错误 E)或需要上下文 R 的计算,写作 Effect<A, E, R>。关键点:Effect 是程序描述而非已执行代码,必须显式运行。
主要能力:创建 Effect,包括同步值(Effect.succeed、Effect.fail、Effect.sync、Effect.try)与异步值(Effect.promise、Effect.tryPromise);组合 Effect,支持 pipe 顺序组合、Effect.gen 生成器语法、map 转换成功值、flatMap/andThen 链式调用、tap 执行副作用、all 合并多个 Effect;运行 Effect,提供 Effect.runPromise、runPromiseExit、runSync、runSyncExit 等运行时方法。
使用方式:推荐用 Effect.gen 编写顺序代码,使用类型化错误(Schema.TaggedError),JSON 解析用 Schema.parseJson 而非 JSON.parse,优先 data-last(可管道)风格。运行示例:await Effect.runPromise(program)。
限制与注意:不要混用 async/await 与 Effect(仅在边界用 Effect.promise);不要用 try/catch,改用 Effect.try 或 Effect.tryPromise;不要抛异常,改用 Effect.fail 配合类型化错误;不要用 JSON.parse。编写任何 Effect 代码前须先阅读并遵循 Code Style 技能,其中定义了强制模式与禁止的反模式。完整 API 文档见 ${CLAUDE_PLUGIN_ROOT}/references/llms-full.txt。