Agent skill

joi

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.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/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

  1. Schemas are immutable - Every method returns a new schema instance; never mutate
  2. Validate at boundaries - Use validate() or attempt() at input boundaries; see validation
  3. Types extend base - All types inherit from any(); see types overview
  4. Refs for cross-field - Use Joi.ref() for dynamic values across fields; see references
  5. Extend for custom types - Use Joi.extend() to create custom types; see extensions

Workflow

  1. Choose a type - types overview for all built-in types
  2. Add constraints - Chain rules like .min(), .max(), .pattern(), .valid()
  3. Compose schemas - Nest Joi.object(), Joi.array(), Joi.alternatives()
  4. Add conditionals - Use .when() for dynamic schemas; see conditionals
  5. 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

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results