From c8ca1e15859ca5ce82fd1ef1b20efde730fda952 Mon Sep 17 00:00:00 2001 From: MiaoDX Date: Wed, 31 Dec 2025 04:07:07 +0800 Subject: [PATCH 1/5] fix: Add missing adaptors module to pyproject.toml packages The skill_seekers.cli.adaptors module was missing from the packages list in pyproject.toml, causing ModuleNotFoundError when using the package_skill command with PyPI-installed package (v2.5.0). This module provides multi-LLM platform support: - base.py - Base adaptor class - claude.py - Claude AI adaptor - gemini.py - Google Gemini adaptor - openai.py - OpenAI ChatGPT adaptor - markdown.py - Generic markdown export Co-authored-by: MiaoDX --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f4b10d8..86a7df3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -132,7 +132,7 @@ skill-seekers-install = "skill_seekers.cli.install_skill:main" skill-seekers-install-agent = "skill_seekers.cli.install_agent:main" [tool.setuptools] -packages = ["skill_seekers", "skill_seekers.cli", "skill_seekers.mcp", "skill_seekers.mcp.tools"] +packages = ["skill_seekers", "skill_seekers.cli", "skill_seekers.cli.adaptors", "skill_seekers.mcp", "skill_seekers.mcp.tools"] [tool.setuptools.package-dir] "" = "src" From b912331550cbf2aaa9838e701e10a9842f1ead66 Mon Sep 17 00:00:00 2001 From: yusyus Date: Sun, 28 Dec 2025 22:17:59 +0300 Subject: [PATCH 2/5] chore: Bump version to v2.5.0 - Multi-Platform Feature Parity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prepare v2.5.0 release with multi-LLM platform support. Major changes: - Add support for 4 platforms (Claude, Gemini, OpenAI, Markdown) - Complete feature parity across all platforms - 18 MCP tools with multi-platform support - Comprehensive platform documentation Updated files: - pyproject.toml: version 2.4.0 โ†’ 2.5.0 - README.md: version badge updated, tests 427 โ†’ 700 - CHANGELOG.md: Added v2.5.0 release notes - docs/CLAUDE.md: Updated version and features Release date: 2025-12-28 --- CHANGELOG.md | 239 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +- docs/CLAUDE.md | 53 ++++++++++- pyproject.toml | 2 +- 4 files changed, 294 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6e1918..84362cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,245 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [2.5.0] - 2025-12-28 + +### ๐Ÿš€ Multi-Platform Feature Parity - 4 LLM Platforms Supported + +This **major feature release** adds complete multi-platform support for Claude AI, Google Gemini, OpenAI ChatGPT, and Generic Markdown export. All features now work across all platforms with full feature parity. + +### ๐ŸŽฏ Major Features + +#### Multi-LLM Platform Support +- **4 platforms supported**: Claude AI, Google Gemini, OpenAI ChatGPT, Generic Markdown +- **Complete feature parity**: All skill modes work with all platforms +- **Platform adaptors**: Clean architecture with platform-specific implementations +- **Unified workflow**: Same scraping output works for all platforms +- **Smart enhancement**: Platform-specific AI models (Claude Sonnet 4, Gemini 2.0 Flash, GPT-4o) + +#### Platform-Specific Capabilities + +**Claude AI (Default):** +- Format: ZIP with YAML frontmatter + markdown +- Upload: Anthropic Skills API +- Enhancement: Claude Sonnet 4 (local or API) +- MCP integration: Full support + +**Google Gemini:** +- Format: tar.gz with plain markdown +- Upload: Google Files API + Grounding +- Enhancement: Gemini 2.0 Flash +- Long context: 1M tokens supported + +**OpenAI ChatGPT:** +- Format: ZIP with assistant instructions +- Upload: Assistants API + Vector Store +- Enhancement: GPT-4o +- File search: Semantic search enabled + +**Generic Markdown:** +- Format: ZIP with pure markdown +- Upload: Manual distribution +- Universal compatibility: Works with any LLM + +#### Complete Feature Parity + +**All skill modes work with all platforms:** +- Documentation scraping โ†’ All 4 platforms +- GitHub repository analysis โ†’ All 4 platforms +- PDF extraction โ†’ All 4 platforms +- Unified multi-source โ†’ All 4 platforms +- Local repository analysis โ†’ All 4 platforms + +**18 MCP tools with multi-platform support:** +- `package_skill` - Now accepts `target` parameter (claude, gemini, openai, markdown) +- `upload_skill` - Now accepts `target` parameter (claude, gemini, openai) +- `enhance_skill` - NEW standalone tool with `target` parameter +- `install_skill` - Full multi-platform workflow automation + +### Added + +#### Core Infrastructure +- **Platform Adaptors** (`src/skill_seekers/cli/adaptors/`) + - `base_adaptor.py` - Abstract base class for all adaptors + - `claude_adaptor.py` - Claude AI implementation + - `gemini_adaptor.py` - Google Gemini implementation + - `openai_adaptor.py` - OpenAI ChatGPT implementation + - `markdown_adaptor.py` - Generic Markdown export + - `__init__.py` - Factory function `get_adaptor(target)` + +#### CLI Tools +- **Multi-platform packaging**: `skill-seekers package output/skill/ --target gemini` +- **Multi-platform upload**: `skill-seekers upload skill.zip --target openai` +- **Multi-platform enhancement**: `skill-seekers enhance output/skill/ --target gemini --mode api` +- **Target parameter**: All packaging tools now accept `--target` flag + +#### MCP Tools +- **`enhance_skill`** (NEW) - Standalone AI enhancement tool + - Supports local mode (Claude Code Max, no API key) + - Supports API mode (platform-specific APIs) + - Works with Claude, Gemini, OpenAI + - Creates SKILL.md.backup before enhancement + +- **`package_skill`** (UPDATED) - Multi-platform packaging + - New `target` parameter (claude, gemini, openai, markdown) + - Creates ZIP for Claude/OpenAI/Markdown + - Creates tar.gz for Gemini + - Shows platform-specific output messages + +- **`upload_skill`** (UPDATED) - Multi-platform upload + - New `target` parameter (claude, gemini, openai) + - Platform-specific API key validation + - Returns skill ID and platform URL + - Graceful error for markdown (no upload) + +#### Documentation +- **`docs/FEATURE_MATRIX.md`** (NEW) - Comprehensive feature matrix + - Platform support comparison table + - Skill mode support across platforms + - CLI command support matrix + - MCP tool support matrix + - Platform-specific examples + - Verification checklist + +- **`docs/UPLOAD_GUIDE.md`** (REWRITTEN) - Multi-platform upload guide + - Complete guide for all 4 platforms + - Platform selection table + - API key setup instructions + - Platform comparison matrices + - Complete workflow examples + +- **`docs/ENHANCEMENT.md`** (UPDATED) + - Multi-platform enhancement section + - Platform-specific model information + - Cost comparison across platforms + +- **`docs/MCP_SETUP.md`** (UPDATED) + - Added enhance_skill to tool listings + - Multi-platform usage examples + - Updated tool count (10 โ†’ 18 tools) + +- **`src/skill_seekers/mcp/README.md`** (UPDATED) + - Corrected tool count (18 tools) + - Added enhance_skill documentation + - Updated package_skill with target parameter + - Updated upload_skill with target parameter + +#### Optional Dependencies +- **`[gemini]`** extra: `pip install skill-seekers[gemini]` + - google-generativeai>=0.8.3 + - Required for Gemini enhancement and upload + +- **`[openai]`** extra: `pip install skill-seekers[openai]` + - openai>=1.59.6 + - Required for OpenAI enhancement and upload + +- **`[all-llms]`** extra: `pip install skill-seekers[all-llms]` + - Includes both Gemini and OpenAI dependencies + +#### Tests +- **`tests/test_adaptors.py`** - Comprehensive adaptor tests +- **`tests/test_multi_llm_integration.py`** - E2E multi-platform tests +- **`tests/test_install_multiplatform.py`** - Multi-platform install_skill tests +- **700 total tests passing** (up from 427 in v2.4.0) + +### Changed + +#### CLI Architecture +- **Package command**: Now routes through platform adaptors +- **Upload command**: Now supports all 3 upload platforms +- **Enhancement command**: Now supports platform-specific models +- **Unified workflow**: All commands respect `--target` parameter + +#### MCP Architecture +- **Tool modularity**: Cleaner separation with adaptor pattern +- **Error handling**: Platform-specific error messages +- **API key validation**: Per-platform validation logic +- **TextContent fallback**: Graceful degradation when MCP not installed + +#### Documentation +- All platform documentation updated for multi-LLM support +- Consistent terminology across all docs +- Platform comparison tables added +- Examples updated to show all platforms + +### Fixed + +- **TextContent import error** in test environment (5 MCP tool files) + - Added fallback TextContent class when MCP not installed + - Prevents `TypeError: 'NoneType' object is not callable` + - Ensures tests pass without MCP library + +- **UTF-8 encoding** issues on Windows (continued from v2.4.0) + - All file operations use explicit UTF-8 encoding + - CHANGELOG encoding handling improved + +- **API key environment variables** - Clear documentation for all platforms + - ANTHROPIC_API_KEY for Claude + - GOOGLE_API_KEY for Gemini + - OPENAI_API_KEY for OpenAI + +### Other Improvements + +#### Smart Description Generation +- Automatically generates skill descriptions from documentation +- Analyzes reference files to suggest "When to Use" triggers +- Improves SKILL.md quality without manual editing + +#### Smart Summarization +- Large skills (500+ lines) automatically summarized +- Preserves key examples and patterns +- Maintains quality while reducing token usage + +### Deprecation Notice + +None - All changes are backward compatible. Existing v2.4.0 workflows continue to work with default `target='claude'`. + +### Migration Guide + +**For users upgrading from v2.4.0:** + +1. **No changes required** - Default behavior unchanged (targets Claude AI) + +2. **To use other platforms:** + ```bash + # Install platform dependencies + pip install skill-seekers[gemini] # For Gemini + pip install skill-seekers[openai] # For OpenAI + pip install skill-seekers[all-llms] # For all platforms + + # Set API keys + export GOOGLE_API_KEY=AIzaSy... # For Gemini + export OPENAI_API_KEY=sk-proj-... # For OpenAI + + # Use --target flag + skill-seekers package output/react/ --target gemini + skill-seekers upload react-gemini.tar.gz --target gemini + ``` + +3. **MCP users** - New tools available: + - `enhance_skill` - Standalone enhancement (was only in install_skill) + - All packaging tools now accept `target` parameter + +**See full documentation:** +- [Multi-Platform Guide](docs/UPLOAD_GUIDE.md) +- [Feature Matrix](docs/FEATURE_MATRIX.md) +- [Enhancement Guide](docs/ENHANCEMENT.md) + +### Contributors + +- @yusufkaraaslan - Multi-platform architecture, all platform adaptors, comprehensive testing + +### Stats + +- **16 commits** since v2.4.0 +- **700 tests** (up from 427, +273 new tests) +- **4 platforms** supported (was 1) +- **18 MCP tools** (up from 17) +- **5 documentation guides** updated/created +- **29 files changed**, 6,349 insertions(+), 253 deletions(-) + +--- + ## [2.4.0] - 2025-12-25 ### ๐Ÿš€ MCP 2025 Upgrade - Multi-Agent Support & HTTP Transport diff --git a/README.md b/README.md index 52176af..1ad7942 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ # Skill Seeker -[![Version](https://img.shields.io/badge/version-2.4.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v2.4.0) +[![Version](https://img.shields.io/badge/version-2.5.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v2.5.0) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![MCP Integration](https://img.shields.io/badge/MCP-Integrated-blue.svg)](https://modelcontextprotocol.io) -[![Tested](https://img.shields.io/badge/Tests-427%20Passing-brightgreen.svg)](tests/) +[![Tested](https://img.shields.io/badge/Tests-700%20Passing-brightgreen.svg)](tests/) [![Project Board](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) [![PyPI version](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md index e5630ec..1843920 100644 --- a/docs/CLAUDE.md +++ b/docs/CLAUDE.md @@ -2,6 +2,21 @@ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. +## ๐ŸŽฏ Current Status (December 28, 2025) + +**Version:** v2.5.0 (Production Ready - Multi-Platform Feature Parity!) +**Active Development:** Multi-platform support complete + +### Recent Updates (December 2025): + +**๐ŸŽ‰ MAJOR RELEASE: Multi-Platform Feature Parity! (v2.5.0)** +- **๐ŸŒ Multi-LLM Support**: Full support for 4 platforms - Claude AI, Google Gemini, OpenAI ChatGPT, Generic Markdown +- **๐Ÿ”„ Complete Feature Parity**: All skill modes work with all platforms +- **๐Ÿ—๏ธ Platform Adaptors**: Clean architecture with platform-specific implementations +- **โœจ 18 MCP Tools**: Enhanced with multi-platform support (package, upload, enhance) +- **๐Ÿ“š Comprehensive Documentation**: Complete guides for all platforms +- **๐Ÿงช Test Coverage**: 700 tests passing, extensive platform compatibility testing + ## Overview This is a Python-based documentation scraper that converts ANY documentation website into a Claude skill. It's a single-file tool (`doc_scraper.py`) that scrapes documentation, extracts code patterns, detects programming languages, and generates structured skill files ready for use with Claude. @@ -94,11 +109,47 @@ The LOCAL enhancement option (`--enhance-local` or `enhance_skill_local.py`) ope "Package skill at output/react/" ``` -9 MCP tools available: list_configs, generate_config, validate_config, estimate_pages, scrape_docs, package_skill, upload_skill, split_config, generate_router +18 MCP tools available with multi-platform support: list_configs, generate_config, validate_config, fetch_config, estimate_pages, scrape_docs, scrape_github, scrape_pdf, package_skill, upload_skill, enhance_skill (NEW), install_skill, split_config, generate_router, add_config_source, list_config_sources, remove_config_source, submit_config ### Test with limited pages (edit config first) Set `"max_pages": 20` in the config file to test with fewer pages. +## Multi-Platform Support (v2.5.0+) + +**4 Platforms Fully Supported:** +- **Claude AI** (default) - ZIP format, Skills API, MCP integration +- **Google Gemini** - tar.gz format, Files API, 1M token context +- **OpenAI ChatGPT** - ZIP format, Assistants API, Vector Store +- **Generic Markdown** - ZIP format, universal compatibility + +**All skill modes work with all platforms:** +- Documentation scraping +- GitHub repository analysis +- PDF extraction +- Unified multi-source +- Local repository analysis + +**Use the `--target` parameter for packaging, upload, and enhancement:** +```bash +# Package for different platforms +skill-seekers package output/react/ --target claude # Default +skill-seekers package output/react/ --target gemini +skill-seekers package output/react/ --target openai +skill-seekers package output/react/ --target markdown + +# Upload to platforms (requires API keys) +skill-seekers upload output/react.zip --target claude +skill-seekers upload output/react-gemini.tar.gz --target gemini +skill-seekers upload output/react-openai.zip --target openai + +# Enhance with platform-specific AI +skill-seekers enhance output/react/ --target claude # Sonnet 4 +skill-seekers enhance output/react/ --target gemini --mode api # Gemini 2.0 +skill-seekers enhance output/react/ --target openai --mode api # GPT-4o +``` + +See [Multi-Platform Guide](UPLOAD_GUIDE.md) and [Feature Matrix](FEATURE_MATRIX.md) for complete details. + ## Architecture ### Single-File Design diff --git a/pyproject.toml b/pyproject.toml index 86a7df3..2a5a818 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "skill-seekers" -version = "2.4.0" +version = "2.5.0" description = "Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills" readme = "README.md" requires-python = ">=3.10" From 5e166c40b9d14646c01930282d62e82f8310ab11 Mon Sep 17 00:00:00 2001 From: yusyus Date: Tue, 30 Dec 2025 23:22:30 +0300 Subject: [PATCH 3/5] chore: Bump version to v2.5.1 - Critical PyPI Bug Fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version Updates: - pyproject.toml: 2.5.0 โ†’ 2.5.1 - src/skill_seekers/__init__.py: 2.0.0 โ†’ 2.5.1 - src/skill_seekers/cli/__init__.py: 2.0.0 โ†’ 2.5.1 - src/skill_seekers/cli/main.py: 2.4.0 โ†’ 2.5.1 - src/skill_seekers/mcp/__init__.py: 2.4.0 โ†’ 2.5.1 - src/skill_seekers/mcp/tools/__init__.py: 2.4.0 โ†’ 2.5.1 CHANGELOG: - Added v2.5.1 release notes documenting PR #221 fix - Critical: Fixed missing skill_seekers.cli.adaptors package - Impact: Restores all multi-platform features for PyPI users Documentation: - Updated CLAUDE.md to v2.5.0 with multi-platform details - Added platform adaptor architecture documentation - Updated test architecture and environment variables Related: PR #221 (merged), Issue #222 (py.typed follow-up) ๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- CHANGELOG.md | 28 +++ CLAUDE.md | 307 ++++++++++++++++++------ pyproject.toml | 2 +- src/skill_seekers/__init__.py | 2 +- src/skill_seekers/cli/__init__.py | 2 +- src/skill_seekers/cli/main.py | 2 +- src/skill_seekers/mcp/__init__.py | 2 +- src/skill_seekers/mcp/tools/__init__.py | 2 +- 8 files changed, 267 insertions(+), 80 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84362cc..2acef8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [2.5.1] - 2025-12-30 + +### ๐Ÿ› Critical Bug Fix - PyPI Package Broken + +This **patch release** fixes a critical packaging bug that made v2.5.0 completely unusable for PyPI users. + +### Fixed + +- **CRITICAL**: Added missing `skill_seekers.cli.adaptors` module to packages list in pyproject.toml ([#221](https://github.com/yusufkaraaslan/Skill_Seekers/pull/221)) + - **Issue**: v2.5.0 on PyPI throws `ModuleNotFoundError: No module named 'skill_seekers.cli.adaptors'` + - **Impact**: Broke 100% of multi-platform features (Claude, Gemini, OpenAI, Markdown) + - **Cause**: The adaptors module was missing from the explicit packages list + - **Fix**: Added `skill_seekers.cli.adaptors` to packages in pyproject.toml + - **Credit**: Thanks to [@MiaoDX](https://github.com/MiaoDX) for finding and fixing this issue! + +### Package Structure + +The `skill_seekers.cli.adaptors` module contains the platform adaptor architecture: +- `base.py` - Abstract base class for all adaptors +- `claude.py` - Claude AI platform implementation +- `gemini.py` - Google Gemini platform implementation +- `openai.py` - OpenAI ChatGPT platform implementation +- `markdown.py` - Generic markdown export + +**Note**: v2.5.0 is broken on PyPI. All users should upgrade to v2.5.1 immediately. + +--- + ## [2.5.0] - 2025-12-28 ### ๐Ÿš€ Multi-Platform Feature Parity - 4 LLM Platforms Supported diff --git a/CLAUDE.md b/CLAUDE.md index 508f0b5..20f95a0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,21 +2,20 @@ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. -## ๐ŸŽฏ Current Status (November 30, 2025) +## ๐ŸŽฏ Current Status (December 30, 2025) -**Version:** v2.1.1 (Production Ready - GitHub Analysis Enhanced!) +**Version:** v2.5.0 (Production Ready - Multi-Platform Feature Parity!) **Active Development:** Flexible, incremental task-based approach -### Recent Updates (November 2025): +### Recent Updates (December 2025): -**๐ŸŽ‰ MAJOR MILESTONE: Published on PyPI! (v2.0.0)** -- **๐Ÿ“ฆ PyPI Publication**: Install with `pip install skill-seekers` - https://pypi.org/project/skill-seekers/ -- **๐Ÿ”ง Modern Python Packaging**: pyproject.toml, src/ layout, entry points -- **โœ… CI/CD Fixed**: All 5 test matrix jobs passing (Ubuntu + macOS, Python 3.10-3.12) -- **๐Ÿ“š Documentation Complete**: README, CHANGELOG, FUTURE_RELEASES.md all updated -- **๐Ÿš€ Unified CLI**: Single `skill-seekers` command with Git-style subcommands -- **๐Ÿงช Test Coverage**: 427 tests passing (up from 391), 39% coverage -- **๐ŸŒ Community**: GitHub Discussion, Release notes, announcements published +**๐ŸŽ‰ MAJOR RELEASE: Multi-Platform Feature Parity (v2.5.0)** +- **๐ŸŒ 4 LLM Platforms**: Claude AI, Google Gemini, OpenAI ChatGPT, Generic Markdown +- **โœ… Complete Feature Parity**: All skill modes work with all platforms +- **๐Ÿ”ง Platform Adaptors**: Clean architecture with platform-specific implementations +- **๐Ÿ“ฆ Smart Enhancement**: Platform-specific AI models (Sonnet 4, Gemini 2.0, GPT-4o) +- **๐Ÿงช Test Coverage**: 700+ tests passing across all platforms +- **๐Ÿ“š Unified Workflow**: Same scraping output works for all platforms **๐Ÿš€ Unified Multi-Source Scraping (v2.0.0)** - **NEW**: Combine documentation + GitHub + PDF in one skill @@ -40,23 +39,13 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co - ๐Ÿ“ Multi-source configs: django_unified, fastapi_unified, fastapi_unified_test, godot_unified, react_unified - ๐Ÿ“ Test/Example configs: godot_github, react_github, python-tutorial-test, example_pdf, test-manual -**๐Ÿ“‹ Completed (November 29, 2025):** -- **โœ… DONE**: PyPI publication complete (v2.0.0) -- **โœ… DONE**: CI/CD fixed - all checks passing -- **โœ… DONE**: Documentation updated (README, CHANGELOG, FUTURE_RELEASES.md) -- **โœ… DONE**: Quality Assurance + Race Condition Fixes (v2.1.0) -- **โœ… DONE**: All critical bugs fixed (Issues #190, #192, #193) -- **โœ… DONE**: Test suite stabilized (427 tests passing) -- **โœ… DONE**: Unified tests fixed (all 22 passing) -- **โœ… DONE**: PR #195 merged - Unlimited local repository analysis -- **โœ… DONE**: PR #198 merged - Skip llms.txt config option -- **โœ… DONE**: Issue #203 - Configurable EXCLUDED_DIRS (19 tests, 2 commits) - -**๐Ÿ“‹ Next Up (Post-v2.1.0):** -- **Priority 1**: Review open PRs (#187, #186) -- **Priority 2**: Issue #202 - Add warning for missing local_repo_path -- **Priority 3**: Task H1.3 - Create example project folder -- **Priority 4**: Task A3.1 - GitHub Pages site (skillseekersweb.com) +**๐Ÿ“‹ Recent Completions (December 2025):** +- **โœ… DONE**: Multi-platform support (v2.5.0) - 4 LLM platforms +- **โœ… DONE**: Platform adaptor architecture with clean separation +- **โœ… DONE**: Enhanced MCP tools with platform support (18 tools) +- **โœ… DONE**: Multi-platform CLI commands (package, upload, enhance) +- **โœ… DONE**: Test suite expanded to 700+ tests +- **โœ… DONE**: Complete feature parity across all platforms **๐Ÿ“Š Roadmap Progress:** - 134 tasks organized into 22 feature groups @@ -67,21 +56,33 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## ๐Ÿ”Œ MCP Integration Available -**This repository includes a fully tested MCP server with 10 tools:** -- `mcp__skill-seeker__list_configs` - List all available preset configurations -- `mcp__skill-seeker__generate_config` - Generate a new config file for any docs site -- `mcp__skill-seeker__validate_config` - Validate a config file structure -- `mcp__skill-seeker__estimate_pages` - Estimate page count before scraping -- `mcp__skill-seeker__scrape_docs` - Scrape and build a skill -- `mcp__skill-seeker__package_skill` - Package skill into .zip file (with auto-upload) -- `mcp__skill-seeker__upload_skill` - Upload .zip to Claude -- `mcp__skill-seeker__install_skill` - **NEW!** Complete one-command workflow (fetch โ†’ scrape โ†’ enhance โ†’ package โ†’ upload) -- `mcp__skill-seeker__split_config` - Split large documentation configs -- `mcp__skill-seeker__generate_router` - Generate router/hub skills +**This repository includes a fully tested MCP server with 18 tools supporting 4 LLM platforms:** + +**Core Tools (9):** +- `list_configs` - List all available preset configurations +- `generate_config` - Generate new config for any docs site +- `validate_config` - Validate config file structure +- `estimate_pages` - Estimate page count before scraping +- `scrape_docs` - Scrape and build a skill +- `package_skill` - Package skill (supports --target: claude, gemini, openai, markdown) +- `upload_skill` - Upload to LLM platform (supports --target: claude, gemini, openai) +- `enhance_skill` - **NEW!** AI enhancement with platform support +- `install_skill` - Complete workflow (fetch โ†’ scrape โ†’ enhance โ†’ package โ†’ upload) + +**Extended Tools (9):** +- `scrape_github` - Scrape GitHub repositories +- `scrape_pdf` - Extract from PDFs +- `unified_scrape` - Multi-source scraping +- `merge_sources` - Merge docs + code +- `detect_conflicts` - Find discrepancies +- `split_config` - Split large configs +- `generate_router` - Generate router skills +- `add_config_source` - Register git repos +- `fetch_config` - Fetch from git **Setup:** See [docs/MCP_SETUP.md](docs/MCP_SETUP.md) or run `./setup_mcp.sh` -**Status:** โœ… Tested and working in production with Claude Code +**Status:** โœ… Tested with 5 AI agents (Claude Code, Cursor, Windsurf, VS Code + Cline, IntelliJ IDEA) ## Overview @@ -134,6 +135,24 @@ export ANTHROPIC_API_KEY=sk-ant-... ## Core Commands +### Multi-Platform Support (NEW in v2.5.0) + +```bash +# Package for different LLM platforms +skill-seekers package output/react/ --target claude # Default +skill-seekers package output/react/ --target gemini +skill-seekers package output/react/ --target openai +skill-seekers package output/react/ --target markdown + +# Upload to platform +skill-seekers upload react-gemini.tar.gz --target gemini +skill-seekers upload react-openai.zip --target openai + +# AI enhancement with platform-specific models +skill-seekers enhance output/react/ --target gemini --mode api +skill-seekers enhance output/react/ --target openai --mode api +``` + ### Quick Start - Use a Preset ```bash @@ -382,7 +401,7 @@ skill-seekers estimate configs/vue.json --max-discovery 2000 ## Repository Architecture -### File Structure (v2.0.0 - Modern Python Packaging) +### File Structure (v2.5.0 - Multi-Platform Architecture) ``` Skill_Seekers/ @@ -391,25 +410,38 @@ Skill_Seekers/ โ”‚ โ””โ”€โ”€ skill_seekers/ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”œโ”€โ”€ cli/ # CLI tools (entry points) +โ”‚ โ”‚ โ”œโ”€โ”€ main.py # Unified CLI dispatcher (Git-style) โ”‚ โ”‚ โ”œโ”€โ”€ doc_scraper.py # Main scraper (~790 lines) โ”‚ โ”‚ โ”œโ”€โ”€ estimate_pages.py # Page count estimator -โ”‚ โ”‚ โ”œโ”€โ”€ enhance_skill.py # AI enhancement (API-based) +โ”‚ โ”‚ โ”œโ”€โ”€ enhance_skill_local.py # AI enhancement (local) โ”‚ โ”‚ โ”œโ”€โ”€ package_skill.py # Skill packager +โ”‚ โ”‚ โ”œโ”€โ”€ upload_skill.py # Upload to platforms +โ”‚ โ”‚ โ”œโ”€โ”€ install_skill.py # Complete workflow automation +โ”‚ โ”‚ โ”œโ”€โ”€ install_agent.py # Install to AI agent directories โ”‚ โ”‚ โ”œโ”€โ”€ github_scraper.py # GitHub scraper โ”‚ โ”‚ โ”œโ”€โ”€ pdf_scraper.py # PDF scraper โ”‚ โ”‚ โ”œโ”€โ”€ unified_scraper.py # Unified multi-source scraper โ”‚ โ”‚ โ”œโ”€โ”€ merge_sources.py # Source merger -โ”‚ โ”‚ โ””โ”€โ”€ conflict_detector.py # Conflict detection +โ”‚ โ”‚ โ”œโ”€โ”€ conflict_detector.py # Conflict detection +โ”‚ โ”‚ โ””โ”€โ”€ adaptors/ # Platform adaptor architecture +โ”‚ โ”‚ โ”œโ”€โ”€ __init__.py # Factory: get_adaptor(target) +โ”‚ โ”‚ โ”œโ”€โ”€ base_adaptor.py # Abstract base class +โ”‚ โ”‚ โ”œโ”€โ”€ claude_adaptor.py # Claude AI implementation +โ”‚ โ”‚ โ”œโ”€โ”€ gemini_adaptor.py # Google Gemini implementation +โ”‚ โ”‚ โ”œโ”€โ”€ openai_adaptor.py # OpenAI ChatGPT implementation +โ”‚ โ”‚ โ””โ”€โ”€ markdown_adaptor.py # Generic Markdown export โ”‚ โ””โ”€โ”€ mcp/ # MCP server integration -โ”‚ โ””โ”€โ”€ server.py -โ”œโ”€โ”€ tests/ # Test suite (391 tests passing) +โ”‚ โ”œโ”€โ”€ server.py # FastMCP-based server (stdio + HTTP) +โ”‚ โ””โ”€โ”€ tools/ # MCP tool implementations +โ”œโ”€โ”€ tests/ # Test suite (700+ tests passing) โ”‚ โ”œโ”€โ”€ test_scraper_features.py โ”‚ โ”œโ”€โ”€ test_config_validation.py โ”‚ โ”œโ”€โ”€ test_integration.py โ”‚ โ”œโ”€โ”€ test_mcp_server.py -โ”‚ โ”œโ”€โ”€ test_unified.py # Unified scraping tests (18 tests) -โ”‚ โ”œโ”€โ”€ test_unified_mcp_integration.py # (4 tests) -โ”‚ โ””โ”€โ”€ ... +โ”‚ โ”œโ”€โ”€ test_mcp_fastmcp.py # FastMCP framework tests +โ”‚ โ”œโ”€โ”€ test_unified.py # Unified scraping tests +โ”‚ โ”œโ”€โ”€ test_install_multiplatform.py # Multi-platform tests +โ”‚ โ””โ”€โ”€ ... (40+ test files) โ”œโ”€โ”€ configs/ # Preset configurations (24 configs) โ”‚ โ”œโ”€โ”€ godot.json โ”‚ โ”œโ”€โ”€ react.json @@ -439,11 +471,57 @@ Skill_Seekers/ โ””โ”€โ”€ assets/ # Empty (user assets) ``` -**Key Changes in v2.0.0:** +**Key Changes in v2.5.0:** +- **Platform Adaptor Architecture**: Clean separation for Claude, Gemini, OpenAI, Markdown +- **Multi-platform CLI**: `--target` flag on package/upload/enhance commands +- **18 MCP Tools**: Extended from 9 to 18 tools with platform support - **src/ layout**: Modern Python packaging structure -- **pyproject.toml**: PEP 621 compliant configuration -- **Entry points**: `skill-seekers` CLI with subcommands -- **Published to PyPI**: `pip install skill-seekers` +- **pyproject.toml**: PEP 621 compliant with optional platform dependencies +- **Entry points**: `skill-seekers` CLI with Git-style subcommands +- **Published to PyPI**: `pip install skill-seekers` + platform extras + +### Platform Adaptor Architecture (NEW in v2.5.0) + +**Design Pattern:** Strategy pattern with factory method for platform-specific implementations + +**Key Components:** +- **BaseAdaptor** (`src/skill_seekers/cli/adaptors/base_adaptor.py`): Abstract base class defining interface + - `package(skill_dir, output_path)` - Package skill in platform-specific format + - `upload(package_path, api_key)` - Upload to platform API + - `enhance(skill_dir, mode)` - AI enhancement using platform-specific model + +- **Factory Function** (`src/skill_seekers/cli/adaptors/__init__.py`): + - `get_adaptor(target: str) -> BaseAdaptor` - Returns appropriate adaptor instance + - Validates target and returns ClaudeAdaptor, GeminiAdaptor, OpenAIAdaptor, or MarkdownAdaptor + +- **Platform-Specific Implementations:** + - **ClaudeAdaptor**: ZIP + YAML frontmatter, Anthropic Skills API, Sonnet 4 enhancement + - **GeminiAdaptor**: tar.gz, Google Files API + Grounding, Gemini 2.0 Flash enhancement + - **OpenAIAdaptor**: ZIP + Assistant instructions, Assistants API + Vector Store, GPT-4o enhancement + - **MarkdownAdaptor**: ZIP with pure markdown, manual upload, no enhancement + +**Usage Pattern:** +```python +from skill_seekers.cli.adaptors import get_adaptor + +# Get platform-specific adaptor +adaptor = get_adaptor('gemini') # or 'claude', 'openai', 'markdown' + +# Package skill in platform format +adaptor.package(skill_dir='output/react/', output_path='output/') + +# Upload to platform (if supported) +adaptor.upload(package_path='output/react-gemini.tar.gz', api_key=os.getenv('GOOGLE_API_KEY')) + +# AI enhancement with platform-specific model +adaptor.enhance(skill_dir='output/react/', mode='api') +``` + +**Benefits:** +- โœ… Single codebase supports 4 platforms +- โœ… Platform-specific optimizations (format, APIs, models) +- โœ… Easy to add new platforms (implement BaseAdaptor) +- โœ… Clean separation of concerns ### Data Flow @@ -457,20 +535,21 @@ Skill_Seekers/ - Process: Load pages โ†’ Smart categorize โ†’ Extract patterns โ†’ Generate references - Output: `output/{name}/SKILL.md` + `output/{name}/references/*.md` -3. **Enhancement Phase** (optional via enhance_skill.py or enhance_skill_local.py): +3. **Enhancement Phase** (optional, platform-aware via adaptors): - Input: Built skill directory with references - - Process: Claude analyzes references and rewrites SKILL.md + - Process: Platform-specific LLM analyzes references and rewrites SKILL.md - Output: Enhanced SKILL.md with real examples and guidance + - Models: Claude Sonnet 4, Gemini 2.0 Flash, or GPT-4o (depending on target) -4. **Package Phase** (via package_skill.py): - - Input: Skill directory - - Process: Zip all files (excluding .backup) - - Output: `{name}.zip` +4. **Package Phase** (platform-aware via adaptors): + - Input: Skill directory + target platform + - Process: Platform adaptor packages in appropriate format + - Output: `{name}.zip`, `{name}-gemini.tar.gz`, `{name}-openai.zip`, or `{name}-markdown.zip` -5. **Upload Phase** (optional via upload_skill.py): - - Input: Skill .zip file - - Process: Upload to Claude AI via API - - Output: Skill available in Claude +5. **Upload Phase** (optional, platform-aware via adaptors): + - Input: Platform-specific package + API key + - Process: Upload via platform API (Anthropic Skills, Google Files, OpenAI Assistants) + - Output: Skill available in target LLM platform ### Configuration File Structure @@ -926,27 +1005,106 @@ The correct command uses the local `cli/package_skill.py` in the repository root **Development Workflow:** 1. **Install**: `pip install -e .` (editable mode for development) + ```bash + # Install with all platform dependencies + pip install -e ".[all-llms]" + + # Or install specific platforms + pip install -e ".[gemini]" # Google Gemini support + pip install -e ".[openai]" # OpenAI ChatGPT support + ``` + 2. **Run tests**: - - All tests: `pytest tests/ -v` - - Specific test file: `pytest tests/test_scraper_features.py -v` - - With coverage: `pytest tests/ --cov=src/skill_seekers --cov-report=term --cov-report=html` - - Single test: `pytest tests/test_scraper_features.py::test_detect_language -v` -3. **Build package**: `uv build` or `python -m build` -4. **Publish**: `uv publish` (PyPI) -5. **Run single config test**: `skill-seekers scrape --config configs/react.json --dry-run` + ```bash + # All tests + pytest tests/ -v + + # Specific test file + pytest tests/test_scraper_features.py -v + + # Multi-platform tests + pytest tests/test_install_multiplatform.py -v + + # With coverage + pytest tests/ --cov=src/skill_seekers --cov-report=term --cov-report=html + + # Single test + pytest tests/test_scraper_features.py::test_detect_language -v + + # MCP server tests + pytest tests/test_mcp_fastmcp.py -v + ``` + +3. **Build package**: + ```bash + # Using uv (recommended) + uv build + + # Or using build + python -m build + ``` + +4. **Publish**: + ```bash + # To PyPI + uv publish + + # Or using twine + python -m twine upload dist/* + ``` + +5. **Test CLI commands**: + ```bash + # Test scraping (dry run) + skill-seekers scrape --config configs/react.json --dry-run + + # Test multi-platform packaging + skill-seekers package output/react/ --target gemini --dry-run + + # Test MCP server (stdio mode) + python -m skill_seekers.mcp.server + + # Test MCP server (HTTP mode) + python -m skill_seekers.mcp.server --transport http --port 8765 + ``` **Test Architecture:** -- **Test files**: 27 test files covering all features (see `tests/` directory) -- **CI Matrix**: Tests run on Ubuntu + macOS with Python 3.10, 3.11, 3.12 -- **Coverage**: 39% code coverage (427 tests passing) +- **Test files**: 40+ test files covering all features (see `tests/` directory) +- **CI Matrix**: Tests run on Ubuntu + macOS with Python 3.10, 3.11, 3.12, 3.13 +- **Coverage**: 700+ tests passing across all platforms - **Key test categories**: - `test_scraper_features.py` - Core scraping functionality - - `test_mcp_server.py` - MCP integration (9 tools) - - `test_unified.py` - Multi-source scraping (18 tests) + - `test_mcp_server.py` - MCP integration (18 tools) + - `test_mcp_fastmcp.py` - FastMCP framework and HTTP transport + - `test_unified.py` - Multi-source scraping - `test_github_scraper.py` - GitHub repository analysis - `test_pdf_scraper.py` - PDF extraction + - `test_install_multiplatform.py` - **NEW** Multi-platform packaging and upload - `test_integration.py` - End-to-end workflows + - `test_install_skill.py` - One-command install workflow + - `test_install_agent.py` - AI agent installation - **IMPORTANT**: Must run `pip install -e .` before tests (src/ layout requirement) +- **Platform Tests**: Each platform adaptor has dedicated test coverage + +**Environment Variables & API Keys:** +```bash +# Claude AI (default platform) +export ANTHROPIC_API_KEY=sk-ant-... + +# Google Gemini (optional) +export GOOGLE_API_KEY=AIza... + +# OpenAI ChatGPT (optional) +export OPENAI_API_KEY=sk-... + +# GitHub (for higher rate limits in repo scraping) +export GITHUB_TOKEN=ghp_... + +# Private config repositories (optional) +export GITLAB_TOKEN=glpat-... +export GITEA_TOKEN=... +export BITBUCKET_TOKEN=... +``` **Key Points:** - Output is cached and reusable in `output/` (git-ignored) @@ -954,3 +1112,4 @@ The correct command uses the local `cli/package_skill.py` in the repository root - All 24 configs are working and tested - CI workflow requires `pip install -e .` to install package before running tests - Never skip tests - all tests must pass before commits (per user instructions) +- Platform-specific dependencies are optional: use `pip install skill-seekers[gemini]` or `pip install skill-seekers[openai]` as needed diff --git a/pyproject.toml b/pyproject.toml index 2a5a818..a43bfdc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "skill-seekers" -version = "2.5.0" +version = "2.5.1" description = "Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills" readme = "README.md" requires-python = ">=3.10" diff --git a/src/skill_seekers/__init__.py b/src/skill_seekers/__init__.py index 752904b..122002f 100644 --- a/src/skill_seekers/__init__.py +++ b/src/skill_seekers/__init__.py @@ -5,7 +5,7 @@ This package provides tools for automatically scraping, organizing, and packagin documentation from various sources into uploadable Claude AI skills. """ -__version__ = "2.0.0" +__version__ = "2.5.1" __author__ = "Yusuf Karaaslan" __license__ = "MIT" diff --git a/src/skill_seekers/cli/__init__.py b/src/skill_seekers/cli/__init__.py index d782d5d..1f50e9b 100644 --- a/src/skill_seekers/cli/__init__.py +++ b/src/skill_seekers/cli/__init__.py @@ -28,7 +28,7 @@ except ImportError: open_folder = None read_reference_files = None -__version__ = "2.0.0" +__version__ = "2.5.1" __all__ = [ "LlmsTxtDetector", diff --git a/src/skill_seekers/cli/main.py b/src/skill_seekers/cli/main.py index 33f4a5e..ebc920d 100644 --- a/src/skill_seekers/cli/main.py +++ b/src/skill_seekers/cli/main.py @@ -62,7 +62,7 @@ For more information: https://github.com/yusufkaraaslan/Skill_Seekers parser.add_argument( "--version", action="version", - version="%(prog)s 2.4.0" + version="%(prog)s 2.5.1" ) subparsers = parser.add_subparsers( diff --git a/src/skill_seekers/mcp/__init__.py b/src/skill_seekers/mcp/__init__.py index b804a03..56387a0 100644 --- a/src/skill_seekers/mcp/__init__.py +++ b/src/skill_seekers/mcp/__init__.py @@ -28,6 +28,6 @@ Usage: in ~/.config/claude-code/mcp.json """ -__version__ = "2.4.0" +__version__ = "2.5.1" __all__ = ["agent_detector"] diff --git a/src/skill_seekers/mcp/tools/__init__.py b/src/skill_seekers/mcp/tools/__init__.py index 2abced9..c07a975 100644 --- a/src/skill_seekers/mcp/tools/__init__.py +++ b/src/skill_seekers/mcp/tools/__init__.py @@ -11,7 +11,7 @@ Tools are organized by functionality: - source_tools: Config source management (fetch, submit, add/remove sources) """ -__version__ = "2.4.0" +__version__ = "2.5.1" from .config_tools import ( generate_config as generate_config_impl, From 58d37c957d6d2d32b5d82e1ef6db46aa90f8799e Mon Sep 17 00:00:00 2001 From: yusyus Date: Tue, 30 Dec 2025 23:27:18 +0300 Subject: [PATCH 4/5] test: Update version assertions to 2.5.1 Fixed test_main_cli_version_output to expect 2.5.1 instead of 2.4.0. Related: v2.5.1 version bump --- tests/test_cli_paths.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cli_paths.py b/tests/test_cli_paths.py index 436ea0d..a136c05 100644 --- a/tests/test_cli_paths.py +++ b/tests/test_cli_paths.py @@ -126,7 +126,7 @@ class TestUnifiedCLIEntryPoints(unittest.TestCase): # Should show version output = result.stdout + result.stderr - self.assertIn('2.4.0', output) + self.assertIn('2.5.1', output) except FileNotFoundError: # If skill-seekers is not installed, skip this test From 3e36571b47069eb12f9342ee9d5742baa8c3d486 Mon Sep 17 00:00:00 2001 From: yusyus Date: Tue, 30 Dec 2025 23:30:36 +0300 Subject: [PATCH 5/5] test: Update all version assertions to 2.5.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed version assertions in test_package_structure.py: - test_cli_has_version: 2.0.0 โ†’ 2.5.1 - test_mcp_has_version: 2.4.0 โ†’ 2.5.1 - test_mcp_tools_has_version: 2.4.0 โ†’ 2.5.1 - test_root_has_version: 2.0.0 โ†’ 2.5.1 Related: v2.5.1 version bump --- tests/test_package_structure.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_package_structure.py b/tests/test_package_structure.py index 3e20881..0af6248 100644 --- a/tests/test_package_structure.py +++ b/tests/test_package_structure.py @@ -21,7 +21,7 @@ class TestCliPackage: """Test that skill_seekers.cli package has __version__.""" import skill_seekers.cli assert hasattr(skill_seekers.cli, '__version__') - assert skill_seekers.cli.__version__ == '2.0.0' + assert skill_seekers.cli.__version__ == '2.5.1' def test_cli_has_all(self): """Test that skill_seekers.cli package has __all__ export list.""" @@ -77,7 +77,7 @@ class TestMcpPackage: """Test that skill_seekers.mcp package has __version__.""" import skill_seekers.mcp assert hasattr(skill_seekers.mcp, '__version__') - assert skill_seekers.mcp.__version__ == '2.4.0' + assert skill_seekers.mcp.__version__ == '2.5.1' def test_mcp_has_all(self): """Test that skill_seekers.mcp package has __all__ export list.""" @@ -94,7 +94,7 @@ class TestMcpPackage: """Test that skill_seekers.mcp.tools has __version__.""" import skill_seekers.mcp.tools assert hasattr(skill_seekers.mcp.tools, '__version__') - assert skill_seekers.mcp.tools.__version__ == '2.4.0' + assert skill_seekers.mcp.tools.__version__ == '2.5.1' class TestPackageStructure: @@ -194,7 +194,7 @@ class TestRootPackage: """Test that skill_seekers root package has __version__.""" import skill_seekers assert hasattr(skill_seekers, '__version__') - assert skill_seekers.__version__ == '2.0.0' + assert skill_seekers.__version__ == '2.5.1' def test_root_has_metadata(self): """Test that skill_seekers root package has metadata."""