earth.anywhere.co

compliance-checker

Use this skill when a product engineer wants to audit existing code for Earth Design System (EDS, `@adaptavant/eds-core`) anti-patterns, misuse, deprecated APIs, or HTML accessibility violations. Triggers include 'audit EDS usage', 'check for EDS anti-patterns', 'review this file for EDS violations', 'is this EDS-compliant', 'lint my EDS code', or any request to scan a file or directory for design-system misuse. Detection-only — produces a findings report with suggested fixes and refers remedia…

First seen May 20, 2026

Installation

$ npx skills add https://earth.anywhere.co

Summary

  • Use this skill when a product engineer wants to audit existing code for Earth Design System (EDS, `@adaptavant/eds-core`) anti-patterns, misuse, deprecated APIs, or HTML accessibility violations.
  • Triggers include 'audit EDS usage', 'check for EDS anti-patterns', 'review this file for EDS violations', 'is this EDS-compliant', 'lint my EDS code', or any request to scan a file or directory for design-system misuse.
  • Detection-only — produces a findings report with suggested fixes and refers remediation to the `co-author` skill.
  • Do NOT use this skill for authoring new EDS code (use `co-author`), reviewing PRs (use `pull-request-reviewer`), or fixing bugs inside `packages/core`.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from earth.anywhere.co.

npx skills add https://earth.anywhere.co

Browse all from earth.anywhere.co

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 11,871 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 32 installs

SKILL.md

EDS Usage Audit

A linter-style skill for product engineers consuming the Earth Design System. It scans a file or directory, flags anti-patterns and a11y violations against a fixed rule catalog, and hands remediation off to co-author. No edits.


Core Principles

  • Docs first, source second. Always consult earth.anywhere.co/llms.txt before reading packages/core. Never invent rules.
  • Audit, don't edit. This skill never calls Edit or Write on consumer code. It reports.
  • File-by-file, line-precise. Every finding cites path:line and the offending snippet.
  • Severity, not noise. Findings come from the rule catalog below. No style nits outside the catalog.
  • Hand off remediation. End every report with a pointer to the co-author skill.

Step-by-Step Workflow

Step 1 — Resolve scope

Determine what to audit:

  • If the user named a file or directory, use that.
  • If the user said "this file" while pointing at an open file in context, use that file.
  • If the scope is ambiguous, ask once via AskUserQuestion — present the candidate file(s) you inferred plus an "Other" option.
  • Refuse whole-repo scans unless the user explicitly confirms ("yes, the whole app").

Filter out non-EDS files up front: a file is in scope only if it imports from @adaptavant/eds-core or @adaptavant/eds-icons.

Step 2 — Load EDS knowledge (strict lookup order)

Same order as co-author. Stop at the earliest source that answers the question.

  1. https://earth.anywhere.co/llms.txt — fetch with WebFetch. Map of foundations + every component with .md links.
  2. Component .md page — https://earth.anywhere.co/components/<name>.md for each EDS component the target files import. Note: deprecated props (strikethrough or "⚠️ Deprecated"), accessibility props (accessibilityLabel, title, etc.), and required wrappers (Field, Root).
  3. Foundation .md page — https://earth.anywhere.co/foundations/<name>.md for token names (color tones, spacing, typography).
  4. Source at packages/core/src/components/<name>/ — only if docs are ambiguous about prop typing or runtime behavior. Read directly; do not spawn an Explore agent.

Rules:

  • Do not read source before docs.
  • Do not invent rules. If a behavior isn't documented and isn't in this skill's catalog, it isn't a violation.

Step 3 — Scan

For each file in scope:

  1. Read the file with Read.
  2. Walk the rule catalog (EDS001–EDS012, A11Y001–A11Y010). For each rule, apply its detection heuristic. Use Grep for repo-wide patterns where it's faster than re-reading.
  3. Record findings as { file, line, rule, severity, snippet, suggested_fix }. Snippet is the literal offending text, trimmed to one line.
  4. De-duplicate: if the same line triggers two overlapping rules (e.g. EDS006 + A11Y004 on a raw <input>), keep the higher-severity rule and reference the other in the suggested fix.

Step 4 — Report

Print findings grouped by file in this exact format:

EDS Usage Audit — <relative/path/to/file>

| Sev | Rule    | Line | Snippet                            | Suggested fix                          |
|-----|---------|------|------------------------------------|----------------------------------------|
| C   | EDS001  | 3    | <literal snippet>                  | <one-line fix>                         |
| H   | EDS004  | 42   | …                                  | …                                      |

Summary: <n> critical, <n> high, <n> medium, <n> low.

Severity letters: C (critical), H (high), M (medium), L (low).

If a file has zero findings, say so on one line: <path>: clean.

After all per-file tables, print one global summary line with the totals across all files.

Step 5 — Hand off

End with exactly one sentence:

Run the co-author skill on this file to apply the suggested fixes.

Do not call Edit, Write, or any other mutating tool on consumer code. The skill ends here.


Detection rules catalog

EDS rules

ID Severity Rule Detection heuristic Suggested fix
EDS001 critical No deprecated Icon / Symbol from @adaptavant/eds-core Import named Icon or Symbol from @adaptavant/eds-core, or import path @adaptavant/eds-core/icons or /symbols Switch to a named icon from @adaptavant/eds-icons/icons or /symbols
EDS002 critical No deep imports Import path matching `@adaptavant/eds-core/(src\ dist)/...` Import from @adaptavant/eds-core top-level (or its documented subpaths: /tokens, /utils, /tailwind)
EDS003 critical No deprecated entry points Import from @adaptavant/eds-core/widgets or @adaptavant/eds-core/experimental Use shared-widgets or stable components; escalate to EDS team if no replacement exists
EDS004 high No className / classNames / style / styles on EDS components JSX element whose tag matches a known EDS export AND has one of these props Use built-in props (variant, tone, size, etc.); if not expressible, escalate to EDS team
EDS005 high No raw HTML where an EDS component exists Raw <button>, <input>, <select>, <textarea>, <h1>–<h6>, <p> inside a file that imports from @adaptavant/eds-core Use Button, TextInput, Select, Textarea, Heading as="hN", Text
EDS006 high Inputs must live inside Field / Fieldset context TextInput, Checkbox, Radio, Select, Textarea rendered without a Field/Fieldset ancestor in the same file Wrap in <Field label="..."> (or <Fieldset> for groups)
EDS007 high App root must use Root provider Top-level App / _app / layout / root file imports from @adaptavant/eds-core but does not render <Root> Wrap app root with <Root brand={...} colorScheme={...} translations={...}>
EDS008 medium No hardcoded color literals on EDS-styled elements Raw #rgb, #rrggbb, rgb(, rgba(, or hsl( inside style, className, or CSS-in-JS in an EDS-using file Use a Tailwind token class (bg-accent, text-critical, etc.) per earth.anywhere.co/foundations/color
EDS009 medium No raw spacing/sizing literals \d+px / \d+rem in style or className strings Use Tailwind spacing tokens (p-4, gap-2, ...)
EDS010 medium No arbitrary Tailwind values className containing \[[^\]]+\] (e.g. bg-[#abc], w-[200px]) — tailwind/preset.ts disables arbitrary values Replace with the closest token class
EDS011 medium No deprecated props on EDS components Prop appears as strikethrough or with "⚠️ Deprecated" callout on the component's .md page Switch to the documented replacement prop
EDS012 low Typography preset, not raw style={{ fontSize: ... }} or text-[14px] adjacent to EDS imports Use Heading/Text with typography="..." preset

HTML accessibility rules

These catch a11y violations that EDS components prevent when used correctly — raw HTML or misused EDS components bypass the system's built-in guarantees. Before flagging, cross-check the component's .md page on earth.anywhere.co/components/<name> for component-specific a11y props (e.g. accessibilityLabel, title) — those satisfy the rule.

ID Severity Rule Detection heuristic Suggested fix
A11Y001 critical Icon-only buttons must have an accessible name <Button> whose only child is an icon component (no text node) and which lacks aria-label or accessibilityLabel Add aria-label="..." or use the labeled icon-button pattern from earth.anywhere.co/components/button
A11Y002 critical <img> requires alt Raw <img> JSX with no alt attribute Add alt="..." (empty alt="" only if purely decorative)
A11Y003 critical Interactive <div> / <span> is forbidden <div> or <span> with onClick / onKeyDown and no role / tabIndex Use <Button variant="ghost"> or another EDS interactive component
A11Y004 critical Form controls need labels Raw <input> / <select> / <textarea> with no associated <label htmlFor> or aria-label Use <Field label="..."><TextInput .../></Field> (also covered by EDS006)
A11Y005 high Heading hierarchy must not skip levels Within one file: <Heading as="hN"> (or raw <hN>) where the previous heading was <hM> and N > M + 1 Use sequential levels; size visually via typography prop, not as
A11Y006 high Don't suppress focus rings outline: none / outline-none / focus:outline-none on an interactive element with no replacement focus indicator Remove the override; EDS components ship correct focus styles
A11Y007 high Decorative icons must be hidden from AT Icon from @adaptavant/eds-icons rendered next to a visible text label without aria-hidden="true" Add aria-hidden="true" to the decorative icon
A11Y008 medium Color must not be the sole information channel tone="critical" / tone="success" / text-red- / text-green- with no accompanying text or icon Pair color with a textual label (e.g. "Error:") or status icon
A11Y009 medium Modal / Dialog needs an accessible name <Modal> / <Dialog> without a title prop or aria-labelledby Set title="..." per component docs
A11Y010 medium Don't override tabIndex on EDS components tabIndex={...} on a JSX element imported from @adaptavant/eds-core Remove the override; EDS manages focus order

Guardrails (enforced)

The skill refuses to do any of the following:

  1. No file edits. This skill never calls Edit, Write, or NotebookEdit on consumer code. Detection only.
  2. No invented rules. A finding must trace to a rule in the catalog above. Don't flag style preferences, code-organization opinions, or rules pulled from training data.
  3. No unreproducible findings. Each finding's snippet must be present at the cited path:line and must satisfy the rule's stated detection heuristic.
  4. No whole-repo scans without confirmation. If scope is unclear or huge, ask before walking.
  5. No remediation in-skill. When the user asks "fix it," respond by directing them to the co-author skill.

Rules Summary

What Rule
Knowledge lookup order llms.txt → component .md → foundation .md → source
Source code ✅ OK to read when docs are insufficient — never before
Edits to consumer code ❌ Never — detection only
Inventing rules ❌ Never — catalog only
Whole-repo scans ✋ Require explicit user confirmation
Output A grouped findings table per file + global summary
Remediation Refer user to co-author skill

When NOT to use this skill

  • Authoring or migrating EDS code — use co-author.
  • Fixing a bug inside packages/core itself — use bug-fix-workflow.
  • Reviewing a teammate's PR — use pull-request-reviewer.
  • General code review unrelated to EDS — use code-review.