Compare commits

...
Author SHA1 Message Date
DietrichGebert 16f6cbf4b8 docs(benchmarks): add Independent benchmarks section (#460)
Curated, plugin-installed third-party runs (KuldeepB19, RicardoCostaGit) with
method, headline, and date, clearly framed as independent corroboration not
official figures. Gives the recurring 'did anyone independent check this?' ask
a canonical home.

Closes #121
Closes #236
2026-06-30 02:04:48 +02:00
nanaubusinessandAdmin 85cc1d9935 fix: copilot-plugin test checks all 6 command files (#393)
Previously only checked 4 of 6. ponytail-gain.toml and
ponytail-help.toml are now validated.

Closes #381

Co-authored-by: Admin <admin@Admins-MacBook-Pro.local>
2026-06-30 00:21:09 +02:00
DietrichGebert bc9ee949d5 Merge pull request #448 from DietrichGebert/release-4.8.4
release: 4.8.4
2026-06-29 07:23:36 +02:00
Emeriko c99757a14a release: bump plugin.yaml (Hermes manifest) to 4.8.4 2026-06-29 07:19:46 +02:00
Emeriko 4b7a012626 release: bump .devin-plugin to 4.8.4 2026-06-29 07:15:31 +02:00
Emeriko 801d976c69 release: 4.8.4 2026-06-29 07:12:58 +02:00
DietrichGebert adad1e451a Merge pull request #447 from DietrichGebert/fix-skill-trigger-recall
Trigger ponytail skill on any coding task, not just keywords
2026-06-29 07:08:50 +02:00
10 changed files with 26 additions and 8 deletions
+1 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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"
+16
View File
@@ -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 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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",
+2
View File
@@ -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) {