| name | data-validation |
| description | Validates data against common and custom rules (required fields, formats, ranges). Use when checking data quality, input validation, or enforcing schemas and constraints. |
| metadata | {"displayName":"Data Validation","version":"1.0.0","author":"Browser4","tags":"validation, data, quality","dependencies":""} |
Data Validation Skill
Description
Validate data against specified rules. This skill provides a flexible validation framework supporting common validation patterns like email format, required fields, and custom rules.
Dependencies
None
Parameters
| Parameter | Type | Required | Default | Description |
|---|
| data | Map<String, Any> | Yes | - | The data to validate |
| rules | List | Yes | - | List of validation rules to apply |
Return Value
Returns a SkillResult with the following data structure on success:
{
"validationResults": {
"rule1": true,
"rule2": true
}
}
On failure, returns:
{
"validationResults": {
"rule1": true,
"rule2": false
},
"errors": ["error message 1", "error message 2"]
}
Supported Validation Rules
| Rule | Description | Example |
|---|
| email | Validates email format | "user@example.com" |
| required | Checks all fields are non-null and non-blank | All values must be present |
Usage Examples
Email Validation
val result = registry.execute(
skillId = "data-validation",
context = context,
params = mapOf(
"data" to mapOf("email" to "test@example.com"),
"rules" to listOf("email")
)
)
Multiple Rules Validation
val result = registry.execute(
skillId = "data-validation",
context = context,
params = mapOf(
"data" to mapOf(
"email" to "user@example.com",
"name" to "John Doe",
"age" to "25"
),
"rules" to listOf("email", "required")
)
)
Error Handling
The skill returns a failure result in the following cases:
- Missing required parameter
data
- Missing required parameter
rules
- Unknown validation rule specified
- Validation rule fails for the provided data
Implementation Notes
- Rules are applied in the order specified in the
rules list
- All rules are executed even if some fail (to provide complete feedback)
- Custom validation rules can be added by extending the skill
- Validation is performed synchronously
- Thread-safe execution
Extending with Custom Rules
To add custom validation rules, extend the skill and override the execute method to handle additional rule types:
class ExtendedDataValidationSkill : DataValidationSkill() {
override suspend fun execute(context: SkillContext, params: Map<String, Any>): SkillResult {
val rules = params["rules"] as? List<String> ?: emptyList()
if (rules.contains("custom-rule")) {
}
return super.execute(context, params)
}
}
Best Practices
- Always provide clear error messages
- Validate input data before processing
- Use multiple validation rules for comprehensive checks
- Combine with other skills in a pipeline for data processing workflows
- Log validation failures for monitoring and debugging
See Also