Agent Skills
› iamcheyan/oc
› effect
effect
GitHub指导基于 Effect v4 的 TypeScript 开发,涵盖 API 使用、分层架构及测试规范。强制查阅本地参考源码以确保代码准确性与风格一致,避免使用过时 API 或任何类型。
Trigger Scenarios
需要编写或重构 Effect 相关的 TypeScript 代码
涉及 Effect Schema、服务层或工作流实现
询问 Effect 最佳实践或调试错误
Install
npx skills add iamcheyan/oc --skill effect -g -y
SKILL.md
Frontmatter
{
"name": "effect",
"description": "Work with Effect v4 \/ effect-smol 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 / effect-smol source, not memory or older Effect v2/v3 examples.
- If
.opencode/references/effect-smolis missing, clonehttps://github.com/Effect-TS/effect-smolthere. Do this in the project, not in the skill folder. - Search
.opencode/references/effect-smolfor 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/effect-smolor nearby code first.
Testing Patterns
- Use
testEffect(...)frompackages/opencode/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/opencode; 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
- 4c25fd5 Current 2026-07-05 18:23


