Argument Validator Generator Generate comprehensive argument validation logic for CLI applications with type coercion and constraint checking. Capabilities - Generate type coercion functions for arguments - Create custom validators with constraint checking - Set up validation error messages - Implement value normalization - Configure mutually exclusive validation - Generate validation schemas Usage Invoke this skill when you need to: - Add type validation to CLI arguments - Create custom argument validators - Implement complex constraint checking - Generate helpful validation error messages I…

\n if not re.match(pattern, value):\n raise ValidationError(\"Invalid email format\")\n\n return value.lower()\n\nENV_ALIASES = {'dev': 'development', 'prod': 'production'}\nVALID_ENVIRONMENTS = ['development', 'staging', 'production']\n\ndef validate_environment(value: Any) -> str:\n \"\"\"Validate environment name.\"\"\"\n if not isinstance(value, str):\n raise ValidationError(f\"Environment must be a string\")\n\n normalized = ENV_ALIASES.get(value, value)\n if normalized not in VALID_ENVIRONMENTS:\n raise ValidationError(\n f\"Invalid environment: {value}. \"\n f\"Must be one of: {', '.join(VALID_ENVIRONMENTS)}\"\n )\n\n return normalized\n```\n\n### Go Validators\n\n```go\npackage validators\n\nimport (\n \"fmt\"\n \"regexp\"\n \"strconv\"\n \"strings\"\n)\n\n// ValidationError represents a validation failure\ntype ValidationError struct {\n Field string\n Message string\n}\n\nfunc (e *ValidationError) Error() string {\n return fmt.Sprintf(\"%s: %s\", e.Field, e.Message)\n}\n\n// ValidatePort validates a port number\nfunc ValidatePort(value string) (int, error) {\n port, err := strconv.Atoi(value)\n if err != nil {\n return 0, &ValidationError{\n Field: \"port\",\n Message: fmt.Sprintf(\"invalid port number: %s\", value),\n }\n }\n\n if port \u003c 1 || port > 65535 {\n return 0, &ValidationError{\n Field: \"port\",\n Message: \"port must be between 1 and 65535\",\n }\n }\n\n return port, nil\n}\n\n// ValidateEmail validates an email address\nfunc ValidateEmail(value string) (string, error) {\n pattern := `^[\\w.-]+@[\\w.-]+\\.\\w+ argument-validator-generator — Skillopedia \n matched, _ := regexp.MatchString(pattern, value)\n\n if !matched {\n return \"\", &ValidationError{\n Field: \"email\",\n Message: \"invalid email format\",\n }\n }\n\n return strings.ToLower(value), nil\n}\n\nvar envAliases = map[string]string{\n \"dev\": \"development\",\n \"prod\": \"production\",\n}\n\nvar validEnvironments = []string{\"development\", \"staging\", \"production\"}\n\n// ValidateEnvironment validates environment name\nfunc ValidateEnvironment(value string) (string, error) {\n if alias, ok := envAliases[value]; ok {\n value = alias\n }\n\n for _, env := range validEnvironments {\n if env == value {\n return value, nil\n }\n }\n\n return \"\", &ValidationError{\n Field: \"environment\",\n Message: fmt.Sprintf(\"invalid environment: %s\", value),\n }\n}\n```\n\n## Validation Patterns\n\n### Composite Validators\n\n```typescript\n// URL with specific protocol\nexport const apiUrlSchema = z\n .string()\n .url()\n .refine(\n (url) => url.startsWith('https://'),\n 'API URL must use HTTPS'\n );\n\n// File path that must exist\nexport const existingFileSchema = z\n .string()\n .refine(\n (path) => fs.existsSync(path),\n (path) => ({ message: `File not found: ${path}` })\n );\n```\n\n### Dependent Validation\n\n```typescript\n// Validate that end date is after start date\nexport const dateRangeSchema = z.object({\n startDate: z.coerce.date(),\n endDate: z.coerce.date(),\n}).refine(\n (data) => data.endDate > data.startDate,\n 'End date must be after start date'\n);\n```\n\n## Workflow\n\n1. **Analyze requirements** - Review validation needs\n2. **Generate base validators** - Type coercion and basic checks\n3. **Add constraints** - Min/max, patterns, enums\n4. **Create error messages** - Helpful, actionable messages\n5. **Add aliases/transforms** - Normalize input values\n6. **Generate tests** - Validation test cases\n\n## Best Practices Applied\n\n- Type coercion before validation\n- Descriptive error messages\n- Input normalization (lowercase, trim)\n- Alias support for common values\n- Composable validation schemas\n- Consistent error types\n\n## Target Processes\n\n- argument-parser-setup\n- error-handling-user-feedback\n- cli-command-structure-design\n---","attachment_filenames":["README.md"],"attachments":[{"filename":"README.md","content":"# Argument Validator Generator Skill\n\nGenerate argument validation logic with type coercion, constraints, and helpful error messages for CLI applications.\n\n## Overview\n\nThis skill generates comprehensive argument validation code for CLI applications. It supports multiple languages and creates type coercion, constraint checking, and user-friendly error messages.\n\n## When to Use\n\n- Adding type validation to CLI arguments\n- Creating custom argument validators\n- Implementing complex constraint checking\n- Generating validation error messages\n\n## Quick Start\n\n### Basic Validators\n\n```json\n{\n \"language\": \"typescript\",\n \"validators\": [\n {\n \"name\": \"port\",\n \"type\": \"number\",\n \"constraints\": { \"min\": 1, \"max\": 65535 }\n },\n {\n \"name\": \"email\",\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w+$\"\n }\n ]\n}\n```\n\n### With Aliases\n\n```json\n{\n \"language\": \"python\",\n \"validators\": [\n {\n \"name\": \"environment\",\n \"type\": \"enum\",\n \"values\": [\"development\", \"staging\", \"production\"],\n \"aliases\": { \"dev\": \"development\", \"prod\": \"production\" }\n }\n ]\n}\n```\n\n## Features\n\n### Type Coercion\n- String to number conversion\n- Date parsing\n- Boolean normalization\n\n### Constraint Checking\n- Min/max values\n- String patterns (regex)\n- Enum validation\n- Custom predicates\n\n### Error Messages\n- Descriptive error text\n- Suggested corrections\n- Valid value hints\n\n## Supported Languages\n\n| Language | Validation Library |\n|----------|-------------------|\n| TypeScript | Zod |\n| Python | Custom + pydantic |\n| Go | Custom validators |\n| Rust | Custom + validator |\n\n## Integration with Processes\n\n| Process | Integration |\n|---------|-------------|\n| argument-parser-setup | Validation logic |\n| error-handling-user-feedback | Error messages |\n| cli-command-structure-design | Type safety |\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":1849,"content_sha256":"000ffb78423c083590858d2ec64e80209905289d2d3000d1e472de7144d0863c"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Argument Validator Generator","type":"text"}]},{"type":"paragraph","content":[{"text":"Generate comprehensive argument validation logic for CLI applications with type coercion and constraint checking.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Capabilities","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate type coercion functions for arguments","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Create custom validators with constraint checking","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Set up validation error messages","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implement value normalization","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Configure mutually exclusive validation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate validation schemas","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Usage","type":"text"}]},{"type":"paragraph","content":[{"text":"Invoke this skill when you need to:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add type validation to CLI arguments","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Create custom argument validators","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implement complex constraint checking","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate helpful validation error messages","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Inputs","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Parameter","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Type","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Required","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Description","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"language","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"string","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Yes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Target language (typescript, python, go, rust)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"validators","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"array","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Yes","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"List of validators to generate","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"outputPath","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"string","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"No","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Output path for generated files","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Validator Structure","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"json"},"content":[{"text":"{\n \"validators\": [\n {\n \"name\": \"port\",\n \"type\": \"number\",\n \"constraints\": {\n \"min\": 1,\n \"max\": 65535\n },\n \"errorMessage\": \"Port must be between 1 and 65535\"\n },\n {\n \"name\": \"email\",\n \"type\": \"string\",\n \"pattern\": \"^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w+$\",\n \"errorMessage\": \"Invalid email format\"\n },\n {\n \"name\": \"environment\",\n \"type\": \"enum\",\n \"values\": [\"development\", \"staging\", \"production\"],\n \"aliases\": { \"dev\": \"development\", \"prod\": \"production\" }\n }\n ]\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Generated Code Patterns","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"TypeScript Validators","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"typescript"},"content":[{"text":"import { z } from 'zod';\n\n// Port validator\nexport const portSchema = z\n .number()\n .int()\n .min(1, 'Port must be at least 1')\n .max(65535, 'Port must be at most 65535');\n\nexport function validatePort(value: unknown): number {\n const parsed = typeof value === 'string' ? parseInt(value, 10) : value;\n return portSchema.parse(parsed);\n}\n\n// Email validator\nexport const emailSchema = z\n .string()\n .email('Invalid email format')\n .toLowerCase();\n\nexport function validateEmail(value: unknown): string {\n return emailSchema.parse(value);\n}\n\n// Environment enum with aliases\nconst envAliases: Record\u003cstring, string> = {\n dev: 'development',\n prod: 'production',\n};\n\nexport const environmentSchema = z\n .string()\n .transform((val) => envAliases[val] || val)\n .pipe(z.enum(['development', 'staging', 'production']));\n\nexport function validateEnvironment(value: unknown): string {\n return environmentSchema.parse(value);\n}","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Python Validators","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"python"},"content":[{"text":"from typing import Any, List, Optional, Union\nimport re\n\nclass ValidationError(Exception):\n \"\"\"Raised when validation fails.\"\"\"\n pass\n\ndef validate_port(value: Any) -> int:\n \"\"\"Validate port number.\"\"\"\n try:\n port = int(value)\n except (TypeError, ValueError):\n raise ValidationError(f\"Invalid port number: {value}\")\n\n if not 1 \u003c= port \u003c= 65535:\n raise ValidationError(\"Port must be between 1 and 65535\")\n\n return port\n\ndef validate_email(value: Any) -> str:\n \"\"\"Validate email address.\"\"\"\n if not isinstance(value, str):\n raise ValidationError(f\"Email must be a string, got {type(value).__name__}\")\n\n pattern = r'^[\\w.-]+@[\\w.-]+\\.\\w+

Argument Validator Generator Generate comprehensive argument validation logic for CLI applications with type coercion and constraint checking. Capabilities - Generate type coercion functions for arguments - Create custom validators with constraint checking - Set up validation error messages - Implement value normalization - Configure mutually exclusive validation - Generate validation schemas Usage Invoke this skill when you need to: - Add type validation to CLI arguments - Create custom argument validators - Implement complex constraint checking - Generate helpful validation error messages I…

\n if not re.match(pattern, value):\n raise ValidationError(\"Invalid email format\")\n\n return value.lower()\n\nENV_ALIASES = {'dev': 'development', 'prod': 'production'}\nVALID_ENVIRONMENTS = ['development', 'staging', 'production']\n\ndef validate_environment(value: Any) -> str:\n \"\"\"Validate environment name.\"\"\"\n if not isinstance(value, str):\n raise ValidationError(f\"Environment must be a string\")\n\n normalized = ENV_ALIASES.get(value, value)\n if normalized not in VALID_ENVIRONMENTS:\n raise ValidationError(\n f\"Invalid environment: {value}. \"\n f\"Must be one of: {', '.join(VALID_ENVIRONMENTS)}\"\n )\n\n return normalized","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Go Validators","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"go"},"content":[{"text":"package validators\n\nimport (\n \"fmt\"\n \"regexp\"\n \"strconv\"\n \"strings\"\n)\n\n// ValidationError represents a validation failure\ntype ValidationError struct {\n Field string\n Message string\n}\n\nfunc (e *ValidationError) Error() string {\n return fmt.Sprintf(\"%s: %s\", e.Field, e.Message)\n}\n\n// ValidatePort validates a port number\nfunc ValidatePort(value string) (int, error) {\n port, err := strconv.Atoi(value)\n if err != nil {\n return 0, &ValidationError{\n Field: \"port\",\n Message: fmt.Sprintf(\"invalid port number: %s\", value),\n }\n }\n\n if port \u003c 1 || port > 65535 {\n return 0, &ValidationError{\n Field: \"port\",\n Message: \"port must be between 1 and 65535\",\n }\n }\n\n return port, nil\n}\n\n// ValidateEmail validates an email address\nfunc ValidateEmail(value string) (string, error) {\n pattern := `^[\\w.-]+@[\\w.-]+\\.\\w+ argument-validator-generator — Skillopedia \n matched, _ := regexp.MatchString(pattern, value)\n\n if !matched {\n return \"\", &ValidationError{\n Field: \"email\",\n Message: \"invalid email format\",\n }\n }\n\n return strings.ToLower(value), nil\n}\n\nvar envAliases = map[string]string{\n \"dev\": \"development\",\n \"prod\": \"production\",\n}\n\nvar validEnvironments = []string{\"development\", \"staging\", \"production\"}\n\n// ValidateEnvironment validates environment name\nfunc ValidateEnvironment(value string) (string, error) {\n if alias, ok := envAliases[value]; ok {\n value = alias\n }\n\n for _, env := range validEnvironments {\n if env == value {\n return value, nil\n }\n }\n\n return \"\", &ValidationError{\n Field: \"environment\",\n Message: fmt.Sprintf(\"invalid environment: %s\", value),\n }\n}","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Validation Patterns","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Composite Validators","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"typescript"},"content":[{"text":"// URL with specific protocol\nexport const apiUrlSchema = z\n .string()\n .url()\n .refine(\n (url) => url.startsWith('https://'),\n 'API URL must use HTTPS'\n );\n\n// File path that must exist\nexport const existingFileSchema = z\n .string()\n .refine(\n (path) => fs.existsSync(path),\n (path) => ({ message: `File not found: ${path}` })\n );","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Dependent Validation","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"typescript"},"content":[{"text":"// Validate that end date is after start date\nexport const dateRangeSchema = z.object({\n startDate: z.coerce.date(),\n endDate: z.coerce.date(),\n}).refine(\n (data) => data.endDate > data.startDate,\n 'End date must be after start date'\n);","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Workflow","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Analyze requirements","type":"text","marks":[{"type":"strong"}]},{"text":" - Review validation needs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate base validators","type":"text","marks":[{"type":"strong"}]},{"text":" - Type coercion and basic checks","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add constraints","type":"text","marks":[{"type":"strong"}]},{"text":" - Min/max, patterns, enums","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Create error messages","type":"text","marks":[{"type":"strong"}]},{"text":" - Helpful, actionable messages","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add aliases/transforms","type":"text","marks":[{"type":"strong"}]},{"text":" - Normalize input values","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate tests","type":"text","marks":[{"type":"strong"}]},{"text":" - Validation test cases","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Best Practices Applied","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Type coercion before validation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Descriptive error messages","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Input normalization (lowercase, trim)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Alias support for common values","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Composable validation schemas","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Consistent error types","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Target Processes","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"argument-parser-setup","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"error-handling-user-feedback","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"cli-command-structure-design","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"argument-validator-generator","author":"@skillopedia","source":{"stars":1176,"repo_name":"babysitter","origin_url":"https://github.com/a5c-ai/babysitter/blob/HEAD/library/specializations/cli-mcp-development/skills/argument-validator-generator/SKILL.md","repo_owner":"a5c-ai","body_sha256":"fa13e5aca652cdb5ee51b47bb558483ab76b00669562d458ae8e342c55250231","cluster_key":"bf9ee55ad13ad330c5f3b950776efb339b349376ecd605d59bb432224b9465f8","clean_bundle":{"format":"clean-skill-bundle-v1","source":"a5c-ai/babysitter/library/specializations/cli-mcp-development/skills/argument-validator-generator/SKILL.md","attachments":[{"id":"3dec74ea-c170-5857-94a7-f3173fcfa66b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/3dec74ea-c170-5857-94a7-f3173fcfa66b/attachment.md","path":"README.md","size":1849,"sha256":"000ffb78423c083590858d2ec64e80209905289d2d3000d1e472de7144d0863c","contentType":"text/markdown; charset=utf-8"}],"bundle_sha256":"36b8188ca5c75c1c0c3404f66bb89e759f4eeb65ea916b2f17251323cf78ff88","attachment_count":1,"text_attachments":1,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"library/specializations/cli-mcp-development/skills/argument-validator-generator/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"general","import_tag":"clean-skills-v1","description":"Generate argument validation logic with type coercion, constraints, custom validators, and helpful error messages for CLI applications.","allowed-tools":"Read, Write, Edit, Bash, Glob, Grep"}},"renderedAt":1782986963075}

Argument Validator Generator Generate comprehensive argument validation logic for CLI applications with type coercion and constraint checking. Capabilities - Generate type coercion functions for arguments - Create custom validators with constraint checking - Set up validation error messages - Implement value normalization - Configure mutually exclusive validation - Generate validation schemas Usage Invoke this skill when you need to: - Add type validation to CLI arguments - Create custom argument validators - Implement complex constraint checking - Generate helpful validation error messages I…