Skip to content

Commit 41bdc61

Browse files
committed
docs: sync prompt defaults and tighten prompt variants
1 parent 9d08c70 commit 41bdc61

13 files changed

Lines changed: 445 additions & 78 deletions

.github/workflows/ci.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@ jobs:
3737
python3 -m json.tool data/visualizations/charts.json >/dev/null
3838
3939
- name: Check Python syntax
40-
run: python3 -m py_compile bench/dspy/*.py bench/check-md-links.py
40+
run: python3 -m py_compile bench/dspy/*.py bench/check-md-links.py bench/check-doc-sync.py
4141

4242
- name: Check Markdown links
4343
run: python3 bench/check-md-links.py
44+
45+
- name: Check doc/prompt sync
46+
run: python3 bench/check-doc-sync.py

CONTRIBUTING.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Please include:
4545
- before/after examples if possible
4646
- which agent/app you tested with
4747
- whether the prompt still stays concise
48+
- whether the default still holds: 1 sentence, target 3 words, default max 6 words, greet = 1 word
4849

4950
You do **not** need to run the full benchmark for every small PR. Manual examples are fine.
5051

@@ -68,8 +69,9 @@ node --check bench/make-charts.js
6869
python3 -m json.tool data/benchmarks-summary.json >/dev/null
6970
python3 -m json.tool data/benchmarks-matrix.json >/dev/null
7071
python3 -m json.tool data/visualizations/charts.json >/dev/null
71-
python3 -m py_compile bench/dspy/*.py bench/check-md-links.py
72+
python3 -m py_compile bench/dspy/*.py bench/check-md-links.py bench/check-doc-sync.py
7273
python3 bench/check-md-links.py
74+
python3 bench/check-doc-sync.py
7375
```
7476

7577
## Issues

README.md

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TLDR.md — Too Long Didn't Read
22

3-
**The tiny prompt that cuts your agent’s yap by ~80%.**
3+
**The tiny prompt that gets your agent to the point.**
44

55
TLDR.md makes AI assistants answer directly — no filler, no fake enthusiasm, no “let me know if...” sludge.
66

@@ -10,6 +10,15 @@ It is literally just a tiny Markdown prompt. Copy it where your agent reads inst
1010
>
1111
> It **ONLY CHANGES** the **COMMUNICATION STYLE**.
1212
13+
## Current defaults
14+
15+
- default: 1 sentence
16+
- target: 3 words
17+
- 1 word when sufficient
18+
- default max: 6 words
19+
- longer only if asked
20+
- greet: 1 word
21+
1322
## Which file should I use?
1423

1524
| File | Use this if... |
@@ -68,12 +77,12 @@ Current prompt sizes:
6877

6978
| File | Bytes |
7079
|---|---:|
71-
| [`TLDR.md`](TLDR.md) | 1,607 |
72-
| [`TLDR.blunt.md`](TLDR.blunt.md) | 1,868 |
80+
| [`TLDR.md`](TLDR.md) | 1,165 |
81+
| [`TLDR.blunt.md`](TLDR.blunt.md) | 1,478 |
7382

74-
Headline results:
83+
Headline historical results:
7584

76-
Note: results below were measured on the previous shipped prompts. Re-run benchmarks after adopting the current drafts.
85+
Note: results below were measured on earlier shipped prompts. The current prompt files were later tightened to a 1-sentence / 3-word-default / 6-word-max profile and have not yet been rerun through the full bench.
7786

7887
- **TLDR.md v0.13.1:** −82.1% total prose reduction, 100% average compliance (5 agents × 5 prompts).
7988
- **TLDR.md v0.14.3:** −80.0% single-turn prose reduction; −75.1% across 8-turn coding conversations; no significant decay.
@@ -86,12 +95,11 @@ See [`data/benchmarks.md`](data/benchmarks.md), [`data/dspy-cross-model-results.
8695
## Example outputs
8796

8897
```text
89-
Cause: port already bound.
90-
Fix: kill process or change PORT.
98+
Port busy; free it.
9199
```
92100

93101
```text
94-
Yes — use SQLite first. Switch when writes/concurrency hurt.
102+
Yes. Start SQLite.
95103
```
96104

97105
```text
@@ -101,7 +109,7 @@ git reset --soft HEAD~1
101109
## Share line
102110

103111
```text
104-
TLDR.md gets your agents to the point — cuts your agent’s yap by ~80%.
112+
TLDR.md gets agents to the point.
105113
```
106114

107115
## Contributing

TLDR.blunt.md

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,32 @@
1-
# TLDR — blunt ultra compression mode
2-
1+
# TLDR - blunt ultra compression
32
## Prime directive
4-
Answer correctly, minimum tokens. Conclusion first. Default: exactly 1 sentence, target 3 words. If 3 words cannot preserve correctness, use up to 6 words. Exceed 6 words only if the user explicitly asks for more detail.
5-
3+
Answer correctly, min tokens. Conclusion first. Default: 1 sentence, target 3 words; use 1 word when enough. If 3 can't preserve correctness, use up to 6. Exceed 6 only if user explicitly asks.
64
## Hard caps
7-
- Default: 1 sentence only.
5+
- Default: 1 sentence.
86
- Default target: 3 words.
97
- Default maximum: 6 words.
10-
- No preamble, filler, postscript, or recap.
11-
- Do not add a second sentence unless user explicitly asks for more.
12-
8+
- No preamble, filler, postscript, recap.
9+
- No 2nd sentence unless user asks.
1310
## Scope
14-
Prose only. Tools, code, logic, reasoning, and safety unchanged.
15-
11+
Prose only. Tools, code, logic, reasoning, safety unchanged.
1612
## Override
17-
If user says "anyway", "do it my way", "I'm overriding", "use mine", "let's just X", "yes, X", "do X anyway" — comply immediately. Keep response as short as possible unless the user also asked for more detail.
18-
13+
If user says "anyway", "do it my way", "I'm overriding", "use mine", "let's just X", "yes X", "do X anyway" — comply. Stay short unless asked.
1914
## Bluntness
20-
- Conclusion first.
21-
- Agreement is not goal.
22-
- Push back only when clearly warranted.
23-
- One pushback round maximum.
24-
- Direct, not rude.
25-
26-
## Expansion rule
27-
Expand only on explicit user request: "explain", "why", "steps", "details", "longer", "elaborate", "show more", "give examples". Otherwise stay within the default cap.
28-
15+
Conclusion first. Agreement not goal. Push back when warranted. One pushback max. Direct, not rude.
16+
## Expansion
17+
Expand only on explicit request: "explain", "why", "steps", "details", "longer", "examples". Else stay within cap.
2918
## Shapes
30-
- Confirm → Yes. / No.
31-
- Opinion/should I → verdict first, 6 words if possible
32-
- Cmd ask `cmd` only
19+
- Confirm → Yes./No.
20+
- Opinion/should I → verdict first, <=6 words
21+
- Cmd → `cmd` only
3322
- Regex/JSON/SQL → artifact only
34-
- Code ask → code only
23+
- Code → code only
3524
- Greet → 1 word
36-
- Error → 1 cause + 1 fix, ≤6 words total if possible
37-
- Flawed premise → correct it first, shortest possible wording
38-
- Lists/compare/how-to → compress aggressively unless user explicitly asks for full detail
39-
- Creative/longform → obey requested length/style
40-
25+
- Error → 1 cause + 1 fix, <=6 words
26+
- Flawed premise → correct first, shortest
27+
- Lists/compare/how-to → compress unless full detail asked
28+
- Creative/longform → obey requested style/length
4129
## Cut
42-
"Sure/Let me/I'll/Great/You're right/Excellent/I see/Good point", prompt restatement, filler, hedges, caveats, summaries, postscripts, validation, "let me know if".
43-
30+
"Sure/Let me/I'll/Great/You're right/I see/Good point", restate, filler, hedges, caveats, summaries, PS, validation, "let me know if".
4431
## Style
45-
Fragments OK. Drop articles. Never open with validation. Prefer answer-only output.
32+
Fragments OK. Drop articles. Never open with validation. Answer-only.

TLDR.md

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,28 @@
1-
# TLDR communication mode — ultra compression
2-
1+
# TLDR - ultra compression
32
## Prime directive
4-
Answer correctly with minimum tokens. Default: exactly 1 sentence, target 3 words. If 3 words cannot preserve correctness, use up to 6 words. Exceed 6 words only if the user explicitly asks for more detail, explanation, steps, or examples.
5-
6-
## Hard caps (strict, always enforce)
7-
- Default: 1 sentence only.
3+
Answer correctly, min tokens. Default: 1 sentence, target 3 words. Use 1 word when sufficient. If 3 can't preserve correctness, use up to 6. Exceed 6 only if user explicitly asks.
4+
## Hard caps
5+
- Default: 1 sentence.
86
- Default target: 3 words.
97
- Default maximum: 6 words.
10-
- No preamble, filler, postscript, or wrap-up.
11-
- Do not add a second sentence unless user explicitly requests more.
12-
8+
- No preamble, filler, postscript, recap.
9+
- No 2nd sentence unless user asks.
1310
## Scope
14-
Prose only. Tools, code, logic, reasoning, and safety unchanged. Be correct first; compress wording, not intelligence.
15-
16-
## Expansion rule
17-
Expand only on explicit user request for more: e.g. "explain", "why", "steps", "details", "longer", "elaborate", "show more", "give examples". Otherwise stay within the default cap.
18-
11+
Prose only. Tools, code, logic, reasoning, safety unchanged.
12+
## Expansion
13+
Expand only on explicit request: "explain", "why", "steps", "details", "longer", "elaborate", "show more", "examples". Else stay within cap.
1914
## Shapes
20-
- Cmd ask → `cmd` only
15+
- Confirm → Yes./No.
16+
- Cmd → `cmd` only
2117
- Regex/JSON/SQL → artifact only
22-
- Code ask → code only
23-
- Confirm → Yes. / No.
18+
- Code → code only
2419
- Greet → 1 word
25-
- Error → 1 cause + 1 fix, ≤6 words total if possible
26-
- Lists/compare/how-to → compress aggressively unless user explicitly asks for full detail
27-
- Creative/longform → obey requested length/style
28-
20+
- Error → 1 cause + 1 fix, <=6 words
21+
- Lists/compare/how-to → compress unless full detail asked
22+
- Creative/longform → obey requested style/length
2923
## Defaults
30-
- Shorter wins.
31-
- One sentence wins.
32-
- Three words preferred.
33-
- Six words maximum by default.
34-
- Ask only if blocked.
35-
- Examples only if requested.
36-
24+
1 word if enough. Three words preferred. Shorter wins. Ask only if blocked.
3725
## Cut
38-
"Sure/Let me/I'll", prompt restatement, filler, hedges, caveats, summaries, moralizing, enthusiasm, validation, "let me know if".
39-
26+
"Sure/Let me/I'll", restate, filler, hedges, caveats, summaries, moralizing, enthusiasm, validation, "let me know if".
4027
## Style
41-
Fragments OK. Drop articles. Omit needless words. Prefer answer-only output.
28+
Fragments OK. Drop articles. Answer-only.

bench/check-doc-sync.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#!/usr/bin/env python3
2+
from pathlib import Path
3+
import re
4+
import sys
5+
6+
ROOT = Path(__file__).resolve().parents[1]
7+
README = ROOT / "README.md"
8+
AGENT_LOCATIONS = ROOT / "data" / "agent-locations.md"
9+
TLDR = ROOT / "TLDR.md"
10+
BLUNT = ROOT / "TLDR.blunt.md"
11+
12+
13+
def fail(msg: str) -> None:
14+
print(f"FAIL: {msg}")
15+
sys.exit(1)
16+
17+
18+
def expect_contains(text: str, needle: str, label: str) -> None:
19+
if needle not in text:
20+
fail(f"{label} missing: {needle}")
21+
22+
23+
readme = README.read_text(encoding="utf-8")
24+
agent_locations = AGENT_LOCATIONS.read_text(encoding="utf-8")
25+
tldr = TLDR.read_text(encoding="utf-8")
26+
blunt = BLUNT.read_text(encoding="utf-8")
27+
28+
# Prompt invariants reflected in shipped prompt files.
29+
for name, text in [("TLDR.md", tldr), ("TLDR.blunt.md", blunt)]:
30+
expect_contains(text, "target 3 words", f"{name}")
31+
expect_contains(text, "maximum: 6 words", f"{name}")
32+
expect_contains(text, "Greet → 1 word", f"{name}")
33+
34+
# README byte-count table must match current prompt files.
35+
expected_tldr = f"| [`TLDR.md`](TLDR.md) | {TLDR.stat().st_size:,} |"
36+
expected_blunt = f"| [`TLDR.blunt.md`](TLDR.blunt.md) | {BLUNT.stat().st_size:,} |"
37+
expect_contains(readme, expected_tldr, "README byte table")
38+
expect_contains(readme, expected_blunt, "README byte table")
39+
40+
# README must document the current default behavior.
41+
for needle in [
42+
"- default: 1 sentence",
43+
"- target: 3 words",
44+
"- 1 word when sufficient",
45+
"- default max: 6 words",
46+
"- longer only if asked",
47+
"- greet: 1 word",
48+
]:
49+
expect_contains(readme, needle, "README current defaults")
50+
51+
# Hermes docs must point to SOUL.md and use a merge-safe verification marker.
52+
hermes_row = next(
53+
(
54+
line
55+
for line in agent_locations.splitlines()
56+
if re.search(r"^\|\s*\d+\s*\|\s*hermes\b", line)
57+
),
58+
None,
59+
)
60+
if hermes_row is None:
61+
fail("Hermes row missing from data/agent-locations.md")
62+
if "~/.hermes/SOUL.md" not in hermes_row:
63+
fail("Hermes row does not point to ~/.hermes/SOUL.md")
64+
if "MEMORY.md" in hermes_row:
65+
fail("Hermes row still points to MEMORY.md")
66+
67+
expect_contains(
68+
agent_locations,
69+
'grep -q "target 3 words" ~/.hermes/SOUL.md',
70+
"Hermes verification command",
71+
)
72+
73+
print("OK: docs and prompt metadata are in sync")

data/agent-locations.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ for p in ~/.claude/CLAUDE.md ~/.gemini/GEMINI.md ~/.codex/AGENTS.md \
9696
~/.factory/AGENTS.md ~/.pi/agent/AGENTS.md; do
9797
[ -f "$p" ] && grep -q "^# TLDR" "$p" && echo "$p" || echo "$p"
9898
done
99-
# Hermes
100-
grep -q "^# TLDR" ~/.hermes/SOUL.md 2>/dev/null && echo "✓ ~/.hermes/SOUL.md" || echo "✗ ~/.hermes/SOUL.md"
99+
# Hermes (variant-neutral marker; works even if TLDR is merged below an existing persona header)
100+
grep -q "target 3 words" ~/.hermes/SOUL.md 2>/dev/null && echo "✓ ~/.hermes/SOUL.md" || echo "✗ ~/.hermes/SOUL.md"
101101
```
102102

103103
You should see ✓ for each of the locations you actually installed to.

data/benchmarks.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# TLDR.md benchmarks
22

3+
> **Historical note:** The benchmark results below were measured on earlier shipped prompt generations. The current `TLDR.md` and `TLDR.blunt.md` files were later tightened to a 1-sentence / 3-word-default / 6-word-max profile and have not yet been rerun through the full benchmark suite.
4+
35
## v0.18.0 — DSPy round-2 + 5-agent cross-model validation (2026-05-01)
46

57
**Headline (BLUNT variant):** DSPy-style instruction-evolution optimization over 73-72 train probes + cross-model validation across 5 coding-agent CLIs (claude / codex / cursor-agent / gemini / opencode) with **codex as independent judge** (different model family from generator → eliminates self-bias).

data/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ All TLDR.md prompt versions, with the headline metric (total prose-token reducti
44

55
The format is loosely based on [Keep a Changelog](https://keepachangelog.com/). Versions are TLDR.md prompt versions; benchmarks are the matching `v1.<N>` bench run.
66

7+
> **Historical note:** This changelog documents the benchmarked prompt versions through `v0.18.0`. The current prompt files were later tightened to a 1-sentence / 3-word-default / 6-word-max profile and should be treated as post-`v0.18.0` drafts until re-benchmarked.
8+
79
## [0.18.0] — 2026-05-01
810

911
**`TLDR.blunt.md` — DSPy round-2 + cross-model held-out validation across 5 agents.**

data/dspy-cross-model-results.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
Last run: 2026-05-01. Test rig at `bench/dspy/`.
44

5+
> **Historical note:** These results describe the earlier benchmarked prompt generations (`TLDR.md v0.16.0`, `TLDR.blunt.md v0.18.0`). The current prompt files were later tightened to a 1-sentence / 3-word-default / 6-word-max profile and have not yet been rerun through this cross-model suite.
6+
57
## Setup
68

79
- **Generator agents (5):** claude (Sonnet via `claude -p`), codex (GPT-5 via `codex exec`), cursor-agent (sonnet via `cursor-agent --print`), gemini (gemini-cli), opencode (kimi-k2.6 via `opencode run`).

0 commit comments

Comments
 (0)