Commit Graph
130 Commits
Author SHA1 Message Date
dgebertandClaude Opus 4.8 375827ae17 docs: add Trendshift daily and weekly badges to READMEs
Adds the daily and weekly Trendshift badges to the header badge area of
the English, Spanish, and Korean READMEs. Alt text decoded from %2F to a
plain slash for screen readers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 15:29:21 +02:00
DietrichGebert 025da371cd release: 4.8.3 (#286) v4.8.3 2026-06-24 04:32:12 +02:00
b9fa564429 feat: inject ponytail ruleset into subagents via SubagentStart hook (#254)
* feat: inject ponytail ruleset into subagents via SubagentStart hook

SessionStart additionalContext is parent-thread only, so every Task-spawned
agent ran ponytail-unaware. Add a SubagentStart hook that injects the active
ruleset into each subagent, reusing getPonytailInstructions. Native Claude
needs the hookSpecificOutput JSON form (not raw stdout), so writeHookOutput
grows a SubagentStart branch; readMode exposes the live flag.

Workflow- and team-spawned coverage is undocumented upstream; verify in a
fresh session once installed.

Closes #252

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1dMag33yz1Kf1jS24Aira

* fix: address QA round 1 — make hook tests hermetic + cover Codex SubagentStart

QA round 1 (panel + deepseek-v4-pro) found two real test issues:
- The new subagent block (and the pre-existing claudeEnv block) used a no-op
  `delete env.PLUGIN_DATA`; run() spreads process.env, so a PLUGIN_DATA /
  COPILOT_PLUGIN_DATA leaked from the shell would steer writeHookOutput into the
  codex/copilot branch and silently mis-fire the native-Claude assertions.
  Fixed at the source: neutralize both vars once at the top, like CLAUDE_CONFIG_DIR.
- The Codex SubagentStart branch (claude-codex-hooks.json is shared by both plugin
  manifests) had zero coverage. Added a codex-path assertion.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1dMag33yz1Kf1jS24Aira

* fix: use PowerShell-safe command form for SubagentStart hook

Match the post-#265 'node ...; exit 0' form used by the sibling hooks. The old 'command -v node ... || exit 0' form fails tests/hooks-windows.test.js (POSIX-guard and non-blocking asserts) once this branch merges onto current main.

---------

Co-authored-by: Shane McCarron <shane.mccarron@corvexconnect.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Emeriko <dietrich.gebert@gmail.com>
2026-06-24 04:19:14 +02:00
9d0118df34 docs: add Korean README translation (#283)
* docs: add Korean README translation

Add README.ko.md following the README.es.md convention (community
translation note, English as canonical) and link it from README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(ko): sync translation with current README

Bring README.ko.md up to current English: npm install for OpenCode
(@dietrichgebert/ponytail) + npm badge, drop the obsolete ln -sf command-symlink
note (the plugin self-registers commands since #197), add the Swival section and
the Codex two-prompt install note.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Emeriko <dietrich.gebert@gmail.com>
2026-06-24 03:47:31 +02:00
DietrichGebert a0766a396d docs: npm install + badge for OpenCode, drop obsolete symlink note (#285)
The plugin registers the /ponytail commands itself now (#197), so the manual
ln -sf workaround is obsolete. Add the npm install snippet + version badge,
and bring README.es.md's OpenCode section up to parity with the English one.
2026-06-24 03:30:46 +02:00
DietrichGebert 17e277387d release: 4.8.2 (#284) v4.8.2 2026-06-24 03:19:28 +02:00
DietrichGebert 7d303b7175 ci: publish via npm trusted publishing (OIDC), drop NPM_TOKEN (#282)
Authenticate the release workflow through GitHub OIDC instead of a long-lived
npm token: no secret to leak or rotate, provenance attached automatically.
Upgrade npm on the runner since OIDC publishing needs npm >= 11.5.1 (Node 22
ships npm 10).
2026-06-24 02:58:03 +02:00
DietrichGebert e368c48c52 feat: scope npm package as @dietrichgebert/ponytail (#280)
Publish under a scope you own outright instead of opencode-ponytail (which
sits on a third-party npm account). Matches the GitHub handle and repo.
publishConfig.access is already public, which scoped public packages need.
2026-06-24 02:50:42 +02:00
Dang Trung AnandEmeriko 17a466013e feat: publish ponytail as an installable npm package for OpenCode and Pi (#197)
* feat: register slash commands from .opencode/command/*.md

Add parseCommandFile() to read frontmatter-described markdown files
and wire them into opencode's config.command during init.

Extend the config hook to scan .opencode/command/ and register each
.md file as a named slash command.

Update the plugin doc comment to reflect the npm install path
(opencode-ponytail) vs the old relative path.

* chore: rename package to opencode-ponytail

Align package name with npm convention for opencode plugins.
Update keywords to include opencode-plugin and opencode tags.
Fix description back to original correct wording (grammatical
regression introduced during editing).

* chore: add npm metadata and publish workflow

Add author, homepage, repository, bugs, main, exports, files, and
publishConfig fields to package.json for npm publishing.

Add .github/workflows/publish.yml to auto-publish to npm on version
tags (v*) with provenance.

* docs: add npm plugin install for opencode-ponytail

---------

Co-authored-by: Emeriko <dietrich.gebert@gmail.com>
2026-06-24 02:09:40 +02:00
Haoqian 2b426c6ac9 fix: make shared hooks parse in PowerShell (#265) 2026-06-24 01:42:40 +02:00
Frank Denis 268be28051 docs: add instructions for usage with Swival (#264)
This explains how to use Ponytail with Swival.
2026-06-24 01:14:19 +02:00
DietrichGebert c8b12b6384 fix(pi-extension): guard status bar render when ui has no theme (#279)
syncStatus guarded setStatus but used theme.fg unguarded, so a Pi host
exposing setStatus without a theme threw TypeError on session_start (and
agent_start/agent_end/setMode). Require both before rendering.

Add tests for the render path (previously untested) and the theme-absent
degradation. Follow-up to #275 / #84.
2026-06-24 01:10:04 +02:00
Tanmay Garg 947f2ff4de feat(pi-extension): add status bar indicator for ponytail mode (closes #84) (#275)
Add a syncStatus function to Pi extension to display the current
Ponytail mode in the status bar.

The indicator updates upon mode changes and hooks into the agent_start
and agent_end events to display a visual active/inactive state.
This provides the user with clear feedback on the currently active
Ponytail intensity level (lite, full, ultra) without running commands.
2026-06-24 00:51:23 +02:00
Tanmay Garg 08f0daffbb fix(benchmark): scheme validation to ollama-url (closes #166) (#274)
Add urllib.parse.urlparse to benchmark-local.py and validate that the
provided --ollama-url uses either the http or https scheme.

Fix arbitrary URI handling where the script could previously access
local files (file://) or other unsupported protocols. If the scheme
is invalid, parser.error is called to exit cleanly with a clear message.
2026-06-24 00:44:47 +02:00
Tanmay Gargandgoogle-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> 7b21459621 🧪 Add missing test for resolveSessionMode edge case (#268)
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-06-24 00:25:17 +02:00
Matthias Linhuber d82c68cba5 Update README with ponytail plugin installation steps (#272)
Update Claude Code install steps. Two separate copy paste steps are required for claude to understand
2026-06-24 00:08:26 +02:00
DietrichGebertandClaude Opus 4.8 6d5d75a4f1 docs: clarify uninstall run-order + statusLine ceiling (#278)
Follow-up to #228 (issue #226):

- README: state that scripts/uninstall.js must run *before* the host
  remove command, since the script is itself a plugin file and gets
  deleted by the removal (or run it from a separate clone).
- uninstall.js: add a ponytail: comment naming the statusLine match
  ceiling — substring match + whole-key delete removes a combined
  (e.g. caveman+ponytail) statusline wholesale; upgrade path noted.
- Add trailing newline to the file.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 23:46:40 +02:00
Isha katiyar ae24cd00bc fix: add uninstall cleanup script for state outside plugin files (#226) (#228) 2026-06-23 23:38:06 +02:00
DietrichGebert 8cff216b14 fix: use --tags (not --tag) for clawhub skill publish (#277) 2026-06-23 23:12:19 +02:00
DietrichGebertandClaude Opus 4.8 88be9caee7 feat: add publish-openclaw-skills.js to push skills to ClawHub (#273)
ClawHub does not sync from GitHub. Each OpenClaw skill is pushed with the
clawhub CLI at its own version, so the published copies can drift from the
repo the same way the plugin manifests did (#260). This adds a one-pass
publisher that pushes every generated .openclaw/skills/ skill at the
package.json version, with --dry-run to preview, and documents it in the
README next to the build step.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 20:05:34 +02:00
DietrichGebertandClaude Opus 4.8 763e04deee fix: align all version manifests to 4.8.1 + guard against drift (#260, #262) (#270)
* fix: align all version manifests to 4.8.0 + guard against drift (#260, #262)

The v4.8.0 release shipped with all four plugin manifests still reading
4.7.0, and both package.json files still at the 0.1.0 npm-init default.
So Claude/Codex/Gemini reported 4.7.0 as the latest version (#262) and
the project advertised three different versions at once (#260).

Bump all six version-bearing files to 4.8.0 so they match the release tag:
the four plugin manifests, the root package.json, and ponytail-mcp.

Add scripts/check-versions.js, wired into CI, so this cannot recur. It
asserts every version file shares one pinned X.Y.Z version, and on a
release-tag run that the shared version equals the tag. The existing
mutual-agreement check in tests/gemini-extension.test.js could not catch
this, because all four manifests were stale at 4.7.0 together.

Fixes #260
Refs #262

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix: target 4.8.1 for a clean superseding release

v4.8.0 was already tagged with the stale 4.7.0 manifests. Rather than rewrite a published tag, ship the consistent versions as v4.8.1. The CI guard enforces tag == version on the release run. (#260, #262)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
v4.8.1
2026-06-23 18:28:53 +02:00
dedc97ca7c fix: comprehension-first guard + reuse rung (#245, #217) (#253)
#245 "Dangerously lazy": add an operational "fix the root cause, not the
symptom" directive — grep every caller of the function you touch and fix the
shared function once (the smaller diff). Validated on the agentic benchmark: on
a shared-helper bug-fix trap, baseline fixes the root cause 1/6 while ponytail
does 6/6 on both Sonnet 4.6 (the model the issue was filed on) and Opus 4.8,
verified by reading the produced code. Plain prose ("trace the flow") did not
move it; the actionable, lazy-framed directive did.

#217 "Missing rung": add ladder rung 2 "Already in this codebase? Reuse it,
don't re-write it." Propagated across SKILL.md, AGENTS.md, all agent mirror
copies, the hook fallback, and both READMEs (check-rule-copies passes).

Benchmark: 4 new deterministic quality-tier tasks (reuse-slug, reuse-money,
trace-transfer, trace-amount) with selftest-proven good/bad refs; harness gains
multi-file seed support in --selftest, distinctive-behaviour reuse detection,
and counts in-file __main__/demo() self-checks as test LOC (not source bloat)
for surgical tasks. Full writeup in
benchmarks/results/2026-06-22-issue-245-217-comprehension.md.

Also carries the in-progress todo-null benchmark task already present in the
working tree.

Co-authored-by: Dietrich Gebert <dgebert@Dietrichs-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
v4.8.0
2026-06-22 23:30:05 +02:00
Rajaul Uddin 6da37bfa7d fix: bump @modelcontextprotocol/sdk to ^1.26.0 (CVE-2026-25536) (#208)
Closes #199
2026-06-21 02:23:17 +02:00
DietrichGebert 215777d835 fix: don't embed shell-unsafe install paths in statusline setup nudge (#224)
The SessionStart nudge built a statusLine command by interpolating the
plugin's __dirname path into a double-quoted shell string. A clone path
containing shell metacharacters (quotes, &, $, backtick, ;) could break
out when the suggested command later runs via the statusline shell.

Low severity in practice: the path is the install location, so triggering
it requires installing into a maliciously-named directory, i.e. the
attacker already controls the filesystem. Hardening it anyway.

Gate the snippet behind isShellSafe() (allowlist of ordinary path chars,
allowing : \ / for normal Windows and POSIX paths). Unsafe paths fall
back to a manual-setup instruction instead of an embeddable command. An
allowlist beats a per-shell escaper, which is its own edge-case bug farm.

Refs #200
2026-06-21 01:58:21 +02:00
Rajaul Uddin 5eb1fd8b76 fix: make Python command portable in robustness-audit.js (fixes Windows) (#209)
Closes #203
2026-06-21 01:36:25 +02:00
DietrichGebertandClaude Opus 4.8 248a30b40b test: simplify hooks temp-dir cleanup to a one-line exit handler (#221)
#213 guarded cleanup with a flag + named function + process.once. But
fs.rmSync with force:true already no-ops on a missing path, so the guard
and the explicit end-of-file call are unnecessary. Collapse to a single
process.on('exit') handler.

Refs #204

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 01:29:09 +02:00
Lixin2026 ee263e5708 test: clean hooks temp dir on failure (#213) 2026-06-21 01:20:45 +02:00
Max Felker II 0403c4dd50 Fix for #168: Don't write output on SessionStart for Copilot (#181)
* Added isCopilot flag from runtime and check that in the hooks

* When going into off mode, check if codex or copilot
2026-06-19 10:50:55 +02:00
DietrichGebertandClaude Opus 4.8 ff5d0936be docs: sweep em dashes out of the active published surface (#180)
Em dashes crept back into examples, docs/platform-native.md, several READMEs,
the ponytail-debt skill, and a command file since 88431de. Replaced with plain
punctuation (commas, matching the house convention), .openclaw mirror
regenerated. Follows 88431de's scope: leaves untouched the vendored caveman
SKILL.md and the dated benchmarks/results/ writeups (historical records).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:37:02 +02:00
DietrichGebertandClaude Opus 4.8 bd6176a9b3 fix: drop em dashes from ponytail-audit/review scope wording (#163) (#179)
#163 clarified the audit/review Boundaries scope but reintroduced em dashes,
which this repo deliberately purged (commit 88431de "replace em dashes with
plain punctuation across prose"). Keeps the clearer wording, swaps the em dash
for a period. .openclaw mirrors regenerated; suite green.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:20:55 +02:00
DietrichGebertandClaude Opus 4.8 cf9cbd531e Revert #82 (Modern Web Guidance rung-3) and re-sync mirrors (#178)
#82 added a "Web tasks: rung 3 lookup" section to the always-on ponytail
SKILL.md, about an external `modern-web` CLI most users won't have installed.
It's optional bloat in the always-on ruleset, and it broke CI by leaving the
.openclaw mirror stale.

Reverts the section from skills/ponytail/SKILL.md, the README callout, and
examples/web-platform-lookup.md, then regenerates the .openclaw mirror and
removes the Spanish callout that #174 had mirrored. Suite green (56/56).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:09:30 +02:00
DietrichGebertandClaude Opus 4.8 10a375b836 fix: regenerate .openclaw ponytail skill mirror (fixes red CI) (#177)
#82 added the "Web tasks: rung 3 lookup" section to skills/ponytail/SKILL.md
but did not run scripts/build-openclaw-skills.js, so the committed
.openclaw/skills/ponytail/SKILL.md mirror drifted from its source. The two
generator-sync tests in tests/openclaw-skills.test.js have failed on main
since that merge. Regenerated the mirror; suite is green again.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 02:01:16 +02:00
DietrichGebertandClaude Opus 4.8 f316f14d96 chore(ponytail-mcp): mark private, drop dead bin (#176)
ponytail-mcp reuses the repo's hooks/ via createRequire("../hooks/..."), which
reaches outside the package dir, so it can only run from a checkout (as its
README says), never as a published npm package — a publish tarball wouldn't
include ../hooks/ and would crash. The `bin` field and missing `private` made
it look publishable. Mark it private so an accidental `npm publish` can't ship
a broken package, and drop the dead bin (you point the host at ponytail-mcp/index.js).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 01:57:02 +02:00
DietrichGebert 48cdf05a25 Revert "benchmarks: add system prompt to baseline arm so it doesn't ramble (closes #126) (#128)" (#175)
This reverts commit 37f46b8f02.
2026-06-19 01:44:13 +02:00
DietrichGebertandClaude Opus 4.8 a4e5e479d6 docs: re-sync README.es.md to current English (agentic numbers, CodeWhale) (#174)
The Spanish README merged (#110) carrying stale content: the old flat
"80-94% menos código" single-shot headline (the exact claim #126 corrected),
no CodeWhale section, badge stuck at 13 agents, and missing the Modern Web
Guidance callout (#82) and the Claude Code desktop-install paragraph.

Re-translates the hero + Números section to the corrected agentic numbers
(~54%, up to 94%, 100% safe) with the old figures demoted to the same
<details> block English uses, adds CodeWhale, fixes the badge, and adds a
"community translation, English is the reference" note. Also adds a minimal
Español discoverability link to the English README so readers can find it.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:44:08 +02:00
Liad YosefandClaude fe963cae99 Add Modern Web Guidance as the rung-3 lookup for web tasks (#82)
Scoped, optional reference to Modern Web Guidance so the agent can look
up native platform features on web work, filling the gap at rung 3 of
the ladder. Three additive changes, no compact-ruleset surgery:

- skills/ponytail/SKILL.md: "Web tasks: rung 3 lookup" section after the
  ladder. Runtime source only, not byte-compared, so no six-file sync.
- README.md: one "Pairs well with" line, matching the Caveman pattern.
- examples/web-platform-lookup.md: a <dialog closedby> vs Radix
  before/after in the date-picker.md style.

Lookup, not license: MWG suggests, the ladder filters. Absent CLI
changes nothing. No new INVARIANT phrase; rule-copy check stays green.

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-19 00:26:36 +02:00
Arthur MorrillandClaude Opus 4.8 b0c5820bb1 Fix scope ambiguity in ponytail-audit and ponytail-review Boundaries (#163)
The Boundaries line opened with "Complexity only, correctness bugs, security
holes, and performance go to a normal review pass." The comma after "Complexity
only" fuses the in-scope item with the out-of-scope list, so a model parsing it
literally can read all four categories as targets of the audit — the opposite of
intent.

Restate the boundary as an explicit scope fence: name what is in scope, then
mark correctness/security/performance as explicitly out of scope. "Out of scope"
is phrasing models reliably honor as a constraint. Also aligns the scope term
with each skill's stated purpose (over-engineering).

Applied to both skills/ and the .openclaw/ mirror so the two trees stay in sync.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:26:33 +02:00
Lakshya77089 83f67a261a feat: add Antigravity .agents/rules/ponytail.md rule copy (#119)
Antigravity IDE loads always-on rules from .agents/rules/. The README
already tells Antigravity users to drop the ruleset there, but the file
was missing. Add it as a verbatim copy of the canonical AGENTS.md body
(no frontmatter, like the .windsurf/.clinerules copies) and register it
in check-rule-copies.js so it is validated against AGENTS.md and cannot
drift. Closes #116.
2026-06-19 00:24:49 +02:00
Tianen Cheng a28e5ec123 fix: register skills directory via config hook so opencode discovers ponytail skills (#138)
The ponytail plugin was missing a config hook to register its skills/
directory with opencode's skill discovery system. Without this, the 5
ponytail skills (ponytail, ponytail-audit, ponytail-debt, ponytail-help,
ponytail-review) never appear in the skill tool's available list.

The superpowers plugin already follows this exact pattern — this brings
ponytail in line with the upstream convention.
2026-06-19 00:24:46 +02:00
Sonai Biswas 4dad14fac5 Avoid Gemini loading Claude hook events (#139) 2026-06-19 00:24:43 +02:00
Uchenna 0ac987f995 feat(mcp): add ponytail-mcp, an MCP server for the ruleset (#91)
* feat(mcp): add ponytail-mcp server (prompt + tool)

* test(mcp): cover mode resolution and instruction text

* Report resolved MCP mode
2026-06-19 00:24:40 +02:00
Ben YounesandClaude Opus 4.8 15749f7ffc feat(skills): add /ponytail-gain measured-impact scoreboard (#108)
A one-shot scoreboard showing ponytail's measured benchmark impact
(less code, less cost, more speed) as plain ASCII bars, then points to
/ponytail-debt and /ponytail-audit for this repo's real numbers.

Complements the existing skills rather than duplicating them: debt
harvests the ponytail: ledger, audit finds what's cuttable, gain shows
the measured why-it-matters. No per-repo savings number is ever printed
-- the unbuilt version was never written, so there is no real baseline
to subtract from in a live repo. The bars carry the published benchmark
medians (5 tasks, 3 models); per-repo figures come from debt's count.

Ships every adapter the other commands ship: Claude commands/*.toml,
OpenCode .opencode/command/*.md, OpenClaw skill (generated), Pi command
registration. Help card, command enumeration, portability table, and
README updated in the same change.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:24:37 +02:00
Sha256_NulledandFato07 37f46b8f02 benchmarks: add system prompt to baseline arm so it doesn't ramble (closes #126) (#128)
Co-authored-by: Fato07 <fato07@users.noreply.github.com>
2026-06-19 00:24:35 +02:00
Ben YounesandClaude Opus 4.8 e782790b15 feat(benchmarks): add critic-email task — reproduces the critique's own example (#173)
The Scott Logic post ("Ponytail? YAGNI!", see #126) argued a bare one-liner
prompt matches ponytail because both shrink the line count. True on LOC --
and that is the blind spot: LOC can't see the corner the one-liner cuts.

The canonical lazy email validator uses re.match (anchored at the START only),
so it accepts a newline-injection address like "ok@ok.com\n<payload>" -- a real
header/log-injection vector. ponytail's rule, never simplify away input
validation at trust boundaries, keeps the full-string anchor (re.fullmatch).
Same shortness, one keeps the guard.

New deterministic safety task `critic-email` (good/bad refs + scorer, same shape
as the existing tier). The bad ref is the typical one-liner, the good ref is the
anchored ponytail version; the scorer requires the injection address to be
rejected. Verifiable with no API key via `run.py --selftest`.

Refs #126

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:24:32 +02:00
Jesus cornelio b345e49385 examples: add 6 new over-engineering survivors + platform-native guide (#109)
New examples (examples/):
- modal-dialog: <dialog> vs Radix/react-modal
- url-params: URLSearchParams vs query-string
- number-formatting: Intl.NumberFormat vs numeral
- infinite-scroll: IntersectionObserver vs react-infinite-scroll-component
- deep-clone: structuredClone vs lodash.cloneDeep / JSON hack
- group-by: Object.groupBy vs lodash.groupBy

New doc (docs/platform-native.md):
Comprehensive reference of platform-native solutions across HTML elements,
CSS, Browser APIs, Node.js stdlib, Python stdlib, and database features.
Covers 60+ cases where the platform already has what developers reach for
a package to do.
2026-06-19 00:24:29 +02:00
Jesus cornelio 7f4dc907fc docs: add Spanish (LATAM) translation of README (#110) 2026-06-19 00:24:26 +02:00
Ben YounesandClaude Opus 4.8 e7e09f8fd4 docs: add CodeWhale support (AGENTS.md native reader, zero setup) (#124)
CodeWhale reads AGENTS.md from project root per its CONFIGURATION.md —
ponytail already works with no adapter file needed. Added dedicated install
section, agent count bump (13→14), and portability table row.

Also adds Zed to the grouped instruction-only adapter list (same
mechanism: reads AGENTS.md natively).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 00:24:23 +02:00
Aiden 766c5ca5b1 feat: add argument-hint to ponytail skill (#85) 2026-06-19 00:24:20 +02:00
hashner 25be875fab Fix markdown formatting in ponytail-debt.md (#142)
Fixed "mapping values not allowed in this context error", by adding quotes around the description so parser does not detect a key/value mapping
2026-06-19 00:24:17 +02:00
Colin Eberhardt 70df716a02 Fix path for .env file in README (#104)
The reproduction steps involve running promptfoo from the benchmarks folder. In order for the environment var9ables in `.env` to be discoverable they need to be in this folder, not the project root.
2026-06-19 00:24:14 +02:00