Add --dry-run flag to generate, update, and validate commands to allow previewing fetched resources and configurations without triggering Gemini API calls or file modifications.
- Enforce that all skills in `flutter_skills.yaml` contain the keyword "Flutter" in their description.
- Enforce that all skills in `dart_skills.yaml` contain the keyword "Dart" in their description.
Addresses several points of failure during the skill generation and validation lifecycle to prevent crashes and provide better error visibility. Additionally, it expands the capability of the `resources` field to accept local relative file paths in addition to URLs.
Key changes include:
- **Expanded Resource Support:** Updated `BaseSkillCommand` and `SkillParams` to allow the `resources` list to take both URLs and relative file paths, improving local testing and generation workflows.
- **Service Robustness:** Enhanced `GeminiService` and API interactions to gracefully handle errors, empty responses, and malformed JSON payloads.
- **Command Reliability:** Updated `GenerateSkillCommand` and `ValidateSkillCommand` to detect and gracefully log generic exceptions and empty content fetches instead of failing silently or crashing.
- **HTML/Markdown Parsing:** Broadened test coverage to cover conversions for tables, definition lists (dl/dt/dd), video sources, iframes, and details/summary HTML tags.
- **Comprehensive Testing:** Added unit tests across `generate_skills_test.dart`, `validate_skills_test.dart`, and `gemini_service_test.dart` to explicitly cover invalid API responses, missing metadata fallbacks, and retry logic.
- **Documentation:** Updated `README.md` to reflect the refined parameters, new resource path capabilities, and handling logic.