ponytail

by DietrichGebert (community) · Claude Code, Cursor, любой агент с поддержкой кастомных инструкций

Skill AI Assistants Open Source v4.10.0 · 14.09.2026 активный

Инструкционный файл, который прививает AI-агенту стиль «ленивого сеньора»: не тащить лишние зависимости и абстракции, а сначала искать самое короткое встроенное решение. На реальных агентных сессиях (правки в открытом FastAPI+React репозитории) даёт заметное сокращение объёма кода, токенов, стоимости и времени выполнения задач при сохранении безопасности правок.

v4.10.0
14.09.2026 current

Установка
# Claude Code (CLI):
npx skills add DietrichGebert/ponytail -g

# Ручная установка (любой агент):
git clone https://github.com/DietrichGebert/ponytail.git
# скопировать SKILL.md в директорию инструкций вашего агента
показать оригинал переведено ИИ

Ponytail, the lazy senior dev

Ponytail

Он ничего не говорит. Он пишет одну строку. Это работает.

DietrichGebert%2Fponytail | Trendshift

Stars Release npm Works with 20 agents MIT license

DietrichGebert/ponytail | Trendshift


DietrichGebert/ponytail | Trendshift DietrichGebert%2Fponytail | Trendshift monthly ranking

~54% меньше кода (до 94%) · ~20% дешевле · ~27% быстрее · 100% безопасно
Измерено на реальных сессиях Claude Code без интерфейса при редактировании реального открытого репозитория (FastAPI + React) против того же агента без навыка. ~54% — это среднее по 12 задачам функциональности (Haiku 4.5, n=4); оно достигает 94% в случаях, когда агент перестраивает (например, календарь), и приближается к нулю, если код уже минимален. Ponytail сохраняет все меры безопасности, в то время как простой "напиши однострочники"-промпт теряет одну. (Ранее опубликованный бенчмарк в одном запросе показывал 80-94% как фиксированную цифру; по сравнению с честной агентной базовой линией это верхний предел на задачу, а не среднее.) Полное описание · воспроизвести его.

Español · 한국어 · Русский


Something's coming, join the waitlist

Уже построено с Ponytail

Retriever


Вы знаете его. Длинный хвост. Овальные очки. Работает в компании дольше, чем система контроля версий. Вы показываете ему пятьдесят строк; он смотрит на них, ничего не говорит и заменяет их одной строкой.

Ponytail помещает его в вашего ИИ-агента.

До / после

Вы просите создать календарь. Ваш агент устанавливает flatpickr, пишет обёртку компонента, добавляет таблицу стилей и начинает обсуждение временных зон.

С ponytail:

<!-- ponytail: browser has one -->
<input type="date">

Больше примеров в examples/.

Цифры

Честная оценка — это реальный агент, выполняющий реальную работу: сессия без интерфейса Claude Code, редактирующая tiangolo's full-stack-fastapi-template (реальный репозиторий FastAPI + React), оценённая по git diff, который остаётся после изменений. Двенадцать задач по функционалу, один и тот же агент с и без навыка, n=4, Haiku 4.5.

Each arm as a percent of the no-skill baseline across LOC, tokens, cost and time (Haiku 4.5). ponytail is lowest on every metric (LOC 46%, tokens 78%, cost 80%, time 73%); caveman rises above 100% on tokens, cost and time; yagni-oneliner LOC 67%. Safety, separate adversarial tier: baseline, caveman and ponytail 100%, yagni-oneliner 95%.

По сравнению с базой без навыка LOC токены стоимость время безопасность
ponytail -54% -22% -20% -27% 100%
caveman (контроль с лаконичным текстом) -20% +7% +3% +2% 100%
"YAGNI + однострочники" промпт -33% -14% -21% -30% 95%

Ponytail — единственный метод, который улучшает все метрики, и единственный, который остаётся полностью безопасным при этом. Максимальный эффект наблюдается там, где есть реальная ловушка перестроек (календарь с 404 до 23 строк, цветовой пикер с 287 до 23 строк, так как он использует родной <input> вместо компонента), и почти нулевой на уже минимальном коде. Полный метод, таблицы по задачам и ограничения: benchmarks/results/2026-06-18-agentic.md.

Старые цифры для одиночных запросов (изолированная генерация)

Пять повседневных задач, три модели, три подхода (без навыка, caveman, ponytail), десять запусков, медиана результатов. Один промпт, одно завершение, подсчёт строк ответа:

Median lines of code per arm across Haiku, Sonnet and Opus

Это показало 80-94% меньше кода. #126 справедливо указал, что базовая линия без навыка дополняет ответы текстовыми вставками и вариантами, поэтому разрыв частично является артефактом разговорной базовой линии. Агентные цифры выше — это исправленная, защищённая версия. Воспроизведите одиночный запуск с помощью npx promptfoo eval -c benchmarks/promptfooconfig.yaml.

Правило никогда не было «минимальное количество токенов». Оно таково: пишите только то, что необходимо для задачи, и никогда не урезайте валидацию, обработку ошибок, безопасность или доступность. Код получается компактным потому, что он необходим, а не потому, что его «сголили». Низкая стоимость и задержки — побочный эффект для моделей, которые следуют этому принципу; лаконичная модель рассуждений, тратящая токены на обдумывание шагов, может пойти не в ту сторону (на GPT-5.5 так и происходит).


Как это работает

Прежде чем писать код, агент останавливается на первой ступеньке лестницы, которая выдерживает:

1. Does this need to exist?   → no: skip it (YAGNI)
2. Already in this codebase?  → reuse it, don't rewrite
3. Stdlib does it?            → use it
4. Native platform feature?   → use it
5. Installed dependency?      → use it
6. One line?                  → one line
7. Only then: the minimum that works

Лестница запускается после понимания проблемы, а не вместо него: она читает код, который затрагивает изменения, и прослеживает реальный поток данных перед выбором ступеньки. Ленивый в решении, но никогда в чтении.

Ленивый, но не халатный: проверка границ доверия, обработка потери данных, безопасность и доступность никогда не подлежат сокращению.


Установка

Самая большая просьба, которую когда-либо предъявляет ponytail:

Плагины Claude Code и Codex (а также хуки Cursor) запускают два небольших хука жизненного цикла на Node.js, поэтому node должен быть в переменной окружения PATH (примечание для пользователей Nix/nvm: он должен быть в PATH неинтерактивной оболочки). Если его там нет, навыки всё равно работают, просто постоянная активация молчит вместо того, чтобы выдавать ошибку на каждом запросе.

Claude Code

/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

(Для работы установки нужно отправить два отдельных запроса)

Те же шаги в вкладке Code десктопного приложения Claude Code: введите две команды /plugin выше в поле запроса или нажмите кнопку + рядом с ним, выберите Plugins → Add plugin, чтобы просмотреть настроенные маркетплейсы, и управляйте маркетплейсами через Customize в боковой панели.

Codex

codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail

Запустите codex и откройте /hooks, просмотрите и доверьте два хука жизненного цикла, затем начните новый поток.

Эта же установка покрывает десктопное приложение Codex: перезапустите приложение после установки, и оно подхватит плагин.

GitHub Copilot CLI

copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail

В интерактивной сессии Copilot CLI используйте эквиваленты с косой чертой:

/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

Copilot CLI именует команды плагинов по имени плагина. Например:

/ponytail:ponytail ultra
/ponytail:ponytail-review

Pi agent harness

pi install git:github.com/DietrichGebert/ponytail

OpenCode

Добавьте в opencode.json:

{ "plugin": ["@dietrichgebert/ponytail"] }

Запускайте из клона репозитория (плагин повторно использует hooks/ и skills/):

{ "plugin": ["./.opencode/plugins/ponytail.mjs"] }

Инъектирует набор правил на каждом шаге на активном уровне; добавляет команды /ponytail (см. Commands). OpenCode также автоматически загружает AGENTS.md из этого репозитория, поэтому правила действуют даже без плагина. Плагин добавляет уровни lite/full/ultra/off.

Путь ./ разрешается относительно opencode.json вашего проекта; чтобы использовать один клон для нескольких проектов, укажите абсолютный путь к файлу .mjs (он найдёт свои hooks/ и skills/ относительно собственного файла).

Gemini CLI

gemini extensions install https://github.com/DietrichGebert/ponytail

Загружает набор правил как постоянный контекст в каждой сессии и регистрирует команды /ponytail; также отправляются папки skills/, активируемые при необходимости для задачи. Адаптер для Gemini намеренно не поставляется с корневым hooks/hooks.json: Gemini автоматически загружает этот путь, в то время как хуки жизненного цикла Ponytail используют имена событий от Claude/Codex.

Qoder

Qoder автоматически загружает AGENTS.md из корня репозитория как постоянный контекст, поэтому запуск ponytail из клона работает без настройки. Для правил на уровне проекта скопируйте файл .qoder/rules/ponytail.md в папку .qoder/rules/ вашего проекта. Шесть навыков ponytail (/ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, /ponytail-help) доступны через систему навыков Qoder; манифест плагина в .qoder-plugin/plugin.json указывает на директорию skills/.

Для полной поддержки плагинов (автоматическая активация режима + инъекция набора правил на каждом запросе) добавьте хуки из hooks/qoder-hooks.json в ваш .qoder/settings.json. Замените PONYTAIL_DIR на путь к клону ponytail. Хук UserPromptSubmit от Qoder активирует режим по умолчанию при первом запросе и инъектирует набор правил на каждом шаге; хук PreToolUse с сопоставлением task|Task инъектирует набор правил в подагентов. Переключение уровней (/ponytail lite|full|ultra|off) работает автоматически.

Antigravity CLI

Google переименовывает Gemini CLI в Antigravity CLI (бинарный файл agy); тот же расширение устанавливается туда:

agy plugin install https://github.com/DietrichGebert/ponytail

Оно повторно использует gemini-extension.json из этого репозитория. Разница в том, что Antigravity преобразует команды /ponytail в навыки, поэтому вы вводите их в чат (например, /ponytail-review как сообщение) вместо выбора из меню слэш-команд. До завершения миграции (примерно к 18 июня 2026 года) команда gemini extensions install всё ещё работает. Чтобы запустить его как правило, всегда активное, поместите набор правил в .agents/rules/.

Hermes Agent

hermes plugins install DietrichGebert/ponytail --enable

Перезапустите Hermes после установки. Плагин вставляет активный режим Ponytail перед каждым витком LLM, регистрирует встроенные навыки как ponytail:<skill> и добавляет команды /ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain и /ponytail-help. В общих шлюзах ограничивайте доступ к /ponytail доверенным пользователям с помощью средств управления доступом к слэш-командам Hermes; режим выполнения локален для процесса.

CodeWhale

Считывает файл AGENTS.md из корня проекта, без настройки. Скопируйте AGENTS.md в свой проект или запустите codewhale из клона этого репозитория. Это всё.

Swival

Сначала добавьте коллекцию в вашу библиотеку, затем выберите нужные навыки:

swival skills add --global https://github.com/DietrichGebert/ponytail  # stage into ~/.config/swival/library
swival skills add ponytail                                             # install the collection into this project
swival skills add --global ponytail                                    # or activate it in every project

Swival также считывает AGENTS.md из корня проекта и глобальный файл ~/.config/swival/AGENTS.md в качестве резервного варианта с инструкциями.

В командной строке используйте префикс $, чтобы явно активировать навык. Например: $ponytail-review.

Devin CLI

devin plugins install DietrichGebert/ponytail

Устанавливает ponytail как плагин Devin; навыки доступны как /ponytail:ponytail, /ponytail:ponytail-review и так далее.

OpenClaw

clawhub install ponytail

Устанавливает ponytail как навык OpenClaw из ClawHub; навыки review, audit, debt, gain и help устанавливаются аналогично (clawhub install ponytail-review и так далее). OpenClaw применяет его к задачам программирования и также предоставляет доступ через команду /ponytail. Без ClawHub скопируйте .openclaw/skills/ponytail в ~/.openclaw/skills/.

Grok Build

grok plugin install DietrichGebert/ponytail --trust

Включите плагин (по умолчанию отключён): /plugins → Плагины → Пробел на ponytail, или в файле ~/.grok/config.toml:

[plugins]
enabled = ["ponytail"]

Начните новую сессию (или перезагрузите плагины). Навыки отображаются как /ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, /ponytail-help. Проверьте с помощью команды grok inspect. Grok может автоматически вызывать ponytail для задач программирования по описанию навыка; используйте /ponytail (или /ponytail lite, /ponytail full, /ponytail ultra), когда активация должна быть явной. Крючки жизненного цикла Grok не используются, так как их вывод SessionStart не может вставлять инструкции.

Файл AGENTS.md всё ещё работает в режиме только с инструкциями из клона без плагина.

Cursor

git clone https://github.com/DietrichGebert/ponytail
node ponytail/scripts/cursor-hooks.js install

Объединяет два родных хука в ~/.cursor/hooks.json (добавьте --project, чтобы записать <project>/.cursor/hooks.json вместо этого) и сохраняет любые хуки, которые уже есть там. Эти записи запускают node из этого клона, поэтому оставьте его на месте или перезапустите установку после перемещения. Cursor перезагружает файл при сохранении; откройте новый чат, и набор правил для вашего уровня по умолчанию поступит через sessionStart. Отправьте /ponytail lite, /ponytail full, /ponytail ultra или /ponytail off как обычное сообщение, чтобы изменить уровень на остаток разговора; /ponytail отобразит текущий уровень. Cursor не может вставлять контекст через subagentStart, поэтому подагенты работают без набора правил, а облачные агенты никогда не вызывают sessionStart. Правило, всегда активное (.cursor/rules/ponytail.mdc), и хуки — альтернативы: пока правило находится в рабочей области, хуки ничего не вставляют, а команды режима отвечают уведомлением, поэтому удалите правило, чтобы хуки управляли уровнем. Договорённости, записи проверки и ограничения: docs/cursor-hooks.md. Удаление: node ponytail/scripts/cursor-hooks.js uninstall.

Всё. Он был бы горд. Он этого не скажет.

Активен в каждой сессии с несколькими командами (см. Commands). /ponytail ultra существует для случаев, когда кодовая база лично обидела вас. Текст запуска и смены режима показывает текущий режим.

Установите уровень для каждой новой сессии с помощью переменной окружения PONYTAIL_DEFAULT_MODE (lite/full/ultra/off) или поля defaultMode в файле ~/.config/ponytail/config.json (%APPDATA%\ponytail\config.json на Windows). По умолчанию установлен full. Во время активности набор правил также внедряется во всех дочерних агентах, создаваемых через инструмент Agent. Чтобы ограничить это для конкретных типов агентов (например, отключить для агентов поиска с правами только на чтение), установите переменную окружения PONYTAIL_SUBAGENT_MATCHER в регулярное выражение, которое будет проверяться против agent_type дочернего агента. Оно не привязано к границам (unanchored) и нечувствительно к регистру: explore|general подойдёт для любого из них, ^general$ — точное совпадение, а типы плагинов выглядят как plugin:name. Если переменная не задана, правила внедряются во все дочерние агенты (по умолчанию); неверное регулярное выражение или тип дочернего агента, который платформа не сообщает, также приведёт к внедрению по умолчанию.

Cursor (альтернатива на основе правил для установки хуков), Windsurf, Cline, GitHub Copilot Chat (расширение для редакторов VS Code, JetBrains и Visual Studio, а не standalone Copilot CLI, покрытый в разделе Установка), Aider, Kiro, Zed, CodeWhale, Swival, Qoder: скопируйте соответствующий файл правил из этого репозитория (.cursor/rules/, .windsurf/rules/, .clinerules/, .github/copilot-instructions.md, AGENTS.md, .kiro/steering/, .qoder/rules/).

Kiro: скопируйте .kiro/steering/ponytail.md в ~/.kiro/steering/ (глобально) или .kiro/steering/ в вашем проекте.

GitHub Copilot CLI (режим только с инструкциями): он читает файлы AGENTS.md и .github/copilot-instructions.md в проекте, или скопируйте правила в ~/.copilot/copilot-instructions.md, чтобы запускать ponytail во всех проектах. Этот путь поддерживает постоянное руководство, но не добавляет переключатели режима плагинов или хуков.

VS Code с расширением Codex читает AGENTS.md, который поставляется с этим репозиторием, поэтому он работает из корня репозитория без настройки (~/.codex/AGENTS.md делает Codex глобальным).

JetBrains Junie может читать AGENTS.md после того, как вы укажете путь в Настройках → Инструменты → Junie → Настройки проекта → Путь к руководству (автоматически это не работает). Этот репозиторий поставляется с AGENTS.md; .junie/guidelines.md — это устаревший путь для Junie.

Amp (Sourcegraph) читает AGENTS.md из рабочей директории и родительских директорий до $HOME, который поставляется с этим репозиторием, поэтому он работает без настройки (~/.config/amp/AGENTS.md работает глобально).

Jules (Google) читает AGENTS.md из корня репозитория, который поставляется с этим репозиторием, поэтому он подхватывает набор правил без настройки.

Какие файлы соответствуют каким агентам: Переносимость агентов.

Удаление

Хост Команда
Claude Code /plugin remove ponytail
Codex codex plugin remove ponytail
Devin CLI devin plugins remove ponytail
Grok Build grok plugin uninstall ponytail
Pi agent pi uninstall ponytail
Cursor hooks node scripts/cursor-hooks.js uninstall (добавьте --project для установки на уровне проекта); удаляет только записи ponytail из hooks.json
Cursor rule / Windsurf / Cline / Qoder / и др. Удалите скопированный файл правил

Эти команды удаляют файлы плагина. Они оставляют небольшое количество состояния, которое ponytail записывает вне папки плагина: флаг режима (~/.claude/.ponytail-active или ~/.cursor/.ponytail-active для Cursor), ~/.config/ponytail/config.json, записи ponytail в ~/.cursor/hooks.json и (если вы согласились на подсказку установки) запись statusLine в ~/.claude/settings.json. Запустите node scripts/uninstall.js, чтобы также удалить их. Запустите его до команды удаления хоста выше — скрипт сам является файлом плагина, поэтому удаление плагина сначала удалит его (или запустите его из отдельной копии этого репозитория). Он удаляет запись statusLine только если она указывает на собственный скрипт ponytail, поэтому пользовательская строка состояния останется нетронутой.

Команды

Команда Что делает
/ponytail [lite \| full \| ultra \| off] Устанавливает интенсивность или отключает её. Без аргументов отображает текущий уровень.
/ponytail-review Проверяет текущую разницу (diff) на переусложнение и возвращает список для удаления.
/ponytail-audit Проверяет весь репозиторий на переусложнение, а не только разницу (diff).
/ponytail-debt Собирает отложенные сокращения ponytail: в сводную ведомость, чтобы "позже" не стало "никогда".
/ponytail-gain Показывает измеренную доску результативности (меньше кода, меньше затрат, больше скорости) из бенчмарка.
/ponytail-help Быстрая справочная информация по командам выше.
Команды требуют хозяина с навыками (Claude Code, Codex, Devin CLI, OpenCode, Gemini, pi, Swival, Hermes Agent, Qoder, Grok Build). В Codex они называются навыками, вызываются с помощью @ (@ponytail-review). Курсор с крючками поддерживает только переключение уровней /ponytail, вводимое как обычное сообщение. Адаптеры с инструкциями только (файл правил Cursor, Windsurf, Cline, Copilot, Kiro, Antigravity) загружают набор правил, всегда активных, без команд.

Разработка

При изменении компактного текста правил сохраняйте копии агента выровненными:

node scripts/check-rule-copies.js
npm test

Пакет навыков OpenClaw (.openclaw/skills/) генерируется из папки skills/; после изменения навыка перезапустите node scripts/build-openclaw-skills.js. Если он устарел, тестовый набор провалится. Чтобы опубликовать навыки на ClawHub, выполните clawhub login один раз, затем node scripts/publish-openclaw-skills.js (он публикует все шесть навыков с версией из package.json; используйте --dry-run, чтобы предварительно просмотреть).

Бенчмарк корректности запускает Python для проверок электронной почты и CSV; сначала пробуется python3, затем python. Проверки CSV требуют локально установленного pandas.

Часто задаваемые вопросы

Могу ли я использовать его с caveman? Да, и вы должны. Caveman сокращает то, что говорит агент; ponytail сокращает то, что он строит. Разные половины, без пересечений: caveman оставляет код точным до байта, ponytail не вмешивается в текст. Лаконичные разговоры о минимальном коде.

Ему нужен файл конфигурации? Нет. Опциональный файл ~/.config/ponytail/config.json или переменная окружения PONYTAIL_DEFAULT_MODE могут установить уровень по умолчанию, но ничего не требуется.

А если мне действительно нужен класс кэша на 120 строк? Вам не нужен. Настаивайте всё равно, и он построит его. Медленно. Правильно. Глядя на вас.

Это масштабируется? Код, который вы никогда не написали, масштабируется бесконечно. Нулевые баги, нулевые уязвимости, 100% доступность с давних пор.

Почему "ponytail"? Вы точно знаете почему.

Спонсоры

GreenPT

Лицензия

MIT. Самая короткая работающая лицензия.

История звезд

Star History Chart

Войдите, чтобы оставить комментарий