Conventions
The bar for an entry
One entry holds one durable, general fact.
An entry belongs here only if every one of these is true:
- It is still true and useful on a different machine.
- It is still true and useful on a different project.
- It is still true and useful in six months.
- Someone who was not present when it was learned can act on it.
If any one fails, the knowledge is real but belongs elsewhere. Machine-specific facts go in the personal global config. Project-specific facts go in that project's own docs.
What must never go in
- Absolute paths from a personal machine, usernames, home directories
- Names of private projects or repositories, internal URLs, ticket IDs
- Credentials, tokens, API keys, email addresses — under any circumstance
- Local port numbers, local environment variables, one-install tool paths
- Session narrative ("we tried X, then Y failed") — record the conclusion, not the story that produced it
- A restatement of official documentation that adds no insight
This repository is public. Treat every line as permanently published.
Writing an entry
Path: entries/<topic>/<kebab-case-slug>.md
---
title: Short declarative title
tags: [tag, tag]
added: YYYY-MM-DD
updated: YYYY-MM-DD # only once it has actually been revised
sources:
- https://example.com/where-this-was-confirmed
---
## Fact
The thing itself, stated plainly, in a sentence or two. A reader should be able
to stop here and still have gotten the point.
## Why it matters
The consequence of not knowing it. What breaks, what gets slow, what gets
misdesigned.
## How to apply
Concrete guidance. Code, a command, or a rule of thumb — whatever makes it
actionable.
Keep entries short. Roughly 40 lines is the ceiling; past that, the entry is probably two facts and should be split.
State the fact in the title. Gradle configuration cache breaks on Project access at execution time is a title. Gradle notes is not.
Updating the index
INDEX.md is a table of contents with one line per topic index. Every entry gets exactly one line in the index beside it, entries/<topic>/INDEX.md:
- [Title](slug.md) — one-line summary. `tag`, `tag`
The link is relative to the index file, so it is just the entry's filename. practices is indexed by subject instead: its line goes in the entries/practices/INDEX-<subject>.md whose description in INDEX.md fits it, or in entries/practices/INDEX.md when none does.
The summary is what a future agent uses to decide whether to open the file, so write it for that decision and nothing else. The same goes for each topic's line in INDEX.md: when a new entry falls outside what that line describes, widen the description, or an agent looking for the entry will never open its index.
Curating
Prefer updating over adding. Before writing a new entry, scan every topic index that could already cover it. A near-duplicate is worse than no entry, because it splits the knowledge across two files that will drift apart.
Delete what turns out to be wrong. Do not leave a correction sitting next to a false claim; the false claim will be the part that gets read. Rewrite the entry or remove it.
Keep each index to one line per entry. When a topic index grows past roughly 150 lines, split it by subject, as practices is: move each large subject into its own entries/<topic>/INDEX-<subject>.md, keep the rest in entries/<topic>/INDEX.md, and give each file its own line in INDEX.md.
Add a topic directory only when a third entry needs it. Two related entries live fine in an existing topic. Taxonomies that grow ahead of their contents rot.