forked from bchanot/claude
geo-analyzer owns JSON-LD NAP (ownership matrix, seo/SKILL.md:261) and can rewrite it via G2 — AUTO tier, no confirmation (geo-analyzer.md:660). The LRN-032 protection lived ONLY in the /seo dispatcher prompt (seo/SKILL.md:339-343), so standalone /geo reconciled NAP with no canonical and no anti-seed guard — the exact zenquality trap, writing into client structured data. Root cause: a safety invariant that depended on the caller. Fixed at the layer that owns the data. - Data integrity: NAP direction rule, caller-independent, binds G2/G6. Covers CREATE (LocalBusiness from scratch) not just rewrite — geo builds missing schemas, seo-analyzer's wording only covered rewrite. - STEP 6 checklist: pointer at the line that triggers the action. Absent canonical is already the safe default (no directional fix), so no NAP collection step is needed in /geo — that would duplicate seo/SKILL.md STEP 0 and risk drift. Verified: make test 25+5+5 GREEN / 0 RED (incl. G3 strict-YAML frontmatter).