Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Multi-Skill Packager | |
| Package multiple skills at once. Useful for packaging router + sub-skills together. | |
| """ | |
| import sys | |
| import argparse | |
| from pathlib import Path | |
| import subprocess | |
| def package_skill(skill_dir: Path) -> bool: | |
| """Package a single skill""" | |
| try: | |
| result = subprocess.run( | |
| [sys.executable, str(Path(__file__).parent / "package_skill.py"), str(skill_dir)], | |
| capture_output=True, | |
| text=True | |
| ) | |
| return result.returncode == 0 | |
| except Exception as e: | |
| print(f"❌ Error packaging {skill_dir}: {e}") | |
| return False | |
| def main(): | |
| parser = argparse.ArgumentParser( | |
| description="Package multiple skills at once", | |
| formatter_class=argparse.RawDescriptionHelpFormatter, | |
| epilog=""" | |
| Examples: | |
| # Package all godot skills | |
| python3 package_multi.py output/godot*/ | |
| # Package specific skills | |
| python3 package_multi.py output/godot-2d/ output/godot-3d/ output/godot-scripting/ | |
| """ | |
| ) | |
| parser.add_argument( | |
| 'skill_dirs', | |
| nargs='+', | |
| help='Skill directories to package' | |
| ) | |
| args = parser.parse_args() | |
| print(f"\n{'='*60}") | |
| print(f"MULTI-SKILL PACKAGER") | |
| print(f"{'='*60}\n") | |
| skill_dirs = [Path(d) for d in args.skill_dirs] | |
| success_count = 0 | |
| total_count = len(skill_dirs) | |
| for skill_dir in skill_dirs: | |
| if not skill_dir.exists(): | |
| print(f"⚠️ Skipping (not found): {skill_dir}") | |
| continue | |
| if not (skill_dir / "SKILL.md").exists(): | |
| print(f"⚠️ Skipping (no SKILL.md): {skill_dir}") | |
| continue | |
| print(f"📦 Packaging: {skill_dir.name}") | |
| if package_skill(skill_dir): | |
| success_count += 1 | |
| print(f" ✅ Success") | |
| else: | |
| print(f" ❌ Failed") | |
| print("") | |
| print(f"{'='*60}") | |
| print(f"SUMMARY: {success_count}/{total_count} skills packaged") | |
| print(f"{'='*60}\n") | |
| if __name__ == "__main__": | |
| main() | |