refactor: Update CLI commands to use new unified entry points
Updated all command examples in CLI scripts from old pattern: python3 cli/<script>.py → skill-seekers <command> Changes: - doc_scraper.py → skill-seekers scrape - github_scraper.py → skill-seekers github - pdf_scraper.py → skill-seekers pdf - unified_scraper.py → skill-seekers unified - enhance_skill.py → skill-seekers enhance - enhance_skill_local.py → skill-seekers enhance - package_skill.py → skill-seekers package - estimate_pages.py → skill-seekers estimate This reflects the new modern Python packaging with proper entry points. Users can now use clean commands instead of file paths. Files updated: 10 CLI scripts 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -4,9 +4,9 @@ Documentation to Claude Skill Converter
|
||||
Single tool to scrape any documentation and create high-quality Claude skills.
|
||||
|
||||
Usage:
|
||||
python3 cli/doc_scraper.py --interactive
|
||||
python3 cli/doc_scraper.py --config configs/godot.json
|
||||
python3 cli/doc_scraper.py --url https://react.dev/ --name react
|
||||
skill-seekers scrape --interactive
|
||||
skill-seekers scrape --config configs/godot.json
|
||||
skill-seekers scrape --url https://react.dev/ --name react
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -1735,7 +1735,7 @@ def execute_enhancement(config: Dict[str, Any], args: argparse.Namespace) -> Non
|
||||
logger.warning("\n⚠ Enhancement failed, but skill was still built")
|
||||
except FileNotFoundError:
|
||||
logger.warning("\n⚠ enhance_skill.py not found. Run manually:")
|
||||
logger.info(" python3 cli/enhance_skill.py output/%s/", config['name'])
|
||||
logger.info(" skill-seekers-enhance output/%s/", config['name'])
|
||||
|
||||
# Optional enhancement with Claude Code (local, no API key)
|
||||
if args.enhance_local:
|
||||
@@ -1750,18 +1750,18 @@ def execute_enhancement(config: Dict[str, Any], args: argparse.Namespace) -> Non
|
||||
logger.warning("\n⚠ Enhancement failed, but skill was still built")
|
||||
except FileNotFoundError:
|
||||
logger.warning("\n⚠ enhance_skill_local.py not found. Run manually:")
|
||||
logger.info(" python3 cli/enhance_skill_local.py output/%s/", config['name'])
|
||||
logger.info(" skill-seekers-enhance output/%s/", config['name'])
|
||||
|
||||
# Print packaging instructions
|
||||
logger.info("\n📦 Package your skill:")
|
||||
logger.info(" python3 cli/package_skill.py output/%s/", config['name'])
|
||||
logger.info(" skill-seekers-package output/%s/", config['name'])
|
||||
|
||||
# Suggest enhancement if not done
|
||||
if not args.enhance and not args.enhance_local:
|
||||
logger.info("\n💡 Optional: Enhance SKILL.md with Claude:")
|
||||
logger.info(" API-based: python3 cli/enhance_skill.py output/%s/", config['name'])
|
||||
logger.info(" API-based: skill-seekers-enhance output/%s/", config['name'])
|
||||
logger.info(" or re-run with: --enhance")
|
||||
logger.info(" Local (no API key): python3 cli/enhance_skill_local.py output/%s/", config['name'])
|
||||
logger.info(" Local (no API key): skill-seekers-enhance output/%s/", config['name'])
|
||||
logger.info(" or re-run with: --enhance-local")
|
||||
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@ SKILL.md Enhancement Script
|
||||
Uses Claude API to improve SKILL.md by analyzing reference documentation.
|
||||
|
||||
Usage:
|
||||
python3 cli/enhance_skill.py output/steam-inventory/
|
||||
python3 cli/enhance_skill.py output/react/
|
||||
python3 cli/enhance_skill.py output/godot/ --api-key YOUR_API_KEY
|
||||
skill-seekers enhance output/steam-inventory/
|
||||
skill-seekers enhance output/react/
|
||||
skill-seekers enhance output/godot/ --api-key YOUR_API_KEY
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -188,7 +188,7 @@ Return ONLY the complete SKILL.md content, starting with the frontmatter (---).
|
||||
print(f" 1. Review: {self.skill_md_path}")
|
||||
print(f" 2. If you don't like it, restore backup: {self.skill_md_path.with_suffix('.md.backup')}")
|
||||
print(f" 3. Package your skill:")
|
||||
print(f" python3 cli/package_skill.py {self.skill_dir}/")
|
||||
print(f" skill-seekers package {self.skill_dir}/")
|
||||
|
||||
return True
|
||||
|
||||
@@ -201,13 +201,13 @@ def main():
|
||||
Examples:
|
||||
# Using ANTHROPIC_API_KEY environment variable
|
||||
export ANTHROPIC_API_KEY=sk-ant-...
|
||||
python3 cli/enhance_skill.py output/steam-inventory/
|
||||
skill-seekers enhance output/steam-inventory/
|
||||
|
||||
# Providing API key directly
|
||||
python3 cli/enhance_skill.py output/react/ --api-key sk-ant-...
|
||||
skill-seekers enhance output/react/ --api-key sk-ant-...
|
||||
|
||||
# Show what would be done (dry run)
|
||||
python3 cli/enhance_skill.py output/godot/ --dry-run
|
||||
skill-seekers enhance output/godot/ --dry-run
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -246,7 +246,7 @@ Examples:
|
||||
print(f" - {rf.name} ({size:,} bytes)")
|
||||
|
||||
print("\nTo actually run enhancement:")
|
||||
print(f" python3 cli/enhance_skill.py {skill_dir}")
|
||||
print(f" skill-seekers enhance {skill_dir}")
|
||||
return
|
||||
|
||||
# Create enhancer and run
|
||||
@@ -260,7 +260,7 @@ Examples:
|
||||
print("\nSet your API key:")
|
||||
print(" export ANTHROPIC_API_KEY=sk-ant-...")
|
||||
print("Or provide it directly:")
|
||||
print(f" python3 cli/enhance_skill.py {skill_dir} --api-key sk-ant-...")
|
||||
print(f" skill-seekers enhance {skill_dir} --api-key sk-ant-...")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"❌ Unexpected error: {e}")
|
||||
|
||||
@@ -5,8 +5,8 @@ Opens a new terminal with Claude Code to enhance SKILL.md, then reports back.
|
||||
No API key needed - uses your existing Claude Code Max plan!
|
||||
|
||||
Usage:
|
||||
python3 cli/enhance_skill_local.py output/steam-inventory/
|
||||
python3 cli/enhance_skill_local.py output/react/
|
||||
skill-seekers enhance output/steam-inventory/
|
||||
skill-seekers enhance output/react/
|
||||
|
||||
Terminal Selection:
|
||||
The script automatically detects which terminal app to use:
|
||||
@@ -277,18 +277,18 @@ rm {prompt_file}
|
||||
print("💡 When done:")
|
||||
print(f" 1. Check the enhanced SKILL.md: {self.skill_md_path}")
|
||||
print(f" 2. If you don't like it, restore: mv {self.skill_md_path.with_suffix('.md.backup')} {self.skill_md_path}")
|
||||
print(f" 3. Package: python3 cli/package_skill.py {self.skill_dir}/")
|
||||
print(f" 3. Package: skill-seekers package {self.skill_dir}/")
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print("Usage: python3 cli/enhance_skill_local.py <skill_directory>")
|
||||
print("Usage: skill-seekers enhance <skill_directory>")
|
||||
print()
|
||||
print("Examples:")
|
||||
print(" python3 cli/enhance_skill_local.py output/steam-inventory/")
|
||||
print(" python3 cli/enhance_skill_local.py output/react/")
|
||||
print(" skill-seekers enhance output/steam-inventory/")
|
||||
print(" skill-seekers enhance output/react/")
|
||||
sys.exit(1)
|
||||
|
||||
skill_dir = sys.argv[1]
|
||||
|
||||
@@ -240,13 +240,13 @@ def main():
|
||||
epilog="""
|
||||
Examples:
|
||||
# Estimate pages for a config
|
||||
python3 cli/estimate_pages.py configs/react.json
|
||||
skill-seekers estimate configs/react.json
|
||||
|
||||
# Estimate with higher discovery limit
|
||||
python3 cli/estimate_pages.py configs/godot.json --max-discovery 2000
|
||||
skill-seekers estimate configs/godot.json --max-discovery 2000
|
||||
|
||||
# Quick estimate (stop at 100 pages)
|
||||
python3 cli/estimate_pages.py configs/vue.json --max-discovery 100
|
||||
skill-seekers estimate configs/vue.json --max-discovery 100
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
@@ -263,9 +263,9 @@ Examples:
|
||||
print(f"{'='*60}")
|
||||
print(f"1. Review router SKILL.md: {skill_path}")
|
||||
print(f"2. Optionally scrape router (for overview pages):")
|
||||
print(f" python3 cli/doc_scraper.py --config {config_path}")
|
||||
print(f" skill-seekers scrape --config {config_path}")
|
||||
print("3. Package router skill:")
|
||||
print(f" python3 cli/package_skill.py output/{generator.router_name}/")
|
||||
print(f" skill-seekers package output/{generator.router_name}/")
|
||||
print("4. Upload router + all sub-skills to Claude")
|
||||
print("")
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ Converts GitHub repositories into Claude AI skills by extracting:
|
||||
- Usage examples from tests
|
||||
|
||||
Usage:
|
||||
python3 cli/github_scraper.py --repo facebook/react
|
||||
python3 cli/github_scraper.py --config configs/react_github.json
|
||||
python3 cli/github_scraper.py --repo owner/repo --token $GITHUB_TOKEN
|
||||
skill-seekers github --repo facebook/react
|
||||
skill-seekers github --config configs/react_github.json
|
||||
skill-seekers github --repo owner/repo --token $GITHUB_TOKEN
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -735,9 +735,9 @@ def main():
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
Examples:
|
||||
python3 cli/github_scraper.py --repo facebook/react
|
||||
python3 cli/github_scraper.py --config configs/react_github.json
|
||||
python3 cli/github_scraper.py --repo owner/repo --token $GITHUB_TOKEN
|
||||
skill-seekers github --repo facebook/react
|
||||
skill-seekers github --config configs/react_github.json
|
||||
skill-seekers github --repo owner/repo --token $GITHUB_TOKEN
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -786,7 +786,7 @@ Examples:
|
||||
converter.build_skill()
|
||||
|
||||
logger.info(f"\n✅ Success! Skill created at: output/{config.get('name', config['repo'].split('/')[-1])}/")
|
||||
logger.info(f"Next step: python3 cli/package_skill.py output/{config.get('name', config['repo'].split('/')[-1])}/")
|
||||
logger.info(f"Next step: skill-seekers-package output/{config.get('name', config['repo'].split('/')[-1])}/")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {e}")
|
||||
|
||||
@@ -4,9 +4,9 @@ Simple Skill Packager
|
||||
Packages a skill directory into a .zip file for Claude.
|
||||
|
||||
Usage:
|
||||
python3 cli/package_skill.py output/steam-inventory/
|
||||
python3 cli/package_skill.py output/react/
|
||||
python3 cli/package_skill.py output/react/ --no-open # Don't open folder
|
||||
skill-seekers package output/steam-inventory/
|
||||
skill-seekers package output/react/
|
||||
skill-seekers package output/react/ --no-open # Don't open folder
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -96,13 +96,13 @@ def main():
|
||||
epilog="""
|
||||
Examples:
|
||||
# Package skill and open folder
|
||||
python3 cli/package_skill.py output/react/
|
||||
skill-seekers package output/react/
|
||||
|
||||
# Package skill without opening folder
|
||||
python3 cli/package_skill.py output/react/ --no-open
|
||||
skill-seekers package output/react/ --no-open
|
||||
|
||||
# Get help
|
||||
python3 cli/package_skill.py --help
|
||||
skill-seekers package --help
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ class PDFToSkillConverter:
|
||||
self._generate_skill_md(categorized)
|
||||
|
||||
print(f"\n✅ Skill built successfully: {self.skill_dir}/")
|
||||
print(f"\n📦 Next step: Package with: python3 cli/package_skill.py {self.skill_dir}/")
|
||||
print(f"\n📦 Next step: Package with: skill-seekers package {self.skill_dir}/")
|
||||
|
||||
def _generate_reference_file(self, cat_key, cat_data):
|
||||
"""Generate a reference markdown file for a category"""
|
||||
|
||||
@@ -310,9 +310,9 @@ Split Strategies:
|
||||
print("1. Review generated configs")
|
||||
print("2. Scrape each config:")
|
||||
for filepath in saved_files:
|
||||
print(f" python3 cli/doc_scraper.py --config {filepath}")
|
||||
print(f" skill-seekers scrape --config {filepath}")
|
||||
print("3. Package skills:")
|
||||
print(" python3 cli/package_multi.py configs/<name>-*.json")
|
||||
print(" skill-seekers-package-multi configs/<name>-*.json")
|
||||
print("")
|
||||
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ detects conflicts, merges intelligently, and builds unified skills.
|
||||
This is the main entry point for unified config workflow.
|
||||
|
||||
Usage:
|
||||
python3 cli/unified_scraper.py --config configs/godot_unified.json
|
||||
python3 cli/unified_scraper.py --config configs/react_unified.json --merge-mode claude-enhanced
|
||||
skill-seekers unified --config configs/godot_unified.json
|
||||
skill-seekers unified --config configs/react_unified.json --merge-mode claude-enhanced
|
||||
"""
|
||||
|
||||
import os
|
||||
@@ -422,13 +422,13 @@ def main():
|
||||
epilog="""
|
||||
Examples:
|
||||
# Basic usage with unified config
|
||||
python3 cli/unified_scraper.py --config configs/godot_unified.json
|
||||
skill-seekers unified --config configs/godot_unified.json
|
||||
|
||||
# Override merge mode
|
||||
python3 cli/unified_scraper.py --config configs/react_unified.json --merge-mode claude-enhanced
|
||||
skill-seekers unified --config configs/react_unified.json --merge-mode claude-enhanced
|
||||
|
||||
# Backward compatible with legacy configs
|
||||
python3 cli/unified_scraper.py --config configs/react.json
|
||||
skill-seekers unified --config configs/react.json
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user