Claude-skill-registry json-schema-validator
Validate JSON data against JSON Schema specifications. Use for API validation, config file validation, or data quality checks.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/json-schema-validator" ~/.claude/skills/majiayu000-claude-skill-registry-json-schema-validator && rm -rf "$T"
manifest:
skills/data/json-schema-validator/SKILL.mdsource content
JSON Schema Validator
Validate JSON documents against JSON Schema (Draft 7) specifications.
Features
- Schema Validation: Validate JSON against schema
- Error Details: Detailed validation error messages
- Batch Validation: Validate multiple files
- Schema Generation: Generate schema from examples
- Multiple Drafts: Support for Draft 4, 6, 7
Quick Start
from json_validator import JSONValidator validator = JSONValidator() # Validate data against schema schema = { "type": "object", "properties": { "name": {"type": "string"}, "age": {"type": "integer", "minimum": 0} }, "required": ["name"] } data = {"name": "John", "age": 30} result = validator.validate(data, schema) print(f"Valid: {result['valid']}")
CLI Usage
# Validate JSON file against schema python json_validator.py --data user.json --schema user_schema.json # Validate with inline schema python json_validator.py --data config.json --schema '{"type": "object"}' # Generate schema from sample python json_validator.py --generate sample.json --output schema.json # Batch validate directory python json_validator.py --data-dir ./configs/ --schema config_schema.json
API Reference
JSONValidator Class
class JSONValidator: def __init__(self, draft: str = "draft7") # Validation def validate(self, data: dict, schema: dict) -> dict def validate_file(self, data_path: str, schema_path: str) -> dict def validate_batch(self, data_files: list, schema: dict) -> list # Schema operations def generate_schema(self, data: dict) -> dict def check_schema(self, schema: dict) -> dict
Validation Result
{ "valid": True, # or False "errors": [], # List of error details "path": "$", # JSON path to data root } # With errors: { "valid": False, "errors": [ { "message": "'name' is a required property", "path": "$", "schema_path": "required" }, { "message": "-5 is less than minimum 0", "path": "$.age", "schema_path": "properties.age.minimum" } ] }
Schema Examples
Object Schema
schema = { "type": "object", "properties": { "id": {"type": "integer"}, "name": {"type": "string", "minLength": 1}, "email": {"type": "string", "format": "email"}, "active": {"type": "boolean", "default": True} }, "required": ["id", "name", "email"], "additionalProperties": False }
Array Schema
schema = { "type": "array", "items": { "type": "object", "properties": { "id": {"type": "integer"}, "value": {"type": "number"} } }, "minItems": 1, "uniqueItems": True }
Nested Schema
schema = { "type": "object", "properties": { "user": { "type": "object", "properties": { "name": {"type": "string"}, "address": { "type": "object", "properties": { "street": {"type": "string"}, "city": {"type": "string"} } } } } } }
Generate Schema from Data
validator = JSONValidator() sample_data = { "name": "Product A", "price": 29.99, "tags": ["electronics", "sale"], "inStock": True } schema = validator.generate_schema(sample_data) # Returns inferred schema based on data types
Supported Keywords
Type Validation
: string, number, integer, boolean, array, object, nulltype
: allowed valuesenum
: exact valueconst
String Validation
,minLengthmaxLength
: regex patternpattern
: email, uri, date, date-time, ipv4, ipv6, uuidformat
Number Validation
,minimummaximum
,exclusiveMinimumexclusiveMaximummultipleOf
Array Validation
: schema for itemsitems
,minItemsmaxItemsuniqueItemscontains
Object Validation
: property schemasproperties
: required propertiesrequiredadditionalProperties
,minPropertiesmaxPropertiespatternProperties
Error Handling
result = validator.validate(data, schema) if not result['valid']: for error in result['errors']: print(f"Error at {error['path']}: {error['message']}")
Dependencies
- jsonschema>=4.20.0