tessl install tessl/npm-io-ts@2.2.0TypeScript runtime type system for IO decoding/encoding
Agent Success
Agent success rate when using this tile
72%
Improvement
Agent success rate improvement when using this tile compared to baseline
1.14x
Baseline
Agent success rate without this tile
63%
{
"context": "This criteria evaluates how well an engineer uses io-ts and fp-ts to build a type-safe validation pipeline using Kleisli composition patterns. The focus is on composing multiple validation and transformation steps using monadic composition (chain, map, chainW) to create a sequential pipeline that handles Either values correctly.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Decoder definition",
"description": "Uses io-ts type combinators (t.type, t.string, t.number, t.Int, etc.) to define a codec/decoder for the input structure with username, email, and age fields",
"max_score": 15
},
{
"name": "Refinement validation",
"description": "Uses t.refinement or decoder refinement to add business rule validation (e.g., age >= 18, non-empty username, email format) with appropriate predicates",
"max_score": 15
},
{
"name": "Kleisli composition",
"description": "Uses chain, chainW, or pipe with chain/chainW from fp-ts/Either to compose multiple validation/transformation steps in a monadic pipeline instead of nested if-else or try-catch blocks",
"max_score": 30
},
{
"name": "Either handling",
"description": "Properly uses Either type from fp-ts to represent success (Right) and failure (Left) values throughout the pipeline, maintaining type safety",
"max_score": 15
},
{
"name": "Transformation steps",
"description": "Uses map or chain operations to transform validated data (normalize email to lowercase, add registeredAt timestamp) within the Either context",
"max_score": 15
},
{
"name": "Error reporting",
"description": "Uses PathReporter or custom error formatting to convert io-ts validation errors into readable error messages that are returned in the Left branch",
"max_score": 10
}
]
}