Skip to main content

effect

Work with Effect v4 / effect-smol TypeScript code in this repo

来源信息

仓库
anomalyco/opencode
最近来源活动
2026年4月30日 01:24
检测到的 SKILL.md 语言
英语
星标
211,840
分支
28,183

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
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. 1. If `.opencode/references/effect-smol` is missing, clone `https://github.com/Effect-TS/effect-smol` there. Do this in the project, not in the skill folder. 2. Search `.opencode/references/effect-smol` for exact APIs, examples, tests, and naming patterns before answering or implementing Effect-specific code. 3. Also inspect existing repo code for local house style before introducing new patterns. 4. 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")` or `Effect.fnUntraced(...)` for named effects when adding reusable service methods or important workflows. - Prefer Effect `Schema` for API and domain data shapes. Use branded schemas for IDs and `Schema.TaggedErrorClass` for 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-smol` or nearby code first. ## Testing Patterns - Use `testEffect(...)` from `packages/opencode/test/lib/effect.ts` for 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.
在 GitHub 查看