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 mpsuesser/pi-effect-harness --skill effect-typeclass-designgit clone --depth 1 https://github.com/mpsuesser/pi-effect-harnessWrote 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/mpsuesser/pi-effect-harness/effect-typeclass-design)<a href="https://agentmods.dev/skills/mpsuesser/pi-effect-harness/effect-typeclass-design"><img src="https://agentmods.dev/badge/skills/mpsuesser/pi-effect-harness/effect-typeclass-design.svg" alt="Measured on agentmods" 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.00023 | $0.01020 |
| Opus 5 | $0.00012 | $0.00510 |
| Sonnet 5 | $0.00005 | $0.00204 |
| Haiku 4.5 | $0.00002 | $0.00102 |
Grade A, and why
effect-typeclass-design 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 6d 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 — 162 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Typeclass Design Skill
Use this skill when implementing typeclasses that provide reusable abstractions across multiple types.
Pattern: Curried Typeclass Functions
All typeclass functions must be fully curried to enable partial application:
import { Duration } from 'effect';
declare interface Durable<A> {
readonly getDuration: (self: A) => Duration.Duration;
}
// Create a typeclass function that takes the typeclass instance first,
// then curries out all other parameters
export const isMoreThan =
<A>(D: Durable<A>) =>
(minimum: Duration.Duration) =>
(self: A): boolean => {
const current = D.getDuration(self);
return Duration.isGreaterThanOrEqualTo(current, minimum);
};
Pattern: Dual APIs
Provide both data-first (uncurried) and data-last (curried) variants using Function.dual:
import { Duration } from 'effect';
import * as Function from 'effect/Function';
declare interface Durable<A> {
readonly getDuration: (self: A) => Duration.Duration;
}
export const isMoreThan = <A>(D: Durable<A>) =>
Function.dual<
// Data-last (curried) - pipe-friendly
(minimum: Duration.Duration) => (self: A) => boolean,
// Data-first (uncurried) - direct call
(self: A, minimum: Duration.Duration) => boolean
>(
2, // Number of arguments for data-first form
(self: A, minimum: Duration.Duration): boolean => {
const current = D.getDuration(self);
return Duration.isGreaterThanOrEqualTo(current, minimum);
}
);
Usage Patterns
The dual API enables both styles:
import { pipe } from 'effect/Function';
import * as Duration from 'effect/Duration';
import * as Function from 'effect/Function';
declare interface Durable<A> {
readonly getDuration: (self: A) => Duration.Duration;
}
declare const isMoreThan: <A>(D: Durable<A>) => {
(minimum: Duration.Duration): (self: A) => boolean;
(self: A, minimum: Duration.Duration): boolean;
};
declare interface Appointment {
duration: Duration.Duration;
}
declare const Appointment: {
Durable: Durable<Appointment>;
};
declare const appointment: Appointment;
declare const appointments: Appointment[];
// Data-first: Direct function call
const hasMinimum = isMoreThan(Appointment.Durable)(
appointment,
Duration.hours(1)
);
// Data-last: Pipe-friendly
const hasMinimum2 = pipe(
appointment,
isMoreThan(Appointment.Durable)(Duration.hours(1))
);
// Partial application for filtering
const longAppointments = appointments.filter(
isMoreThan(Appointment.Durable)(Duration.hours(1))
);
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.
- 6d ago First seen · 162 lines · 23 tokens per session scan A 1a503087cb94
effect-typeclass-design is a skill published in the GitHub repository mpsuesser/pi-effect-harness (24 stars, last pushed 2mo ago), licensed MIT. It adds 23 tokens to every session and 1,020 once invoked, about $0.0001 per session on Opus 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.
Other skills, from other repositories
effect-patterns-concurrency
Effect-TS patterns for Concurrency. Use when working with concurrency in Effect-TS applications.
effect-patterns-making-http-requests
Effect-TS patterns for Making Http Requests. Use when working with making http requests in Effect-TS applications.
effect-patterns-streams
Effect-TS patterns for Streams. Use when working with streams in Effect-TS applications.
effect-patterns-error-handling
Effect-TS patterns for Error Handling. Use when working with error handling in Effect-TS applications.
effect-patterns-streams-sinks
Effect-TS patterns for Streams Sinks. Use when working with streams sinks in Effect-TS applications.
effect-patterns-resource-management
Effect-TS patterns for Resource Management. Use when working with resource management in Effect-TS applications.