Agent skill
audit-check
Phase 2: Run mechanical checks and Gemini formatted audit
Install this agent skill to your Project
npx add-skill https://github.com/edwinhu/workflows/tree/main/skills/bluebook-audit/skills/audit-check
SKILL.md
Phase 2: Check (Mechanical + AI Audit)
Two-stage checking: Python mechanical checks catch definite errors; Gemini batch audit catches judgment-call issues.
Stage 2a: Mechanical Checks (Python)
python3 "${CLAUDE_SKILL_DIR}/../../../../skills/bluebook-audit/scripts/scan_formatting.py" --docx path/to/file.docx
Checks performed on ALL footnotes:
- Journal name small caps - Comprehensive pattern list (law reviews, finance journals, newspapers, periodicals, forums)
- Book title small caps - Detect italic book titles that should be small caps
- Id. chain validation - Rule 4.1 mechanical check (single-source predecessor)
- Signal italic consistency - All signals (see, cf., e.g.) must be italic
- Terminal period - Every footnote must end with a period
- Hereinafter consistency - Defined at first citation, used consistently after
- Author name supra format - Text before
*supra*should be roman, not italic (unless it's a case name short form). Catches*Manne, supra*→ should beManne, *supra* - Italic spillover - Trailing/leading spaces inside italic or small caps runs (e.g.,
*supra *should be*supra*). These don't affect Word display but cause Gemini misparses
NBSP Handling
DOCX uses non-breaking spaces (\xa0) in abbreviations. ALL search functions must handle both \x20 and \xa0:
No.\xa02106,Feb.\xa07,Oct.\xa021Wall St.\xa0J.,Corp.\xa0Governance
Stage 2b: Gemini Batch Formatted Audit
Default: Use Gemini Batch API (50% cheaper, handles all footnotes in one job). Fallback to sync calls if batch is unavailable.
Step 1: Extract formatted footnotes
python3 "${CLAUDE_SKILL_DIR}/../../../../skills/bluebook-audit/scripts/gemini_audit.py" --docx path/to/file.docx --extract-only
This outputs a JSON file mapping footnote numbers to formatted text with inline markup:
*text*= italic[SC]text[/SC]= small caps- Plain text = roman
Step 2: Submit Gemini Batch Job
Build a JSONL file with one request per footnote, then submit via Batch API:
# Build JSONL (one line per footnote)
for fn_num, formatted_text in footnotes.items():
request = {
"custom_id": f"fn-{fn_num}",
"body": {
"contents": [{"parts": [{"text": PROMPT.format(fn_num=fn_num, formatted_text=formatted_text)}]}],
"generationConfig": {"responseMimeType": "application/json", "temperature": 0.1}
}
}
# Submit batch job (see /gemini-batch skill for full pattern)
# Use examples/batch_processor.py pattern — DO NOT guess API parameters
IMPORTANT: Follow the /gemini-batch skill's Iron Law — read examples/batch_processor.py before writing batch code.
Fallback (sync): If batch is unavailable, use:
python3 "${CLAUDE_SKILL_DIR}/../../../../skills/bluebook-audit/scripts/gemini_audit.py" --docx path/to/file.docx
Gemini Prompt Focuses On:
- Source type classification (case, statute, article, book, newspaper, working paper, hearing, letter, regulation)
- Typeface correctness per Rule 2 (italic vs small caps vs roman)
- Abbreviation correctness per T6/T13
- Short form validity (cases must not use supra)
The Gemini audit MUST cover every footnote, not a subset. Auditing only "major" or "flagged" footnotes guarantees missed errors.
Previous failure: Auditing 45 of 239 footnotes missed 41 journal names needing small caps. </EXTREMELY-IMPORTANT>
Stage 2c: Claude Cross-Footnote Review
Never trust a single agent. After Gemini's per-footnote audit, Claude reviews the full set for cross-footnote patterns that per-footnote analysis misses.
Claude receives:
- ALL formatted footnotes (fits in 1M context at ~20-40K tokens)
- Gemini's per-footnote findings
- Mechanical check results
Claude reviews for:
- Supra chain validity — does
supra note 42actually point to the right source? - Hereinafter consistency — defined at first citation? Used consistently after?
- Repeated source type errors — if Gemini misclassified one SEC release, it likely missed them all
- Id. chain context — predecessor footnote analysis that per-footnote Gemini can't see
- Gemini false positive filtering — flag Gemini suggestions that are likely wrong (SEC releases, exec orders, working papers)
Output: Annotated version of Gemini findings with cross-footnote issues added and false positives flagged.
Red Flags - STOP If You Catch Yourself:
| Action | Why Wrong | Do Instead |
|---|---|---|
| Sending plain text to Gemini | 10-20x false positives without formatting info | Always include inline markup |
| Auditing a subset of footnotes | Missed errors guaranteed | Audit ALL footnotes |
| Skipping NBSP variants in mechanical checks | Silent search failures | Always try both space types |
| Trusting Gemini results without Claude cross-check | Per-footnote misses cross-footnote patterns | Always run Stage 2c |
| Trusting Claude review without mechanical checks | Claude misses deterministic patterns | Mechanical checks are authoritative for their categories |
| Skipping any stage | Each stage catches different error classes | Run all three: mechanical → Gemini → Claude |
Merging Three-Layer Findings
Priority order: Mechanical > Claude cross-review > Gemini per-footnote
Mechanical checks are authoritative for deterministic rules:
- Signal italic formatting → trust mechanical checker (regex on run-level XML)
- Terminal periods → trust mechanical checker
- Id. chain validation → trust mechanical checker
- Journal/book small caps patterns → trust mechanical checker
Claude cross-review is authoritative for:
- Cross-footnote consistency (supra chains, hereinafter definitions)
- Gemini false positive filtering (source type misclassifications)
- Patterns across footnotes that per-footnote analysis misses
Gemini per-footnote is authoritative for:
- Individual source type classification (when not overridden by Claude)
- Abbreviation correctness (T6/T13 tables)
- Short form validity
Never drop a mechanical finding because Gemini or Claude didn't flag it. The mechanical checker catches 100% of signal issues by design.
Gate: Exit Check
Before proceeding to Report phase:
-
scratch/audit_findings.jsonexists - Mechanical check results cover ALL footnotes
- Gemini audit results cover ALL footnotes (verify count matches extract)
- Claude cross-footnote review complete
- Findings merged (mechanical > Claude > Gemini priority)
Next Phase
Read ${CLAUDE_SKILL_DIR}/../../../../skills/bluebook-audit/skills/audit-report/SKILL.md and follow its instructions.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
audit-fix-loop
This skill should be used when the user asks to 'iteratively improve', 'audit and fix', 'hill-climb quality', 'grade and improve', 'score and fix', 'audit loop', 'quality loop', or needs structured iterative improvement of an artifact using scored independent audits. Also use when the user invokes a ralph loop for quality improvement rather than task completion.
ds-spec-reviewer
Internal skill used by ds-brainstorm at Phase 1 exit gate. Dispatches a reviewer subagent to verify SPEC.md completeness before planning. NOT user-facing.
pptx-render
Use when the user asks to "render pptx", "show pptx slide", "compare with pptx", "pptx to image", "export pptx slide", "original slide", "show me the original", "what does the pptx look like", or needs to extract a specific PPTX slide's content for visual comparison.
obsidian-organize
Organize Obsidian notes according to clawd's preferences. Use when user asks to "organize notes", "move notes to right folder", "clean up vault", "tidy vault", "file this note", or when creating new notes in the Obsidian vault. Also use when moving, renaming, or categorizing notes, or when the vault root has stray files.
dev-verify
This skill should be used when the user asks to 'verify completion', 'check that tests pass', 'confirm feature works', or REQUIRED Phase 7 of /dev workflow (final). Enforces fresh runtime evidence before claiming completion.
dev
This skill should be used when the user asks to 'start a feature', 'build a feature', 'implement a feature', 'develop', 'new feature', or needs the full 7-phase development workflow with TDD enforcement.
Didn't find tool you were looking for?