Add TemplateRenderException constructors for undefined variable errors
with suggestions. Refactor InitCommand/ListCommand to return Integer
exit codes. Fix TransformExecutor and TemplateManifest for schema v2.
Rename fixture directories from $packagePath to __packagePath__ to
prevent shell/Maven interpretation. TemplateEngine now converts
__VARNAME__ to $VARNAME before Velocity rendering.
- Add SuggestionEngine using Levenshtein distance for fuzzy matching
- Add TemplateError with categories mapped to exit codes
- Add ErrorFormatter for consistent ANSI-colored output
- Integrate did-you-mean suggestions in template commands
- Add --verbose flag for stack trace output
- Add PromptValidation record for validation rules (pattern, length, range, enum)
- Add PromptValidator with support for required, pattern, length, range, and enum validation
- Update PromptRunner to validate and re-prompt on failure
- Validate --var CLI overrides, fallback to interactive prompt if invalid
- Add ConsoleUI methods for validation feedback (error, success, warning)
- Add 20 unit tests for PromptValidator
Closes#24
Story #23 - prepares for Voyage API integration:
- TemplateRegistry interface for template listing/download
- GitHubTemplateRegistry wraps existing TemplatesHub
- MockTemplateRegistry with embedded template data
- ListCommand/InitCommand refactored to use registry
- Added --refresh flag to bypass cache
- Add ConsoleUI for centralized console I/O
- InitCommand now prompts for template and directory
- Template defaults to new-qqq-application
- PromptRunner uses ConsoleUI for consistency
- Treat Kingsrook as the project standard: Checkstyle uses codestyle/checkstyle.config.xml
- Spotless enforces license headers for Java, XML, YAML/Properties; removed Google formatter
- Added license templates for XML and hash comment styles
- Verified mvn verify passes across modules
- Add maven-checkstyle-plugin (validate phase) using codestyle/checkstyle.config.xml
- Add Spotless license header + Google Java Format; enforce at verify
- Point Header module to codestyle/license.txt; fix paths
- Apply formatting and headers across sources