Agent Skills
› iamcheyan/oc
› effect
effect
GitHub指导使用 Effect v4 进行 TypeScript 开发,包括源码引用、API 使用规范、分层架构设计及测试模式。
Trigger Scenarios
涉及 Effect v4 API 的使用
编写基于 Effect 的 TypeScript 服务或工作流代码
配置 Effect 测试环境
Install
npx skills add iamcheyan/oc --skill effect -g -y
SKILL.md
Frontmatter
{
"name": "effect",
"description": "Work with Effect v4 TypeScript code in this repo"
}
Effect
This codebase uses Effect for typed, composable TypeScript services, schemas, and workflows.
Source Of Truth
Use the current Effect v4 source, not memory or older Effect v2/v3 examples.
- If
.opencode/references/effectis missing, clonehttps://github.com/Effect-TS/effectthere. Do this in the project, not in the skill folder. - Search
.opencode/references/effectfor exact APIs, examples, tests, and naming patterns before answering or implementing Effect-specific code. - Also inspect existing repo code for local house style before introducing new patterns.
- Prefer answers and implementations backed by specific source files or nearby repo examples.
Guidelines
- Prefer current Effect v4 APIs and project-local patterns over old blog posts, examples, or package-memory guesses.
- Use
Effect.gen(function* () { ... })for multi-step workflows. - Use
Effect.fn("Name")orEffect.fnUntraced(...)for named effects when adding reusable service methods or important workflows. - Prefer Effect
Schemafor API and domain data shapes. Use branded schemas for IDs andSchema.TaggedErrorClassfor typed domain errors when modeling new error surfaces. - Keep HTTP handlers thin: decode input, read request context, call services, and map transport errors. Put business rules in services.
- In Effect service code, prefer Effect-aware platform abstractions and dependencies over ad hoc promises where the surrounding code already does so.
- Keep layer composition explicit. Avoid broad hidden provisioning that makes missing dependencies hard to see.
- In tests, prefer the repo's existing Effect test helpers and live tests for filesystem, git, child process, locks, or timing behavior.
- Do not introduce
any, non-null assertions, unchecked casts, or older Effect APIs just to satisfy types. - Do not answer from memory. Verify against
.opencode/references/effector nearby code first.
Testing Patterns
- Use
testEffect(...)frompackages/core/test/lib/effect.tsfor tests that exercise Effect services, layers, runtime context, scoped resources, or platform integrations. - Use
it.live(...)for filesystem, git repositories, HTTP servers, sockets, child processes, locks, real time, and other live platform behavior. - Run tests from package directories such as
packages/core; never run package tests from the repo root. - Prefer explicit test layers over ad hoc managed runtimes. Keep dependency provisioning visible in the test file.
- Use scoped fixtures and finalizers for resources that must be cleaned up, including temporary directories, flags, databases, fibers, servers, and global state.
Version History
-
d9b4ce8
Current 2026-10-18 23:22
参考库从 effect-smol 更新为官方 Effect v4 仓库。
- 4c25fd5 2026-07-05 18:23


