joi

📁 damusix/skills 📅 14 days ago
12
总安装量
12
周安装量
#26584
全站排名
安装命令
npx skills add https://github.com/damusix/skills --skill joi

Agent 安装分布

opencode 12
github-copilot 12
codex 12
kimi-cli 12
gemini-cli 12
amp 12

Skill 文档

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 typetypes 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