Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pproenca avatar

Effect Ts

  • 197 installs
  • 191 repo stars
  • Updated July 24, 2026
  • pproenca/dot-skills

effect-ts: A skill for development. This provides functionality for development workflows.

Key points

  • effect-ts

Effect Ts by the numbers

  • 197 all-time installs (skills.sh)
  • +10 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #2,030 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pproenca/dot-skills --skill effect-ts

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs197
repo stars191
Last updatedJuly 24, 2026
Repositorypproenca/dot-skills

How do I use effect-ts for development tasks?

Use effect-ts for development tasks

Who is it for?

Best when you're working on backend & apis and need structured help with effect-ts.

Skip if: Teams with no backend & apis needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to use effect-ts for development tasks, or when effect-ts: a skill for development. this provides functionality for development workflows.

What you get

Structured output aligned to effect-ts: effect-ts.

Files

gotchas.mdMarkdownGitHub ↗

Gotchas

Effect.gen generators require yield* not yield

Effect generators use yield* (delegating yield) to unwrap effects. Using plain yield produces type errors and incorrect behavior. This is the most common mistake when writing Effect code.

// Wrong
const program = Effect.gen(function* () {
  const user = yield getUser(id) // TypeError
})

// Correct
const program = Effect.gen(function* () {
  const user = yield* getUser(id)
})

Added: 2026-03

Schema.decode vs Schema.decodeUnknown

Schema.decode expects input matching the Encoded type (already partially typed). Schema.decodeUnknownSync / Schema.decodeUnknownEither accept unknown input, which is what you want for parsing external data (API responses, form data, env vars). Added: 2026-03

Layer.provide order matters for composition

When providing multiple layers, dependencies must be provided before the layers that need them. Use Layer.merge for independent layers and Layer.provide to pipe a dependency into a consumer.

// ConfigLive has no dependencies, DbLive depends on Config
const AppLive = DbLive.pipe(Layer.provide(ConfigLive))

Added: 2026-03

Effect is lazy — nothing runs until you call runPromise/runSync

Unlike Promises which execute eagerly on construction, Effect values are descriptions of computations. They don't execute until you explicitly run them with Effect.runPromise, Effect.runSync, etc. This is by design but surprises Promise developers. Added: 2026-03

pipe vs .pipe — both work, choose one style

pipe(value, fn1, fn2) (import from "effect") and value.pipe(fn1, fn2) are equivalent. The fluent .pipe style reads top-to-bottom and is generally preferred. Don't mix styles within the same codebase. Added: 2026-03

No further gotchas yet. Append entries as they're discovered during use.

Related skills

FAQ

What does effect-ts do?

effect-ts: A skill for development. This provides functionality for development workflows.

When should I use effect-ts?

When you need to use effect-ts for development tasks, or when effect-ts: a skill for development. this provides functionality for development workflows.

What are the main capabilities?

effect-ts.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.