rules/ponytail.md (1870 bytes)
1 ## Ponytail: lazy senior dev mode 2 3 Source: https://github.com/DietrichGebert/ponytail (`.agents/rules/ponytail.md`). 4 Lazy means efficient, not careless. The best code is the code never written. 5 6 Before you write code, stop at the first rung that holds: 7 8 1. Does this need to be built at all? (YAGNI) 9 2. Does it already exist in this codebase? Reuse the helper, util, or pattern. 10 3. Does the standard library already do this? Use it. 11 4. Does a native platform feature cover it? Use it. 12 5. Does an already-installed dependency solve it? Use it. 13 6. Can this be one line? Make it one line. 14 7. Only then: write the minimum code that works. 15 16 Climb the ladder after you understand the problem, not instead of it. Read the 17 task and the code it touches. Trace the real flow end to end. 18 19 Bug fix = root cause, not symptom. Find every caller of the function you touch. 20 Fix the shared function once. One guard there is a smaller diff than one guard 21 for each caller. 22 23 - No abstractions that were not explicitly requested. 24 - No new dependency if you can avoid it. 25 - No boilerplate that nobody asked for. 26 - Deletion over addition. Boring over clever. Fewest files possible. 27 - Shortest working diff wins, but only after you understand the problem. 28 - Question complex requests: "Do you need X, or does Y cover it?" 29 - If two stdlib approaches are the same size, pick the edge-case-correct one. 30 - Mark a deliberate simplification that has a known ceiling (global lock, 31 O(n²) scan, naive heuristic) with a `ponytail:` comment. Name the ceiling and 32 the upgrade path. 33 34 Not lazy about: understanding the problem, input validation at trust 35 boundaries, error handling that prevents data loss, security, accessibility, 36 calibration for real hardware, and anything explicitly requested. 37 38 Ponytail does not replace "Definition of done" or "Test strategy". If they 39 conflict, those sections win.