Phase 1: Extract Footnotes
Parse the DOCX file and build structured data for all subsequent phases.
What This Phase Does
- Parse
word/footnotes.xmlvia lxml - Extract each footnote's runs with formatting flags (italic, small caps, bold)
- Parse
word/_rels/footnotes.xml.relsfor hyperlink URLs - Build citation registry (hereinafter definitions, author-to-first-cite mapping)
- Resolve cross-references (
supra note [_]placeholders) - Extract all URLs for archiving inventory
Script
BB_SCRIPTS=$(${CLAUDE_PLUGIN_ROOT}/skills/bluebook-audit/scripts) && python3 "$BB_SCRIPTS/extract_footnotes.py" --docx <path>
Output: scratch/footnotes_data.json
Gate: Exit Extract
Before proceeding to Check phase:
-
scratch/footnotes_data.jsonexists - Contains entries for ALL footnotes in the document (verify count)
- Each entry has
formatted_textfield with inline markup - Citation registry has hereinafter definitions
- URL inventory extracted
If footnote count doesn't match document: STOP. Investigate missing footnotes before proceeding.
Next Phase
Read ${CLAUDE_PLUGIN_ROOT}/skills/bluebook-audit/skills/audit-check/SKILL.md and follow its instructions.