"If markup is complicated, then the opposite of that complexity must be... markdown."
— Anil Dash
Markdown in MOOLLM
Session Logs
# Session: Adventure Uplift## 📑 Index1. [Overview](#1-overview)
2. [Decisions](#2-decisions)
---
## 1. Overview<detailsopen><summary><strong>🎯 Mission</strong></summary>
Build `adventure.py` to compile adventures to web apps.
</details><detailsopen><summary><strong>📋 Technical Details</strong></summary>
Architecture decisions go here...
</details>
READMEs
# Skill Name> *"One-liner that captures the essence"*## What Is It?
Brief explanation.
## When to Use- Scenario 1
- Scenario 2
## Dovetails With- [related-skill/](../related-skill/)
Embedded Data
Markdown + YAML code blocks = structured data in narrative:
Here's the configuration:
```yaml
rooms:
- start
- maze
- end
```
And the reasoning behind it...
"It's fundamentally text. No format/vendor lock-in and very amenable to living in a git repo. I can tell an LLM to look at the code in this repo and make me an API_documentation.md and it'll grasp that I want a text-based summary."
— @Havoc
Why LLMs Prefer Markdown
Property
Benefit
Training data
Billions of .md files in training corpus
Structure
Headers, lists, code blocks = clear semantics
Low overhead
No bracket matching (unlike JSON)
Comments in code blocks
Context preserved
Human-readable
Model can "think out loud" naturally
LLM Output Patterns
LLMs naturally output:
# headers for sections
- bullets for lists
**bold** for emphasis
Tables for structured comparisons
Match this in your prompts — write instructions in Markdown, get Markdown back.
The "Source is Destination" Principle
Markdown's power: it's both the source AND the readable output.
Format
Source
Destination
Gap
LaTeX
.tex
PDF
Large
HTML
.html
Browser
Medium
Markdown
.md
.md (or rendered)
None
This is why YAML Jazz matters:
# This comment is readable in the source# AND visible to the LLM# AND preserved in the fileconfig:setting:value
The source IS the documentation. The documentation IS the source.
This is one of Markdown's superpowers. Hide complexity, show structure. Let readers scan summaries without drowning in details.
<detailsopen><summary><strong>🎯 Important Section — Open by Default</strong></summary>
Critical content that readers need to see immediately.
</details><detailsopen><summary><strong>📋 Technical Details — Collapsed by Default</strong></summary>
Dense content that only some readers need.
Click to expand when curious.
</details>
LLM-Generated Summaries in <summary> Tags
Key insight: The <summary> tag should contain a descriptive summary that tells readers what's inside WITHOUT opening. LLMs are great at generating these!
Bad:
<detailsopen><summary>Click to see more</summary>
...content...
</details>
Good:
<detailsopen><summary><strong>🎤 Gary Drescher's Talk — Schema Mechanism + LLM = Flight</strong></summary>
Full transcript of Gary explaining how LLMs complete what Made-Up Minds started...
</details>
<detailsopen><summary><strong>📚 Part 1: The Gathering</strong></summary>
Overview of who attended...
<detailsopen><summary>Living Legends (25 people)</summary>
Full list with bios...
</details><detailsopen><summary>Memorial Candles (10 people)</summary>
Those speaking through memory...
</details></details>
When to Use Each Pattern
Pattern
Use When
<details open>
Main content, must-read sections
<details open> (closed)
Supporting details, optional depth
Nested <details open>
Hierarchical information (parts > chapters > sections)
Summary with key points
Reader can decide without opening
Summary with just title
Section is self-explanatory
The Session Log Pattern
MOOLLM session logs use this extensively:
## 5. Free-For-All Q&A
<detailsopen><summary><strong>🎤 Highlights from the Chaos</strong> — Scott on 16KB, Will on distributed AI, Hofstadter on strange loops</summary>
### On Distributed Intelligence
**SCOTT ADAMS:** "Wait — schemas are literally what I fit in sixteen kilobytes in 1978!"
**WILL WRIGHT:** "We distributed intelligence INTO THE OBJECTS..."
...full transcript...
</details>
The reader sees:
Section title
Key topics covered
Can skip if not interested, or expand for full content
This is why session logs are readable even at 7000+ lines!
Always use fenced code blocks with language hints:
```yaml
name: example
```
```python
def example():
pass
```
5. Blockquotes for Quotes/Emphasis
> *"The filesystem IS the microworld."*> — MOOLLM Constitution
Anti-Patterns
❌ Over-nesting headers — More than 4 levels is confusing
❌ Inline HTML everywhere — Defeats plain-text readability
❌ No structure — Wall of text without headers/sections
❌ Proprietary extensions — Stick to GFM for portability
❌ Rendered-only thinking — If it's unreadable raw, rethink it
The Durability Argument
From HN:
"I don't want to worry about whatever cursed format OneNote uses still being something I can extract in 2035."
— @Havoc
Markdown files from 2004 are still readable today. They'll be readable in 2045. Plain text is forever.
MOOLLM session logs, skill files, and READMEs will outlive any proprietary format.
Dovetails With
yaml-jazz/ — YAML is the data; Markdown is the prose
session-log/ — Session logs are Markdown documents
"The trillion-dollar AI industry's system for controlling their most advanced platforms is a plain text format one guy made up for his blog and then bounced off of a 17-year-old kid before sharing it with the world for free."
— Anil Dash