Zhichang Yu
9435d2911d
feat: Add GLM-4.7 support and fix PDF scraper issues ( #266 )
...
Merging with admin override due to known issues:
✅ **What Works**:
- GLM-4.7 Claude-compatible API support (correctly implemented)
- PDF scraper improvements (content truncation fixed, page traceability added)
- Documentation updates comprehensive
⚠️ **Known Issues (will be fixed in next commit)**:
1. Import bugs in 3 files causing UnboundLocalError (30 tests failing)
2. PDF scraper test expectations need updating for new behavior (5 tests failing)
3. test_godot_config failure (pre-existing, not caused by this PR - 1 test failing)
**Action Plan**:
Fixes for issues #1 and #2 are ready and will be committed immediately after merge.
Issue #3 requires separate investigation as it's a pre-existing problem.
Total: 36 failing tests, 35 will be fixed in next commit.
2026-01-27 21:10:40 +03:00
yusyus
81dd5bbfbc
fix: Fix remaining 61 ruff linting errors (SIM102, SIM117)
...
Fixed all remaining linting errors from the 310 total:
- SIM102: Combined nested if statements (31 errors)
- adaptors/openai.py
- config_extractor.py
- codebase_scraper.py
- doc_scraper.py
- github_fetcher.py
- pattern_recognizer.py
- pdf_scraper.py
- test_example_extractor.py
- SIM117: Combined multiple with statements (24 errors)
- tests/test_async_scraping.py (2 errors)
- tests/test_github_scraper.py (2 errors)
- tests/test_guide_enhancer.py (20 errors)
- Fixed test fixture parameter (mock_config in test_c3_integration.py)
All 700+ tests passing.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-17 23:25:12 +03:00
yusyus
596b219599
fix: Resolve remaining 188 linting errors (249 total fixed)
...
Second batch of comprehensive linting fixes:
Unused Arguments/Variables (136 errors):
- ARG002/ARG001 (91 errors): Prefixed unused method/function arguments with '_'
- Interface methods in adaptors (base.py, gemini.py, markdown.py)
- AST analyzer methods maintaining signatures (code_analyzer.py)
- Test fixtures and hooks (conftest.py)
- Added noqa: ARG001/ARG002 for pytest hooks requiring exact names
- F841 (45 errors): Prefixed unused local variables with '_'
- Tuple unpacking where some values aren't needed
- Variables assigned but not referenced
Loop & Boolean Quality (28 errors):
- B007 (18 errors): Prefixed unused loop control variables with '_'
- enumerate() loops where index not used
- for-in loops where loop variable not referenced
- E712 (10 errors): Simplified boolean comparisons
- Changed '== True' to direct boolean check
- Changed '== False' to 'not' expression
- Improved test readability
Code Quality (24 errors):
- SIM201 (4 errors): Already fixed in previous commit
- SIM118 (2 errors): Already fixed in previous commit
- E741 (4 errors): Already fixed in previous commit
- Config manager loop variable fix (1 error)
All Tests Passing:
- test_scraper_features.py: 42 passed
- test_integration.py: 51 passed
- test_architecture_scenarios.py: 11 passed
- test_real_world_fastmcp.py: 19 passed, 1 skipped
Note: Some SIM errors (nested if, multiple with) remain unfixed as they
would require non-trivial refactoring. Focus was on functional correctness.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-17 23:02:11 +03:00
yusyus
ec3e0bf491
fix: Resolve 61 critical linting errors
...
Fixed priority linting errors to improve code quality:
Critical Fixes:
- F821 (2 errors): Fixed undefined name 'original_result' in config_enhancer.py
- UP035 (2 errors): Removed deprecated typing.Dict and typing.Type imports
- F401 (27 errors): Removed unused imports and added noqa for availability checks
- E722 (19 errors): Replaced bare 'except:' with 'except Exception:'
Code Quality Improvements:
- SIM201 (4 errors): Simplified 'not x == y' to 'x != y'
- SIM118 (2 errors): Removed unnecessary .keys() in dict iterations
- E741 (4 errors): Renamed ambiguous variable 'l' to 'line'
- I001 (1 error): Sorted imports in test_bootstrap_skill.py
All modified areas tested and passing:
- test_scraper_features.py: 42 passed
- test_integration.py: 51 passed
- test_architecture_scenarios.py: 11 passed
- test_real_world_fastmcp.py: 19 passed (1 skipped)
Remaining linting errors: 249 (mostly code style suggestions like ARG002, F841, SIM102)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com >
2026-01-17 22:54:40 +03:00
Pablo Estevez
c33c6f9073
change max lenght
2026-01-17 17:48:15 +00:00
Pablo Estevez
5ed767ff9a
run ruff
2026-01-17 17:29:21 +00:00
yusyus
1a2f268316
feat: Phase 4 - Implement MarkdownAdaptor for generic export
...
- Add MarkdownAdaptor for universal markdown export
- Pure markdown format (no platform-specific features)
- ZIP packaging with README.md, references/, DOCUMENTATION.md
- No upload capability (manual use only)
- No AI enhancement support
- Combines all references into single DOCUMENTATION.md
- Add 12 unit tests (all passing)
Test Results:
- 12 MarkdownAdaptor tests passing
- 45 total adaptor tests passing (4 skipped)
Phase 4 Complete ✅
Related to #179
2025-12-28 20:34:21 +03:00
yusyus
9032232ac7
feat(multi-llm): Phase 3 - OpenAI adaptor implementation
...
Implement OpenAI ChatGPT platform support (Issue #179 , Phase 3/6)
**Features:**
- Assistant instructions format (plain text, no frontmatter)
- ZIP packaging for Assistants API
- Upload creates Assistant + Vector Store with file_search
- Enhancement using GPT-4o
- API key validation (sk- prefix)
**Implementation:**
- New: src/skill_seekers/cli/adaptors/openai.py (520 lines)
- format_skill_md(): Assistant instructions format
- package(): Creates .zip with assistant_instructions.txt + vector_store_files/
- upload(): Creates Assistant with Vector Store via Assistants API
- enhance(): Uses GPT-4o for enhancement
- validate_api_key(): Checks OpenAI key format (sk-)
**Tests:**
- New: tests/test_adaptors/test_openai_adaptor.py (14 tests)
- 12 passing unit tests
- 2 skipped (integration tests requiring real API keys)
- Tests: validation, formatting, packaging, vector store structure
**Test Summary:**
- Total adaptor tests: 37 (33 passing, 4 skipped)
- Base: 10 tests
- Claude: (integrated in base)
- Gemini: 11 tests (2 skipped)
- OpenAI: 12 tests (2 skipped)
**Next:** Phase 4 - Implement Markdown adaptor (generic export)
2025-12-28 20:29:54 +03:00
yusyus
7320da6a07
feat(multi-llm): Phase 2 - Gemini adaptor implementation
...
Implement Google Gemini platform support (Issue #179 , Phase 2/6)
**Features:**
- Plain markdown format (no YAML frontmatter)
- tar.gz packaging for Gemini Files API
- Upload to Google AI Studio
- Enhancement using Gemini 2.0 Flash
- API key validation (AIza prefix)
**Implementation:**
- New: src/skill_seekers/cli/adaptors/gemini.py (430 lines)
- format_skill_md(): Plain markdown (no frontmatter)
- package(): Creates .tar.gz with system_instructions.md
- upload(): Uploads to Gemini Files API
- enhance(): Uses Gemini 2.0 Flash for enhancement
- validate_api_key(): Checks Google key format (AIza)
**Tests:**
- New: tests/test_adaptors/test_gemini_adaptor.py (13 tests)
- 11 passing unit tests
- 2 skipped (integration tests requiring real API keys)
- Tests: validation, formatting, packaging, error handling
**Test Summary:**
- Total adaptor tests: 23 (21 passing, 2 skipped)
- Base adaptor: 10 tests
- Gemini adaptor: 11 tests (2 skipped)
**Next:** Phase 3 - Implement OpenAI adaptor
2025-12-28 20:24:48 +03:00
yusyus
d0bc042a43
feat(multi-llm): Phase 1 - Foundation adaptor architecture
...
Implement base adaptor pattern for multi-LLM support (Issue #179 )
**Architecture:**
- Created adaptors/ package with base SkillAdaptor class
- Implemented factory pattern with get_adaptor() registry
- Refactored Claude-specific code into ClaudeAdaptor
**Changes:**
- New: src/skill_seekers/cli/adaptors/base.py (SkillAdaptor + SkillMetadata)
- New: src/skill_seekers/cli/adaptors/__init__.py (registry + factory)
- New: src/skill_seekers/cli/adaptors/claude.py (refactored upload + enhance logic)
- Modified: package_skill.py (added --target flag, uses adaptor.package())
- Modified: upload_skill.py (added --target flag, uses adaptor.upload())
- Modified: enhance_skill.py (added --target flag, uses adaptor.enhance())
**Tests:**
- New: tests/test_adaptors/test_base.py (10 tests passing)
- All existing tests still pass (backward compatible)
**Backward Compatibility:**
- Default --target=claude maintains existing behavior
- All CLI tools work exactly as before without --target flag
- No breaking changes
**Next:** Phase 2 - Implement Gemini, OpenAI, Markdown adaptors
2025-12-28 20:17:31 +03:00