Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
<p align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png"> <img src="assets/logo.png" width="220" alt="Ponytail, the lazy senior dev"> </picture> </p>
<h1 align="center">Ponytail</h1>
<p align="center"> <em>그는 아무 말도 하지 않는다. 한 줄을 작성한다. 작동한다.</em> </p>
<p align="center"> <strong>~54% 적은 코드 (최대 94%) · ~20% 저렴 · ~27% 빠름 · 100% 안전</strong><br> <sub>실제 Claude Code 세션에서 실제 오픈소스 저장소(FastAPI + React)를 편집하며, 스킬이 없는 동일한 에이전트와 비교하여 측정했습니다. ~54%는 12개의 기능 작업에 대한 평균값(Haiku 4.5, n=4)입니다. 에이전트가 과도하게 빌드하는 경우(날짜 선택기) 94%에 도달하며, 코드가 이미 최소화된 경우 거의 0에 가깝습니다. ponytail은 모든 안전 장치를 유지하는 반면, 단순한 "한 줄짜리 작성" 프롬프트는 하나를 떨어뜨립니다. (이전 단일 샷 벤치마크는 80-94%를 평평한 수치로 보고했습니다. 공정한 에이전틱 기준선과 비교하면 작업별 상한선이지 평균이 아닙니다.) <a href="benchmarks/results/2026-06-18-agentic.md">전체 보고서</a> · <a href="benchmarks/">재현하기</a>.</sub> </p>
<p align="center"> <a href="https://ponytail.dev/soon"><img src="assets/waitlist-banner.png" alt="무언가 곧 출시됩니다, 대기자 명단에 등록하세요" width="760"></a> </p>
당신은 그를 알고 있습니다. 긴 포니테일. 둥근 안경. 회사에 버전 관리 시스템보다 오래 있었습니다. 당신이 50줄의 코드를 보여주면, 그는 그것을 보고 아무 말 없이 한 줄로 대체합니다.
Ponytail은 그를 당신의 AI 에이전트 안에 넣습니다.
날짜 선택기를 요청합니다. 에이전트가 flatpickr를 설치하고, 래퍼 컴포넌트를 작성하고, 스타일시트를 추가하고, 시간대에 대한 논의를 시작합니다.
ponytail을 사용하면:
<!-- ponytail: 브라우저에 이미 있음 -->
<input type="date">
더 많은 생존 사례는 examples/에서 확인하세요.
정직한 측정은 실제 에이전트가 실제 작업을 수행하는 것입니다: tiangolo의 full-stack-fastapi-template (실제 FastAPI + React 저장소)을 편집하는 헤드리스 Claude Code 세션으로, 남긴 git diff를 기준으로 점수를 매깁니다. 12개의 기능 티켓, 동일한 에이전트를 스킬 유무에 따라 비교, n=4, Haiku 4.5.
<p align="center"> <img src="assets/benchmark-agentic.svg" width="860" alt="각 항목을 스킬 없는 기준선 대비 백분율로 표시 (LOC, 토큰, 비용, 시간). ponytail은 모든 지표에서 가장 낮음 (LOC 46%, 토큰 78%, 비용 80%, 시간 73%); caveman은 토큰, 비용, 시간에서 100% 초과; yagni-oneliner LOC 67%. 안전성은 별도의 적대적 계층: 기준선, caveman, ponytail 100%, yagni-oneliner 95%."> </p>
| vs 스킬 없는 기준선 | 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>을 사용하기 때문) 그리고 이미 최소화된 코드에서는 거의 0에 가깝습니다. 전체 방법, 작업별 표 및 제한 사항: benchmarks/results/2026-06-18-agentic.md.
<details> <summary><strong>이전 단일 샷 수치 (격리된 생성)</strong></summary>
다섯 가지 일상적인 작업, 세 가지 모델, 세 가지 항목 (스킬 없음, caveman, ponytail), 10회 실행, 중앙값 보고. 하나의 프롬프트, 하나의 완료, 답변의 줄 수 계산:
<p align="center"> <img src="assets/benchmark-3model.svg" width="860" alt="Haiku, Sonnet, Opus에 대한 항목별 코드 줄 중앙값"> </p>
이는 80-94% 적은 코드를 보여주었습니다. #126은 기본 모델 기준선이 답변에 산문과 옵션을 추가하므로 그 차이가 부분적으로 대화 기준선 아티팩트라고 지적했습니다. 위의 에이전틱 수치는 수정되고 방어 가능한 버전입니다. npx promptfoo eval -c benchmarks/promptfooconfig.yaml로 단일 샷 실행을 재현하세요.
</details>
규칙은 결코 "최소 토큰"이 아니었습니다. 그것은: 작업에 필요한 것만 작성하고, 유효성 검사, 오류 처리, 보안 또는 접근성을 절대 삭제하지 않는 것입니다. 코드는 골프를 친 것이 아니라 필요하기 때문에 작아집니다. 비용과 지연 시간 감소는 사다리를 따르는 모델의 부작용입니다. 사다리 단계를 숙고하는 데 생각 토큰을 소비하는 간결한 추론 모델은 반대 방향으로 갈 수 있습니다 (GPT-5.5에서는 그렇게 됩니다).
코드를 작성하기 전에 에이전트는 다음 사다리의 첫 번째 단계에서 멈춥니다:
1. 이것이 존재해야 하는가? → 아니오: 건너뛰기 (YAGNI)
2. 이미 이 코드베이스에 있는가? → 재사용, 다시 작성하지 않음
3. 표준 라이브러리가 하는가? → 사용
4. 네이티브 플랫폼 기능인가? → 사용
5. 설치된 의존성인가? → 사용
6. 한 줄인가? → 한 줄
7. 그때서야: 작동하는 최소한의 것
사다리는 문제를 이해한 후에 실행되며, 그 대신이 아닙니다: 변경이 적용되는 코드를 읽고 단계를 선택하기 전에 실제 흐름을 추적합니다. 솔루션에는 게으르지만, 읽기에는 절대 게으르지 않습니다.
게으르지만, 태만하지 않음: 신뢰 경계 유효성 검사, 데이터 손실 처리, 보안 및 접근성은 절대 삭제 대상이 아닙니다.
ponytail이 당신에게 요구할 가장 큰 노력:
Claude Code 및 Codex 플러그인은 두 개의 작은 Node.js 라이프사이클 훅을 실행하므로 node가 PATH에 있어야 합니다 (Nix/nvm 사용자 참고: 비대화형 셸의 PATH에 있어야 함). 그렇지 않으면 스킬은 여전히 작동하지만, 항상 켜진 활성화는 모든 프롬프트에서 오류를 발생시키는 대신 조용히 유지됩니다.
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
(설치가 작동하려면 두 개의 별도 프롬프트를 보내야 합니다)
데스크톱 앱에는 /plugin 명령이 없습니다. 대신 UI에서 설치하세요: 사용자 지정, 개인 플러그인 옆의 +, 플러그인 생성 및 마켓플레이스 추가, 저장소에서 추가, 저장소 URL 입력 (감사합니다 @NiklasDHahn, #98).
codex plugin marketplace add DietrichGebert/ponytail
codex
/plugins를 열고, Ponytail 마켓플레이스를 선택하고, Ponytail을 설치하세요. 그런 다음 /hooks를 열고, 두 개의 라이프사이클 훅을 검토 및 신뢰하고, 새 스레드를 시작하세요.
이 동일한 설치는 Codex 데스크톱 앱에도 적용됩니다: 설치 후 앱을 다시 시작하면 플러그인을 인식합니다.
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 install git:github.com/DietrichGebert/ponytail
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 extensions install https://github.com/DietrichGebert/ponytail
매 세션마다 항상 켜진 컨텍스트로 규칙 세트를 로드하고 /ponytail 명령을 등록합니다. skills/도 함께 제공되며, 작업에 필요할 때 활성화됩니다.
Gemini 어댑터는 의도적으로 루트 hooks/hooks.json을 제공하지 않습니다: Gemini는 해당 경로를 자동 로드하는 반면, Ponytail의 라이프사이클 훅은 Claude/Codex 이벤트 이름을 사용합니다.
Google은 Gemini CLI를 Antigravity CLI(agy 바이너리)로 이름을 변경하고 있습니다. 동일한 확장이 거기에 설치됩니다:
agy plugin install https://github.com/DietrichGebert/ponytail
이 저장소의 gemini-extension.json을 재사용합니다. 한 가지 차이점: Antigravity는 /ponytail 명령을 스킬로 변환하므로 슬래시 메뉴에서 선택하는 대신 채팅에 입력합니다 (예: 메시지로 /ponytail-review). 마이그레이션이 완료될 때까지 (2026년 6월 18일경) gemini extensions install도 여전히 작동합니다. 대신 항상 켜진 규칙으로 실행하려면 규칙 세트를 .agents/rules/에 넣으세요.
hermes plugins install DietrichGebert/ponytail --enable
설치 후 Hermes를 다시 시작하세요. 플러그인은 각 LLM 턴 전에 활성 Ponytail 모드를 주입하고, 번들 스킬을 ponytail:<skill>로 등록하며, /ponytail, /ponytail-review, /ponytail-audit, /ponytail-debt, /ponytail-gain, /ponytail-help를 추가합니다. 공유 게이트웨이에서는 Hermes 슬래시 명령 접근 제어로 신뢰할 수 있는 사용자로 /ponytail을 제한하세요. 런타임 모드는 프로세스 로컬입니다.
프로젝트 루트에서 AGENTS.md를 읽습니다. 설정이 필요 없습니다. AGENTS.md를 프로젝트에 복사하거나 이 저장소의 체크아웃에서 codewhale을 실행하세요. 그게 전부입니다.
먼저 라이브러리에 컬렉션을 스테이징한 다음 원하는 스킬을 추가하세요:
swival skills add --global https://github.com/DietrichGebert/ponytail # ~/.config/swival/library에 스테이징
swival skills add ponytail # 이 프로젝트에 컬렉션 설치
swival skills add --global ponytail # 또는 모든 프로젝트에서 활성화
Swival은 또한 프로젝트 루트의 AGENTS.md와 전역적으로 ~/.config/swival/AGENTS.md를 읽습니다. 명령어 전용 폴백입니다.
명령줄에서는 $ 접두사를 사용하여 스킬을 명시적으로 활성화합니다. 예: $ponytail-review.
devin plugins install DietrichGebert/ponytail
Devin 플러그인으로 ponytail을 설치합니다. 스킬은 /ponytail:ponytail, /ponytail:ponytail-review 등으로 사용할 수 있습니다.
clawhub install ponytail
ClawHub에서 OpenClaw 스킬로 ponytail을 설치합니다. 리뷰, 감사, 부채, 이득 및 도움말 스킬도 같은 방식으로 설치됩니다 (clawhub install ponytail-review 등). OpenClaw는 코딩 작업에 적용하고 /ponytail 명령으로도 노출합니다. ClawHub가 없으면 .openclaw/skills/ponytail을 ~/.openclaw/skills/에 복사하세요.
그게 전부입니다. 그는 자랑스러워할 것입니다. 그는 말하지 않겠지만.
매 세션마다 활성화되며, 몇 가지 명령이 있습니다 (Commands 참조).