WrongoDB Blogging
Overview
Create blog post plans and drafts for the WrongoDB series without re-reading or re-deriving the series structure. Use the canonical prompts embedded below and the image generator script in this repo.
Workflow (plan -> write -> images)
1) Planning a post
- Read the "Planning prompt (canonical)" section below and follow it exactly.
- Before locking the topic, grab inspiration from recent work:
- Scan git history beyond the last 20 commits and pinpoint the relevant change:
git log --oneline --reverse --since="2025-12-01" (widen/narrow dates as needed)
git log --oneline -- src/blockfile.rs src/leaf_page.rs src/btree.rs docs/decisions.md (file-focused)
git log -S "BlockFile" -S "FULLFSYNC" -S "checkpoint" -S "slot" --oneline (string-focused)
- Cross-check
PLAN.md, docs/decisions.md, blog/SERIES.md
- Codex session logs for narrative hooks:
~/.codex/sessions and ~/.codex/history.jsonl (use rg for keywords like blockfile, fs_usage, BTree, checkpoint)
- Do not reread or re-discover prior posts; the prompt already encodes the structure and voice.
- Produce a plan with the required sections (Title + hook, scope, 7 beats, decisions, artifact, images, verification).
- If details are uncertain, tag as TO VERIFY.
- Outline clarity guidelines (apply when the user asks for simpler language or stronger pedagogy):
- Reduce jargon and define any unavoidable terms in plain language.
- Add a one-sentence definition for the core concept (e.g., “A B+tree is…”).
- Deepen the “Why” beyond the immediate symptom (e.g., not just “page full,” but why the structure is a standard DB building block).
- Keep each beat short and explanation-forward (one or two sentences max).
- Aha-moment mining (when planning or revising posts):
- Scan
~/.codex/sessions and ~/.codex/history.jsonl for the exact questions/confusions you had (e.g., “what the hell is a slot,” “when do we compact?”).
- Extract 2–4 of those questions and answer them in the post as short, teachable inserts.
- Image planning lessons:
- Each image prompt must state the story purpose (e.g., “show the durability boundary” or “map trace lines to meaning”), not just the subject.
- Prefer narrative structures (before/after, timelines, mappings) over generic box-and-arrow diagrams.
- Specify labels and icons that reinforce the story (e.g., crash bolt, shield, timeline bands).
- After generation, validate files are real images (
file blog/<post-dir>/images/*.png); if invalid or dull, revise prompts and regenerate.
- Story/structure lessons:
- After any significant change anywhere, re-check that the arc still flows.
- Introduce new concepts inline before using jargon; keep definitions direct (no metaphors).
- Use sections for readability; include explicit transitions or “lightbulb” moments where they help.
- Diagrams must be narrated in the text and placed near the concept they illustrate.
- Include a brief “how I ran the tool” line in the post when a tool is central; mention other options you did not use.
- Keep series continuity: add a short recap/link to the previous post when relevant; ensure numbering/order is updated.
2) Writing a post
- Read the "Writing prompt (canonical)" section below and follow it exactly.
- Use the plan as the single source of truth; do not add new slices.
- Keep the voice candid, playful, learning-first, “wrong on purpose.”
- Keep the body tight (5–10 minute read).
- Include the images specified in the plan.
3) Generating images
- For each image prompt, run:
python blog/generate_image.py "<prompt>" --post <post-dir> --out blog/<post-dir>/images/<NN-short-name>.png
- Prefer sizes/aspects by intent:
- Hero:
--aspect 16:9 --size 2K
- Diagrams:
--aspect 4:3 --size 1K or --aspect 1:1 --size 1K
- Filenames must be prefixed with the order they appear in the post:
01-, 02-, 03-, ...
- If an image prompt is unclear, revise the prompt text first (do not guess).
QA checklist
- Keep TO VERIFY tags until verified against code or notes.
- Confirm the plan matches the thin-slice scope.
- Ensure images were generated with
blog/generate_image.py, stored under blog/<post-dir>/images/, and filenames match the post markdown.
Planning prompt (canonical)
Blog Post Planning Prompt (WrongoDB series)
Use this prompt to plan a new post in the WrongoDB devlog series.
Goal
Produce a tight, publish-ready plan for a single new post (5–10 minute read) that advances the series by one thin slice.
Known series DNA (do NOT re-derive)
- Voice: candid, playful, learning-first
- Structure rhythm: hook → context → mental model → one key decision → concrete artifact → why it matters → what’s next.
- Teaching moves: rhetorical questions, crisp definitions, zoom from concept to bytes, explicit layer separation.
- Visual rhythm: 2–4 images per post
- Scope: one slice only, no roadmap dumps.
Planning rules
- Plan the next post using the structure above
- Pick one core concept and one key decision to explain, if not provided by the user.
- Include one concrete artifact to anchor the explanation (code, struct, layout, file header, algorithm step, etc.).
- Prefer examples that can be verified against the repo if needed.
- If details are uncertain, mark as TO VERIFY (do not invent).
Output format
Return a plan with the following sections, in order:
1) Title + Subtitle + One-line hook
- Proposed title
- A meaningful subtitle that sharpens the focus (not a generic label)
- A single-sentence hook that sounds like the existing voice
2) Thin-slice scope
- One sentence: “This post explains … and stops before …”
3) Outline (7 beats)
Use exactly these beats:
- Hook
- Context / Why this exists
- Mental model (diagram candidate)
- Key decision (trade-off + rationale)
- Concrete artifact (code/struct/layout)
- Why it matters (behavior + invariants)
- What’s next (2–3 bullets)
4) Key decisions
- Decision: …
- Alternatives considered: … (2–3 options max)
- Trade-offs: …
5) Concrete artifact
- Name the artifact and where it lives (file path or conceptual object)
- Bullet list of the 2–4 elements you will show or explain
6) Images
- 2–4 image prompts (short, literal)
- Include the intended filename for each image with an ordered prefix (e.g.,
01-..., 02-...)
7) Verification checklist
- 3–6 bullets of facts to verify against code/notes
- If anything is speculative, tag it TO VERIFY
Style constraints for the plan
- Keep each section short; avoid narrative prose.
- Prefer plain language; avoid jargon unless defined.
- If the topic is concept-heavy, include a one-sentence definition in the plan.
Example: acceptable brevity (mini)
- “Key decision: explicit allocation vs implicit append; trade-off: clarity vs convenience.”
Writing prompt (canonical)
Blog Post Writing Prompt (WrongoDB series)
Use this prompt to write a full post from an existing outline created with the planning prompt above.
Do not reread or re-discover the existing posts. The structure and voice are already known and summarized here.
Inputs
You will be given a plan that follows the 7-beat outline and includes:
- Title + One-line hook
- Thin-slice scope
- Outline beats
- Key decisions
- Concrete artifact
- Images
- Verification checklist
Goal
Produce a complete markdown post that follows the plan exactly, in the established voice and structure, and is ready to drop into blog/NN-title.md.
Known series DNA (do NOT re-derive)
- Voice: candid, playful, learning-first, “wrong on purpose.”
- Structure rhythm: hook → context → mental model → one key decision → concrete artifact → why it matters → what’s next.
- Teaching moves: rhetorical questions, crisp definitions, zoom from concept to bytes, explicit layer separation.
- Visual rhythm: 2–4 images per post.
- Scope: one slice only, no roadmap dumps.
Writing rules
- Follow the plan’s 7 beats in order.
- Do not add new topics or extra slices.
- Include 2–4 inline images as markdown:
.
- Image filenames must be prefixed in order of appearance:
01-, 02-, 03-, ...
- Generate images by running
python blog/generate_image.py "<prompt>" --post <post-dir> --out blog/<post-dir>/images/<NN-short-name>.png.
- If a fact is uncertain, mark it inline as TO VERIFY and keep going.
- Do not invent code details; only reference file paths or structs if the plan says they exist.
- Avoid markdown links unless the plan explicitly provides them.
Output format
Return a single markdown document with:
# Title
## Subtitle
- Optional hero image (if the plan calls for it)
- Body sections in a natural flow (no numbered headings required)
- “What’s next” as a bullet list
Style constraints
- Tight paragraphs (3–6 lines each)
- Occasional rhetorical questions
- Definitions in short, punchy sentences
- Avoid marketing language
Post template (skeleton)
<Context / why this exists>
<Mental model + image>
<Key decision + trade-off>
What’s next
After writing
- Ensure all TO VERIFY flags are still present (do not resolve them).
- Ensure all images mentioned in the plan are included.
- Ensure each image was generated with
blog/generate_image.py, stored under blog/<post-dir>/images/, and matches the prompt.
- Ensure the post matches the thin-slice scope.
1---2name: wrongodb-blogging-23description: Plan and write WrongoDB devlog posts in this repo. Use when asked to plan, outline, draft, or revise posts under blog/, generate blog images, or follow the series structure for WrongoDB. This skill embeds the canonical planning and writing prompts and uses blog/generate_image.py for image generation.4---56# WrongoDB Blogging78## Overview9Create blog post plans and drafts for the WrongoDB series without re-reading or re-deriving the series structure. Use the canonical prompts embedded below and the image generator script in this repo.1011## Workflow (plan -> write -> images)1213### 1) Planning a post14- Read the "Planning prompt (canonical)" section below and follow it exactly.15- Before locking the topic, grab inspiration from recent work:16 - Scan git history beyond the last 20 commits and pinpoint the relevant change:17 - `git log --oneline --reverse --since="2025-12-01"` (widen/narrow dates as needed)18 - `git log --oneline -- src/blockfile.rs src/leaf_page.rs src/btree.rs docs/decisions.md` (file-focused)19 - `git log -S "BlockFile" -S "FULLFSYNC" -S "checkpoint" -S "slot" --oneline` (string-focused)20 - Cross-check `PLAN.md`, `docs/decisions.md`, `blog/SERIES.md`21 - Codex session logs for narrative hooks: `~/.codex/sessions` and `~/.codex/history.jsonl` (use `rg` for keywords like `blockfile`, `fs_usage`, `BTree`, `checkpoint`)22- Do not reread or re-discover prior posts; the prompt already encodes the structure and voice.23- Produce a plan with the required sections (Title + hook, scope, 7 beats, decisions, artifact, images, verification).24- If details are uncertain, tag as **TO VERIFY**.25- Outline clarity guidelines (apply when the user asks for simpler language or stronger pedagogy):26 - Reduce jargon and define any unavoidable terms in plain language.27 - Add a one-sentence definition for the core concept (e.g., “A B+tree is…”).28 - Deepen the “Why” beyond the immediate symptom (e.g., not just “page full,” but why the structure is a standard DB building block).29 - Keep each beat short and explanation-forward (one or two sentences max).30- Aha-moment mining (when planning or revising posts):31 - Scan `~/.codex/sessions` and `~/.codex/history.jsonl` for the exact questions/confusions you had (e.g., “what the hell is a slot,” “when do we compact?”).32 - Extract 2–4 of those questions and answer them in the post as short, teachable inserts.33- Image planning lessons:34 - Each image prompt must state the **story purpose** (e.g., “show the durability boundary” or “map trace lines to meaning”), not just the subject.35 - Prefer narrative structures (before/after, timelines, mappings) over generic box-and-arrow diagrams.36 - Specify labels and icons that reinforce the story (e.g., crash bolt, shield, timeline bands).37 - After generation, validate files are real images (`file blog/<post-dir>/images/*.png`); if invalid or dull, revise prompts and regenerate.38- Story/structure lessons:39 - After any significant change anywhere, re-check that the arc still flows.40 - Introduce new concepts inline before using jargon; keep definitions direct (no metaphors).41 - Use sections for readability; include explicit transitions or “lightbulb” moments where they help.42 - Diagrams must be narrated in the text and placed near the concept they illustrate.43 - Include a brief “how I ran the tool” line in the post when a tool is central; mention other options you did not use.44- Keep series continuity: add a short recap/link to the previous post when relevant; ensure numbering/order is updated.4546### 2) Writing a post47- Read the "Writing prompt (canonical)" section below and follow it exactly.48- Use the plan as the single source of truth; do not add new slices.49- Keep the voice candid, playful, learning-first, “wrong on purpose.”50- Keep the body tight (5–10 minute read).51- Include the images specified in the plan.5253### 3) Generating images54- For each image prompt, run:55 `python blog/generate_image.py "<prompt>" --post <post-dir> --out blog/<post-dir>/images/<NN-short-name>.png`56- Prefer sizes/aspects by intent:57 - Hero: `--aspect 16:9 --size 2K`58 - Diagrams: `--aspect 4:3 --size 1K` or `--aspect 1:1 --size 1K`59- Filenames must be prefixed with the order they appear in the post: `01-`, `02-`, `03-`, ...60- If an image prompt is unclear, revise the prompt text first (do not guess).6162## QA checklist63- Keep **TO VERIFY** tags until verified against code or notes.64- Confirm the plan matches the thin-slice scope.65- Ensure images were generated with `blog/generate_image.py`, stored under `blog/<post-dir>/images/`, and filenames match the post markdown.6667---6869## Planning prompt (canonical)7071# Blog Post Planning Prompt (WrongoDB series)7273Use this prompt to plan a new post in the WrongoDB devlog series.7475---7677## Goal78Produce a tight, publish-ready plan for a single new post (5–10 minute read) that advances the series by **one thin slice**.7980## Known series DNA (do NOT re-derive)81- Voice: candid, playful, learning-first82- Structure rhythm: hook → context → mental model → one key decision → concrete artifact → why it matters → what’s next.83- Teaching moves: rhetorical questions, crisp definitions, zoom from concept to bytes, explicit layer separation.84- Visual rhythm: 2–4 images per post85- Scope: one slice only, no roadmap dumps.8687## Planning rules88- Plan the next post using the structure above89- Pick **one** core concept and **one** key decision to explain, if not provided by the user.90- Include **one** concrete artifact to anchor the explanation (code, struct, layout, file header, algorithm step, etc.).91- Prefer examples that can be verified against the repo if needed.92- If details are uncertain, mark as **TO VERIFY** (do not invent).9394## Output format95Return a plan with the following sections, in order:9697### 1) Title + Subtitle + One-line hook98- Proposed title99- A meaningful subtitle that sharpens the focus (not a generic label)100- A single-sentence hook that sounds like the existing voice101102### 2) Thin-slice scope103- One sentence: “This post explains … and stops before …”104105### 3) Outline (7 beats)106Use exactly these beats:1071. Hook1082. Context / Why this exists1093. Mental model (diagram candidate)1104. Key decision (trade-off + rationale)1115. Concrete artifact (code/struct/layout)1126. Why it matters (behavior + invariants)1137. What’s next (2–3 bullets)114115### 4) Key decisions116- Decision: …117- Alternatives considered: … (2–3 options max)118- Trade-offs: …119120### 5) Concrete artifact121- Name the artifact and where it lives (file path or conceptual object)122- Bullet list of the 2–4 elements you will show or explain123124### 6) Images125- 2–4 image prompts (short, literal)126- Include the intended filename for each image with an ordered prefix (e.g., `01-...`, `02-...`)127128### 7) Verification checklist129- 3–6 bullets of facts to verify against code/notes130- If anything is speculative, tag it **TO VERIFY**131132---133134## Style constraints for the plan135- Keep each section short; avoid narrative prose.136- Prefer plain language; avoid jargon unless defined.137- If the topic is concept-heavy, include a one-sentence definition in the plan.138139## Example: acceptable brevity (mini)140- “Key decision: explicit allocation vs implicit append; trade-off: clarity vs convenience.”141142---143144## Writing prompt (canonical)145146# Blog Post Writing Prompt (WrongoDB series)147148Use this prompt to write a full post **from an existing outline** created with the planning prompt above.149**Do not reread or re-discover the existing posts.** The structure and voice are already known and summarized here.150151---152153## Inputs154You will be given a plan that follows the 7-beat outline and includes:155- Title + One-line hook156- Thin-slice scope157- Outline beats158- Key decisions159- Concrete artifact160- Images161- Verification checklist162163## Goal164Produce a complete markdown post that follows the plan exactly, in the established voice and structure, and is ready to drop into `blog/NN-title.md`.165166## Known series DNA (do NOT re-derive)167- Voice: candid, playful, learning-first, “wrong on purpose.”168- Structure rhythm: hook → context → mental model → one key decision → concrete artifact → why it matters → what’s next.169- Teaching moves: rhetorical questions, crisp definitions, zoom from concept to bytes, explicit layer separation.170- Visual rhythm: 2–4 images per post.171- Scope: one slice only, no roadmap dumps.172173## Writing rules174- Follow the plan’s 7 beats in order.175- Do not add new topics or extra slices.176- Include 2–4 inline images as markdown: ``.177- Image filenames must be prefixed in order of appearance: `01-`, `02-`, `03-`, ...178- Generate images by running `python blog/generate_image.py "<prompt>" --post <post-dir> --out blog/<post-dir>/images/<NN-short-name>.png`.179- If a fact is uncertain, mark it inline as **TO VERIFY** and keep going.180- Do not invent code details; only reference file paths or structs if the plan says they exist.181- Avoid markdown links unless the plan explicitly provides them.182183## Output format184Return a single markdown document with:1851) `# Title`1862) `## Subtitle`1872) Optional hero image (if the plan calls for it)1883) Body sections in a natural flow (no numbered headings required)1894) “What’s next” as a bullet list190191## Style constraints192- Tight paragraphs (3–6 lines each)193- Occasional rhetorical questions194- Definitions in short, punchy sentences195- Avoid marketing language196197## Post template (skeleton)198199# <Title>200201## <Subtitle>202203204205<Hook paragraph>206207<Context / why this exists>208209<Mental model + image>210211<Key decision + trade-off>212213<Concrete artifact explanation>214215<Why it matters>216217## What’s next218- <bullet>219- <bullet>220- <bullet>221222---223224## After writing225- Ensure all **TO VERIFY** flags are still present (do not resolve them).226- Ensure all images mentioned in the plan are included.227- Ensure each image was generated with `blog/generate_image.py`, stored under `blog/<post-dir>/images/`, and matches the prompt.228- Ensure the post matches the thin-slice scope.