
Ponytail
- 53 installs
- 40 repo stars
- Updated August 4, 2026
- akillness/oh-my-skills
Ponytail is a Claude Code skill that makes the agent write the least code that fully solves a task and reviews diffs or repos for over-engineering.
About
Ponytail pushes the agent to write the least code that fully solves a task by walking a ladder (YAGNI, stdlib, native platform feature, installed dependency, one line, then the minimum that works). It marks every shortcut with a ponytail: comment naming the upgrade path so deferred work becomes a visible ledger. A developer uses it for anti-bloat and YAGNI passes, diff delete-list reviews, or a whole-repo over-engineering audit, with intensity levels lite/full/ultra/off.
- Makes the agent write the least code that fully solves the task via a first-rung-that-holds ladder
- Marks every shortcut with a ponytail: comment naming its upgrade path so debt stays visible
- Commands for diff review, whole-repo over-engineering audit, and a tech-debt harvest
Ponytail by the numbers
- 53 all-time installs (skills.sh)
- Ranked #571 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
ponytail capabilities & compatibility
- Capabilities
- code review · over engineering audit · refactoring · tech debt tracking
- Use cases
- code review · refactoring
- Runs
- Runs locally
- Pricing
- Free
What ponytail says it does
Make the agent write the least code that fully solves the task
Mark every shortcut taken with a `ponytail:` comment naming its upgrade path so deferred work becomes a ledger, not amnesia.
npx skills add https://github.com/akillness/oh-my-skills --skill ponytailAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 53 |
|---|---|
| repo stars | ★ 40 |
| Last updated | August 4, 2026 |
| Repository | akillness/oh-my-skills ↗ |
What it does
Push the agent to write minimal code via a YAGNI ladder and review diffs or a whole repo for over-engineering.
Who is it for?
Anti-bloat and YAGNI passes, diff delete-list reviews, and whole-repo over-engineering audits.
Skip if: Communication brevity (route to caveman) or behavior-preserving cleanup of existing code (route to code-refactoring).
When should I use this skill?
The user asks for less code, a minimal solution, a YAGNI/anti-bloat pass, or an over-engineering review.
What you get
Code is trimmed to the minimum that works, and every shortcut is logged as revisitable tech debt.
- delete-list diff review
- whole-repo over-engineering audit
- tech-debt ledger of ponytail: markers
By the numbers
- 6-rung code-minimization ladder
- 4 intensity modes (lite/full/ultra/off)
- 5 commands (review, audit, debt, help, set-intensity)
Files
Ponytail — The Laziest Senior Dev in the Room
He says nothing. He writes one line. It works.
You know him. Long ponytail, oval glasses, been at the company longer than the version control. You show him fifty lines; he says nothing and replaces them with one. Ponytail puts him inside the agent. The best code is the code you never wrote.
Activation
Triggers: ponytail, /ponytail, write less code, YAGNI, anti-bloat, over-engineering, minimal code, do I need this, lazy senior dev.
Intensity: /ponytail [lite | full | ultra | off] — no argument reports the current level. Default on activation is full. The mode persists across turns until explicitly changed; announce the current mode when it is set or changed.
- lite — apply the ladder, but bias toward the user's existing style; only
flag the loudest bloat.
- full — the default. Walk the ladder on every non-trivial unit of code.
- ultra — maximal laziness. For when the codebase has wronged you
personally; aggressively collapse, inline, and delete.
- off — stand down. Stop applying the ladder until reactivated.
Step-by-Step Procedure (The Ladder)
Before writing code, stop at the first rung that holds:
1. Does this need to exist? → no: skip it (YAGNI)
2. Stdlib does it? → use the stdlib
3. Native platform feature? → use the platform (e.g. <input type="date">)
4. Already-installed dep? → use what's installed
5. One line? → write one line
6. Only then → the minimum that worksDo not climb past the first rung that solves the problem. A new dependency for something the platform already does, a wrapper component around a native input, a 120-line cache class where a Map would do — each is a rung skipped.
Edge Cases & Pitfalls (Lazy, not negligent)
Laziness is about effort, not correctness. These are never on the chopping block, at any intensity:
- Trust-boundary validation — anything crossing a trust boundary (user
input, network, files) is still validated.
- Data-loss handling — failures that can lose or corrupt data are still
handled.
- Security — authn/authz, secrets, injection defenses stay.
- Accessibility — semantic, accessible output stays.
If cutting code would weaken one of these, that code is not bloat. Keep it.
The ponytail: marker
Every shortcut taken gets a one-line comment naming its upgrade path, so "later" doesn't become "never":
// ponytail: in-memory map, swap for Redis when this needs to survive a restart
const seen = new Map()<!-- ponytail: browser has one -->
<input type="date">These markers are the ledger. /ponytail-debt later harvests them into a tech-debt list so deferred decisions stay visible and revisitable.
Commands
| Command | What it does |
|---|---|
| `/ponytail [lite\ | full\ |
/ponytail-review | Review the current diff for over-engineering; hand back a delete-list. |
/ponytail-audit | Audit the whole repo for over-engineering, not just the diff. |
/ponytail-debt | Harvest the ponytail: shortcuts into a tech-debt ledger. |
/ponytail-help | Quick reference for the commands above. |
See references/commands.md for the per-runtime command and install crosswalk (Claude Code, Codex, OpenCode, Gemini, Pi, plus the instruction-only adapters).
When to use this skill
- The user asks for less code, a minimal solution, or a YAGNI / anti-bloat pass.
- An agent (or a teammate) is about to over-engineer: new dep for a platform
feature, wrapper around a native API, a class where a function fits.
- You want a delete-list review of a diff (
/ponytail-review) or a whole-repo
over-engineering audit (/ponytail-audit).
- You want deferred shortcuts harvested into a tech-debt ledger
(/ponytail-debt).
- You want a persistent minimalism mode active across a coding session.
When not to use this skill
- The need is communication brevity / token reduction, not code volume →
use caveman.
- The need is behavior-preserving cleanup of existing code (extract, rename,
split) → use code-refactoring.
- The need is removing AI-generated slop with a deletion-first, regression-
safe workflow → use ai-slop-cleaner.
- The need is severity-rated review of correctness, SOLID, and quality
beyond bloat → use code-review.
Instructions
1. Set or confirm the mode. If the user named a level, set it and announce it. Otherwise default to full. Honor off by standing down. 2. For each unit of code about to be written or changed, walk the ladder. Stop at the first rung that holds. Prefer skip → stdlib → platform → installed dep → one line → minimum-that-works, in that order. 3. Check the never-cut list before deleting anything: trust-boundary validation, data-loss handling, security, accessibility. If a cut weakens one, keep the code — it is not bloat. 4. Mark every shortcut with a ponytail: comment naming the upgrade path. 5. For `/ponytail-review`, read the current diff and return a delete-list: what to remove, what to collapse to one line, what platform/stdlib feature replaces a hand-rolled block — grouped by confidence. 6. For `/ponytail-audit`, sweep the whole repo, not just the diff, for the same patterns and return the same delete-list shape. 7. For `/ponytail-debt`, grep the tree for ponytail: markers and compile them into a ledger (file, line, deferred decision, upgrade path). 8. Keep the mode active across turns until the user sets off or a new level.
Examples
Example 1: native platform feature beats a dependency
Input
Add a date picker to the signup form. Use ponytail.
Output sketch
- Ladder stops at rung 3 (native platform feature).
- Ship
<input type="date">instead of installing flatpickr + a wrapper
component + a stylesheet + a timezone discussion.
- Marker:
<!-- ponytail: browser has one -->. - Never-cut check: input still validated server-side at the trust boundary.
Example 2: review a diff for bloat
Input
/ponytail-review
Output sketch
- Delete-list grouped by confidence:
- High: 120-line
LRUCacheclass →Map+ size check (12 lines). - High: custom
isEmailregex util → the one already imported from the
validation lib (rung 4, installed dep).
- Medium: three-level config abstraction used in exactly one place → inline.
- Each kept item that looks like bloat but guards a trust boundary is called
out as "keep — validation, not bloat".
Example 3: harvest deferred shortcuts
Input
/ponytail-debt
Output sketch
- Ledger of every
ponytail:marker:cache.js:14in-memory map → Redis when
multi-instance; upload.js:much later streaming → chunked when files exceed memory. "Later" is now a visible list, not amnesia.
Best practices
1. Stop at the first rung. The discipline is not climbing past the answer. 2. Laziness ≠ negligence. Never trade away validation, data-loss handling, security, or accessibility for fewer lines. 3. Always leave the marker. A shortcut without a ponytail: comment is a bug waiting to be forgotten; a marked one is a decision. 4. Author and review are separate passes. Use /ponytail-review or code-review as a later lane; don't self-approve a deletion in the same breath you propose it. 5. Match the house style in lite; reserve ultra for code that has earned it.
References
- Per-runtime command & install crosswalk
- Installer:
./scripts/install.sh - Upstream project (MIT): https://github.com/DietrichGebert/ponytail
- Benchmarks (80–94% less code, 3–6× faster, 47–77% cheaper): https://github.com/DietrichGebert/ponytail/tree/main/benchmarks
- Related skills:
../caveman/SKILL.md(communication compression),
../code-refactoring/SKILL.md (behavior-preserving cleanup), ../code-review/SKILL.md (severity-rated review)
- Project standards:
../skill-standardization/SKILL.md - Validator:
../skill-standardization/scripts/validate_skill.sh
Ponytail — Changelog
All notable changes to the ponytail skill are documented here. Format follows Keep a Changelog. Semantic versioning per SemVer.
---
[1.2.0] — 2026-06-22
Added
metadatablock inSKILL.md:category,tags,platforms,keyword,version,source,upstream— aligns with skill-standardization schema
Changed
- SKILL.md description rewritten with imperative verb lead; trigger list expanded (
ponytail review,ponytail audit,ponytail debt,lazy dev) SKILL.mdcompatibility block updated to includeai-slop-cleanerroute-out
---
[1.1.0] — 2025-07-10
Added
README.mdwith full per-runtime install crosswalk (Claude Code, Codex, Gemini CLI, Pi, OpenCode, Cursor, Windsurf, Cline, Copilot, Kiro)- MCP server setup guidance for Claude Desktop (
claude_desktop_config.json) - Demo GIF (
assets/ponytail-demo.gif) — animated terminal walkthrough of the YAGNI ladder CHANGELOG.md(this file)- Changelog snippet in README (latest 5 entries only)
Changed
references/commands.md— expanded instruction-only adapter table with exact file pathsscripts/install.sh— doc comment clarifyingAPPLY=1env knob behavior
Fixed
- Ponytail ladder rung order in
commands.mdwas inconsistent withSKILL.md; unified to: skip → stdlib → platform → installed-dep → one line → minimum
---
[1.0.1] — 2025-06-18
Fixed
install.shset -euo pipefailcaused early exit on macOS whenpioropencodewere not on PATH; fallbackecho allbranch now always reached cleanly- SKILL.md description trigger phrasing tightened per skill-standardization validator feedback (
descriptionmust start with imperative verb)
Changed
evals/evals.json— added third eval (route-out tocavemanwhen request is communication brevity, not code volume)
---
[1.0.0] — 2025-05-30
Added
- Initial
SKILL.mdwith YAGNI ladder, never-cut safety list (ponytail:marker convention), four intensity levels (lite / full / ultra / off) references/commands.md— per-runtime command and install crosswalkscripts/install.sh— auto-detect runtime, print (or withAPPLY=1run) the right install commandevals/evals.json— two canonical evals: native date picker vs. flatpickr, delete-list review of LRUCache + hand-rolled email regex- Upstream credit:
DietrichGebert/ponytail(MIT); catalog:akillness/oh-my-skills
---
[0.2.0] — 2025-04-14
Added
- Compatibility note routing
caveman(communication compression) andcode-refactoring(behavior-preserving cleanup) as explicit out-of-scope skills SKILL.tooncompact rendering for token-limited runtimes
Changed
- Description rewritten to be trigger-oriented; now activates on:
ponytail,write less code,YAGNI,anti-bloat,minimal code,do I need this,lazy senior dev
{
"skill_name": "ponytail",
"evals": [
{
"id": 1,
"prompt": "Use ponytail. Add a date picker to the signup form.",
"expected_output": "A minimal solution that stops at the native-platform rung — ships <input type=\"date\"> instead of installing a date library plus wrapper component — and marks the shortcut.",
"assertions": [
"Output uses the native platform feature (e.g. <input type=\"date\">) and does NOT install or wrap a third-party date library.",
"Output names the ladder rung it stopped at and leaves a `ponytail:` marker on the shortcut.",
"Output keeps trust-boundary/server-side validation rather than cutting it for fewer lines."
]
},
{
"id": 2,
"prompt": "/ponytail-review on this diff that adds a 120-line LRUCache class and a hand-rolled email regex while a validation lib is already a dependency.",
"expected_output": "A confidence-grouped delete-list: collapse the LRUCache to a Map, replace the custom regex with the already-installed validation lib (installed-dependency rung), and inline single-use abstractions.",
"assertions": [
"Output returns a delete-list (what to remove/collapse), not a rewrite, and groups items by confidence.",
"Output prefers the already-installed dependency over the hand-rolled regex.",
"Output flags any over-engineering-looking code that actually guards a trust boundary as keep, not cut."
]
},
{
"id": 3,
"prompt": "Make my agent's responses use fewer tokens and drop the filler words.",
"expected_output": "A route-out to the caveman skill, because this is communication compression, not reducing code volume.",
"assertions": [
"Output routes to caveman instead of applying the YAGNI code ladder.",
"Output does not produce a code delete-list or a `ponytail:` marker for this request.",
"Output distinguishes communication brevity (caveman) from less code (ponytail)."
]
}
]
}
🐴 ponytail
"He says nothing. He writes one line. It works."
The laziest senior dev in the room as an agent skill. Before writing anything, ponytail walks the YAGNI ladder and stops at the first rung that holds:
1. Does this need to exist? → no: skip it (YAGNI) 2. Stdlib does it? → use the stdlib 3. Native platform feature? → use the platform (e.g. <input type="date">) 4. Already-installed dep? → use what's installed 5. One line? → write one line 6. Only then → the minimum that works
Every shortcut taken gets a ponytail: comment naming its upgrade path so "later" never becomes "never."
---
Demo
!ponytail in action
Terminal walkthrough: YAGNI ladder → before/after date-picker example → install commands
---
Install
Quick (any runtime)
bash npx skills add https://github.com/akillness/oh-my-skills --skill ponytail
global, non-interactive:
npx skills add https://github.com/akillness/oh-my-skills --skill ponytail -g -y
Or run the bundled auto-detect helper:
bash
prints the right install command; set APPLY=1 to actually run it
bash .agent-skills/ponytail/scripts/install.sh
force a specific runtime and apply immediately
RUNTIME=claude APPLY=1 bash .agent-skills/ponytail/scripts/install.sh
---
Per-runtime (upstream plugin)
Source: <https://github.com/DietrichGebert/ponytail> (MIT)
| Runtime | Install command |
|---|---|
| Claude Code | claude plugin marketplace add DietrichGebert/ponytail → then in-session: /plugin install ponytail@ponytail |
| Codex | codex plugin marketplace add DietrichGebert/ponytail → /plugins → select Ponytail → install; trust 2 hooks under /hooks; start a new thread |
| Gemini CLI | gemini extensions install https://github.com/DietrichGebert/ponytail |
| Pi | pi install git:github.com/DietrichGebert/ponytail |
| OpenCode | run from a checkout; add { "plugin": ["./.opencode/plugins/ponytail.mjs"] } to opencode.json |
---
Claude Desktop (MCP server)
Add ponytail's rules via the MCP server entry in ~/Library/Application Support/Claude/claude_desktop_config.json:
{ "mcpServers": { "ponytail": { "command": "npx", "args": [ "-y", "skills", "serve", "https://github.com/akillness/oh-my-skills", "--skill", "ponytail" ] } } }
Restart Claude Desktop after saving. The skill activates on triggers: ponytail, write less code, YAGNI, anti-bloat, minimal code.
---
Instruction-only adapters (always-on, no commands needed)
Copy the matching rules file from the upstream repo into your project:
| Agent | Drop file here |
|---|---|
| Cursor | .cursor/rules/ponytail.md |
| Windsurf | .windsurf/rules/ponytail.md |
| Cline | .clinerules/ponytail.md |
| GitHub Copilot | .github/copilot-instructions.md (or ~/.copilot/copilot-instructions.md for global) |
| Kiro | .kiro/steering/ponytail.md (project) or ~/.kiro/steering/ponytail.md (global) |
| Aider / Antigravity / Codex-VS Code | AGENTS.md (~/.codex/AGENTS.md for global Codex) |
Agent portability map: <https://github.com/DietrichGebert/ponytail/blob/main/docs/agent-portability.md>
---
Commands
Available in skill-capable hosts (Claude Code, Codex, Gemini CLI, Pi, OpenCode). In Codex, prefix commands with @ instead of /.
| Command | What it does |
|---|---|
| `/ponytail [lite\ | full\ |
/ponytail-review | Review the current diff for over-engineering → returns a delete-list grouped by confidence. |
/ponytail-audit | Audit the whole repo (not just the diff) for the same patterns. |
/ponytail-debt | Harvest all ponytail: markers in the tree into a tech-debt ledger. |
/ponytail-help | Quick command reference. |
Intensity levels
| Level | Behaviour |
|---|---|
lite | Apply the ladder, but bias toward the user's existing style; flag only the loudest bloat. |
full | Default. Walk the ladder on every non-trivial unit of code. |
ultra | Maximal laziness — aggressively collapse, inline, and delete. |
off | Stand down until re-activated. |
---
Never-cut list
Laziness is about effort, not correctness. These are never removed at any intensity:
- Trust-boundary validation — user input, network data, file reads are still validated.
- Data-loss handling — failures that can corrupt data are still handled.
- Security — authn/authz, secrets, injection defences stay.
- Accessibility — semantic, accessible output stays.
If cutting code would weaken one of these, that code is not bloat.
---
The ponytail: marker
Every shortcut gets a one-line comment naming its upgrade path:
js // ponytail: in-memory map — swap for Redis when this needs to survive a restart const seen = new Map()
html <!-- ponytail: browser has one --> <input type="date">
Run /ponytail-debt to harvest all markers into a tech-debt ledger.
---
References
- `references/commands.md` — per-runtime command & install crosswalk
- `scripts/install.sh` — auto-detect + apply installer
- `evals/evals.json` — canonical evals
- Upstream (MIT): <https://github.com/DietrichGebert/ponytail>
- Benchmarks (80–94% less code, 3–6× faster): <https://github.com/DietrichGebert/ponytail/tree/main/benchmarks>
- Related: `../caveman/SKILL.md` · `../code-refactoring/SKILL.md` · `../code-review/SKILL.md`
---
Changelog (latest 5)
See `CHANGELOG.md` for the full history.
[1.2.0] — 2026-06-22
- Added
metadatablock toSKILL.md(category, tags, platforms, keyword, version, source, upstream) - Expanded trigger list; added
ai-slop-cleanerroute-out to compatibility block
[1.1.0] — 2025-07-10
- Added
README.mdwith full per-runtime install crosswalk and MCP server setup - Added demo GIF (
assets/ponytail-demo.gif) — animated YAGNI ladder walkthrough - Added
CHANGELOG.md
[1.0.1] — 2025-06-18
- Fixed
install.shearly-exit on macOS when optional CLIs are absent - Tightened SKILL.md trigger phrasing per skill-standardization validator
- Added third eval: route-out to
cavemanfor communication-brevity requests
[1.0.0] — 2025-05-30
- Initial release: SKILL.md,
references/commands.md,scripts/install.sh,evals/evals.json - Four intensity levels (lite / full / ultra / off), YAGNI ladder,
ponytail:marker convention
[0.2.0] — 2025-04-14
- Added
SKILL.tooncompact rendering for token-limited runtimes - Route-outs to
cavemanandcode-refactoringmade explicit in SKILL.md
---
<sub>Upstream: <a href="https://github.com/DietrichGebert/ponytail">DietrichGebert/ponytail</a> (MIT) · Catalog: <a href="https://github.com/akillness/oh-my-skills">akillness/oh-my-skills</a> · "Done. He'd be proud. He won't say it."</sub>
Ponytail — per-runtime command & install crosswalk
Ponytail is one ruleset (the YAGNI ladder + never-cut safety list) plus a small command surface. Skill-capable hosts get the /ponytail* commands; instruction- only adapters load the always-on ruleset without commands.
Commands
| Command | What it does | Needs |
|---|---|---|
| `/ponytail [lite\ | full\ | ultra\ |
/ponytail-review | Review the current diff → delete-list | skill host |
/ponytail-audit | Audit the whole repo, not just the diff | skill host |
/ponytail-debt | Harvest ponytail: markers into a tech-debt ledger | skill host |
/ponytail-help | Quick command reference | skill host |
In Codex the commands are skills — invoke with @ (@ponytail-review).
Install (this catalog)
Plugin-installable from the jeo-skills catalog:
npx skills add https://github.com/akillness/jeo-skills --skill ponytail
# global, non-interactive:
npx skills add https://github.com/akillness/jeo-skills --skill ponytail -g -yOr run the bundled helper, which wires the upstream marketplace plugin for the detected runtime:
bash scripts/install.shInstall (upstream, by runtime)
Source: https://github.com/DietrichGebert/ponytail (MIT).
| Runtime | Install |
|---|---|
| Claude Code | /plugin marketplace add DietrichGebert/ponytail then /plugin install ponytail@ponytail |
| Codex | codex plugin marketplace add DietrichGebert/ponytail, then /plugins → select Ponytail → install; review/trust its two lifecycle hooks under /hooks, start a new thread |
| Pi | pi install git:github.com/DietrichGebert/ponytail |
| OpenCode | run from a checkout; add { "plugin": ["./.opencode/plugins/ponytail.mjs"] } to opencode.json (also auto-loads AGENTS.md) |
| Gemini CLI | gemini extensions install https://github.com/DietrichGebert/ponytail |
Instruction-only adapters (always-on ruleset, no commands)
Copy the matching rules file from the upstream repo:
| Agent | File |
|---|---|
| Cursor | .cursor/rules/ |
| Windsurf | .windsurf/rules/ |
| Cline | .clinerules/ |
| GitHub Copilot | .github/copilot-instructions.md (or ~/.copilot/copilot-instructions.md for global) |
| Kiro | .kiro/steering/ponytail.md → ~/.kiro/steering/ (global) or project .kiro/steering/ |
| Aider / Antigravity / Codex-VS Code | AGENTS.md (~/.codex/AGENTS.md makes Codex global) |
Agent portability map: https://github.com/DietrichGebert/ponytail/blob/main/docs/agent-portability.md
The ladder (reference)
1. Does this need to exist? → no: skip it (YAGNI)
2. Stdlib does it? → use the stdlib
3. Native platform feature? → use the platform
4. Already-installed dep? → use what's installed
5. One line? → write one line
6. Only then → the minimum that worksNever cut for line count: trust-boundary validation, data-loss handling, security, accessibility.
#!/usr/bin/env bash
# ponytail installer wrapper.
# Wires the upstream Ponytail marketplace plugin / extension for the detected
# runtime. Ponytail is rules + commands only — there is no package to compile,
# so this script just prints (and, where a CLI exists, runs) the right install
# line. Upstream: https://github.com/DietrichGebert/ponytail (MIT).
#
# Env knobs:
# RUNTIME — force a runtime: claude | codex | gemini | pi | opencode
# (default: autodetect from PATH, fallback: print all)
# APPLY — "1" actually run the detected CLI install (default: print only)
#
# Usage:
# bash scripts/install.sh
# RUNTIME=claude APPLY=1 bash scripts/install.sh
set -euo pipefail
UPSTREAM="DietrichGebert/ponytail"
CATALOG="https://github.com/akillness/jeo-skills"
detect() {
if [ -n "${RUNTIME:-}" ]; then echo "$RUNTIME"; return; fi
if command -v claude >/dev/null 2>&1; then echo claude; return; fi
if command -v codex >/dev/null 2>&1; then echo codex; return; fi
if command -v gemini >/dev/null 2>&1; then echo gemini; return; fi
if command -v pi >/dev/null 2>&1; then echo pi; return; fi
if command -v opencode >/dev/null 2>&1; then echo opencode; return; fi
echo all
}
run() {
# Print the command; only execute when APPLY=1.
echo " \$ $*"
if [ "${APPLY:-0}" = "1" ]; then "$@"; fi
}
rt="$(detect)"
echo "=== ponytail installer ==="
echo "runtime: ${rt} apply: ${APPLY:-0}"
echo ""
echo "Catalog (skill copy of this repo):"
echo " \$ npx skills add ${CATALOG} --skill ponytail"
echo ""
case "$rt" in
claude)
echo "Claude Code (upstream plugin):"
run claude plugin marketplace add "${UPSTREAM}"
echo " then in Claude Code: /plugin install ponytail@ponytail"
;;
codex)
echo "Codex (upstream plugin):"
run codex plugin marketplace add "${UPSTREAM}"
echo " then: /plugins -> select Ponytail -> install; /hooks -> trust 2 hooks; new thread"
;;
gemini)
echo "Gemini CLI (extension):"
run gemini extensions install "https://github.com/${UPSTREAM}"
;;
pi)
echo "Pi agent harness:"
run pi install "git:github.com/${UPSTREAM}"
;;
opencode)
echo "OpenCode: run from a checkout and add to opencode.json:"
echo ' { "plugin": ["./.opencode/plugins/ponytail.mjs"] }'
;;
all|*)
echo "No agent CLI detected on PATH. Pick one:"
echo " Claude Code : claude plugin marketplace add ${UPSTREAM} && /plugin install ponytail@ponytail"
echo " Codex : codex plugin marketplace add ${UPSTREAM}"
echo " Gemini CLI : gemini extensions install https://github.com/${UPSTREAM}"
echo " Pi : pi install git:github.com/${UPSTREAM}"
echo " OpenCode : add { \"plugin\": [\"./.opencode/plugins/ponytail.mjs\"] } to opencode.json"
echo ""
echo "Instruction-only adapters (Cursor/Windsurf/Cline/Copilot/Kiro/Antigravity):"
echo " copy the matching rules file from https://github.com/${UPSTREAM}"
;;
esac
echo ""
echo "Done. He'd be proud. He won't say it."
Related skills
FAQ
What is the ponytail: marker?
A one-line comment on each shortcut naming its upgrade path, so deferred work becomes a harvestable tech-debt ledger.
What does it never cut?
Trust-boundary validation, data-loss handling, security, and accessibility are never removed at any intensity.