Writing and maintaining lat.md documentation files — structured markdown that describes a project's architecture, design decisions, and test specs. Use when creating, editing, or reviewing files in the lat.md/ directory.
This skill covers the syntax, structure rules, and conventions for writing lat.md/ files. Load it whenever you need to create or edit sections in the lat.md/ directory.
lat.md/ files describe what the project does and why — domain concepts, key design decisions, business logic, and test specifications. They do NOT duplicate source code. Think of each section as an anchor that source code references back to.
Good candidates for sections:
Bad candidates:
Every section must have a leading paragraph — at least one sentence immediately after the heading, before any child headings or other block content.
The first paragraph must be ≤250 characters (excluding [[wiki link]] content). This paragraph is the section's identity — it appears in search results, command output, and RAG context.
# Good Section
Brief overview of what this section documents and why it matters.
More detail can go in subsequent paragraphs, code blocks, or lists.
## Child heading
Details about this child topic.
# Bad Section
## Child heading
This is invalid — "Bad Section" has no leading paragraph.
lat check enforces this rule.
Sections are addressed by file path and heading chain:
lat.md/path/to/file#Heading#SubHeadingfile#Heading#SubHeading (when the file stem is unique)Examples: lat.md/tests/search#RAG Replay Tests, cli#init, parser#Wiki Links.
Cross-reference other sections or source code with [[target]] or [[target|alias]].
See [[cli#init]] for setup details.
The parser validates [[parser#Wiki Links|wiki link syntax]].
Reference functions, classes, constants, and methods in source files:
[[src/config.ts#getConfigDir]] — function
[[src/server.ts#App#listen]] — class method
[[lib/utils.py#parse_args]] — Python function
[[src/lib.rs#Greeter#greet]] — Rust impl method
[[src/app.go#Greeter#Greet]] — Go method
[[src/app.h#Greeter]] — C struct
lat check validates that all targets exist.
Tie source code back to lat.md/ sections with @lat: comments:
// @lat: [[cli#init]]
export function init() { ... }
# @lat: [[cli#init]]
def init():
...
Supported comment styles: // (JS/TS/Rust/Go/C) and # (Python).
Place one @lat: comment per section, at the relevant code — not at the top of the file.
Describe tests as sections in lat.md/ files. Add frontmatter to require that every leaf section has a matching @lat: comment in test code:
---