---
name: bullet-style
description: Write tight, parallel-structured bullets for technical problem statements, RFC critique sections, GitHub discussion intros, and design doc analysis. Use when drafting or editing prose where bullets describe how a system behaves and why it's problematic. Triggers on: problem statement, RFC, design doc critique, discussion intro, bulleted analysis, "what's wrong with X."
---
A distilled style guide for technical bulleted critique — problem statements, RFC sections, GitHub discussion intros, anything where a bulleted list describes how a system works and why it's bad.
Markers in the rules below: ✅ explicitly taught through edits;
1. Open with a nut graf that signposts the bullets.
2. Top-level bullets are full sentences, not tagged fragments. ✅ (Sub-bullets may be fragments — they're explanatory beats, not sentences.)
- ✗ "Slow: computing the version walks Git tags, and gets worse as history grows."
- ✓ "Walks Git tags to compute the version, which is slow and gets worse as history grows."
3. Lead with the mechanism, follow with the consequence. ✅ The subject is what the system does; the judgment subordinates. Prior art: inverted pyramid at the sentence level.
- ✗ "Slow, because computing the version walks Git tags..."
- ✓ "Walks Git tags to compute the version, which is slow..."
4. Keep bullets verb-parallel.
- ✓ "Fetches... / Walks... / Injects... / Treats... / Accumulates..."
5. Vary the consequence-connector across bullets. ✅ Use whichever fits each bullet's natural shape: relative clause, embedded verb, participle, where-clause. Don't make them uniform. Prior art: sentence variety / variatio.
- Relative clause: "...which is slow and gets worse as history grows."
- Embedded verb: "...leaks project-specific details..."
- Participle: "...making release-by-promotion awkward."
- Where-clause: "...where bugs are expensive and hard to test."
6. Strong verbs carry judgment.
7. Reach for hyphenated compound modifiers to compress.
- ✗ "an area that is hard to test" / "bugs that break releases"
- ✓ "hard-to-test area" / "release-breaking bugs"
8. No bold/italic when structure already carries the emphasis.
- ✗ "...which is slow and gets worse..."
- ✓ "...which is slow and gets worse..."
9. Prefer "where" clauses over em-dash asides.
- ✗ "in a hard-to-test area — release pipelines — causing release-breaking bugs."
- ✓ "in the release pipeline, where bugs are expensive and hard to test."
10. Stay faithful to the source. Don't reach for a vivid verb that overstates the mechanism. ✅
- Source: "Custom version injection adds complexity to the release pipeline, where bugs are expensive and hard to test."
- ✗ Overreach: "Threads custom version injection through the release pipeline..." ("threads" invents a mechanism that wasn't in the source)
- ✓ Final: "Accumulates complex custom code in the release pipeline, where bugs are expensive and hard to test."
11. Show the contrast; don't just name it.
- ✗ "Treats Git tags as release inputs, which is awkward."
- ✓ "Treats Git tags as release inputs, which is backwards: release-by-promotion should promote an already-validated commit, but the current flow requires a tag before the release exists."
12. Cut rhetorical flourishes. Replace with a direct technical consequence. ✅ Prior art: "omit needless words" (Strunk & White); "kill your darlings."
- ✗ "adds a network dependency on GitHub (need I say more)"
- ✓ "vulnerable to GitHub outages"