rhyssullivan/executor · Archived

wrdn-effect-schema-boundaries

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.

First seen Jun 21, 2026

Installation

$ npx skills add rhyssullivan/executor --skill wrdn-effect-schema-boundaries

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from rhyssullivan/executor.

npx skills add rhyssullivan/executor

Browse all from rhyssullivan/executor

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2.1K
License LICENSE
Default branch main
Open issues 54
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead Grep Glob Bash

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 1,568 B
  • docs SUMMARY.md 271 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

You fix one pattern: domain code is asserting or probing an unknown shape instead of parsing it once at the boundary.

Fix Shape

  • Prefer Schema.decodeUnknownEffect(MySchema)(value) for untrusted input.
  • Prefer Schema.decodeUnknownEffect(Schema.fromJsonString(MySchema))(text) or

Schema.decodeUnknownOption(Schema.parseJson())(text) for JSON strings.

  • Keep domain code typed after the decode; do not keep unknown and probe it repeatedly.
  • Replace JSON.parse, value as string, as unknown as X, as Record<string, unknown>, inline object assertions, "field" in value, and Reflect.get with a schema, typed adapter, or named guard.
  • A named guard is acceptable only when parsing is not the right abstraction and the guard has a precise return type.

Good

const ParsedConfig = Schema.Struct({
  endpoint: Schema.String,
});

const config = yield * Schema.decodeUnknownEffect(ParsedConfig)(raw);
const config = yield * Schema.decodeUnknownEffect(Schema.fromJsonString(ParsedConfig))(rawText);

Bad

const config = raw as unknown as { endpoint: string };
const config = JSON.parse(rawText) as { endpoint: string };
const pattern = updated.pattern as string;