feat(v2.3.0): Add multi-agent installation support
Add automatic skill installation to 10+ AI coding agents with a single command. New Features: - New install-agent command for installing skills to any AI agent - Support for 10+ agents: Claude Code, Cursor, VS Code, Amp, Goose, OpenCode, Letta, Aide, Windsurf - Smart path resolution (global ~/.agent vs project-relative .agent/) - Fuzzy agent name matching with suggestions - --agent all flag to install to all agents at once - --force flag to overwrite existing installations - --dry-run flag to preview installations - Comprehensive error handling and user feedback Implementation: - Created install_agent.py (379 lines) with core installation logic - Updated main.py with install-agent subcommand - Updated pyproject.toml with entry point - Added 32 comprehensive tests (all passing, 603 total) - No regressions in existing functionality Documentation: - Updated README.md with multi-agent installation guide - Updated CLAUDE.md with install-agent examples - Updated CHANGELOG.md with v2.3.0 release notes - Added agent compatibility table Technical Details: - 100% own implementation (no external dependencies) - Pure Python using stdlib (shutil, pathlib, argparse) - Compatible with Agent Skills open standard (agentskills.io) - Works offline Closes #210 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,20 +8,22 @@ Usage:
|
||||
skill-seekers <command> [options]
|
||||
|
||||
Commands:
|
||||
scrape Scrape documentation website
|
||||
github Scrape GitHub repository
|
||||
pdf Extract from PDF file
|
||||
unified Multi-source scraping (docs + GitHub + PDF)
|
||||
enhance AI-powered enhancement (local, no API key)
|
||||
package Package skill into .zip file
|
||||
upload Upload skill to Claude
|
||||
estimate Estimate page count before scraping
|
||||
scrape Scrape documentation website
|
||||
github Scrape GitHub repository
|
||||
pdf Extract from PDF file
|
||||
unified Multi-source scraping (docs + GitHub + PDF)
|
||||
enhance AI-powered enhancement (local, no API key)
|
||||
package Package skill into .zip file
|
||||
upload Upload skill to Claude
|
||||
estimate Estimate page count before scraping
|
||||
install-agent Install skill to AI agent directories
|
||||
|
||||
Examples:
|
||||
skill-seekers scrape --config configs/react.json
|
||||
skill-seekers github --repo microsoft/TypeScript
|
||||
skill-seekers unified --config configs/react_unified.json
|
||||
skill-seekers package output/react/
|
||||
skill-seekers install-agent output/react/ --agent cursor
|
||||
"""
|
||||
|
||||
import sys
|
||||
@@ -60,7 +62,7 @@ For more information: https://github.com/yusufkaraaslan/Skill_Seekers
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
action="version",
|
||||
version="%(prog)s 2.2.0"
|
||||
version="%(prog)s 2.3.0"
|
||||
)
|
||||
|
||||
subparsers = parser.add_subparsers(
|
||||
@@ -156,6 +158,32 @@ For more information: https://github.com/yusufkaraaslan/Skill_Seekers
|
||||
estimate_parser.add_argument("config", help="Config JSON file")
|
||||
estimate_parser.add_argument("--max-discovery", type=int, help="Max pages to discover")
|
||||
|
||||
# === install-agent subcommand ===
|
||||
install_agent_parser = subparsers.add_parser(
|
||||
"install-agent",
|
||||
help="Install skill to AI agent directories",
|
||||
description="Copy skill to agent-specific installation directories"
|
||||
)
|
||||
install_agent_parser.add_argument(
|
||||
"skill_directory",
|
||||
help="Skill directory path (e.g., output/react/)"
|
||||
)
|
||||
install_agent_parser.add_argument(
|
||||
"--agent",
|
||||
required=True,
|
||||
help="Agent name (claude, cursor, vscode, amp, goose, opencode, all)"
|
||||
)
|
||||
install_agent_parser.add_argument(
|
||||
"--force",
|
||||
action="store_true",
|
||||
help="Overwrite existing installation without asking"
|
||||
)
|
||||
install_agent_parser.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
help="Preview installation without making changes"
|
||||
)
|
||||
|
||||
# === install subcommand ===
|
||||
install_parser = subparsers.add_parser(
|
||||
"install",
|
||||
@@ -300,6 +328,15 @@ def main(argv: Optional[List[str]] = None) -> int:
|
||||
sys.argv.extend(["--max-discovery", str(args.max_discovery)])
|
||||
return estimate_main() or 0
|
||||
|
||||
elif args.command == "install-agent":
|
||||
from skill_seekers.cli.install_agent import main as install_agent_main
|
||||
sys.argv = ["install_agent.py", args.skill_directory, "--agent", args.agent]
|
||||
if args.force:
|
||||
sys.argv.append("--force")
|
||||
if args.dry_run:
|
||||
sys.argv.append("--dry-run")
|
||||
return install_agent_main() or 0
|
||||
|
||||
elif args.command == "install":
|
||||
from skill_seekers.cli.install_skill import main as install_main
|
||||
sys.argv = ["install_skill.py"]
|
||||
|
||||
Reference in New Issue
Block a user