Replaces hardcoded preset logic with a clean, maintainable PresetManager architecture. Adds comprehensive deprecation warnings to guide users toward the new --preset flag while maintaining backward compatibility. ## What Changed ### New Files - src/skill_seekers/cli/presets.py (200 lines) * AnalysisPreset dataclass * PRESETS dictionary (quick, standard, comprehensive) * PresetManager class with apply_preset() logic - tests/test_preset_system.py (387 lines) * 24 comprehensive tests across 6 test classes * 100% test pass rate ### Modified Files - src/skill_seekers/cli/parsers/analyze_parser.py * Added --preset flag (recommended way) * Added --preset-list flag * Marked --quick/--comprehensive/--depth as [DEPRECATED] - src/skill_seekers/cli/codebase_scraper.py * Added _check_deprecated_flags() function * Refactored preset handling to use PresetManager * Replaced 28 lines of if-statements with 7 lines of clean code ### Documentation - PHASE4_COMPLETION_SUMMARY.md - Complete implementation summary - PHASE1B_COMPLETION_SUMMARY.md - Phase 1B chunking summary ## Key Features ### Formal Preset Definitions - **Quick** ⚡: 1-2 min, basic features, enhance_level=0 - **Standard** 🎯: 5-10 min, core features, enhance_level=1 (DEFAULT) - **Comprehensive** 🚀: 20-60 min, all features + AI, enhance_level=3 ### New CLI Interface ```bash # Recommended way (no warnings) skill-seekers analyze --directory . --preset quick skill-seekers analyze --directory . --preset standard skill-seekers analyze --directory . --preset comprehensive # Show available presets skill-seekers analyze --preset-list # Customize presets skill-seekers analyze --directory . --preset quick --enhance-level 1 ``` ### Backward Compatibility - Old flags still work: --quick, --comprehensive, --depth - Clear deprecation warnings with migration paths - "Will be removed in v3.0.0" notices ### CLI Override Support Users can customize preset defaults: ```bash skill-seekers analyze --preset quick --skip-patterns false skill-seekers analyze --preset standard --enhance-level 2 ``` ## Testing All tests passing: - 24 preset system tests (test_preset_system.py) - 16 CLI parser tests (test_cli_parsers.py) - 15 upload integration tests (test_upload_integration.py) Total: 55/55 PASS ## Benefits ### Before (Hardcoded) ```python if args.quick: args.depth = "surface" args.skip_patterns = True # ... 13 more assignments elif args.comprehensive: args.depth = "full" # ... 13 more assignments else: # ... 13 more assignments ``` **Problems:** 28 lines, repetitive, hard to maintain ### After (PresetManager) ```python preset_name = args.preset or ("quick" if args.quick else "standard") preset_args = PresetManager.apply_preset(preset_name, vars(args)) for key, value in preset_args.items(): setattr(args, key, value) ``` **Benefits:** 7 lines, clean, maintainable, extensible ## Migration Guide Deprecation warnings guide users: ``` ⚠️ DEPRECATED: --quick → use --preset quick instead ⚠️ DEPRECATED: --comprehensive → use --preset comprehensive instead ⚠️ DEPRECATED: --depth full → use --preset comprehensive instead 💡 MIGRATION TIP: --preset quick (1-2 min, basic features) --preset standard (5-10 min, core features, DEFAULT) --preset comprehensive (20-60 min, all features + AI) ⚠️ Deprecated flags will be removed in v3.0.0 ``` ## Architecture Strategy Pattern implementation: - PresetManager handles preset selection and application - AnalysisPreset dataclass ensures type safety - Factory pattern makes adding new presets easy - CLI overrides provide customization flexibility ## Related Changes Phase 4 is part of the v2.11.0 RAG & CLI improvements: - Phase 1: Chunking Integration ✅ - Phase 2: Upload Integration ✅ - Phase 3: CLI Refactoring ✅ - Phase 4: Preset System ✅ (this commit) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
13 KiB
13 KiB