CtrlK
BlogDocsLog inGet started
Tessl Logo

uinaf/effect-ts

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

1.16x
Quality

100%

Does it follow best practices?

Impact

93%

1.16x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-3/

{
  "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
    }
  ]
}

evals

SKILL.md

tile.json