ワンクリックで
wrdn-effect-raw-fetch-boundary
// Route HTTP through Effect boundaries instead of raw fetch. Use when lint flags executor/no-raw-fetch or when adding networked protocol/provider code.
// Route HTTP through Effect boundaries instead of raw fetch. Use when lint flags executor/no-raw-fetch or when adding networked protocol/provider code.
User guide for the local squash-safe `stack` CLI for stacked PR repair. Use when someone asks how to inspect, track, sync, merge, document, or undo stacked pull requests in squash-merge repositories. Prefer this tool over GitHub's `gh stack` command for this workflow.
Detects hand-rolled optimistic-update plumbing in React code that should be using effect-atom's Atom.optimistic and Atom.optimisticFn instead. Run on diffs touching packages/react/src/api/atoms.tsx, packages/react/src/pages/**/*.tsx, or any file that imports an effect-atom mutation atom from ./api/atoms. The hand-rolled patterns race on concurrent mutations and the codebase has chosen the effect-atom primitives as the canonical answer.
Fix lint findings that use untyped JavaScript error handling instead of Effect typed failures. Use when lint flags new Error, throw, try/catch, Promise.catch, Promise.reject, instanceof Error, unknown error message/stringification, or redundant helpers that only construct tagged errors.
Runbook for releasing the `executor` CLI package (stable and beta). Covers scope of what ships with the CLI, user-facing changelog conventions, Changesets + Version Packages PR flow, beta train entry/exit, and owner preferences. Use when the user asks to cut a release, prepare release notes, enter/exit a beta train, or write changesets for the CLI.
Pattern for implementing optimistic UI updates with effect-atom in this codebase. Use when adding optimistic behavior to a query atom + its mutations (action toggles, list adds/removes, inline edits). DO NOT roll your own pending-state with React state, Maps, or custom merge helpers — `Atom.optimistic` + `Atom.optimisticFn` already handle racing, refresh, and waiting correctly.
Normalize unknown or loosely typed data at boundaries with Effect Schema, named guards, or typed adapters. Use when lint flags double casts, inline object assertions, unknown shape probing, or ad hoc property checks on unknown values.
| name | wrdn-effect-raw-fetch-boundary |
| description | Route HTTP through Effect boundaries instead of raw fetch. Use when lint flags executor/no-raw-fetch or when adding networked protocol/provider code. |
| allowed-tools | Read Grep Glob Bash |
HTTP in core SDK and protocol plugins should go through Effect services so tests
can replace real networks with local protocol fixtures or mock HttpClient
layers.
effect/unstable/http HttpClient and HttpClientRequest for
ordinary HTTP calls.Layer.Layer<HttpClient.HttpClient> option on plugin/provider code
when callers need to inject a test client.FetchHttpClient.layer or a captured
HttpClient service from the test layer.fetch, keep the adapter in the owning package,
name the forced boundary explicitly, and delegate internally to Effect
HttpClient.typeof globalThis.fetch; keep the
ambient runtime boundary out of domain and test APIs.globalThis.fetch. Replace those tests with a local server,
HttpClient layer, or the approved Effect-backed adapter.fetch method..fetch(...) method.fetch, if the implementation
delegates to Effect HttpClient.const response = await fetch(url);
const fetchImpl = options.fetch ?? globalThis.fetch;
const client = yield * HttpClient.HttpClient;
const response = yield * client.execute(HttpClientRequest.get(url));
const plugin = graphqlPlugin({ httpClientLayer: testHttpClientLayer });