Skip to main content

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.

来源信息

仓库
UsefulSoftwareCo/executor
最近来源活动
2026年5月6日 00:16
检测到的 SKILL.md 语言
英语
星标
4,150
分支
364

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
wrdn-effect-schema-boundaries
description
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.
allowed-tools
Read Grep Glob Bash
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 ```ts const ParsedConfig = Schema.Struct({ endpoint: Schema.String, }); const config = yield * Schema.decodeUnknownEffect(ParsedConfig)(raw); ``` ```ts const config = yield * Schema.decodeUnknownEffect(Schema.fromJsonString(ParsedConfig))(rawText); ``` ## Bad ```ts const config = raw as unknown as { endpoint: string }; ``` ```ts const config = JSON.parse(rawText) as { endpoint: string }; ``` ```ts const pattern = updated.pattern as string; ```
在 GitHub 查看