Reading Box Notes
The society archive is mostly .boxnote files — Box Notes stored as ProseMirror
JSON. They can't be read directly. boxnote_to_text.py (stdlib Python only,
lossless UTF-8) renders them to clean Markdown: headings, bullet/numbered lists,
checkboxes, tables, links, and formatting.
When to use
- You need to read/search/quote any
.boxnote(meeting notes, calendars, proposals, rosters). - Someone added or edited Box Notes and the
_converted/mirror is stale. - You want one searchable file covering the entire archive.
Commands
Run from the society root (Scoiety Folders/):
# One note → screen
python ".claude/skills/read-boxnote/boxnote_to_text.py" "2022 - 2023/Autumn 2022/Meeting #1.boxnote"
# One note → a .md file
python ".claude/skills/read-boxnote/boxnote_to_text.py" "path/to/Note.boxnote" -o out.md
# Convert EVERY .boxnote into a mirror tree under _converted/
python ".claude/skills/read-boxnote/boxnote_to_text.py" --all "."
# Build one master full-text index of every note
python ".claude/skills/read-boxnote/boxnote_to_text.py" --index "." -o "_converted/ARCHIVE_INDEX.md"
Normal workflow
- To read/search the archive: prefer the already-generated
_converted/*.mdfiles and_converted/ARCHIVE_INDEX.md. Grep the index to find the note, then open the specific converted file for full context. - After Box Notes change: re-run
--allthen--indexto refresh. - Do not edit files in
_converted/by hand — they're regenerated. Edit the source.boxnotein Box, or a real doc in the term folder.
Notes
- Windows + Python 3.11 confirmed working; no third-party packages needed.
- Output is UTF-8. Terminal (Git Bash) may show
�for smart quotes/bullets — that's a console display quirk only; the written.mdfiles are correct. - Old notes' manual
·bullets and non-breaking spaces are normalized to clean Markdown automatically.