From d6f91029f64f941400dae6653c5ad40cfa38f3da Mon Sep 17 00:00:00 2001 From: yusyus Date: Sun, 18 Jan 2026 14:24:06 +0300 Subject: [PATCH 1/4] chore: Bump version to 2.8.0-dev Start development cycle for v2.8.0. Version updated in 5 locations: - pyproject.toml - src/skill_seekers/__init__.py - src/skill_seekers/cli/__init__.py - src/skill_seekers/mcp/__init__.py - src/skill_seekers/mcp/tools/__init__.py All version numbers synchronized to prevent Issue #248. [Unreleased] section in CHANGELOG.md ready for v2.8.0 changes. Co-Authored-By: Claude Sonnet 4.5 --- pyproject.toml | 2 +- src/skill_seekers/__init__.py | 2 +- src/skill_seekers/cli/__init__.py | 2 +- src/skill_seekers/mcp/__init__.py | 2 +- src/skill_seekers/mcp/tools/__init__.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5e447d8..822e219 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "skill-seekers" -version = "2.7.0" +version = "2.8.0-dev" 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 7f3645d..375f58c 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.7.0" +__version__ = "2.8.0-dev" __author__ = "Yusuf Karaaslan" __license__ = "MIT" diff --git a/src/skill_seekers/cli/__init__.py b/src/skill_seekers/cli/__init__.py index 1cd0088..97909a0 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.7.0" +__version__ = "2.8.0-dev" __all__ = [ "LlmsTxtDetector", diff --git a/src/skill_seekers/mcp/__init__.py b/src/skill_seekers/mcp/__init__.py index be8094f..b0a299d 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.7.0" +__version__ = "2.8.0-dev" __all__ = ["agent_detector"] diff --git a/src/skill_seekers/mcp/tools/__init__.py b/src/skill_seekers/mcp/tools/__init__.py index fa481a8..376b5a2 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.7.0" +__version__ = "2.8.0-dev" from .config_tools import ( generate_config as generate_config_impl, From b13a5c67af1f448fcbadd3193095f1ae8a837499 Mon Sep 17 00:00:00 2001 From: yusyus Date: Sun, 18 Jan 2026 14:49:45 +0300 Subject: [PATCH 2/4] docs: Add missing items to v2.7.0 CHANGELOG Added: - Git Submodules for Configuration Management - Config Discovery Enhancements (--all flag) --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f84a9c..3d3e978 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -193,6 +193,21 @@ This **minor feature release** introduces intelligent GitHub rate limit handling - **Test counts**: Standardized to 1200+ tests (was inconsistent 700+ in some docs) - **MCP tool counts**: Updated to 18 tools (from 17) +- **📦 Git Submodules for Configuration Management** - Improved config organization and API deployment + - **Configs as git submodule** at `api/configs_repo/` for cleaner repository + - **Production configs**: Added official production-ready configuration presets + - **Duplicate removal**: Cleaned up all duplicate configs from main repository + - **Test filtering**: Filtered out test-example configs from API endpoints + - **CI/CD integration**: GitHub Actions now initializes submodules automatically + - **API deployment**: Updated render.yaml to use git submodule for configs_repo + - **Benefits**: Cleaner main repo, better config versioning, production/test separation + +- **🔍 Config Discovery Enhancements** - Improved config listing + - **--all flag** for estimate command: `skill-seekers estimate --all` + - Lists all available preset configurations with descriptions + - Helps users discover supported frameworks before scraping + - Shows config names, frameworks, and documentation URLs + ### Changed - **GitHub Fetcher** - Integrated rate limit handler From e44977c8da690d4f45e729e35dd40a66b201a59f Mon Sep 17 00:00:00 2001 From: yusyus Date: Sun, 18 Jan 2026 21:38:27 +0300 Subject: [PATCH 3/4] docs: Add official website https://skillseekersweb.com/ to repository - Added website badge to README.md - Updated pyproject.toml URLs (Homepage, Documentation, Config Browser) - Added website links to CLAUDE.md - Website features: browse 24+ configs, share configs, complete documentation --- CLAUDE.md | 4 ++++ README.md | 3 +++ pyproject.toml | 6 ++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1e0a2fe..d3a1e83 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -9,6 +9,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co **Current Version:** v2.7.0 **Python Version:** 3.10+ required **Status:** Production-ready, published on PyPI +**Website:** https://skillseekersweb.com/ - Browse configs, share, and access documentation ## 🏗️ Architecture @@ -681,6 +682,9 @@ pytest tests/test_file.py --cov=src/skill_seekers --cov-report=term-missing ## 📖 Additional Documentation +**Official Website:** +- [SkillSeekersWeb.com](https://skillseekersweb.com/) - Browse 24+ preset configs, share configs, complete documentation + **For Users:** - [README.md](README.md) - Complete user documentation - [BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md) - Beginner guide diff --git a/README.md b/README.md index 167d1ac..1f76e6f 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,12 @@ [![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/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![Website](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) **Automatically convert documentation websites, GitHub repositories, and PDFs into Claude AI skills in minutes.** +> 🌐 **[Visit SkillSeekersWeb.com](https://skillseekersweb.com/)** - Browse 24+ preset configs, share your configs, and access complete documentation! + > 📋 **[View Development Roadmap & Tasks](https://github.com/users/yusufkaraaslan/projects/2)** - 134 tasks across 10 categories, pick any to contribute! ## What is Skill Seeker? diff --git a/pyproject.toml b/pyproject.toml index 822e219..bad50c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -99,10 +99,12 @@ all = [ ] [project.urls] -Homepage = "https://github.com/yusufkaraaslan/Skill_Seekers" +Homepage = "https://skillseekersweb.com/" +Website = "https://skillseekersweb.com/" Repository = "https://github.com/yusufkaraaslan/Skill_Seekers" "Bug Tracker" = "https://github.com/yusufkaraaslan/Skill_Seekers/issues" -Documentation = "https://github.com/yusufkaraaslan/Skill_Seekers#readme" +Documentation = "https://skillseekersweb.com/" +"Config Browser" = "https://skillseekersweb.com/" [project.scripts] # Main unified CLI From f1d97facbcb4a9fcbe602029ec7eaf49c285b59b Mon Sep 17 00:00:00 2001 From: yusyus Date: Sun, 18 Jan 2026 22:25:35 +0300 Subject: [PATCH 4/4] fix: Use download_url from API response instead of constructing URL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CRITICAL BUG FIX - Resolves 404 errors when fetching configs from API Root Cause: The code was constructing download URLs manually: download_url = f"{API_BASE_URL}/api/download/{config_name}.json" This fails because the API provides download_url in the response, which may differ from the constructed path (e.g., CDN URLs, version-specific paths). Solution: Changed both MCP server implementations to use download_url from API: download_url = config_info.get("download_url") Added validation check for missing download_url field. Files Modified: - src/skill_seekers/mcp/tools/source_tools.py (FastMCP server, line 285-297) - src/skill_seekers/mcp/server_legacy.py (Legacy server, line 1483-1494) Bug Report: User reported: skill-seekers install --config godot --unlimited - API check: /api/configs/godot → 200 OK ✅ - Download: /api/download/godot.json → 404 Not Found ❌ After Fix: - Uses download_url from API response → Works correctly ✅ Testing: ✅ All 15 source tools tests pass (test_mcp_fastmcp.py::TestSourceTools) ✅ All 8 fetch_config tests pass ✅ test_fetch_config_download_api: PASSED ✅ test_fetch_config_from_source: PASSED Impact: - Fixes config downloads from official API (skillseekersweb.com) - Fixes config downloads from private Git repositories - Prevents all future 404 errors from URL construction mismatch - No breaking changes - fully backward compatible Related Issue: Bug reported by user when testing Godot skill Co-Authored-By: Claude Sonnet 4.5 --- src/skill_seekers/mcp/server_legacy.py | 12 ++++++++++-- src/skill_seekers/mcp/tools/source_tools.py | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/skill_seekers/mcp/server_legacy.py b/src/skill_seekers/mcp/server_legacy.py index 93b05d1..c63dd40 100644 --- a/src/skill_seekers/mcp/server_legacy.py +++ b/src/skill_seekers/mcp/server_legacy.py @@ -1479,8 +1479,16 @@ Next steps: detail_response.raise_for_status() config_info = detail_response.json() - # Download the actual config file - download_url = f"{API_BASE_URL}/api/download/{config_name}.json" + # Download the actual config file using the download_url from API response + download_url = config_info.get("download_url") + if not download_url: + return [ + TextContent( + type="text", + text=f"❌ Config '{config_name}' has no download_url. Contact support.", + ) + ] + download_response = await client.get(download_url) download_response.raise_for_status() config_data = download_response.json() diff --git a/src/skill_seekers/mcp/tools/source_tools.py b/src/skill_seekers/mcp/tools/source_tools.py index 2aecf82..9ba3457 100644 --- a/src/skill_seekers/mcp/tools/source_tools.py +++ b/src/skill_seekers/mcp/tools/source_tools.py @@ -282,8 +282,16 @@ Next steps: detail_response.raise_for_status() config_info = detail_response.json() - # Download the actual config file - download_url = f"{API_BASE_URL}/api/download/{config_name}.json" + # Download the actual config file using the download_url from API response + download_url = config_info.get("download_url") + if not download_url: + return [ + TextContent( + type="text", + text=f"❌ Config '{config_name}' has no download_url. Contact support.", + ) + ] + download_response = await client.get(download_url) download_response.raise_for_status() config_data = download_response.json()