joi
SKILL.md
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 |
Weekly Installs
14
Repository
damusix/skillsGitHub Stars
8
First Seen
Feb 15, 2026
Security Audits
Installed on
opencode14
github-copilot14
codex14
kimi-cli14
gemini-cli14
amp14