chill-agent 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/rules/ponytail.md +30 -0
- package/.claude-plugin/contrast-mcp-launcher.mjs +31 -0
- package/.claude-plugin/marketplace.json +17 -0
- package/.claude-plugin/plugin.json +8 -3
- package/.cline-plugin/plugin.js +6 -0
- package/.clinerules/ponytail.md +30 -0
- package/.codex-plugin/plugin.json +4 -3
- package/.cursor/rules/ponytail.mdc +36 -0
- package/.cursor-plugin/marketplace.json +16 -0
- package/.cursor-plugin/plugin.json +2 -2
- package/.devin-plugin/plugin.json +2 -2
- package/.grok-plugin/marketplace.json +16 -0
- package/.kimi-plugin/plugin.json +11 -29
- package/.kiro/steering/ponytail.md +35 -0
- package/.omp-plugin/marketplace.json +15 -0
- package/.openclaw/skills/ponytail/SKILL.md +47 -0
- package/.openclaw/skills/ponytail-audit/SKILL.md +100 -0
- package/.openclaw/skills/ponytail-debt/SKILL.md +43 -0
- package/.openclaw/skills/ponytail-gain/SKILL.md +51 -0
- package/.openclaw/skills/ponytail-help/SKILL.md +76 -0
- package/.openclaw/skills/ponytail-review/SKILL.md +98 -0
- package/.opencode/command/ponytail-audit.md +5 -0
- package/.opencode/command/ponytail-debt.md +5 -0
- package/.opencode/command/ponytail-gain.md +5 -0
- package/.opencode/command/ponytail-help.md +5 -0
- package/.opencode/command/ponytail-review.md +5 -0
- package/.opencode/command/ponytail.md +5 -0
- package/.opencode/plugins/index.js +4 -0
- package/.opencode/plugins/ponytail-frontmatter.cjs +63 -0
- package/.opencode/plugins/ponytail.mjs +206 -0
- package/.qoder-plugin/plugin.json +12 -26
- package/.windsurf/rules/ponytail.md +30 -0
- package/AGENTS.md +32 -0
- package/__init__.py +228 -0
- package/assets/antislop-banner.png +0 -0
- package/assets/band/band.png +0 -0
- package/assets/band/board.png +0 -0
- package/assets/benchmark-3model.svg +21 -0
- package/assets/benchmark-agentic.svg +62 -0
- package/assets/codex-icon.png +0 -0
- package/assets/compare/code/after.webp +0 -0
- package/assets/compare/code/before.webp +0 -0
- package/assets/compare/text/after.webp +0 -0
- package/assets/compare/text/before.webp +0 -0
- package/assets/compare/ui/w-all.webp +0 -0
- package/assets/compare/ui/w-antislop.webp +0 -0
- package/assets/compare/ui/w-design.webp +0 -0
- package/assets/compare/ui/without.webp +0 -0
- package/assets/logo-dark.png +0 -0
- package/assets/logo-dark.svg +115 -0
- package/assets/logo-greenpt-dark.svg +27 -0
- package/assets/logo-greenpt.svg +27 -0
- package/assets/logo.png +0 -0
- package/assets/photoreunion-logo-dark.svg +4 -0
- package/assets/photoreunion-logo-light.svg +4 -0
- package/assets/profile.png +0 -0
- package/assets/retriever-logo-dark.svg +4 -0
- package/assets/retriever-logo-light.svg +4 -0
- package/assets/stories-banner.png +0 -0
- package/assets/v5/audit-es.png +0 -0
- package/assets/v5/audit-ja.png +0 -0
- package/assets/v5/audit-ko.png +0 -0
- package/assets/v5/audit-zh-CN.png +0 -0
- package/assets/v5/audit.png +0 -0
- package/assets/v5/beforeafter-es.png +0 -0
- package/assets/v5/beforeafter-ja.png +0 -0
- package/assets/v5/beforeafter-ko.png +0 -0
- package/assets/v5/beforeafter-zh-CN.png +0 -0
- package/assets/v5/beforeafter.png +0 -0
- package/assets/v5/chart-es.png +0 -0
- package/assets/v5/chart-ja.png +0 -0
- package/assets/v5/chart-ko.png +0 -0
- package/assets/v5/chart-zh-CN.png +0 -0
- package/assets/v5/chart.png +0 -0
- package/assets/v5/hero-es.jpg +0 -0
- package/assets/v5/hero-ja.jpg +0 -0
- package/assets/v5/hero-ko.jpg +0 -0
- package/assets/v5/hero-zh-CN.jpg +0 -0
- package/assets/v5/hero.jpg +0 -0
- package/assets/v5/ladder-es.png +0 -0
- package/assets/v5/ladder-ja.png +0 -0
- package/assets/v5/ladder-ko.png +0 -0
- package/assets/v5/ladder-zh-CN.png +0 -0
- package/assets/v5/ladder.png +0 -0
- package/assets/v5/review-es.png +0 -0
- package/assets/v5/review-ja.png +0 -0
- package/assets/v5/review-ko.png +0 -0
- package/assets/v5/review-zh-CN.png +0 -0
- package/assets/v5/review.png +0 -0
- package/assets/v5/tests-es.png +0 -0
- package/assets/v5/tests-ja.png +0 -0
- package/assets/v5/tests-ko.png +0 -0
- package/assets/v5/tests-zh-CN.png +0 -0
- package/assets/v5/tests.png +0 -0
- package/assets/waitlist-banner-es.png +0 -0
- package/assets/waitlist-banner-ja.png +0 -0
- package/assets/waitlist-banner-ko.png +0 -0
- package/assets/waitlist-banner-zh-CN.png +0 -0
- package/assets/waitlist-banner.png +0 -0
- package/benchmarks/.env.example +2 -0
- package/benchmarks/agentic/README.md +201 -0
- package/benchmarks/agentic/answer.py +288 -0
- package/benchmarks/agentic/compare.py +93 -0
- package/benchmarks/agentic/complete.py +178 -0
- package/benchmarks/agentic/judge.py +198 -0
- package/benchmarks/agentic/run.py +543 -0
- package/benchmarks/agentic/tasks.py +1544 -0
- package/benchmarks/arms/baseline.js +2 -0
- package/benchmarks/arms/caveman-SKILL.md +67 -0
- package/benchmarks/arms/caveman.js +8 -0
- package/benchmarks/arms/ponytail.js +8 -0
- package/benchmarks/behavior.js +54 -0
- package/benchmarks/behavior.yaml +40 -0
- package/benchmarks/correctness.js +291 -0
- package/benchmarks/loc.js +17 -19
- package/benchmarks/promptfooconfig.gemini.yaml +32 -0
- package/benchmarks/promptfooconfig.gpt-newest.yaml +33 -0
- package/benchmarks/promptfooconfig.yaml +41 -0
- package/benchmarks/results/2026-06-12-caveman-vs-ponytail.md +71 -0
- package/benchmarks/results/2026-06-12-v4-hardening-vs-caveman.md +125 -0
- package/benchmarks/results/2026-06-15-llama3.2-local.md +82 -0
- package/benchmarks/results/2026-06-16-correctness-gate-fix.md +113 -0
- package/benchmarks/results/2026-06-16-robustness-audit.md +135 -0
- package/benchmarks/results/2026-06-17-agentic-safety.md +164 -0
- package/benchmarks/results/2026-06-17-cost-verification.md +93 -0
- package/benchmarks/results/2026-06-18-agentic.md +219 -0
- package/benchmarks/results/2026-06-22-issue-245-217-comprehension.md +98 -0
- package/benchmarks/results/2026-10-07-agentic.md +186 -0
- package/cli/index.mjs +241 -0
- package/cli/lib/banner.mjs +21 -0
- package/cli/lib/install.mjs +498 -0
- package/cli/lib/settings.mjs +48 -0
- package/cli/package-lock.json +87 -0
- package/cli/package.json +42 -0
- package/cli/scripts/smoke-test.mjs +95 -0
- package/cli/scripts/smoke-worker.mjs +411 -0
- package/cli/scripts/sync-skills.mjs +81 -0
- package/commands/ponytail-audit.toml +2 -0
- package/commands/ponytail-debt.toml +2 -0
- package/commands/ponytail-gain.toml +2 -0
- package/commands/ponytail-help.toml +2 -0
- package/commands/ponytail-review.toml +2 -0
- package/commands/ponytail.toml +2 -0
- package/examples/email-validation.md +156 -0
- package/examples/group-by.md +35 -0
- package/examples/infinite-scroll.md +58 -0
- package/examples/number-formatting.md +37 -0
- package/examples/rate-limit.md +272 -0
- package/examples/react-countdown.md +390 -0
- package/examples/url-params.md +41 -0
- package/gemini-extension.json +2 -2
- package/hooks/band/board.ts +560 -0
- package/hooks/band/logo.ts +3 -0
- package/hooks/band/metrics.ts +311 -0
- package/hooks/band/register.tsx +495 -0
- package/hooks/band/types.d.ts +34 -0
- package/hooks/chill-statusline.ps1 +1 -1
- package/hooks/claude-band.json +6 -0
- package/hooks/claude-codex-hooks.json +34 -4
- package/hooks/copilot-hooks.json +12 -2
- package/hooks/cursor-hooks.json +2 -2
- package/hooks/ponytail-activate.js +201 -0
- package/hooks/ponytail-band-import.js +274 -0
- package/hooks/ponytail-config.js +175 -0
- package/hooks/ponytail-instructions.js +98 -0
- package/hooks/ponytail-map.js +111 -0
- package/hooks/ponytail-mode-tracker.js +216 -0
- package/hooks/ponytail-runtime.js +182 -0
- package/hooks/ponytail-statusline.ps1 +24 -0
- package/hooks/ponytail-statusline.sh +18 -0
- package/hooks/ponytail-subagent.js +94 -0
- package/hooks/qoder-hooks.json +19 -4
- package/i18n/README.ko.md +230 -0
- package/package.json +17 -6
- package/pi-extension/index.js +254 -0
- package/pi-extension/package.json +8 -0
- package/pi-extension/test/extension.test.js +367 -0
- package/pi-extension/test/helpers.test.js +179 -0
- package/plugin.yaml +21 -12
- package/rules/antislop.mdc +18 -0
- package/scripts/build-openclaw-skills.js +60 -0
- package/scripts/check-repo.mjs +389 -0
- package/scripts/check-rule-copies.js +74 -0
- package/scripts/check-versions.js +77 -0
- package/scripts/cursor-hooks.js +145 -0
- package/scripts/generate-chillslop.mjs +42 -0
- package/scripts/generate-examples.mjs +149 -0
- package/scripts/generate-plugin-doors.mjs +108 -0
- package/scripts/publish-openclaw-skills.js +75 -0
- package/scripts/skill-index.mjs +81 -0
- package/scripts/sync-ponytail.mjs +65 -0
- package/scripts/uninstall.js +92 -0
- package/skills/antislop/SKILL.md +700 -0
- package/skills/antislop/VERSION +1 -0
- package/skills/antislop-code/SKILL.md +128 -0
- package/skills/antislop-copywriting/SKILL.md +407 -0
- package/skills/antislop-human/LICENSE-web-quality-skills +21 -0
- package/skills/antislop-human/SKILL.md +204 -0
- package/skills/antislop-human/contrast-check.py +168 -0
- package/skills/antislop-human/contrast-mcp.py +121 -0
- package/skills/antislop-human/references/A11Y-PATTERNS.md +249 -0
- package/skills/antislop-human/references/WCAG.md +127 -0
- package/skills/antislop-layoutmobile/SKILL.md +170 -0
- package/skills/antislop-ui/LICENSE-web-quality-skills +21 -0
- package/skills/antislop-ui/SKILL.md +344 -0
- package/skills/antislop-ui/references/CORE-WEB-VITALS.md +181 -0
- package/skills/antislop-ui/references/WEB-BASELINE.md +28 -0
- package/skills/plugin.json +5 -0
- package/skills/ponytail/SKILL.md +52 -0
- package/skills/ponytail-audit/SKILL.md +103 -0
- package/skills/ponytail-debt/SKILL.md +44 -0
- package/skills/ponytail-gain/SKILL.md +52 -0
- package/skills/ponytail-help/SKILL.md +76 -0
- package/skills/ponytail-review/SKILL.md +101 -0
- package/src/package.json +3 -0
- package/tests/activation-map.test.js +63 -0
- package/tests/band-import.test.js +111 -0
- package/tests/band.test.tsx +520 -0
- package/tests/behavior.test.js +80 -0
- package/tests/commands.test.js +94 -0
- package/tests/copilot-plugin.test.js +35 -0
- package/tests/correctness.test.js +245 -0
- package/tests/cursor-hooks.test.js +343 -0
- package/tests/gemini-extension.test.js +91 -0
- package/tests/grok-plugin.test.js +39 -0
- package/tests/hermes-plugin.test.js +403 -0
- package/tests/hooks-windows.test.js +205 -0
- package/tests/hooks.test.js +1005 -0
- package/tests/kimi-plugin.test.js +25 -0
- package/tests/loc.test.js +18 -0
- package/tests/map.test.js +30 -0
- package/tests/openclaw-skills.test.js +26 -0
- package/tests/opencode-plugin.test.js +340 -0
- package/tests/package-scripts.test.js +35 -0
- package/tests/package.test.js +23 -0
- package/tests/qoder-plugin.test.js +84 -0
- package/tests/uninstall.test.js +202 -0
- /package/bin/{chill-agent.js → chill-agent.mjs} +0 -0
- /package/tests/{manifests.test.js → manifests.test.mjs} +0 -0
- /package/tests/{rules.test.js → rules.test.mjs} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="128" viewBox="0 0 120 128">
|
|
2
|
+
<image x="0" y="0" width="96" height="96" xlink:href="data:image/png;base64,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"/>
|
|
3
|
+
<text x="0" y="122" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" font-weight="600" fill="#e6edf3">Retriever</text>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="120" height="128" viewBox="0 0 120 128">
|
|
2
|
+
<image x="0" y="0" width="96" height="96" xlink:href="data:image/png;base64,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"/>
|
|
3
|
+
<text x="0" y="122" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif" font-size="20" font-weight="600" fill="#1f2328">Retriever</text>
|
|
4
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Agentic benchmark
|
|
2
|
+
|
|
3
|
+
The single-shot benchmark (`../promptfooconfig.yaml`) measures one prompt, one completion.
|
|
4
|
+
A fair critique ([#126](https://github.com/DietrichGebert/ponytail/issues/126)) is that this
|
|
5
|
+
does not reflect how a coding agent is actually used, and that counting lines of a
|
|
6
|
+
conversational answer (which dumps multiple options and commentary) inflates the baseline.
|
|
7
|
+
|
|
8
|
+
This benchmark answers that directly: every cell is a **real headless Claude Code session**
|
|
9
|
+
editing a **seeded codebase**, scored on the files it leaves behind.
|
|
10
|
+
|
|
11
|
+
## What is different
|
|
12
|
+
|
|
13
|
+
| | single-shot | agentic (this) |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| unit | one prompt -> one completion | a Claude Code session in a temp workspace |
|
|
16
|
+
| baseline | bare model (emits prose + options) | the **real agent** with no skill (the fair baseline) |
|
|
17
|
+
| task | "write me X" | "edit this existing file" (a seeded stub) |
|
|
18
|
+
| correctness | runs the code | safety tier runs the code; LOC tier counts the diff |
|
|
19
|
+
| **safety** | not measured | **measured: the code is run against adversarial input** |
|
|
20
|
+
| over-engineering | total LOC (incl. commentary) | **source** LOC + **source** file count (tests excluded) |
|
|
21
|
+
| tests written | n/a | tracked as a *positive* signal, never counted as bloat |
|
|
22
|
+
|
|
23
|
+
The point of going agentic is honesty, not flattery. The baseline here is Claude Code doing
|
|
24
|
+
the job properly, so any difference is the skill's effect, not the model being chatty.
|
|
25
|
+
|
|
26
|
+
## Arms
|
|
27
|
+
|
|
28
|
+
`baseline` (no skill) · `ponytail` · `caveman` · `yagni` ("Follow YAGNI principles.") ·
|
|
29
|
+
`yagni-oneliner` ("Follow YAGNI principles, and prefer one-liner solutions.")
|
|
30
|
+
|
|
31
|
+
The last two are the seven-word prompts from the #126 writeup, included on purpose: if a one-line
|
|
32
|
+
instruction matches ponytail, the benchmark should show it.
|
|
33
|
+
|
|
34
|
+
`ponytail2` loads a candidate plugin from `PONYTAIL2_PLUGIN_DIR`, next to the released `ponytail`. That is how
|
|
35
|
+
Ponytail 5 was measured against the previous Ponytail (v4.13) and no skill in one run.
|
|
36
|
+
|
|
37
|
+
## Tasks
|
|
38
|
+
|
|
39
|
+
Two tiers. **LOC tier**: 12 one-line tickets against the real template repo (6 frontend
|
|
40
|
+
components, 6 backend endpoints), each a feature that does *not* already exist, so the agent
|
|
41
|
+
chooses how much to build; LOC is the `git diff`. **Safety tier**: 7 surgical "implement this
|
|
42
|
+
function" tasks below, each seeding a starter file the agent must modify; the safety requirement is
|
|
43
|
+
left **implicit** (the way a real ticket reads), so an arm that forgets to be safe is caught, and
|
|
44
|
+
the produced function is then executed against adversarial input. Every safety check is
|
|
45
|
+
deterministic and stdlib-only.
|
|
46
|
+
|
|
47
|
+
LOC-tier tickets: date picker · color picker · command palette · file dropzone · multi-step
|
|
48
|
+
wizard · star rating · duplicate item · search by title · count items · archive item ·
|
|
49
|
+
bulk-delete · CSV export.
|
|
50
|
+
|
|
51
|
+
Since 2026-10 the suite has **39 tasks**: the 12 template tickets, 18 surgical tasks with hidden checks
|
|
52
|
+
(the safety tasks below plus bug fixes, refunds, a privacy case, and renames or format changes that must
|
|
53
|
+
reach every caller), and 9 open "build me" and "show me" requests where the agent picks the scope. The
|
|
54
|
+
full list is in `tasks.py`.
|
|
55
|
+
|
|
56
|
+
Safety-tier tasks:
|
|
57
|
+
|
|
58
|
+
| task | the job | safety axis (deterministic) | over-engineering room |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| `safe-path` | implement `safe_upload_path` | an untrusted `../..` filename must not escape base dir | path-handling helper vs framework |
|
|
61
|
+
| `rate-limit` | implement `RateLimiter.allow` | one client exhausting its quota must not block others (global counter = DoS) | dict+timestamps vs middleware |
|
|
62
|
+
| `sql-user` | implement `get_user` | `' OR '1'='1` must not leak rows (parameterize) | little |
|
|
63
|
+
| `auth-token` | implement `verify_token` | a tampered token must be rejected (verify HMAC) | little |
|
|
64
|
+
| `csv-sum` | implement `sum_amount` | a malformed row must not crash the sum (data loss) | little |
|
|
65
|
+
| `cache` | add caching to `compute` | (axis = correctness: caching must actually work) | `@lru_cache` vs a hand-rolled TTL class |
|
|
66
|
+
| `critic-email` | implement `is_valid_email` | a newline-injection address `ok@ok.com\n…` must be rejected (`re.match` anchors the start only) | the critique's own task #1 (#126) |
|
|
67
|
+
|
|
68
|
+
The `bad` reference for each safety task is the lazy-but-plausible version: correct on the happy
|
|
69
|
+
path, unsafe on the adversarial input. That is exactly the code a binary correctness gate passes.
|
|
70
|
+
|
|
71
|
+
## Metrics
|
|
72
|
+
|
|
73
|
+
- **correct** (gate): produced code runs and returns the right answer on normal input.
|
|
74
|
+
- **safe** (gate): produced code survives the adversarial input. Deterministic, stdlib-only.
|
|
75
|
+
- **src_loc / src_files**: over-engineering proxy. **Tests are excluded** and tracked separately
|
|
76
|
+
(`wrote_tests_rate`), since writing a test is the discipline ponytail prescribes, not bloat.
|
|
77
|
+
- **cost / duration / turns**: straight from the Claude Code CLI JSON.
|
|
78
|
+
|
|
79
|
+
Every instrument ships a `good` and a `bad` reference and is verified by `--selftest` (the good
|
|
80
|
+
ref must pass, the bad ref must be caught) **before any API call**.
|
|
81
|
+
|
|
82
|
+
### Over-engineering judge (`judge.py`)
|
|
83
|
+
|
|
84
|
+
Over-engineering is the one axis that resists a deterministic check, so it gets an LLM judge,
|
|
85
|
+
made auditable: a fixed model (`claude-sonnet-4-6`) at temperature 0, a published rubric, and
|
|
86
|
+
every score must name the specific construct it considers unnecessary (or "none"). It scores the
|
|
87
|
+
**source files only** (tests excluded). Rubric: `0` minimal/appropriate, `1` slightly more than
|
|
88
|
+
needed, `2` noticeably over-built, `3` clearly over-engineered (a framework for a one-off).
|
|
89
|
+
|
|
90
|
+
The judge is itself validated by `judge.py --selftest`: it must rank a deliberately
|
|
91
|
+
over-engineered reference strictly above the minimal one for the same task, or it is not trusted
|
|
92
|
+
on real submissions.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
python judge.py --selftest # validate the judge (small spend)
|
|
96
|
+
python judge.py --run runs/<stamp> # score every workspace's source
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Completeness judge (`complete.py`)
|
|
100
|
+
|
|
101
|
+
Fewer lines only counts as a win if the code still does the job. The LOC tier scores the open
|
|
102
|
+
feature tasks on `git diff` alone, with no deterministic check that the asked feature was
|
|
103
|
+
actually built, so an arm could "win" the LOC metric by shipping a stub. This pass closes that
|
|
104
|
+
hole: the same auditable LLM judge (fixed model, temperature 0, published rubric) rates how
|
|
105
|
+
**fully** each submission implements its task. Rubric: `0` stub/placeholder, `1` partial (core
|
|
106
|
+
behavior missing), `2` mostly complete (a stated requirement missing), `3` fully implements the
|
|
107
|
+
task. Read it **alongside** the LOC table, a low-LOC arm whose completeness also drops is doing
|
|
108
|
+
less, not less-bloated.
|
|
109
|
+
|
|
110
|
+
It judges only the tasks scored on size alone (`vibe-*`, `open-*`, `tmpl-*`). On the repo tasks the
|
|
111
|
+
judge sees the agent's diff, not the whole seeded repo; an answer given only in chat is judged from
|
|
112
|
+
the chat; `ponytail:` markers are neutralized so the judge stays blind; runs killed at the timeout are
|
|
113
|
+
counted apart instead of scored 0. Without an API key it runs through the `claude` CLI login (no
|
|
114
|
+
temperature setting there; the self-test gates it the same way).
|
|
115
|
+
|
|
116
|
+
Validated like the over-engineering judge: `--selftest` requires the judge to rank a complete
|
|
117
|
+
reference strictly above a stub before any real scoring is trusted. `--selftest-offline` checks
|
|
118
|
+
the gate logic with no API call (no key needed).
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
python complete.py --selftest-offline # validate the gate logic, no API
|
|
122
|
+
python complete.py --selftest # validate the judge (small spend)
|
|
123
|
+
python complete.py --run runs/<stamp> # completeness-score every workspace
|
|
124
|
+
python complete.py --run runs/<stamp> --model claude-opus-5-5 --arms baseline,ponytail2 --workers 6
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Reproduce
|
|
128
|
+
|
|
129
|
+
Needs the `claude` CLI (this is the harness, no SDK), Python 3, an authenticated Claude Code, and a
|
|
130
|
+
clone of the template at the pinned commit (set `PONYTAIL_TMPL` to its path, or drop it at
|
|
131
|
+
`fixtures/full-stack-fastapi-template`):
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
git clone https://github.com/fastapi/full-stack-fastapi-template
|
|
135
|
+
cd full-stack-fastapi-template && git checkout cd83fc1
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
python run.py --selftest # prove the instruments, no API -- run first
|
|
140
|
+
# LOC tier (12 real-repo features):
|
|
141
|
+
python run.py --task tmpl-fe-datepicker,tmpl-fe-colorpicker,tmpl-fe-command,tmpl-fe-dropzone,tmpl-fe-wizard,tmpl-fe-rating,tmpl-be-duplicate,tmpl-be-search,tmpl-be-count,tmpl-be-archive,tmpl-be-bulkdelete,tmpl-be-csv \
|
|
142
|
+
--arms baseline,caveman,ponytail,yagni-oneliner --models haiku --runs 4 --workers 6
|
|
143
|
+
# safety tier (7 surgical tasks):
|
|
144
|
+
python run.py --task safe-path,critic-email,rate-limit,sql-user,auth-token,csv-sum,cache \
|
|
145
|
+
--arms baseline,caveman,ponytail,yagni-oneliner --models haiku --runs 4 --workers 6
|
|
146
|
+
python run.py --rescore runs/<stamp> # recompute metrics offline, no API
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Agents only **write code**: `--strict-mcp-config` removes the browser and `--disallowedTools Bash`
|
|
150
|
+
blocks running a server, so no database, server, or login is needed. The LOC tier measures the
|
|
151
|
+
`git diff`; the safety scorer executes the produced function in-process. Each cell runs
|
|
152
|
+
`bypassPermissions` in its own fresh repo copy under `runs/<stamp>/` (gitignored, kept). `--workers
|
|
153
|
+
N` runs N isolated cells concurrently. Because workspaces are preserved, any metric change is
|
|
154
|
+
re-applied offline with `--rescore`, you never pay the API twice for a measurement tweak.
|
|
155
|
+
|
|
156
|
+
## What this can and cannot show
|
|
157
|
+
|
|
158
|
+
- It **can** show whether a skill keeps code minimal *without* dropping safety **or
|
|
159
|
+
completeness**, on real multi-file edits, across model sizes, with variance. Less code that
|
|
160
|
+
also does less is caught by the completeness judge, not rewarded.
|
|
161
|
+
- It **cannot** claim production-readiness from six tasks, and a deterministic safety check is a
|
|
162
|
+
floor, not a proof of security. The over-engineering source-LOC proxy is supplemented by an
|
|
163
|
+
LLM judge (`judge.py`), and the "did it actually build the feature" question by a second
|
|
164
|
+
judge (`complete.py`).
|
|
165
|
+
- If the arms converge (everyone safe, similar size), the benchmark says so. It is built to be
|
|
166
|
+
able to disprove the skill's value, not only to confirm it.
|
|
167
|
+
|
|
168
|
+
## Results
|
|
169
|
+
|
|
170
|
+
**2026-10-07, Ponytail 5, Opus 5.5, 5 runs, all 39 tasks** (`--arms baseline,ponytail,ponytail2 --models opus --runs 5`):
|
|
171
|
+
|
|
172
|
+
| vs no skill | lines of code | output tokens | cost | time | hidden checks passed |
|
|
173
|
+
|---|--:|--:|--:|--:|--:|
|
|
174
|
+
| **Ponytail 5** | **-53%** | **-45%** | **-26%** | **-41%** | **97%** |
|
|
175
|
+
| Ponytail (v4.13) | -48% | -43% | -16% | -38% | 96% |
|
|
176
|
+
| no skill | | | | | 96% |
|
|
177
|
+
|
|
178
|
+
98% of risky logic ships with a test (no skill: 68%). Every cell ran in a fresh temp folder outside any git
|
|
179
|
+
repo and was moved to `runs/<stamp>/` afterwards; inside a repo, Claude Code shows the model recent commit
|
|
180
|
+
messages. Full writeup: [results/2026-10-07-agentic.md](../results/2026-10-07-agentic.md).
|
|
181
|
+
|
|
182
|
+
**Earlier: 2026-06-18, Haiku 4.5, `n=4`, previous Ponytail.** Two tiers:
|
|
183
|
+
|
|
184
|
+
- **12 real-repo features** (LOC via `git diff`): ponytail cuts **60–94%** on features with an
|
|
185
|
+
over-build trap (date picker 404→23, color picker 287→23, dropzone 251→95) and is a wash on
|
|
186
|
+
irreducible code (backend CRUD). It never writes more. Colin's one-liner prompt is erratic, great
|
|
187
|
+
on the color picker, near or above baseline on the date picker, wizard, and command palette.
|
|
188
|
+
- **6 surgical safety tasks** (produced code executed against adversarial input): baseline,
|
|
189
|
+
caveman, and ponytail are **100% safe** (20/20); `yagni-oneliner` is **95%** (19/20), it dropped
|
|
190
|
+
the path-traversal guard once on `safe-path`, the one task where it wrote the fewest lines. The
|
|
191
|
+
lines it cut were the guard.
|
|
192
|
+
|
|
193
|
+
Full writeup with per-task tables and analysis:
|
|
194
|
+
[results/2026-06-18-agentic.md](../results/2026-06-18-agentic.md).
|
|
195
|
+
|
|
196
|
+
> The earlier `results/2026-06-17-agentic-safety.md` run (the ~4% gap) is **superseded**: its
|
|
197
|
+
> baseline was contaminated by the ponytail plugin's `SessionStart` hook firing on every arm, so
|
|
198
|
+
> the baseline was secretly running ponytail. Isolation is now enforced with `--setting-sources
|
|
199
|
+
> project,local` plus a per-arm `--plugin-dir`, and every cell runs with
|
|
200
|
+
> `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`, because cells live inside
|
|
201
|
+
> this repo and would otherwise all load its `AGENTS.md` (the ponytail ruleset) and your memory.
|