<< All versions
Skill v1.0.1
currentAutomated scan100/100majiayu000/claude-skill-registry/joi
3 files
──Details
PublishedJune 16, 2026 at 11:15 PM
Content Hashsha256:d6581361c6490d5f...
Git SHA0432e4f16a18
Bump Typepatch
──Files
Files (1 file, 2.6 KB)
SKILL.md2.6 KBactive
SKILL.md · 54 lines · 2.6 KB
version: "1.0.1" name: joi description: "Use when building joi schemas, validating input data, defining custom types, conditional validation with .when(), cross-field references, custom error messages, or writing joi extensions. Standalone package that integrates with the @hapi ecosystem."
Joi
Quick Start
const Joi = require('@hapi/joi');
const schema = Joi.object({ name: Joi.string().min(1).max(100).required(), age: Joi.number().integer().min(0), email: Joi.string().email() });
const { error, value } = schema.validate(input);
Critical Rules
- Schemas are immutable - Every method returns a new schema instance; never mutate
- Validate at boundaries - Use
validate()orattempt()at input boundaries; see validation - Types extend base - All types inherit from
any(); see types overview - Refs for cross-field - Use
Joi.ref()for dynamic values across fields; see references - Extend for custom types - Use
Joi.extend()to create custom types; see extensions
Workflow
- Choose a type - types overview for all built-in types
- Add constraints - Chain rules like
.min(),.max(),.pattern(),.valid() - Compose schemas - Nest
Joi.object(),Joi.array(),Joi.alternatives() - Add conditionals - Use
.when()for dynamic schemas; see conditionals - Customize errors - Override messages via
.messages()or.error(); see errors
Key Patterns
| Topic | Reference | |
|---|---|---|
| All built-in types | types | |
| Validation & options | validation | |
| References & templates | references | |
| Conditional schemas | conditionals | |
| Error handling | errors | |
| Custom extensions | extensions | |
| Metadata & introspection | metadata | |
| Common methods (any) | any | |
| Testing patterns | testing |