effect-v3-to-v4
Skill1.7k starsChanged 7 days agoApache-2.0View on GitHub
Use this skill when migrating a codebase from Effect v3 to Effect v4, upgrading `effect` or any `@effect/*` package across the v3/v4 boundary.
2 other projects use a version of this, 2 of them edited; 0 new projects in the last 4 weeks, against 1 the 4 before.
Adopted by
Cooling: 0 new projects took it in the last 4 weeks, 0× the 4 weeks before.thin data
Most recently taken up by
- malinskibeniamin/skillsedited, first seen Oct 17, 2026
- Effect-TS/skillsedited, first seen Oct 9, 2026
Who's talking about LodyAI/Lody
- LodyAI/acp-extension-codex“feat: expose native session archives through Lody Core”GitHub · Nov 3, 2026 · 1 reactions
- LodyAI/acp-extension-core“feat: define reversible session archive capabilities”GitHub · Nov 3, 2026 · 1 reactions
- Asuka109/Lody“feat: download oversized remote session files in ranges”GitHub · Oct 15, 2026 · 1 reactions
- LodyAI/acp-extension-codex“perf: defer ACP validation schema construction”GitHub · Nov 4, 2026
- LodyAI/acp-extension-claude“feat: expose explicit title-marker archive capabilities”GitHub · Nov 3, 2026
The biggest 5 of 50 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 50
Talked about on GitHub (50 times).
On GitHub · 50
- Nov 3, 2026feat: expose native session archives through Lody Core — LodyAI/acp-extension-codex1 reaction · 1 comment
- Nov 3, 2026feat: define reversible session archive capabilities — LodyAI/acp-extension-core1 reaction · 1 comment
- Oct 15, 2026feat: download oversized remote session files in ranges — Asuka109/Lody1 reaction · 2 comments
- Nov 4, 2026perf: defer ACP validation schema construction — LodyAI/acp-extension-codex0 reactions
- Nov 3, 2026feat: expose explicit title-marker archive capabilities — LodyAI/acp-extension-claude0 reactions · 3 comments
45 more on GitHub
- Nov 1, 2026fix: upgrade bundled Claude Code to 2.1.316 — LodyAI/acp-extension-claude0 reactions
- Oct 28, 2026fix: fork Pi sessions at completed native boundaries — LodyAI/acp-extension-pi0 reactions
- Oct 24, 2026Update DimCode icon to the 45:32 brand mark — agentclientprotocol/registry0 reactions
- Oct 22, 2026fix(cli): preserve interrupted turn outcome after restart — delete-cloud/Lody0 reactions
- Oct 22, 2026fix: prevent recursive Git transport wrapper targets — delete-cloud/Lody0 reactions
- Oct 18, 2026fix: report Claude quota failures at native turn boundaries — LodyAI/acp-extension-claude0 reactions
- Oct 17, 2026fix: preserve causal order when user history syncs late — delete-cloud/Lody0 reactions
- Oct 12, 2026fix: configure official extension and toolbar icons — wibus-wee/lody-wxt0 reactions
- Oct 11, 2026fix: trace Live Activity registration and lifecycle — innei-dev/lody-ios0 reactions · 2 comments
- Oct 10, 2026fix: delegate automatic session titles to ACP clients — LodyAI/acp-extension-codex0 reactions
- Oct 10, 2026fix: preserve official DeepSeek Messages endpoints — LodyAI/acp-extension-dsh0 reactions
- Oct 9, 2026feat: implement Core controls on Harness 0.2.0-rc.2 — LodyAI/acp-extension-dsh0 reactions
- Oct 8, 2026fix: support inline prompts after /plan — LodyAI/acp-extension-codex0 reactions
- Oct 7, 2026[BUG] RTCPeerConnection.close() does not cancel or join in-flight ICE/TURN gathering — shinyoshiaki/werift-webrtc0 reactions
- Oct 6, 2026feat: support ACP session forks at native turn boundaries — LodyAI/acp-extension-dsh0 reactions
- Oct 4, 2026feat: allow overriding the Pi binary via LODY_PI_PATH — LodyAI/acp-extension-pi0 reactions · 2 comments
- Sep 26, 2026feat: stream normalized Codex subagent events — LodyAI/acp-extension-codex0 reactions
- Sep 26, 2026feat: define normalized subagent event contract — LodyAI/acp-extension-core0 reactions
- Sep 24, 2026feat: generate native Kimi ACP session titles — LodyAI/acp-extension-kimi0 reactions
- Sep 24, 2026feat: use native Harness session titles — LodyAI/acp-extension-dsh0 reactions
- Sep 24, 2026feat: advertise and tag native session titles — LodyAI/acp-extension-grok0 reactions
- Sep 24, 2026feat: advertise automatic session title capability — LodyAI/acp-extension-codex0 reactions
- Sep 24, 2026feat: advertise and tag automatic session titles — LodyAI/acp-extension-claude0 reactions
- Sep 24, 2026feat: declare automatic session title capability — LodyAI/acp-extension-core0 reactions
- Sep 24, 2026fix(chat): keep slash menu off URLs and paths — ThinkInAIXYZ/deepchat0 reactions · 1 comment
- Sep 23, 2026fix: expose Harness tool calls and results through ACP — LodyAI/acp-extension-dsh0 reactions
- Sep 23, 2026[BUG] URL 或路径中的斜杠误触发命令补全,导致 Enter 无法发送消息 — ThinkInAIXYZ/deepchat0 reactions · 1 comment
- Sep 21, 2026fix(acp): display submitted plans in client plan cards — LodyAI/acp-extension-kimi0 reactions
- Sep 20, 2026fix: preserve missing-file semantics for ACP Plan mode — LodyAI/acp-extension-kimi0 reactions
- Sep 20, 2026feat: discover and explicitly enable installed Pi extensions — LodyAI/acp-extension-pi0 reactions · 1 comment
- Sep 13, 2026test: await usage accounting test completion — LodyAI/acp-extension-core0 reactions
- Sep 13, 2026fix: kimi usage accounting review findings — LodyAI/acp-extension-kimi0 reactions
- Sep 13, 2026fix: claude usage accounting review findings — LodyAI/acp-extension-claude0 reactions
- Sep 13, 2026fix: codex usage accounting review findings — LodyAI/acp-extension-codex0 reactions
- Sep 13, 2026feat: report DSH token usage and DeepSeek USD estimates — LodyAI/acp-extension-dsh0 reactions
- Sep 13, 2026fix: accumulate Grok prompt usage with correction deltas — LodyAI/acp-extension-grok0 reactions
- Sep 10, 2026OSS 功能对齐 — innei-dev/lody-ios0 reactions · 1 comment
- Sep 9, 2026test: match review completion to the requested turn — LodyAI/acp-extension-codex0 reactions
- Sep 9, 2026feat: define worktree project identity — LodyAI/acp-extension-core0 reactions
- Sep 9, 2026fix: await settings profile smoke tests — LodyAI/acp-extension-dsh0 reactions
- Sep 8, 2026fix: bridge Grok plan approval through ACP — LodyAI/acp-extension-grok0 reactions
- Sep 8, 2026feat: decouple ACP plan mode from permissions — LodyAI/acp-extension-kimi0 reactions
- Sep 7, 2026fix: preserve ACP v1 prompt across goal continuations — LodyAI/acp-extension-codex0 reactions
- Sep 7, 2026[Request]: Lody — ScoopInstaller/Extras0 reactions
- Sep 6, 2026fix: seed Grok session permission flags like the TUI — LodyAI/acp-extension-grok0 reactions
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- Effect-TS/skills★ 110100% same
- malinskibeniamin/skills★ 411% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository14 other files it gives its agents.
- .agents/AGENTS.mdAGENTS.md
- .agents/docs/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- .agents/notes/AGENTS.mdAGENTS.md
- e2e/AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- site-docs/AGENTS.mdAGENTS.md
- specs/AGENTS.mdAGENTS.md
- archive-agent-notesSkill
- effect-tsSkill
- failure-containment-reviewSkill
- lody-cliSkill
- lody-loro-sync-stackSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 2 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
Keep the workspace catalog and lockfile version.
- Very specific: line 20
Read Lody's Effect guide and applicable scoped AGENTS.md.
- Very specific: line 77
If the origin points at effect-smol, or the version is not 4.x, delete the directory and re-clone as above.
- Distinctive: line 109
Look up APIs as you encounter them, one search at a time.
- Very specific: line 118
If migrating code that targeted a beta or RC with effect/unstable/<module> imports, drop the unstable segment (for example, …
- Distinctive: line 133
No invented APIs: Every replacement must trace to the reference doc, a topic guide, or the v4 source.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Lody overrides (read first)
These repository rules override the upstream steps below.
- Keep the workspace catalog and lockfile version. Do not run
effect@latest, add a root dependency, or upgrade packages as a side effect of this skill. Version changes require an explicit task. - Resolve Effect from the package being changed, not an arbitrary root or
transitive installation. Read its
effect/AGENTS.mdcompletely and follow the required links; search itsai-docsandsrcon demand. If dependencies are absent, follow repository installation rules. A temporary copy of the exact locked npm release is a read-only reference, not local validation. Upstream main is not the installed API. - Read Lody's Effect guide and applicable scoped
AGENTS.md. Give tasks and resources an explicit Scope owner, propagate cancellation across Promise boundaries, await cleanup, and bound finalizer waits. Temporary Promise facades needLegacynames and@deprecated. - Type-checking alone is not acceptance. For shutdown, cancellation, resource release, retry or synchronization changes, run owning behavioral tests, including failure paths, with explicit signals and injected/fake clocks. Report baseline failures and environment limits separately; do not weaken tests.
- Preserve the public/local boundary and disabled telemetry when using upstream
examples. Edit
AGENTS.mdonly;CLAUDE.mdis its symlink. - Lody is already on v4. Apply this skill only to an explicitly scoped migration; do not force third-party transitive v3 consumers onto v4.
- Fetch supplementary upstream guides/tests only as needed, outside tracked project files. Pin v4 sources to the target release tag/commit and verify API signatures against the actual dependency. Check ownership and local changes before replacing a pre-existing checkout. The upstream "tests are not a gate" completion rule below does not apply to Lody.
Effect v3 to v4 Migration
Drive an Effect v3 → v4 migration from the generated migration reference that ships in the Effect repo. Every rename, removal, and signature change is answered by upstream data — do not guess replacements.
Workflow
Work through these steps in order; each one is detailed in the section named.
- Set up and validate the local checkouts — two shallow clones; verify any pre-existing
.repos/effectbefore trusting it. See Setup: Local Checkouts. - Read
MIGRATION.mdandls .repos/effect/migration/for the background and guide index. See Reading Order. - Migrate
package.json— remove consolidated packages, align every remaining Effect package on one v4 version. Do this before type-checking, or the first run drowns in unresolved-import noise from packages that no longer exist. See Repo-Level Changes. - Run the project's type-check (e.g.
tsc --noEmit) to get the initial error inventory. - Iterate until the type-check is clean. For each error, resolve the API through the lookup discipline — search
migration/v3-to-v4.mdfor the symbol, escalate per Reading Order — then fix the call site, delegating per-file fixes to sub-agents per Delegating to Sub-Agents. Never silence an error instead of resolving it; see Hard Prohibitions. - Finish — type-check clean; run tests and report their outcome honestly (not a gate); write the final summary. See Done Condition.
Setup: Local Checkouts
The migration is driven from two shallow, single-branch clones of the canonical Effect repo:
git clone --depth 1 --single-branch https://github.com/Effect-TS/effect .repos/effect
git clone --depth 1 --single-branch --branch v3 https://github.com/Effect-TS/effect .repos/effect-v3.repos/effect— v4 (main). ContainsMIGRATION.md, themigration/guides, and the v4 source..repos/effect-v3— v3 (v3branch). Escalation-only reference for old semantics.
Each clone is independently re-runnable and separately deletable. Do not use git worktree to share one clone between branches.
Validate an existing checkout before trusting it
./.repos/effect may already exist, cloned from the superseded Effect-TS/effect-smol repo by older setup instructions. That checkout is stale and does not contain migration/v3-to-v4.md. Verify before using:
git -C .repos/effect remote get-url origin # must be the canonical Effect-TS/effect repo
node -p "require('./.repos/effect/packages/effect/package.json').version" # must be 4.xIf the origin points at effect-smol, or the version is not 4.x, delete the directory and re-clone as above.
Reading Order
- Front-load
MIGRATION.mdonce (.repos/effect/MIGRATION.md). migration/v3-to-v4.md— the first stop for every API. The generated reference covers every removed or changed API. Search it (see below); never read it whole.- A per-topic guide (
.repos/effect/migration/*.md) when the mapping implies a rewrite rather than a rename — e.g.Context.Tag→Context.Serviceis a structural change, not a symbol swap. Reach these on demand from theMIGRATION.mdindex, not front-loaded. - v4 source (
.repos/effect/packages/*/src/) to confirm a replacement's real signature before writing code against it. - v3 source (
.repos/effect-v3) as escalation only — for when unsure about the old v3 semantics.
Never Read the Reference Doc Whole
This is the single most important rule in this skill. migration/v3-to-v4.md is ~17,000 lines / ~350k tokens. Reading it in one pass blows the context window and takes the migration with it.
Always search it and read only matched lines plus surrounding context. The file has four sections — Import Map, No Counterpart Imports, Removed Modules, and API Reference (one ### `<v3 module path>` heading per module). Entries are grep-able one-liners of the form - `Old.symbol` -> `New.symbol`: <rationale>, and removals are explicit -> `none` entries with a stated alternative.
Concrete recipes:
# Look up a specific v3 symbol
rg -n 'AnthropicTokenizer\.layer' .repos/effect/migration/v3-to-v4.md
# Read a whole module's section via its heading
rg -n -A 40 '^### `@effect/platform/FileSystem`' .repos/effect/migration/v3-to-v4.md
# Resolve a v3 import path in the Import Map
rg -n '^@effect/platform/FileSystem ' .repos/effect/migration/v3-to-v4.md
# List every module section for a package
rg -n '^### `@effect/cluster/' .repos/effect/migration/v3-to-v4.mdLook up APIs as you encounter them, one search at a time. A miss in the Import Map is not a dead end — check the Removed Modules and No Counterpart Imports sections before concluding anything.
Repo-Level Changes
Faithful per-API lookup alone still yields a broken package.json. Handle these once, up front:
- Package consolidation.
@effect/platform,@effect/rpc,@effect/cluster, and others merged into the coreeffectpackage. Remove them frompackage.jsonand rewrite their imports per the Import Map. Packages that remain separate (@effect/platform-*,@effect/sql-*,@effect/ai-*,@effect/opentelemetry,@effect/atom-*,@effect/vitest, …) stay as dependencies. The consolidated v3 packages (including@effect/sqland@effect/cli) still have npmlatesttags pointing to0.x; remove them rather than bumping everything tolatest. - Version alignment. Target the current stable
latest4.x release. All Effect ecosystem packages share one version number in v4, so every remainingeffect/@effect/*dependency must use that same matching version. - Module paths and stability. GA imports use paths such as
effect/http,effect/rpc, andeffect/ai/LanguageModel. Stability is declared by JSDoc tags, not an import-path segment:@stability unstableAPIs may receive breaking changes in minor releases, and@stability experimentalAPIs may receive them in patch releases. If migrating code that targeted a beta or RC witheffect/unstable/<module>imports, drop theunstablesegment (for example,effect/unstable/http→effect/http). There are no compatibility exports for the old paths; moving a module does not stabilize its API.
Delegating to Sub-Agents
Per-file migration work is context-hungry; do it in sub-agents so the main session's context survives the whole migration.
- Spawn one sub-agent per file (or per module), giving it the specific v3 symbols to resolve in that file.
- The sub-agent returns the edit and the mappings it used; the main session keeps the error inventory and the running summary.
- Sub-agents inherit the same lookup discipline (Reading Order, the
rgrecipes) and Hard Prohibitions. - The reference doc is never read whole in a sub-agent either — a blown sub-agent context still costs the migration that file.
Hard Prohibitions
- Never reintroduce a v3-shaped compatibility layer. Writing a
v3-compat.tsthat re-exports old names makes type errors vanish and permanently freezes the codebase between versions. Migrate call sites to the v4 API. - No
any, noascasts to silence a post-migration type error. Such an error is usually evidence the replacement has a different shape; casting deletes that information. Go back to the reference or the v4 source. - No invented APIs. Every replacement must trace to the reference doc, a topic guide, or the v4 source.
Done Condition
The project type-checks against v4. A v4 migration is fundamentally a type-level exercise; unresolved imports and changed signatures surface there and nowhere else. Run the project's type-check (e.g. tsc --noEmit) until clean.
Running the test suite is recommended, and its outcome must be reported honestly — but it is not a gate. A repo mid-migration often has tests that cannot run for unrelated reasons; do not weaken tests to make them pass.
The final summary must state: the type-check result, the test result (or why tests were not run), every constructed replacement, and any gaps that were reported rather than bridged.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

