2ed6c52c9d
* feat: add Grok Build adapter (revive #561 on current main) Thin Grok packaging under .grok-plugin/ with root plugin.json path overrides (hooks + MCP). SessionStart/UserPromptSubmit/SubagentStart reuse shared hooks/ponytail-*.js; mode state under GROK_PLUGIN_DATA. Rebases the approach from #561 onto current main: keep Qoder detection and output paths, add isGrok, export getGrokPluginDataDir, drop bash-only exec from Grok hooks, and document install/enable/uninstall on the front-page README (en/es/ko) plus agent-portability. Direct install works today: grok plugin install DietrichGebert/ponytail --trust Marketplace root source ("./") matches Claude; Grok's scanner still rejects it (see xai-org/plugin-marketplace#123 class of bugs). Co-authored-by: Vinícius Souza <souza.vinicius@bb.com.br> * fix(grok): drop MCP, harden host detection and tests Review feedback on #661: - Remove MCP wiring (git install never installs ponytail-mcp deps; no other host ships MCP; hooks+skills cover always-on) - Drop static plugin-index.json (optional catalog fluff) - Clear GROK_PLUGIN_* in hooks.test.js so host suites cannot leak - Exclusive isGrok after Copilot/Codex; state falls back to ROOT not ~/.claude - Tighten Qoder regression assert; structural checks for plugin.json/hooks - List Grok Build among skill-capable hosts in README * refactor(grok): DRY — reuse Claude/Codex hooks map Second review pass for #661: - Delete .grok-plugin/hooks.json (near-copy of claude-codex-hooks.json). Root plugin.json points at the shared map; Grok sets CLAUDE_PLUGIN_ROOT. - Drop getGrokPluginDataDir; inline GROK_PLUGIN_DATA || ROOT like other hosts. - Grok uses Claude-compatible writeHookOutput (raw SessionStart, JSON SubagentStart) instead of a separate raw-only branch. - Slim .grok-plugin/marketplace.json to match .claude-plugin. - Tests: shared-map assert, SubagentStart JSON under Grok, Qoder isolation. * fix(grok): use native skill activation * chore: drop unrelated Qoder formatting --------- Co-authored-by: Vinícius Souza <souza.vinicius@bb.com.br>
6.0 KiB
6.0 KiB
Agent Portability
Ponytail is an agent-portable skill distribution. The skills in skills/ hold
the core behavior; host-specific files are adapters that make that behavior easy
to load in a given agent.
Supported Adapters
| Host | Files | Notes |
|---|---|---|
| Claude Code | .claude-plugin/plugin.json, commands/, hooks/claude-codex-hooks.json, hooks/ |
Full plugin install with session activation, mode tracking, commands, and statusline support. |
| Codex | .codex-plugin/plugin.json, hooks/claude-codex-hooks.json, hooks/, skills/ |
Plugin install with the same skills plus lifecycle hooks for activation and mode tracking. |
| Grok Build | root plugin.json, .grok-plugin/marketplace.json, skills/, commands/ |
grok plugin install DietrichGebert/ponytail --trust, then enable. Grok can auto-invoke ponytail from its coding-task skill description; /ponytail makes activation explicit. Grok lifecycle hooks are not used because passive hook output cannot inject instructions. |
| OpenCode | .opencode/plugins/ponytail.mjs, .opencode/command/, hooks/, skills/ |
Server plugin injects the ruleset each turn via experimental.chat.system.transform and persists /ponytail switches; reuses the shared instruction builder. |
| pi | pi-extension/, skills/, hooks/ |
Package extension: injects the ruleset each turn through the shared instruction builder and registers the /ponytail commands. |
| Hermes Agent | plugin.yaml, __init__.py, skills/ |
Native Hermes plugin: injects active mode through pre_llm_call, rewrites gateway /ponytail-* skill commands into agent prompts, registers /ponytail mode switching, and exposes bundled skills as ponytail:<skill>. |
| Gemini CLI | gemini-extension.json, AGENTS.md, commands/, skills/ |
Extension manifest points contextFileName at AGENTS.md for always-on rules, and reuses the existing commands/*.toml and skills/, which Gemini CLI auto-discovers. The Claude/Codex hook map is not placed at Gemini's auto-discovered hooks/hooks.json path. |
| Cursor | .cursor/rules/ponytail.mdc |
Always-on project rule. |
| Windsurf | .windsurf/rules/ponytail.md |
Project rule. |
| Cline | .clinerules/ponytail.md |
Project rule. |
| GitHub Copilot | .github/copilot-instructions.md |
Repository instruction file. |
| GitHub Copilot CLI | .github/plugin/, AGENTS.md, .github/copilot-instructions.md, ~/.copilot/copilot-instructions.md |
Plugin-supported (copilot plugin marketplace add DietrichGebert/ponytail + copilot plugin install ponytail@ponytail). Fallback instruction mode remains: per-project from AGENTS.md or .github/copilot-instructions.md, or globally from ~/.copilot/copilot-instructions.md (instruction-tier, no /ponytail levels or hooks). |
| Antigravity | AGENTS.md |
Reads AGENTS.md at the repo root as always-on rules (like .cursorrules/CLAUDE.md); .agents/rules/ also works for workspace rules. Instruction-tier. |
| CodeWhale | AGENTS.md |
Reads AGENTS.md from the repo root as project instructions; also reads CLAUDE.md and .claude/instructions.md as fallbacks. Instruction-tier. |
| Swival | .swival/skills/, AGENTS.md |
swival skills add https://github.com/DietrichGebert/ponytail installs the six skills straight into .swival/skills/. Add --global to stage them in the library (~/.config/swival/library) first, then swival skills add ponytail (or --global ponytail) to activate per-project or everywhere. Also reads AGENTS.md from the repo root and ~/.config/swival/AGENTS.md globally as instruction-tier fallback. |
| VS Code + Codex extension | AGENTS.md |
The Codex extension reads AGENTS.md (repo root, or ~/.codex/AGENTS.md globally). Instruction-tier; the full Codex plugin row above adds /ponytail levels and hooks. |
| JetBrains Junie | AGENTS.md |
Junie reads AGENTS.md once you point it there in Settings → Tools → Junie → Project Settings → Guidelines Path (not automatic yet); this repo ships AGENTS.md, and .junie/guidelines.md is Junie's legacy path. Instruction-tier. |
| Amp (Sourcegraph) | AGENTS.md |
Amp reads AGENTS.md from the working directory and parent directories up to $HOME (plus global config like ~/.config/amp/AGENTS.md); falls back to AGENT.md/CLAUDE.md. Instruction-tier. |
| Jules (Google) | AGENTS.md |
Jules automatically reads AGENTS.md from the repository root. Instruction-tier. |
| Kiro | .kiro/steering/ponytail.md |
Steering rule; copy globally or into a project. |
| Qoder | .qoder/rules/ponytail.md, .qoder-plugin/plugin.json, hooks/qoder-hooks.json, skills/, AGENTS.md |
Qoder auto-loads AGENTS.md as always-on context; .qoder/rules/ponytail.md provides per-project rules; the plugin manifest points at skills/ for the six ponytail skills (invoked as /ponytail, /ponytail-review, etc. via the Skill system). Full plugin-tier: hooks/qoder-hooks.json template registers UserPromptSubmit (mode activation + ruleset injection) and PreToolUse with `task |
| Zed | AGENTS.md |
Auto-includes AGENTS.md from the worktree root as one of its default rule files for the Agent Panel. Instruction-tier. |
| Generic agents | AGENTS.md or skills/*/SKILL.md |
Copy the compact rule file or load the skill files directly. |
Adapter Rule
Keep adapters thin. When a host supports skills or hooks, point it at the
existing skills/ and hooks/ files. When a host only supports project
instructions, keep its copied rule text aligned with AGENTS.md.
Portable Behavior
skills/ponytail/SKILL.md: lazy senior dev modeskills/ponytail-review/SKILL.md: over-engineering reviewskills/ponytail-audit/SKILL.md: whole-repo over-engineering auditskills/ponytail-debt/SKILL.md: harvestponytail:shortcuts into a tracked ledgerskills/ponytail-gain/SKILL.md: measured-impact scoreboard from the benchmarkskills/ponytail-help/SKILL.md: quick referenceAGENTS.md: compact always-on instruction set for agents without skill support