$npx -y skills add PaulRBerg/agent-skills --skill effect-tsUse for nontrivial Effect-TS work including services/layers, typed errors, Schema/JSONSchema, Config, runtime/concurrency, @effect/vitest, @effect/ai, @effect/sql, or @prb/effect-next.
| 1 | # Effect-TS |
| 2 | |
| 3 | Apply Effect semantics using local project patterns first, then only the task-specific reference and upstream source |
| 4 | needed to resolve uncertainty. |
| 5 | |
| 6 | ## Fast Path |
| 7 | |
| 8 | Do not activate this workflow merely because a file imports `effect`. For nontrivial Effect changes: |
| 9 | |
| 10 | 1. Inspect neighboring services, layers, errors, schemas, runtime boundaries, and tests. |
| 11 | 2. Read `references/critical-rules.md` before editing. In particular, Effect failures are not caught by ordinary |
| 12 | `try/catch` inside `Effect.gen`; avoid assertion-driven type escapes; use explicit terminating yields for error |
| 13 | branches. |
| 14 | 3. Read only the matching reference rows below. |
| 15 | 4. Implement the least surprising pattern consistent with local code and verify the changed Effect behavior. |
| 16 | |
| 17 | ## Reference Router |
| 18 | |
| 19 | | Task | Reference | |
| 20 | | ------------------------------------------ | ------------------------------------- | |
| 21 | | Services, Layers, tags, `Effect.fn` | `references/services-layers.md` | |
| 22 | | Config and secrets | `references/config.md` | |
| 23 | | Schema, JSON Schema, encoded errors/models | `references/schema-jsonschema.md` | |
| 24 | | `@effect/vitest`, clocks, fibers, retries | `references/testing.md` | |
| 25 | | resources, scheduling, refs, concurrency | `references/runtime.md` | |
| 26 | | streams and backpressure | `references/streams.md` | |
| 27 | | pattern matching and tagged unions | `references/pattern-matching.md` | |
| 28 | | `@effect/ai` | `references/ai.md` | |
| 29 | | `@effect/sql` | `references/sql.md` | |
| 30 | | platform and RPC | `references/platform-rpc.md` | |
| 31 | | Next.js / `@prb/effect-next` | `references/next-js.md` | |
| 32 | | Effect Atom | `references/effect-atom.md` | |
| 33 | | collection operations | `references/collection-operations.md` | |
| 34 | | small utilities and deprecations | `references/quick-utils.md` | |
| 35 | | `Option` at nullable boundaries | `references/option-null.md` | |
| 36 | | recent upstream drift | `references/recent-upstream.md` | |
| 37 | | constructor/combinator lookup | `references/quick-reference.md` | |
| 38 | |
| 39 | ## Upstream Evidence |
| 40 | |
| 41 | Inspect `~/.effect` only when local patterns and the selected reference do not resolve an API, type/runtime, or |
| 42 | recent-behavior question. If the task requires it and the checkout is missing, stop rather than guessing. Compare the |
| 43 | project's installed package version with the relevant package source/changelog; do not assume this skill's last-known |
| 44 | version is authoritative. |
| 45 | |
| 46 | ## Boundaries |
| 47 | |
| 48 | - Keep pure helpers, constants, and path manipulation pure unless an Effect boundary provides a concrete dependency, |
| 49 | testability, resource-safety, or error-model benefit. |
| 50 | - Preserve existing domain facades and service/runtime boundaries unless the user requested redesign. |
| 51 | - Prefer typed failures and scoped resources at IO boundaries; choose Schema-backed errors/models only when encoding or |
| 52 | boundary validation is needed. |
| 53 | - Do not broaden environment requirements merely to replace a small platform call. |
| 54 | |
| 55 | For changes, completion requires code consistent with local Effect architecture, selected references/upstream evidence |
| 56 | where needed, and the narrowest test/typecheck that exercises the changed semantics. Read-only work requires evidence |
| 57 | for the reported conclusion. Finish with `### ⚡ Effect — ✅ change complete` after verified edits or |
| 58 | `### ⚡ Effect — 🔎 reviewed, no files written` for read-only work, one sentence naming the boundary or pattern used, |
| 59 | and `### 🧪 Verification` with exact scoped commands/results. If required validation is incomplete, use |
| 60 | `### ⚡ Effect — ⛔ blocked` instead. Add `### ⚠️ Limitation` only for non-blocking caveats. Never decorate typed |
| 61 | errors, Schema messages, logs, tests, generated JSON/API responses, or command output. |