What problem does it solve? Excalidraw diagrams often end up visually messy — arrows crossing text labels, overlapping headers, cramped spacing, or content clipped outside the viewport. A single polish pass frequently is not enough, and uncontrolled fixes can make things worse. This Skill runs a bounded, auditable iteration loop that fixes one defect class per pass, re-scores after every pass, and rolls back any change that lowers the score. ## Core Features & Use Cases - Iterative lint-score-repair loop: Repeatedly calls lint_drawing, score_drawing, and repair_drawing — one defect class per pass — until the drawing scores >= 95 with zero hard blockers, or maxPasses is reached. - Mandatory rollback on regression: Snapshots elements before every pass and reverts any pass (including auto_polish convergence assists) whose measured score drops below the pass-start score. - Geometry-only, semantics-preserving repair: Reroutes arrows through 32px gutters, pushes content below title bands, and redistributes spacing without adding, deleting, or relabeling nodes or edges; locked elements never move. - Secret redaction before save: Scans all text elements for JWTs, API keys, database URLs, and tokens, replacing them with [REDACTED_*] placeholders before the final save and SVG export. - Use Case: A 10-node service map scores 78 with four arrows crossing labels and an overlapping legend header. The loop clears ARROW_TEXT_INTERSECTION in pass 1, FRAME_TITLE_OVERLAP in pass 2, and spacing/viewport issues in pass 3, ending at 96 with a saved version note "lint-repair: 78 -> 96 (3 passes)" and an SVG export. ## Quick Start Ask the AI to run the lint-score-repair loop on your messy Excalidraw drawing, fixing overlapping arrows and headers one defect class at a time until it scores at least 95, then save a version and export an SVG.