.claude/skills/joi/SKILL.md
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.
npx skillsauth add avifenesh/glidemq-hapi joiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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);
validate() or attempt() at input boundaries; see validationany(); see types overviewJoi.ref() for dynamic values across fields; see referencesJoi.extend() to create custom types; see extensions.min(), .max(), .pattern(), .valid()Joi.object(), Joi.array(), Joi.alternatives().when() for dynamic schemas; see conditionals.messages() or .error(); see errors| 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 |
tools
Use when building @hapi/hapi servers, routes, plugins, auth schemes, HTTP APIs, request lifecycle, caching, stale-while-revalidate, server methods, views, startup sequences, or response marshalling.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------