Agent skill

schema-patterns

Effect Schema conventions and patterns. Triggers on Schema class creation, tagged unions, enums, type guards, or test fixtures using Effect Schema.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/effect-schema-patterns

SKILL.md

Effect Schema Patterns

Class Instantiation

ALWAYS use Schema.make() for creating instances:

typescript
// ✅ GOOD - Use Schema.make()
const user = Schema.make(User)({ name: 'Alice', age: 30 })

// ❌ BAD - Manual construction
const user = { _tag: 'User', name: 'Alice', age: 30 }

Type Guards

ALWAYS use Schema.is() or static .is method:

typescript
// ✅ GOOD
if (Standard.is(value)) { ... }
if (Schema.is(Standard)(value)) { ... }

// ❌ BAD - manual _tag check
if (value._tag === 'Standard') { ... }

Enums

ALWAYS inline enum values directly in Schema.Enums():

typescript
// ✅ GOOD - inline values, use .enums for runtime access
export const Status = Schema.Enums({
  active: 'active',
  inactive: 'inactive',
})
export type Status = typeof Status.Type
// Runtime: Status.enums.active

// ❌ BAD - separate const object
export const StatusValues = {
  active: 'active',
  inactive: 'inactive',
} as const
export const Status = Schema.Enums(StatusValues)

Key Points

  • Use Schema.make() for type-safe instantiation
  • Use Schema.is() for type predicates, never manual _tag checks
  • Inline enum values directly in Schema.Enums()
  • Access runtime enum values via .enums property

Didn't find tool you were looking for?

Be as detailed as possible for better results