What problem does it solve? Deleting an imperative Blockly block definition (Blockly.Blocks['x'] = {...}) is actually a behavior change, because the imperative definition is the one users see while the declarative one sits dormant. This Skill prevents silent regressions by enforcing a compare-first, judge-which-side-is-correct, then delete workflow. ## Core Features & Use Cases - Parity-driven audit: Runs the audit-block-def-parity vitest report to list per-block differences in slots, fields, output, statement, and color before any deletion. - Semantic judgment checklist: Decides which definition is correct based on the block's semantics, with documented traps like swapped declarations, hollow declarations, and guardrails that silently skip constructor-based blocks. - Safe deletion gates: Requires parity confirmation, round-trip conversion tests, browser verification of labels and field types, baseline updates, and tombstone comments before removing code. - Use Case: When migrating a Blockly-based editor from imperative to declarative block definitions, use this Skill to retire one block type at a time without breaking labels, dropdowns, or extraState behavior. ## Quick Start Ask the AI to retire the imperative definition of a specific block type such as cpp_var_ref, or leave the argument empty to pick the next block from the parity report.