Claude-skill-registry fluxwing-validator
Validate uxscii components and screens against schema with interactive menu or direct script calls
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/fluxwing-validator" ~/.claude/skills/majiayu000-claude-skill-registry-fluxwing-validator && rm -rf "$T"
skills/data/fluxwing-validator/SKILL.mdFluxwing Validator
Validate uxscii components and screens against JSON Schema with interactive workflows.
Overview
This skill provides two modes of operation:
- Interactive Mode: User invocation with menu and minimal output
- Direct Mode: Script calls from other skills with verbose output
When to Use This Skill
User says:
- "Validate my components"
- "Check if everything is valid"
- "Run validation on my screens"
- "Validate the project"
Other skills: Call validator scripts directly (see Technical Reference below)
Interactive Validation Workflow
Step 1: Present Validation Options
Use AskUserQuestion to present menu:
What would you like to validate?
Options:
- Everything in this project - Validates all components and screens
- Just components - Validates
./fluxwing/components/*.uxm - Just screens - Validates
./fluxwing/screens/*.uxm - Let me specify a file or pattern - Custom path/glob pattern
Step 2: Check What Exists
Before running validation, check if directories exist:
# Check for components test -d ./fluxwing/components # Check for screens test -d ./fluxwing/screens
If neither exists:
- Inform user: "No components or screens found. Create some first!"
- Exit cleanly
If option 4 (custom) selected:
- Ask user for the pattern/file path
- Validate it's not empty
- Proceed with user-provided pattern
Step 3: Run Validation
Based on user selection:
Option 1: Everything
# Validate components node {SKILL_ROOT}/validate-batch.js \ "./fluxwing/components/*.uxm" \ "{SKILL_ROOT}/../fluxwing-component-creator/schemas/uxm-component.schema.json" \ --json # Validate screens node {SKILL_ROOT}/validate-batch.js \ "./fluxwing/screens/*.uxm" \ "{SKILL_ROOT}/../fluxwing-component-creator/schemas/uxm-component.schema.json" \ --screens \ --json
Option 2: Just components
node {SKILL_ROOT}/validate-batch.js \ "./fluxwing/components/*.uxm" \ "{SKILL_ROOT}/../fluxwing-component-creator/schemas/uxm-component.schema.json" \ --json
Option 3: Just screens
node {SKILL_ROOT}/validate-batch.js \ "./fluxwing/screens/*.uxm" \ "{SKILL_ROOT}/../fluxwing-component-creator/schemas/uxm-component.schema.json" \ --screens \ --json
Option 4: Custom pattern
# Use user-provided pattern node {SKILL_ROOT}/validate-batch.js \ "${userPattern}" \ "{SKILL_ROOT}/../fluxwing-component-creator/schemas/uxm-component.schema.json" \ --json
Step 4: Parse Results and Show Minimal Summary
Parse JSON output from validator to extract:
: Total files validatedtotal
: Number of valid filespassed
: Number of failed filesfailed
: Total warning countwarnings
Display minimal summary:
✓ 12/14 components valid ✗ 2/14 components failed ⚠ 3 warnings total
If all passed:
✓ All 14 components valid ⚠ 3 warnings
If everything failed:
✗ All 14 components failed
If nothing to validate:
No files found matching pattern
Step 5: Ask About Details
Use AskUserQuestion to ask:
Show error details?
Options:
- Yes - Display full validation output
- No - Clean exit
Step 6: Display Details (if requested)
If user selects "Yes", show full validation output including:
Failed files section:
Failed Files: ✗ broken-button (./fluxwing/components/broken-button.uxm) Errors: 2 1. must have required property 'fidelity' 2. ASCII template file not found ✗ old-card (./fluxwing/components/old-card.uxm) Errors: 1 1. invalid version format
Passed with warnings section:
Passed with Warnings: ✓ login-screen (2 warnings) ✓ dashboard (1 warning)
Fully passed section (optional, only if not too many):
Fully Passed: ✓ primary-button ✓ secondary-button ✓ email-input ...
Edge Cases
No fluxwing directory exists
No components or screens found. Create some first!
Empty directories
✓ 0/0 components valid
Invalid glob pattern (option 4)
No files found matching pattern: ${pattern}
Validation script fails to execute
Error: Cannot execute validator. Node.js required.
Technical Reference (For Other Skills)
Direct Script Calls
Other skills (component-creator, screen-scaffolder) call validator scripts directly:
Validate single component:
node {SKILL_ROOT}/../fluxwing-validator/validate-component.js \ ./fluxwing/components/button.uxm \ {SKILL_ROOT}/schemas/uxm-component.schema.json
Validate single screen:
node {SKILL_ROOT}/../fluxwing-validator/validate-screen.js \ ./fluxwing/screens/login-screen.uxm \ {SKILL_ROOT}/schemas/uxm-component.schema.json
Batch validate:
node {SKILL_ROOT}/../fluxwing-validator/validate-batch.js \ "./fluxwing/components/*.uxm" \ {SKILL_ROOT}/schemas/uxm-component.schema.json
Output modes:
- Default: Human-readable (verbose, full errors/warnings)
: Machine-readable JSON--json
Exit codes:
: All files valid0
: One or more files invalid1
: Missing dependencies or invalid arguments2
Validator Scripts
Available scripts:
- Validate single component filevalidate-component.js
- Validate single screen file (with screen-specific checks)validate-screen.js
- Validate multiple files with glob patternsvalidate-batch.js
- Test component templatestest-validator.js
- Test screen templatestest-screen-validator.js
npm Scripts (for testing)
cd {SKILL_ROOT} # Run tests npm test # Test component templates npm run test:screens # Test screen templates # Batch validation npm run validate:components # Validate all components npm run validate:screens # Validate all screens npm run validate:all # Validate everything
Example Interactions
Example 1: Validate Everything
User: "Validate my components"
Skill:
What would you like to validate? 1. Everything in this project 2. Just components 3. Just screens 4. Let me specify a file or pattern
User selects: Option 1
Skill runs validation and shows:
✓ 12/14 components valid ✗ 2/14 components failed ⚠ 3 warnings total ✓ 2/2 screens valid ⚠ 1 warning Show error details?
User: "yes"
Skill shows full error details for failed files
Example 2: Validate Specific Pattern
User: "Validate my components"
Skill: (presents menu)
User selects: Option 4 (custom pattern)
Skill: "What file or pattern would you like to validate?"
User: "./fluxwing/components/*-button.uxm"
Skill validates and shows:
✓ 3/3 files valid Show error details?
Implementation Notes
Parse JSON output:
const result = JSON.parse(bashOutput); const total = result.total; const passed = result.passed; const failed = result.failed; const warnings = result.warnings;
Summary formatting:
- Show passed/failed ratio for quick scan
- Highlight failures prominently
- Warnings shown but not intrusive
- Clean, minimal output by default
Error detail formatting:
- Group by status (failed, warnings, passed)
- Show file path and error count
- Display first 2-3 errors per file
- Indicate if more errors exist
Skill Status: Ready for use Version: 1.0.0