Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add dkyazzentwatwa/chatgpt-skills --skill "json-schema-validator"
Install specific skill from multi-skill repository
# Description
Validate JSON data against JSON Schema specifications. Use for API validation, config file validation, or data quality checks.
# SKILL.md
name: json-schema-validator
description: Validate JSON data against JSON Schema specifications. Use for API validation, config file validation, or data quality checks.
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
type: string, number, integer, boolean, array, object, nullenum: allowed valuesconst: exact value
String Validation
minLength,maxLengthpattern: regex patternformat: email, uri, date, date-time, ipv4, ipv6, uuid
Number Validation
minimum,maximumexclusiveMinimum,exclusiveMaximummultipleOf
Array Validation
items: schema for itemsminItems,maxItemsuniqueItemscontains
Object Validation
properties: property schemasrequired: required propertiesadditionalPropertiesminProperties,maxPropertiespatternProperties
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
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.