Files
skill-seekers-reference/src/skill_seekers/cli/package_multi.py
Pablo Estevez 5ed767ff9a run ruff
2026-01-17 17:29:21 +00:00

78 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""
Multi-Skill Packager
Package multiple skills at once. Useful for packaging router + sub-skills together.
"""
import argparse
import subprocess
import sys
from pathlib import Path
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("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(" ✅ Success")
else:
print(" ❌ Failed")
print("")
print(f"{'=' * 60}")
print(f"SUMMARY: {success_count}/{total_count} skills packaged")
print(f"{'=' * 60}\n")
if __name__ == "__main__":
main()