Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add betalyra/effect-skills --skill effect-best-practicesgit clone --depth 1 https://github.com/betalyra/effect-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/betalyra/effect-skills/effect-best-practices)<a href="https://agentmods.dev/skills/betalyra/effect-skills/effect-best-practices"><img src="https://agentmods.dev/badge/skills/betalyra/effect-skills/effect-best-practices/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/betalyra/effect-skills/effect-best-practices"><img src="https://agentmods.dev/badge/skills/betalyra/effect-skills/effect-best-practices.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00045 | $0.03743 |
| Opus 5.5 | $0.00018 | $0.01497 |
| Sonnet 5.5 | $0.00009 | $0.00749 |
| Haiku 4.5 | $0.00005 | $0.00374 |
Grade A, and why
effect-best-practices scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 482 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Effect-TS Best Practices
This skill enforces opinionated, consistent patterns for Effect-TS codebases. These patterns optimize for type safety, testability, observability, and maintainability.
Core Principles
Effect Type Signature
Effect<Success, Error, Requirements>
// ↑ ↑ ↑
// | | └── Dependencies (provided via Layers)
// | └── Expected errors (typed, must be handled)
// └── Success value
Data-First Piped Style
ALWAYS prefer data-first pipe style for composition:
// ✅ GOOD: Data-first with pipe
const result = value.pipe(
Effect.map((n) => n * 2),
Effect.flatMap((n) => processValue(n)),
Effect.catchTag("NetworkError", () => Effect.succeed(fallback)),
);
// ❌ BAD: Function-first style
const result = Effect.catchTag(
Effect.flatMap(
Effect.map(value, (n) => n * 2),
(n) => processValue(n),
),
"NetworkError",
() => Effect.succeed(fallback),
);
"@effect/schema" is deprecated
Don't try to install nor import from "@effect/schema", it is deprecated. Instead just import from "effect" package.
// ✅ GOOD
import { Schema } from "effect";
// ❌ BAD
import { Schema } from "@effect/schema";
Quick Reference: Critical Rules
| Category | DO | DON'T |
|---|---|---|
| Services | Effect.Service |
Context.Tag for business logic |
| Dependencies | dependencies: [Dep.Default] at the top of the service |
Manual Layer.provide at usage sites |
| Errors | Schema.TaggedError with message and cause fields |
Plain classes or generic Error |
| Error Specificity | UserNotFoundError, SessionExpiredError |
Generic NotFoundError, BadRequestError |
| Error Handling | catchTag (supports multiple tags) / catchTags |
catchAll or mapError |
| IDs | Schema.UUID.pipe(Schema.brand("@App/EntityId")) |
Plain string for entity IDs |
| Functions | Effect.fn("Service.method") |
Anonymous generators |
| Logging | Effect.log with structured data |
console.log |
| Config | Config.* with validation |
process.env directly |
| Options | Option.match with both cases |
Option.getOrThrow |
| Nullability | Option<T> in domain types |
null/undefined |
| Atoms | Atom.make outside components |
Creating atoms inside render |
| Atom State | Atom.keepAlive for global state |
Forgetting keepAlive for persistent state |
| Atom Updates | useAtomSet in React components |
Atom.update imperatively from React |
| Atom Cleanup | get.addFinalizer() for side effects |
Missing cleanup for event listeners |
| Atom Results | Result.builder with onErrorTag |
Ignoring loading/error states |
What ships with it
11 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/anti-patterns.md 10 KB
- references/domain-predicates.md 9.0 KB
- references/effect-atom-patterns.md 19 KB
- references/effect-test-patterns.md 17 KB
- references/error-patterns.md 17 KB
- references/layer-patterns.md 13 KB
- references/observability-patterns.md 9.2 KB
- references/rpc-cluster-patterns.md 12 KB
- references/schema-patterns.md 11 KB
- references/service-patterns.md 14 KB
- references/vercel-ai-sdk-patterns.md 4.3 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 482 lines · 45 tokens per session scan A b53b6903a438
effect-best-practices is a skill published in the GitHub repository betalyra/effect-skills (20 stars, last pushed 3mo ago), licensed MIT. It adds 45 tokens to every session and 3,743 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
effect-best-practices compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| effect-best-practicesbetalyra/effect-skills | Skill | 20 | 3mo ago | MIT | A | 45 | Claude Code, Codex |
| senior-frontendroedyrustam/vibes-plug | Skill | 121 | yesterday | MIT | A | 46 | Cursor |
| effectkitlangton/skills | Skill | 355 | 1mo ago | MIT | A | 42 | Claude Code, Codex |
| typescript-stylepeteski22/agent-pragma | Skill | 24 | 2d ago | Apache-2.0 | A | 14 | Claude Code |
| effect-patterns-concurrencyPaulJPhilp/EffectPatterns | Skill | 806 | 4mo ago | MIT | A | 25 | Claude Code |
| effect-patterns-making-http-requestsPaulJPhilp/EffectPatterns | Skill | 806 | 4mo ago | MIT | A | 30 | Claude Code |
| effect-patterns-streamsPaulJPhilp/EffectPatterns | Skill | 806 | 4mo ago | MIT | A | 24 | Claude Code |