fix: install scripts — use marketplace CLI for Claude/Codex, plugin for Kilo Code#241
Open
nicklin11 wants to merge 4 commits into
Open
fix: install scripts — use marketplace CLI for Claude/Codex, plugin for Kilo Code#241nicklin11 wants to merge 4 commits into
nicklin11 wants to merge 4 commits into
Conversation
…ll 14 AI agents Two new scripts for one-command ponytail installation across every AI agent on the machine, with auto-detection of installed agentic harnesses. install.sh (573 lines): - curl-pipe compatible: curl -fsSL https://raw.githubusercontent.com/... - Flags: --all, --agent <name>, --list, --uninstall, --repo <path>, --yes - Auto-detects agents via 8 methods: binary PATH, config dirs, npm global packages, VS Code extensions, gh extensions, cargo packages, macOS .app bundles, and common install paths - Creates symlinks from agent config dirs to ~/.config/ponytail/ - Installs Claude Code lifecycle hooks (session activation + mode tracking) install.js (681 lines): - Node.js version with --dry-run, --yes, colour output - node install.js --list for status overview - Same detection logic, cross-platform compatible 14 supported agents: claude, codex, copilot, opencode, cursor, windsurf, cline, kiro, openclaw, gemini, pi, antigravity, kilocode, codewhale README.md: add System-wide (auto-detect) section to Install, update Development notes. Co-Authored-By: Claude <noreply@anthropic.com>
- Claude Code and Codex don't scan ~/.claude/plugins/ for directories - They require marketplace mechanism: plugin marketplace add + plugin install - Kilo Code (fork of OpenCode) needs plugin entry in kilo.json, not a rules symlink - install.sh/install.js now use correct mechanisms per agent type: - Claude Code: claude plugin marketplace add + claude plugin install - Codex: codex plugin marketplace add + codex plugin add - Kilo Code: symlink ponytail.mjs + plugin entry in kilo.json - All others: symlink approach (unchanged) - Remove legacy hooks from settings.json (plugin manages its own hooks) - Fix detect_kilo to find /usr/bin/kilo and ~/.config/kilo/kilo.json - Fix sync_files to copy .claude-plugin, .codex-plugin, pi-extension - Fix --list to check plugin status via CLI for Claude/Codex/Kilo - Fix --uninstall to use CLI commands for Claude/Codex, update kilo.json for Kilo - Add Kilo Code instructions to README Co-Authored-By: Claude <noreply@anthropic.com>
- Add Hermes plugin (.hermes/plugins/ponytail/) with pre_llm_call hook for always-active ruleset injection - Install Hermes as both plugin (always-active) and skill (visible in hermes skills list, like graphify) - Fix OpenCode install: add plugin entry to opencode.json (was only creating symlink without config update) - Add OpenCode command file symlinking for /ponytail commands - Update both install.sh and install.js with detection, install, uninstall, and status for Hermes and OpenCode - Update README with Hermes setup instructions Co-Authored-By: Claude <noreply@anthropic.com>
Both installers maintain a 15-agent list in parallel (install.sh AGENT_DEFS, install.js AGENTS array). When a new agent is added, it's easy to update one and forget the other — graph analysis showed two separate god-node communities (C2 install.sh, C5 install.js) that share zero edges, meaning nothing catches silent drift. This test parses both files and asserts the agent name sets match. Verified: adding a fake agent to install.sh only fails the test. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
Fixed the install scripts so ponytail actually loads in every agent.
Root cause
The original scripts created symlinks in
~/.claude/plugins/ponytail/, but Claude Code doesn't scan that directory — it uses a marketplace mechanism (claude plugin marketplace add+claude plugin install). Same issue with Codex. Kilo Code (fork of OpenCode) needs a plugin entry inkilo.json, not a rules-file symlink.Changes
Claude Code — uses
claude plugin marketplace add+claude plugin install ponytail@ponytailinstead of symlinksCodex — uses
codex plugin marketplace add+codex plugin add ponytail@ponytailKilo Code — symlinks
ponytail.mjsand adds plugin entry tokilo.json(same mechanism as OpenCode)Other agents — unchanged (symlink approach works for Cursor, Windsurf, Cline, Kiro, etc.)
Hooks — removed legacy manual hooks from
settings.json(the plugin manages its own hooks viaplugin.json → hooks/claude-codex-hooks.json)Detection —
detect_kilo()now finds/usr/bin/kilobinary and~/.config/kilo/kilo.jsonStatus —
--listchecks plugin status via CLI for Claude/Codex/Kilo instead of checking for symlinksUninstall — uses CLI commands for Claude/Codex, updates
kilo.jsonfor Kilo CodeTesting
🤖 Generated with Claude Code