You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: Answer questions about the Effect framework
3
+
description: Work with Effect v4 / effect-smol TypeScript code in this repo
4
4
---
5
5
6
6
# Effect
7
7
8
-
This codebase uses Effect, a framework for writing typescript.
8
+
This codebase uses Effect for typed, composable TypeScript services, schemas, and workflows.
9
9
10
-
## How to Answer Effect Questions
10
+
## Source Of Truth
11
11
12
-
1. Clone the Effect repository: `https://github.com/Effect-TS/effect-smol` to
13
-
`.opencode/references/effect-smol` in this project NOT the skill folder.
14
-
2. Use the explore agent to search the codebase for answers about Effect patterns, APIs, and concepts
15
-
3. Provide responses based on the actual Effect source code and documentation
12
+
Use the current Effect v4 / effect-smol source, not memory or older Effect v2/v3 examples.
13
+
14
+
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.
15
+
2. Search `.opencode/references/effect-smol` for exact APIs, examples, tests, and naming patterns before answering or implementing Effect-specific code.
16
+
3. Also inspect existing repo code for local house style before introducing new patterns.
17
+
4. Prefer answers and implementations backed by specific source files or nearby repo examples.
16
18
17
19
## Guidelines
18
20
19
-
- Always use the explore agent with the cloned repository when answering Effect-related questions
20
-
- Reference specific files and patterns found in the Effect codebase
21
-
- Do not answer from memory - always verify against the source
21
+
- Prefer current Effect v4 APIs and project-local patterns over old blog posts, examples, or package-memory guesses.
22
+
- Use `Effect.gen(function* () { ... })` for multi-step workflows.
23
+
- Use `Effect.fn("Name")` or `Effect.fnUntraced(...)` for named effects when adding reusable service methods or important workflows.
24
+
- 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.
25
+
- Keep HTTP handlers thin: decode input, read request context, call services, and map transport errors. Put business rules in services.
26
+
- In Effect service code, prefer Effect-aware platform abstractions and dependencies over ad hoc promises where the surrounding code already does so.
27
+
- Keep layer composition explicit. Avoid broad hidden provisioning that makes missing dependencies hard to see.
28
+
- In tests, prefer the repo's existing Effect test helpers and live tests for filesystem, git, child process, locks, or timing behavior.
29
+
- Do not introduce `any`, non-null assertions, unchecked casts, or older Effect APIs just to satisfy types.
30
+
- Do not answer from memory. Verify against `.opencode/references/effect-smol` or nearby code first.
| experimental JSON routes |`bridged` partial | console reads, tool ids, worktree list/mutations, resource list; global session list remains later |
185
185
|`session`|`later/special`| large stateful surface plus streaming |
@@ -188,24 +188,180 @@ Use raw Effect HTTP routes where `HttpApi` does not fit. The goal is deleting Ho
188
188
|`pty`|`special`| websocket |
189
189
|`tui`|`special`| UI bridge |
190
190
191
+
## Full Route Checklist
192
+
193
+
This checklist tracks bridge parity only. Checked routes are available through the experimental `HttpApi` bridge; Hono deletion is tracked separately by the deletion checklist above.
194
+
195
+
### Top-Level Instance Routes
196
+
197
+
-[x]`POST /instance/dispose` - dispose active instance after response.
198
+
-[x]`GET /path` - current directory and worktree paths.
199
+
-[x]`GET /vcs` - current VCS status.
200
+
-[x]`GET /vcs/diff` - VCS diff summary.
201
+
-[x]`GET /command` - command catalog.
202
+
-[x]`GET /agent` - agent catalog.
203
+
-[x]`GET /skill` - skill catalog.
204
+
-[x]`GET /lsp` - LSP status.
205
+
-[x]`GET /formatter` - formatter status.
206
+
207
+
### Config Routes
208
+
209
+
-[x]`GET /config` - read config.
210
+
-[x]`PATCH /config` - update config and dispose active instance after response.
0 commit comments