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.
|
Single tool to scrape any documentation and create high-quality Claude skills.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/doc_scraper.py --interactive
|
skill-seekers scrape --interactive
|
||||||
python3 cli/doc_scraper.py --config configs/godot.json
|
skill-seekers scrape --config configs/godot.json
|
||||||
python3 cli/doc_scraper.py --url https://react.dev/ --name react
|
skill-seekers scrape --url https://react.dev/ --name react
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
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")
|
logger.warning("\n⚠ Enhancement failed, but skill was still built")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
logger.warning("\n⚠ enhance_skill.py not found. Run manually:")
|
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)
|
# Optional enhancement with Claude Code (local, no API key)
|
||||||
if args.enhance_local:
|
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")
|
logger.warning("\n⚠ Enhancement failed, but skill was still built")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
logger.warning("\n⚠ enhance_skill_local.py not found. Run manually:")
|
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
|
# Print packaging instructions
|
||||||
logger.info("\n📦 Package your skill:")
|
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
|
# Suggest enhancement if not done
|
||||||
if not args.enhance and not args.enhance_local:
|
if not args.enhance and not args.enhance_local:
|
||||||
logger.info("\n💡 Optional: Enhance SKILL.md with Claude:")
|
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(" 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")
|
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.
|
Uses Claude API to improve SKILL.md by analyzing reference documentation.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/enhance_skill.py output/steam-inventory/
|
skill-seekers enhance output/steam-inventory/
|
||||||
python3 cli/enhance_skill.py output/react/
|
skill-seekers enhance output/react/
|
||||||
python3 cli/enhance_skill.py output/godot/ --api-key YOUR_API_KEY
|
skill-seekers enhance output/godot/ --api-key YOUR_API_KEY
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
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" 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" 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" 3. Package your skill:")
|
||||||
print(f" python3 cli/package_skill.py {self.skill_dir}/")
|
print(f" skill-seekers package {self.skill_dir}/")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -201,13 +201,13 @@ def main():
|
|||||||
Examples:
|
Examples:
|
||||||
# Using ANTHROPIC_API_KEY environment variable
|
# Using ANTHROPIC_API_KEY environment variable
|
||||||
export ANTHROPIC_API_KEY=sk-ant-...
|
export ANTHROPIC_API_KEY=sk-ant-...
|
||||||
python3 cli/enhance_skill.py output/steam-inventory/
|
skill-seekers enhance output/steam-inventory/
|
||||||
|
|
||||||
# Providing API key directly
|
# 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)
|
# 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(f" - {rf.name} ({size:,} bytes)")
|
||||||
|
|
||||||
print("\nTo actually run enhancement:")
|
print("\nTo actually run enhancement:")
|
||||||
print(f" python3 cli/enhance_skill.py {skill_dir}")
|
print(f" skill-seekers enhance {skill_dir}")
|
||||||
return
|
return
|
||||||
|
|
||||||
# Create enhancer and run
|
# Create enhancer and run
|
||||||
@@ -260,7 +260,7 @@ Examples:
|
|||||||
print("\nSet your API key:")
|
print("\nSet your API key:")
|
||||||
print(" export ANTHROPIC_API_KEY=sk-ant-...")
|
print(" export ANTHROPIC_API_KEY=sk-ant-...")
|
||||||
print("Or provide it directly:")
|
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)
|
sys.exit(1)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"❌ Unexpected error: {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!
|
No API key needed - uses your existing Claude Code Max plan!
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/enhance_skill_local.py output/steam-inventory/
|
skill-seekers enhance output/steam-inventory/
|
||||||
python3 cli/enhance_skill_local.py output/react/
|
skill-seekers enhance output/react/
|
||||||
|
|
||||||
Terminal Selection:
|
Terminal Selection:
|
||||||
The script automatically detects which terminal app to use:
|
The script automatically detects which terminal app to use:
|
||||||
@@ -277,18 +277,18 @@ rm {prompt_file}
|
|||||||
print("💡 When done:")
|
print("💡 When done:")
|
||||||
print(f" 1. Check the enhanced SKILL.md: {self.skill_md_path}")
|
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" 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
|
return True
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2:
|
||||||
print("Usage: python3 cli/enhance_skill_local.py <skill_directory>")
|
print("Usage: skill-seekers enhance <skill_directory>")
|
||||||
print()
|
print()
|
||||||
print("Examples:")
|
print("Examples:")
|
||||||
print(" python3 cli/enhance_skill_local.py output/steam-inventory/")
|
print(" skill-seekers enhance output/steam-inventory/")
|
||||||
print(" python3 cli/enhance_skill_local.py output/react/")
|
print(" skill-seekers enhance output/react/")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
skill_dir = sys.argv[1]
|
skill_dir = sys.argv[1]
|
||||||
|
|||||||
@@ -240,13 +240,13 @@ def main():
|
|||||||
epilog="""
|
epilog="""
|
||||||
Examples:
|
Examples:
|
||||||
# Estimate pages for a config
|
# Estimate pages for a config
|
||||||
python3 cli/estimate_pages.py configs/react.json
|
skill-seekers estimate configs/react.json
|
||||||
|
|
||||||
# Estimate with higher discovery limit
|
# 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)
|
# 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"{'='*60}")
|
||||||
print(f"1. Review router SKILL.md: {skill_path}")
|
print(f"1. Review router SKILL.md: {skill_path}")
|
||||||
print(f"2. Optionally scrape router (for overview pages):")
|
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("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("4. Upload router + all sub-skills to Claude")
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
|||||||
@@ -9,9 +9,9 @@ Converts GitHub repositories into Claude AI skills by extracting:
|
|||||||
- Usage examples from tests
|
- Usage examples from tests
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/github_scraper.py --repo facebook/react
|
skill-seekers github --repo facebook/react
|
||||||
python3 cli/github_scraper.py --config configs/react_github.json
|
skill-seekers github --config configs/react_github.json
|
||||||
python3 cli/github_scraper.py --repo owner/repo --token $GITHUB_TOKEN
|
skill-seekers github --repo owner/repo --token $GITHUB_TOKEN
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -735,9 +735,9 @@ def main():
|
|||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
epilog="""
|
epilog="""
|
||||||
Examples:
|
Examples:
|
||||||
python3 cli/github_scraper.py --repo facebook/react
|
skill-seekers github --repo facebook/react
|
||||||
python3 cli/github_scraper.py --config configs/react_github.json
|
skill-seekers github --config configs/react_github.json
|
||||||
python3 cli/github_scraper.py --repo owner/repo --token $GITHUB_TOKEN
|
skill-seekers github --repo owner/repo --token $GITHUB_TOKEN
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -786,7 +786,7 @@ Examples:
|
|||||||
converter.build_skill()
|
converter.build_skill()
|
||||||
|
|
||||||
logger.info(f"\n✅ Success! Skill created at: output/{config.get('name', config['repo'].split('/')[-1])}/")
|
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:
|
except Exception as e:
|
||||||
logger.error(f"Error: {e}")
|
logger.error(f"Error: {e}")
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ Simple Skill Packager
|
|||||||
Packages a skill directory into a .zip file for Claude.
|
Packages a skill directory into a .zip file for Claude.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/package_skill.py output/steam-inventory/
|
skill-seekers package output/steam-inventory/
|
||||||
python3 cli/package_skill.py output/react/
|
skill-seekers package output/react/
|
||||||
python3 cli/package_skill.py output/react/ --no-open # Don't open folder
|
skill-seekers package output/react/ --no-open # Don't open folder
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -96,13 +96,13 @@ def main():
|
|||||||
epilog="""
|
epilog="""
|
||||||
Examples:
|
Examples:
|
||||||
# Package skill and open folder
|
# Package skill and open folder
|
||||||
python3 cli/package_skill.py output/react/
|
skill-seekers package output/react/
|
||||||
|
|
||||||
# Package skill without opening folder
|
# Package skill without opening folder
|
||||||
python3 cli/package_skill.py output/react/ --no-open
|
skill-seekers package output/react/ --no-open
|
||||||
|
|
||||||
# Get help
|
# Get help
|
||||||
python3 cli/package_skill.py --help
|
skill-seekers package --help
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ class PDFToSkillConverter:
|
|||||||
self._generate_skill_md(categorized)
|
self._generate_skill_md(categorized)
|
||||||
|
|
||||||
print(f"\n✅ Skill built successfully: {self.skill_dir}/")
|
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):
|
def _generate_reference_file(self, cat_key, cat_data):
|
||||||
"""Generate a reference markdown file for a category"""
|
"""Generate a reference markdown file for a category"""
|
||||||
|
|||||||
@@ -310,9 +310,9 @@ Split Strategies:
|
|||||||
print("1. Review generated configs")
|
print("1. Review generated configs")
|
||||||
print("2. Scrape each config:")
|
print("2. Scrape each config:")
|
||||||
for filepath in saved_files:
|
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("3. Package skills:")
|
||||||
print(" python3 cli/package_multi.py configs/<name>-*.json")
|
print(" skill-seekers-package-multi configs/<name>-*.json")
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ detects conflicts, merges intelligently, and builds unified skills.
|
|||||||
This is the main entry point for unified config workflow.
|
This is the main entry point for unified config workflow.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
python3 cli/unified_scraper.py --config configs/godot_unified.json
|
skill-seekers unified --config configs/godot_unified.json
|
||||||
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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@@ -422,13 +422,13 @@ def main():
|
|||||||
epilog="""
|
epilog="""
|
||||||
Examples:
|
Examples:
|
||||||
# Basic usage with unified config
|
# 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
|
# 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
|
# 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