The Effect Language Service augments TypeScript’s built-in completion list with Effect-aware snippets. These completions fire in specific syntactic positions — typically insideDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Effect-TS/tsgo/llms.txt
Use this file to discover all available pages before exploring further.
extends clauses, after a . accessor, or inside a comment — and insert ready-to-use boilerplate with tab stops.
All completions work in both Effect V3 and V4 unless noted otherwise.
Class extends completions
These completions trigger when your cursor is inside theextends clause of a class declaration. They insert the full parent-class call, including the self-referencing type parameter and deterministic tag key.
contextSelfInClasses
Inserts a Context.Tag("key")<ClassName, Shape>(){} snippet when you dot-access Context in an extends clause.
Support: V3 ✓ · V4 ✗
effectSelfInClasses
Inserts an Effect.Service<ClassName>()("key", { ... }){} or Effect.Tag("key")<ClassName, Shape>(){} snippet when you dot-access Effect in an extends clause.
Support: V3 ✓ · V4 ✗
serviceMapSelfInClasses
Inserts a ServiceMap.Service<ClassName, {}>()( "key"){} or factory-based ServiceMap.Service<ClassName>()( "key", { make }){} snippet when you dot-access ServiceMap in an extends clause.
Support: V3 ✓ · V4 ✓
effectDataClasses
Inserts a Data.TaggedError("ClassName")<{}>{} or Data.TaggedClass("ClassName")<{}>{} snippet when you dot-access Data in an extends clause.
Support: V3 ✓ · V4 ✓
effectSchemaSelfInClasses
Inserts schema class constructor snippets when you dot-access Schema (or Model in V4) in an extends clause. The available variants depend on your Effect version.
Support: V3 ✓ · V4 ✓
- V3 variants
- V4 variants
rpcMakeClasses
Inserts an Rpc.make("ClassName", { ... }){} snippet when you dot-access Rpc from @effect/rpc in an extends clause.
Support: V3 ✓ · V4 ✗
Dot-access completions
genFunctionStar
Inserts a gen(function*(){}) snippet when you type .gen after any object that has a callable gen property — for example Effect, Micro, or any custom object with a compatible gen method.
Support: V3 ✓ · V4 ✓
schemaBrand
Inserts a brand("varName") snippet when you dot-access Schema inside a variable declaration initializer. The variable name is automatically inferred from the enclosing declaration.
Support: V3 ✓ · V4 ✗
Comment directive completions
effectDiagnosticsComment
Inserts an @effect-diagnostics ruleName:severity or @effect-diagnostics-next-line ruleName:severity directive snippet when you type @ inside a //, /*, or /** comment. All diagnostic rule names and severity levels are offered as choices.
Support: V3 ✓ · V4 ✓
effectCodegensComment
Inserts an @effect-codegens codegenName directive snippet when you type @ inside a comment. All available codegen names are offered as tab-stop choices.
Support: V3 ✓ · V4 ✓
Codegens
Codegens are comment-directive-driven code generators. You annotate a declaration with an@effect-codegens comment and the language service inserts boilerplate into the file. All three codegens are planned but not yet implemented.
| Codegen | Description | Status |
|---|---|---|
accessors | Generate Service accessor methods from an @effect-codegens accessors comment directive | Not yet implemented |
annotate | Generate type annotations from an @effect-codegens annotate comment directive | Not yet implemented |
typeToSchema | Generate a Schema from a type alias via an @effect-codegens typeToSchema comment directive | Not yet implemented |
Rename extensions
keyStrings
Extends TypeScript’s rename operation to also update key string literals inside Effect class declarations (e.g., the tag key string "MyService" when you rename the class MyService). This feature is planned but not yet implemented.