feat: Merge PR #249 - Bootstrap skill with fixes and MCP optionality
Merged PR #249 from @MiaoDX with enhancements: Bootstrap Feature: - Self-bootstrap: Generate skill-seekers as Claude Code skill - Robust frontmatter detection (dynamic line finding) - SKILL.md validation (YAML + Markdown structure) - Comprehensive error handling (uv check, permission checks) - 6 E2E tests with venv isolation MCP Optionality (User Feature): - MCP removed from core dependencies - Optional install: pip install skill-seekers[mcp] - Lazy loading with helpful error messages - Interactive setup wizard on first run - Backward compatible Bug Fixes: - Fixed codebase_scraper.py AttributeError (line 1193) - Fixed test_bootstrap_skill_e2e.py Path vs str issue - Updated test version expectations to 2.7.0 - Added httpx to core (required for async scraping) - Added anthropic to core (required for AI enhancement) Testing: - 6 new bootstrap E2E tests (all passing) - 1207/1217 tests passing (99.2% pass rate) - All bootstrap and enhancement tests pass - Remaining failures are pre-existing test infrastructure issues Documentation: - Updated CHANGELOG.md with v2.7.0 notes - Updated README.md with bootstrap and installation options - Added setup wizard guide Files Modified (9): - CHANGELOG.md, README.md - Documentation updates - pyproject.toml - MCP optional, httpx/anthropic core, markers, entry points - scripts/bootstrap_skill.sh - Dynamic frontmatter, validation, error handling - src/skill_seekers/cli/install_skill.py - Lazy MCP loading - tests/test_cli_paths.py - Version 2.7.0 - uv.lock - Dependency updates New Files (2): - src/skill_seekers/cli/setup_wizard.py - Interactive installation guide (95 lines) - tests/test_bootstrap_skill_e2e.py - E2E bootstrap tests (169 lines) Credits: @MiaoDX for PR #249 Co-Authored-By: MiaoDX <MiaoDX@hotmail.com> Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,9 +43,8 @@ dependencies = [
|
||||
"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",
|
||||
"httpx>=0.28.1", # Required for async scraping (core feature)
|
||||
"anthropic>=0.76.0", # Required for AI enhancement (core feature)
|
||||
"PyMuPDF>=1.24.14",
|
||||
"Pillow>=11.0.0",
|
||||
"pytesseract>=0.3.13",
|
||||
@@ -60,7 +59,7 @@ dependencies = [
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
# MCP server dependencies (included by default, but optional)
|
||||
# MCP server dependencies (NOW TRULY OPTIONAL)
|
||||
mcp = [
|
||||
"mcp>=1.25,<2",
|
||||
"httpx>=0.28.1",
|
||||
@@ -126,6 +125,7 @@ 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"
|
||||
skill-seekers-how-to-guides = "skill_seekers.cli.how_to_guide_builder:main"
|
||||
skill-seekers-setup = "skill_seekers.cli.setup_wizard:main"
|
||||
|
||||
[tool.setuptools]
|
||||
package-dir = {"" = "src"}
|
||||
@@ -146,8 +146,11 @@ python_functions = ["test_*"]
|
||||
addopts = "-v --tb=short --strict-markers"
|
||||
markers = [
|
||||
"asyncio: mark test as an async test",
|
||||
"slow: mark test as slow running",
|
||||
"slow: mark test as slow running (>5 seconds)",
|
||||
"integration: mark test as integration test (requires external services)",
|
||||
"e2e: mark test as end-to-end (resource-intensive, may create files)",
|
||||
"venv: mark test as requiring virtual environment setup",
|
||||
"bootstrap: mark test as bootstrap feature specific",
|
||||
]
|
||||
asyncio_mode = "auto"
|
||||
asyncio_default_fixture_loop_scope = "function"
|
||||
|
||||
Reference in New Issue
Block a user