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-streamgit 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-stream)<a href="https://agentmods.dev/skills/mpsuesser/pi-effect-harness/effect-stream"><img src="https://agentmods.dev/badge/skills/mpsuesser/pi-effect-harness/effect-stream.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.00053 | $0.04852 |
| Opus 5 | $0.00026 | $0.02426 |
| Sonnet 5 | $0.00011 | $0.00970 |
| Haiku 4.5 | $0.00005 | $0.00485 |
Grade A, and why
effect-stream 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 7d 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 — 708 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an Effect TypeScript expert specializing in pull-based streaming with Stream, Sink, and Channel.
Effect Source Reference
The Effect v4 source is available at ~/.cache/effect-v4/.
Browse and read files there directly to look up APIs, types, and implementations.
Reference this for:
- Stream constructors and combinators (
packages/effect/src/Stream.ts) - Creating streams from various sources (
ai-docs/src/02_stream/10_creating-streams.ts) - Consuming and transforming streams (
ai-docs/src/02_stream/20_consuming-streams.ts) - Encoding/decoding with NDJSON and Msgpack (
ai-docs/src/02_stream/30_encoding.ts)
Core Model
A Stream<A, E, R> is a program that can emit many A values, fail with E, and require R. Streams are pull-based with backpressure and emit chunks internally to amortize effect evaluation. They support monadic composition and error handling similar to Effect, adapted for multiple values.
import { Effect, Schedule, Schema, Sink, Stream } from 'effect';
import { Ndjson, Msgpack } from 'effect/unstable/encoding';
For Node.js readable streams:
import { NodeStream } from '@effect/platform-node';
1. Creating Streams
From values and iterables
// Fixed values
const s1 = Stream.make(1, 2, 3);
// From any iterable
const s2 = Stream.fromIterable([1, 2, 3, 4, 5]);
// Integer range (inclusive on both ends)
const s3 = Stream.range(1, 100);
// Infinite stream via pure iteration
const s4 = Stream.iterate(1, (n) => n * 2); // 1, 2, 4, 8, ...
// Single value from an effect
const s5 = Stream.fromEffect(Effect.succeed(42));
// Empty stream
const s6 = Stream.empty;
From effects (polling / repeating)
// Poll an effect on a schedule — useful for metrics, health checks, cache refresh
const samples = Stream.fromEffectSchedule(
Effect.succeed(3),
Schedule.spaced('30 seconds')
).pipe(Stream.take(10));
// Repeat an effect forever (no schedule delay)
const forever = Stream.fromEffectRepeat(Effect.succeed('tick'));
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.
- 7d ago First seen · 708 lines · 53 tokens per session scan A a6999a7545e9
effect-stream is a skill published in the GitHub repository mpsuesser/pi-effect-harness (24 stars, last pushed 2mo ago), licensed MIT. It adds 53 tokens to every session and 4,852 once invoked, about $0.0003 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-making-http-requests
Effect-TS patterns for Making Http Requests. Use when working with making http requests 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.
effect-patterns-scheduling-periodic-tasks
Effect-TS patterns for Scheduling Periodic Tasks. Use when working with scheduling periodic tasks in Effect-TS applications.
effect
Opinionated guide for building production TypeScript applications with Effect v4. Use when implementing Effect workflows, services, layers, schemas, configuration, schedules, caches, streams, HTTP clients, or tests.
effect-patterns-concurrency
Effect-TS patterns for Concurrency. Use when working with concurrency in Effect-TS applications.