write-the-present-not-the-diff
Write prose that states what is true now, without narrating the correction, the superseded claim, or the path that got there.
Skill by kasofsk
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kasofsk-write-the-present-not-the-diff
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/write-the-present-not-the-diff
What's inside
- Skill name
write-the-present-not-the-diff- Description
- Write prose that states what is true now, without narrating the correction, the superseded claim, or the path that got there. Use when updating documentation whose claims turned out to be wrong, writing a README, comment, or PR description, reporting results back to the operator, or when tempted to write "previously", "used to", "now correctly", or "as it turns out".
- License
- MIT
- Instructions
- 84 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Write the Present, Not the Diff ## Core principle Prose — documentation, comments, PR descriptions, notes back to the operator — should say **what is true**. It should not narrate the claim it replaced, the measurement that disproved it, or the awkwardness of having been wrong. Write as though the system was always meant to be the way it now is. ## How we get there ### 1. Correct the claim; don't report the correction A document said a tool saved 20–50× tokens. Measurement put it at 3×. The correct edit is: > Saves roughly 3× tokens. *(link to the measurement)* Not: > These numbers claimed 20–50× for months, but once actually measured the > saving turned out to be only about 3×. The second version spends its words on the history of the document rather than on the subject of the document. A reader who arrives tomorrow does not care what the page used to say; they care what is true and how it was established. Replacing a wrong number with a right one *is* the correction — it does not also need to be announced. ### 2. Apply the drop test If the preceding context can be removed without hurting the quality of the sentence, remove it. Run it on every clause that points backward — "previously", "used to", "as it turns out", "now correctly", "this was changed because", "unlike the old behaviour". Delete the clause and reread. If the sentence still tells the reader everything they need, the clause was residue and belongs in the commit message, where the history is already kept better. ### 3. Drop the sheepish register Being wrong earlier is not something the prose needs to atone for. Hedges, apologies, and self-conscious framing — "the earlier claim was unsubstantiated", "to be fair, this was never verified" — cost the reader attention and cost the document authority. A document that keeps apologizing for its past reads as though it might be wrong right now too. Confident, plain statements of the current truth are what earn trust; the evidence link, not the confession, is what makes them credible. ### 4. Keep history only when the reader needs it to act Some history is content, not residue: migration guides, deprecation notices, changelogs, incident write-ups, architecture decision records, and the comment that explains why an obvious-looking approach does not work here. The test is whether a reader needs the past in order to do the right thing **right now** — to migrate off the old call, to avoid re-introducing a fix, to understand a constraint they would otherwise trip over. If yes, state it as fact, in the same plain register as everything else. If no, it is the diff, and the diff is already recorded elsewhere. ### 5. The same applies to talking to the operator Report the state of the work, not a tour of the route. "The parser handles nested groups; the three cases in `test_groups.py` cover it" beats "I initially tried a regex, which broke on nesting, so I rewrote it as a recursive descent parser." This is not permission to hide bad news — current state includes failures, gaps, and things left undone, and those must be said plainly. The distinction is between *what is true now*, which the operator needs, and *how it came to be true*, which they generally do not. ## Why this matters Every backward-looking clause is a fossil in the making. "Now correctly handles Unicode" is stale the moment the next change lands, and a document accreting these becomes a stratigraphy of past states that a reader has to excavate to find the present one. Version control, PRs, and issue trackers already record the past, with timestamps and authorship that prose cannot match — duplicating that record in the documentation makes it worse in both places. Writing only the present keeps every document a description of the system rather than a description of its own editing, and the habit generalizes: it is the same rule the **comments-describe-the-code** practice (`comments-describe-the-code@blessed-practices`) applies to comments, extended to everything else we write.
From kasofsk/blessed-practices, MIT.
More from kasofsk/blessed-practices
- 0.524score
comments-describe-the-code
kasofsk
Write comments about the code itself, never about the prompt, conversation, or moment that produced it — and treat a long justifying comment as a signal the…
SkillBFreshness: BClaude Code +9 - 0.524score
design-with-known-limits
kasofsk
Design systems with explicit correctness limits, failure modes, and operational assumptions instead of automatically engineering every weakness away.
SkillBFreshness: BClaude Code +9 - 0.524score
diminishing-returns
kasofsk
Pursue the highest-value work first and stop when the expected value of the next improvement no longer justifies its full cost.
SkillBFreshness: BClaude Code +9 - 0.524score
domain-modelling
kasofsk
Shape the contents of the domain core — ubiquitous language, aggregates as consistency boundaries, entities versus value objects, making illegal states…
SkillBFreshness: BClaude Code +9 - 0.524score
fix-the-assumption-not-the-hack
kasofsk
When a new feature invalidates an assumption the current design rests on, rethink the pattern rather than land a tweak that technically satisfies the request.
SkillBFreshness: BClaude Code +9 - 0.524score
idiomatic-by-default
kasofsk
Take the community-standard path for the language, framework, or ecosystem unless there is an articulable reason not to, and don't escalate a decision the…
SkillBFreshness: BClaude Code +9 - 0.524score
illegal-states-unrepresentable
kasofsk
Make illegal states unrepresentable with precise types, discriminated variants, and boundary parsing.
SkillBFreshness: BClaude Code +9 - 0.524score
layering
kasofsk
Decide where code goes and which way its dependencies point — inward-pointing source dependencies, what the domain, application, adapter and infrastructure…
SkillBFreshness: BClaude Code +9 - 0.524score
modular-and-layered-code
kasofsk
Architect so a future agent can act at a single layer — strict tested contracts between layers, testing concentrated at domain boundaries, pure logic kept…
SkillBFreshness: BClaude Code +9 - 0.524score
push-back-and-verify-assumptions
kasofsk
Treat the operator as a fellow engineer — challenge naive or wrong premises, state assumptions explicitly, keep asking until they are right, and stop rather…
SkillBFreshness: BClaude Code +9 - 0.494score
dependencies
kasofsk
Add, remove, upgrade, or pin a dependency with the ecosystem's package manager instead of hand-editing the manifest.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Aug 21, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/kasofsk/blessed-practices
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from kasofsk
- 0.524score
comments-describe-the-code
kasofsk
Write comments about the code itself, never about the prompt, conversation, or moment that produced it — and treat a long justifying comment as a signal the…
SkillBFreshness: BClaude Code +9 - 0.524score
design-with-known-limits
kasofsk
Design systems with explicit correctness limits, failure modes, and operational assumptions instead of automatically engineering every weakness away.
SkillBFreshness: BClaude Code +9 - 0.524score
diminishing-returns
kasofsk
Pursue the highest-value work first and stop when the expected value of the next improvement no longer justifies its full cost.
SkillBFreshness: BClaude Code +9 - 0.524score
domain-modelling
kasofsk
Shape the contents of the domain core — ubiquitous language, aggregates as consistency boundaries, entities versus value objects, making illegal states…
SkillBFreshness: BClaude Code +9 - 0.524score
fix-the-assumption-not-the-hack
kasofsk
When a new feature invalidates an assumption the current design rests on, rethink the pattern rather than land a tweak that technically satisfies the request.
SkillBFreshness: BClaude Code +9 - 0.524score
idiomatic-by-default
kasofsk
Take the community-standard path for the language, framework, or ecosystem unless there is an articulable reason not to, and don't escalate a decision the…
SkillBFreshness: BClaude Code +9
Cite this page
write-the-present-not-the-diff skill. Agent Mart. https://agentmart.dev/skills/kasofsk-write-the-present-not-the-diff (last updated 2026-10-24)