[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "skill-seekers" version = "2.5.2" description = "Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills" readme = "README.md" requires-python = ">=3.10" license = {text = "MIT"} authors = [ {name = "Yusuf Karaaslan"} ] keywords = [ "claude", "ai", "documentation", "scraping", "skills", "llm", "mcp", "automation" ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Markup :: Markdown", ] # Core dependencies dependencies = [ "requests>=2.32.5", "beautifulsoup4>=4.14.2", "PyGithub>=2.5.0", "GitPython>=3.1.40", "mcp>=1.25,<2", "httpx>=0.28.1", "httpx-sse>=0.4.3", "PyMuPDF>=1.24.14", "Pillow>=11.0.0", "pytesseract>=0.3.13", "pydantic>=2.12.3", "pydantic-settings>=2.11.0", "python-dotenv>=1.1.1", "jsonschema>=4.25.1", "click>=8.3.0", "Pygments>=2.19.2", "pathspec>=0.12.1", "networkx>=3.0", ] [project.optional-dependencies] # MCP server dependencies (included by default, but optional) mcp = [ "mcp>=1.25,<2", "httpx>=0.28.1", "httpx-sse>=0.4.3", "uvicorn>=0.38.0", "starlette>=0.48.0", "sse-starlette>=3.0.2", ] # LLM platform-specific dependencies # Google Gemini support gemini = [ "google-generativeai>=0.8.0", ] # OpenAI ChatGPT support openai = [ "openai>=1.0.0", ] # All LLM platforms combined all-llms = [ "google-generativeai>=0.8.0", "openai>=1.0.0", ] # All optional dependencies combined (dev dependencies now in [dependency-groups]) all = [ "mcp>=1.25,<2", "httpx>=0.28.1", "httpx-sse>=0.4.3", "uvicorn>=0.38.0", "starlette>=0.48.0", "sse-starlette>=3.0.2", "google-generativeai>=0.8.0", "openai>=1.0.0", ] [project.urls] Homepage = "https://github.com/yusufkaraaslan/Skill_Seekers" Repository = "https://github.com/yusufkaraaslan/Skill_Seekers" "Bug Tracker" = "https://github.com/yusufkaraaslan/Skill_Seekers/issues" Documentation = "https://github.com/yusufkaraaslan/Skill_Seekers#readme" [project.scripts] # Main unified CLI skill-seekers = "skill_seekers.cli.main:main" # Individual tool entry points skill-seekers-scrape = "skill_seekers.cli.doc_scraper:main" skill-seekers-github = "skill_seekers.cli.github_scraper:main" skill-seekers-pdf = "skill_seekers.cli.pdf_scraper:main" skill-seekers-unified = "skill_seekers.cli.unified_scraper:main" skill-seekers-enhance = "skill_seekers.cli.enhance_skill_local:main" skill-seekers-package = "skill_seekers.cli.package_skill:main" skill-seekers-upload = "skill_seekers.cli.upload_skill:main" skill-seekers-estimate = "skill_seekers.cli.estimate_pages:main" skill-seekers-install = "skill_seekers.cli.install_skill:main" skill-seekers-install-agent = "skill_seekers.cli.install_agent:main" skill-seekers-codebase = "skill_seekers.cli.codebase_scraper:main" skill-seekers-patterns = "skill_seekers.cli.pattern_recognizer:main" [tool.setuptools] package-dir = {"" = "src"} [tool.setuptools.packages.find] where = ["src"] include = ["skill_seekers*"] namespaces = false [tool.setuptools.package-data] skill_seekers = ["py.typed"] [tool.pytest.ini_options] testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = "-v --tb=short --strict-markers" markers = [ "asyncio: mark test as an async test", "slow: mark test as slow running", ] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" [tool.coverage.run] source = ["src/skill_seekers"] omit = ["*/tests/*", "*/__pycache__/*", "*/venv/*"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "@abstractmethod", ] [dependency-groups] dev = [ "pytest>=8.4.2", "pytest-asyncio>=0.24.0", "pytest-cov>=7.0.0", "coverage>=7.11.0", ]