Implement, debug, refactor, migrate, review, or explain Effect TypeScript code. Use when a task touches `effect` or `@effect/*` APIs, especially services, layers, schemas, runtime wiring, platform or CLI packages, Effect testing, or Promise-to-Effect migration.
98
100%
Does it follow best practices?
Impact
93%
1.16xAverage score across 3 eval scenarios
Passed
No known issues
{
"context": "The agent is asked to migrate a third-party document storage SDK integration to Effect TypeScript. This scenario tests knowledge of the use pattern for wide Promise APIs, proper error wrapping with AbortSignal preservation, ManagedRuntime for non-Effect framework callbacks, and keeping Effect.run* out of service internals.",
"type": "weighted_checklist",
"checklist": [
{
"name": "use pattern applied",
"description": "DocumentStore service exposes a use method that accepts a callback receiving the underlying SDK client (and optionally an AbortSignal), instead of wrapping every individual SDK method",
"max_score": 12
},
{
"name": "AbortSignal preserved",
"description": "The use method or its implementation passes an AbortSignal to the SDK so that Effect cancellation propagates to the underlying Promise operation",
"max_score": 10
},
{
"name": "Tagged error conversion",
"description": "SDK errors are caught and converted to a specific tagged error type (defined in errors.ts) rather than left as unknown or rethrown as plain Error",
"max_score": 10
},
{
"name": "No runPromise in service",
"description": "No Effect.runPromise, Effect.runSync, or other Effect.run* calls appear inside DocumentStore.ts or errors.ts",
"max_score": 10
},
{
"name": "Effect.tryPromise used",
"description": "The Promise-to-Effect conversion uses Effect.tryPromise (not Effect.promise) since the SDK operations can reject",
"max_score": 8
},
{
"name": "ManagedRuntime in app.ts",
"description": "The framework callback in app.ts uses ManagedRuntime.make(layer) to execute Effect code, rather than calling Effect.runPromise with inline layer provision each time",
"max_score": 12
},
{
"name": "No async/yield mixing",
"description": "None of the new Effect files use async functions that return Effect values or mix await with yield*",
"max_score": 8
},
{
"name": "Service Context.Tag",
"description": "DocumentStore is defined as a Context.Tag service with a unique identifier",
"max_score": 7
},
{
"name": "Layer graph used",
"description": "The SDK client instance is injected via a Layer rather than instantiated as a global or passed as a constructor argument",
"max_score": 8
},
{
"name": "Error types structured",
"description": "The tagged error in errors.ts includes a meaningful cause field or encodes the original SDK error message, making it useful for debugging and recovery",
"max_score": 7
},
{
"name": "Barrel export correctness",
"description": "index.ts exports the service tag, live layer, and error types without leaking implementation internals",
"max_score": 4
},
{
"name": "use pattern appropriate use",
"description": "A comment or code note explains why the use pattern was chosen over explicit individual method wrappers (wide surface, noise reduction, or similar reasoning)",
"max_score": 4
}
]
}