One markdown style for everyone, people and agents.
House rules for headings, lists, emphasis, and spacing, applied every time a file is saved, the same on every machine. Whoever wrote it, you, a teammate, or an agent, the file comes out in one shape, so a diff shows what changed in meaning and nothing else.
Free for macOS, Windows, and Linux. No account, no subscription.

The rules
Form, never meaning
Fourteen rules cover what markdown lets people disagree about: one marker for every list, _emphasis_ or *emphasis*, one top heading and no skipped levels, blank lines around headings and code, no trailing spaces, and bare links wrapped so they work. Each one is a switch or a choice on the plugin’s page.
- Frontmatter, code blocks, and the regions a plugin writes are left byte for byte
- On in every new root, with defaults that match what the standard’s own starter frameworks write
- Shared with the root, so nobody lints to their own taste
On save
Dates that keep themselves
An on-save rule names a date property and sets it to today, or to the time, whenever a blueprint is saved: from the page, from eidos property set, or by a plugin. date_modified stops being something people forget.
Drift
Caught when it comes from outside
A file written in your own editor, by git, or by an agent that skipped the CLI is not linted as it is written. The health check is what catches it: each broken rule is a warning on the file, with Lint beside it as the fix, and Lint every file settles the whole root at once.

How it connects
The quiet part of keeping files trustworthy.
- Blueprints
Drift shows up in the health check as
linter/<rule>warnings, beside the framework’s own findings. - AI Agent
An agent that writes through
eidosgets the house style for free; one that writes the file directly is caught by the check. - Git
One form for every file keeps diffs to what changed, not to how someone’s editor spaces a list.
- Comments
The threads Comments writes into a blueprint pass through the same rules.
From the shell
The same rules, from a terminal
eidos linter lists what the rules would change, and --fix writes it and nothing else: no on-save rule runs, so a whitespace fix never bumps a date.
$ eidos linter configure:on-save set date_modified today
✓ date_modified set to today on save (.eidos/plugins/linter/settings.yaml)
$ eidos linter
✗ specs/discovery/watchlist.md trailing-whitespace, heading-levels, heading-punctuation, list-marker, bare-urls, blank-lines, heading-blank-lines
1 file drifted; eidos linter --fix settles them
$ eidos linter --fix
✓ specs/discovery/watchlist.md trailing-whitespace, heading-levels, heading-punctuation, list-marker, bare-urls, blank-lines, heading-blank-lines
$ eidos linter
clean: 14 files as the rules would write themWrite down what you’re making.
Download Eidos MD, open a folder, and start from the framework closest to your work. Everything it gives you can be reshaped later.
Free for macOS, Windows, and Linux. Your files stay plain text in a folder you own.