Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16f6cbf4b8 | ||
|
|
85cc1d9935 | ||
|
|
bc9ee949d5 | ||
|
|
c99757a14a | ||
|
|
4b7a012626 | ||
|
|
801d976c69 | ||
|
|
adad1e451a |
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail",
|
"name": "ponytail",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dietrich Gebert",
|
"name": "Dietrich Gebert",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail",
|
"name": "ponytail",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dietrich Gebert",
|
"name": "Dietrich Gebert",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail",
|
"name": "ponytail",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dietrich Gebert",
|
"name": "Dietrich Gebert",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail",
|
"name": "ponytail",
|
||||||
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Dietrich Gebert",
|
"name": "Dietrich Gebert",
|
||||||
"url": "https://github.com/DietrichGebert"
|
"url": "https://github.com/DietrichGebert"
|
||||||
|
|||||||
@@ -70,6 +70,22 @@ Versus baseline, ponytail writes **80-94% less code**, costs **42-75% less**, an
|
|||||||
> while the bare "one-liner" prompt drops a guard. That is the honest, defensible number. See
|
> while the bare "one-liner" prompt drops a guard. That is the honest, defensible number. See
|
||||||
> [results/2026-06-18-agentic.md](results/2026-06-18-agentic.md).
|
> [results/2026-06-18-agentic.md](results/2026-06-18-agentic.md).
|
||||||
|
|
||||||
|
## Independent benchmarks
|
||||||
|
|
||||||
|
Run by other people, not by us, on their own harnesses and machines. Linked for
|
||||||
|
transparency: the numbers are theirs, may shift between runs, and are corroboration
|
||||||
|
rather than official figures. Only plugin-installed runs are listed, since pasting
|
||||||
|
`SKILL.md` into a prompt is a rough approximation of `full` and skews the result.
|
||||||
|
|
||||||
|
| Source | Method | Headline | Date |
|
||||||
|
|---|---|---|---|
|
||||||
|
| [KuldeepB19](https://kuldeepb19.github.io/ponytail-benchmark/) | Installed plugin, 24 tasks, no-skill vs Lite/Full/Ultra, 5 runs each (480 builds), Opus 4.8, graded by executing the code | ~44% less code (53% fewer statements), no correctness or security regression; trims everyday bad-input handling on 5/24 tasks | 2026-06-24 |
|
||||||
|
| [RicardoCostaGit](https://github.com/RicardoCostaGit/ponytail-benchmark-from-cursor) | Multi-turn agentic runs via the Cursor SDK, isolated git worktrees, rule file toggled per run | Leaner output but higher process cost (more tool calls/tokens) on large completion-forced tasks; savings land on blocked/snowball-prone tasks | 2026-06-16 |
|
||||||
|
|
||||||
|
Both land on the same split as the honesty note above: ponytail reliably writes less
|
||||||
|
code, and whether that *saves money* depends on the workload (big win on
|
||||||
|
over-build and blocked tasks, can cost more on large completion-forced agentic runs).
|
||||||
|
|
||||||
## Metrics
|
## Metrics
|
||||||
|
|
||||||
| File | Metric | Behavior |
|
| File | Metric | Behavior |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail",
|
"name": "ponytail",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
"description": "Lazy senior dev mode. Forces the simplest, shortest solution that actually works: YAGNI, stdlib first, no unrequested abstractions.",
|
||||||
"contextFileName": "AGENTS.md"
|
"contextFileName": "AGENTS.md"
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@dietrichgebert/ponytail",
|
"name": "@dietrichgebert/ponytail",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "Lazy senior dev mode for AI agents. The best code is the code you never wrote.",
|
"description": "Lazy senior dev mode for AI agents. The best code is the code you never wrote.",
|
||||||
"keywords": ["opencode-plugin", "opencode", "ponytail", "pi-package", "pi", "skills"],
|
"keywords": ["opencode-plugin", "opencode", "ponytail", "pi-package", "pi", "skills"],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
name: ponytail
|
name: ponytail
|
||||||
version: 4.8.3
|
version: 4.8.4
|
||||||
description: Lazy senior dev mode for Hermes Agent, always-on context, bundled skills, and slash commands.
|
description: Lazy senior dev mode for Hermes Agent, always-on context, bundled skills, and slash commands.
|
||||||
author: Salaamdev
|
author: Salaamdev
|
||||||
provides_hooks:
|
provides_hooks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ponytail-mcp",
|
"name": "ponytail-mcp",
|
||||||
"version": "4.8.3",
|
"version": "4.8.4",
|
||||||
"description": "MCP server that serves Ponytail's lazy-senior-dev instructions as a prompt and a tool.",
|
"description": "MCP server that serves Ponytail's lazy-senior-dev instructions as a prompt and a tool.",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ const REQUIRED_COMMAND_FILES = [
|
|||||||
'ponytail-review.toml',
|
'ponytail-review.toml',
|
||||||
'ponytail-audit.toml',
|
'ponytail-audit.toml',
|
||||||
'ponytail-debt.toml',
|
'ponytail-debt.toml',
|
||||||
|
'ponytail-gain.toml',
|
||||||
|
'ponytail-help.toml',
|
||||||
];
|
];
|
||||||
|
|
||||||
function readJSON(relPath) {
|
function readJSON(relPath) {
|
||||||
|
|||||||
Reference in New Issue
Block a user