legal-navigation
A privacy link that 404s is worse than none: it says "we have a policy" and proves otherwise. This skill makes sure legal and policy links exist, resolve, and sit where people (and any acceptance flow) need them.
Activate when
- Legal pages exist or are being created, and navigation must reach them.
- Footer/signup/checkout show "Privacy" or "Terms" links that go nowhere, or legal pages are unreachable.
- Not to write the pages (
privacy-policy,terms-of-service,consumer-protection-readinessfor refund text).
Working alone
This skill is self-contained. Its companions (declared in its metadata) are skills whose method it may need to do its own promised work. Use of a companion can be conditional: declaring one does not mean running it. When a companion's lane applies, use the skill if it is installed; if not, follow its short entry in references/companion-methods.md and say in your report which lanes ran inline at reduced depth. Never skip an applicable lane silently. Skills mentioned here only for escalation, referral, documentation, or optional deeper follow-up are not dependencies: report the hand-off and finish honestly.
Companions: design-system-reconnaissance.
Inspect
- Inventory legal pages that exist in routes/files: privacy, terms, cookies/tracker notice, refund/returns/cancellation, accessibility statement, acknowledgements/licenses, imprint/legal notice, contact/support. Note real URLs.
- Inventory legal links across rendered pages: footer (every page), signup and login forms ("By signing up you agree…"), checkout, newsletter forms, consent controls (link to the cookie/privacy notice), emails, app settings. Run
node scripts/check-links.mjs --url <site> --render(paths relative to this skill's folder). - Compare: for every link, does the page exist and resolve (200, not soft-404)? For every existing legal page, is it linked from the footer on all pages? Do acceptance flows link the actual terms/privacy pages? Is there text claiming agreement next to a button that does not link the terms?
- Missing pages: which applicable pages do not exist (privacy based on actual personal-data flows; Terms for actual service commitments, accounts, user content, or paid access; returns/refunds only for real sales or an applicable notice)? Report to the owning skill; do not create legal content yourself or force every page onto every site.
- Placement and honesty: links are visible and labeled plainly; no pre-checked "I agree" boxes; consent to marketing is separate from terms acceptance; cookie-preferences control is reachable after the first choice (
consent-management). - Consistency: link text and page titles agree; URLs are stable; multilingual sites link to the matching language version (
multilingual-readiness).
Evidence that counts
Label each claim OBSERVED, SOURCE-INDICATED, DECLARED, INFERRED, UNKNOWN, or REVIEW REQUIRED. UNKNOWN is never a pass and never a failure.
- A link that resolves to a page with content: OBSERVED. A route file that renders "TODO": the page does not exist in any useful sense.
- Whether a page is legally required is REVIEW REQUIRED (
jurisdiction-applicability).
May change
Design first. Before creating or changing anything visible, inspect the project's existing design system (design-system-reconnaissance) and build from its tokens and components, by the component ladder: reuse, compose, extend, and only then create a matching component. Never impose a ReadyVibe look on the user's site.
Add footer, form, signup, and checkout links only to actual, reviewed pages; fix wrong URLs; add a preferences link only if the settings control works; add acceptance text with links near signup only when the owner has approved Terms; remove links to pages that will not exist rather than leaving dead ones. Before visible changes, inspect and reuse the website's design system, preserve responsive and accessible behavior, and check each contact destination. Never create placeholder legal pages to make links resolve or publish unresolved template markers. On multilingual sites, route each link to the matching language page and verify it resolves; do not imply translations are approved when they are not.
Must not claim
"All legal pages present" or "legally required links in place". Say which links exist and resolve.
Verify
Re-run check-links: zero broken legal links; each existing applicable legal page is linked from the relevant footers/forms; signup/checkout links open the actual approved documents; contact links work; view at 375px and keyboard-check to confirm navigation is reachable. For each offered locale, check the matching route or clearly disclosed language behavior.
Escalate
Missing pages that appear applicable (privacy-policy, terms-of-service); sites where applicable legal notices depend on market or sector (jurisdiction-applicability, regulated-domain-triggers).
No change is valid when
No legal pages apply yet and none are referenced, or all links exist, resolve, and are placed sensibly.
