validateInput method
Validate input before execution and permission checks.
Implementation
@override
ValidationResult validateInput(Map<String, dynamic> input) {
final skill = input['skill'] as String?;
if (skill == null || skill.trim().isEmpty) {
return ValidationResult.invalid('Invalid skill format: $skill');
}
final trimmed = skill.trim();
final normalizedName = trimmed.startsWith('/')
? trimmed.substring(1)
: trimmed;
// Check if command exists.
final command = _registry.findCommand(normalizedName);
if (command == null) {
return ValidationResult.invalid('Unknown skill: $normalizedName');
}
// Check disableModelInvocation.
if (command.disableModelInvocation) {
return ValidationResult.invalid(
'Skill $normalizedName cannot be used with $skillToolName tool '
'due to disable-model-invocation',
);
}
// Check if it's a prompt-based command.
if (command.type != 'prompt') {
return ValidationResult.invalid(
'Skill $normalizedName is not a prompt-based skill',
);
}
return const ValidationResult.valid();
}