agentleFS
KhanKhan/perseus/.agents/skills/accessibility/SKILL.md

accessibility

Skill1.6k starsChanged 11 days agoMITView on GitHub

Accessibility rules for Perseus UI work: WCAG 2.2 AA, semantic HTML over ARIA, and anti-patterns to avoid. Use whenever building, changing or reviewing UI components, markup, styles or interactions, alongside the wonder-blocks skill.

123 other projects use a version of this.

Trending

More talk lately.about the whole repository

Dec 2025: 2 mentionsJan 2026: 3 mentionsFeb 2026: 0 mentionsMar 2026: 2 mentionsApr 2026: 4 mentionsMay 2026: 0 mentionsJun 2026: 2 mentionsJul 2026: 3 mentionsAug 2026: 3 mentionsSep 2026: 8 mentionsOct 2026: 7 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the Khan/perseus repository that our weekly crawl found. There is no adoption data for this file yet.

Most recently taken up by

Who's talking about Khan/perseus

The biggest 5 of 52 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 52

Talked about on GitHub and Stack Overflow (52 times).

On GitHub · 50

45 more on GitHub

Used with

Projects with it also use author-contributions, tool-rename-deprecation and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • MicrosoftSkill

    author-contributions

    Identify all files a specific author contributed to on a branch vs its upstream, tracing code through renames. Use when asked who edited what, what code an author contributed, or to audit authorship before a merge. This skill should be run as a subagent — it performs many git operations and returns a concise table.

    Also in 7 projects that use this

  • gitpod-ioSkill

    tool-rename-deprecation

    Ensure renamed built-in tool references preserve backward compatibility. Use when renaming a toolReferenceName, tool set referenceName, or any tool identifier. Run on ANY change to tool registration code. Covers legacyToolReferenceFullNames for tools and legacyFullNames for tool sets.

    Also in 5 projects that use this

  • DepressionCenterSkill

    project-preferences

    Apply repository-specific preferences when planning, implementing, or reviewing changes in this project.

    Also in 6 projects that use this

  • MicrosoftSkill

    chat-perf

    Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.

    Also in 5 projects that use this

  • DepressionCenterSkill

    create-media-pack

    Create a coordinated project branding and media pack with three accessible design options, approved vector artwork, image exports, a branding guide, and README integration. Use when asked for a repository media pack, brand kit, or complete project visual identity.

    Also in 5 projects that use this

  • +7 more from microsoft

The file

We split this skill into the rules it gives an agent

8 rules. 0 are common, 8 are distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 112 edited versions we read keep these.

  • 8

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Default styling is not a valid reason to avoid semantic HTML.

    line 15
  2. Distinctive:

    Before implementing any HTML structure, ask yourself:

    line 18
  3. Distinctive:

    Always reason from element definitions, not from common usage patterns.

    line 22
  4. Distinctive:

    Ask: "What is this element defined to represent, and what content does the spec permit?" — not "What have I seen used here?"

    line 23
  5. Distinctive:

    If a semantic equivalent doesn't exist, try using an existing element and modifying it.

    line 24
  6. Distinctive:

    When choosing between modified native elements, favor the element that more closely accomplishes the requested behavior.

    line 28
  7. Distinctive:

    When modifying existing code, it's OK to recommend a different HTML structure if it makes implementing accessibility easier or more …

    line 32
  8. Distinctive:

    When standard HTML elements do not meet design requirements, build custom interactive elements using the instructions in this document.

    line 33

“Common” is measured: kept by at least 6 in 10 of the 112 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Instructions for Accessibility Topics

Rules that MUST Be Followed

  • Responses and generated code must align with the Web Content Accessibility Guidelines (WCAG) 2.2 AA.
  • Strongly favor semantic HTML over adding ARIA attributes.
    • Default styling is not a valid reason to avoid semantic HTML.
    • "Easier to style" is not a valid reason to avoid semantic HTML.
    • The order of preference is: native element → modified native element → ARIA last resort
    • Before implementing any HTML structure, ask yourself:
      • Is there a native HTML element whose default semantics match what I need?
      • What assumptions am I making about this element's allowed content or usage?
      • State explicitly what the spec says about this element's permitted content before proceeding.
    • Always reason from element definitions, not from common usage patterns.
      • Ask: "What is this element defined to represent, and what content does the spec permit?" — not "What have I seen used here?"
    • If a semantic equivalent doesn't exist, try using an existing element and modifying it.
      • For instance, when trying to create something similar to a radio button but which has differences, instead of using a <div with role="radio"> to approximate a radio button, consider using a <button aria-pressed="true|false"> to create a toggle button that can function similarly to a radio button but is more semantically appropriate and accessible.
    • When choosing between modified native elements, favor the element that more closely accomplishes the requested behavior.
      • Elements with native semantics and behaviors that align with assumed usage patterns (i.e. not called out in the instructions) should have the reasoning associated with those semantics and behaviors weighted less when compared to other elements.
    • Using a <div> tag should be a last resort when all other options have failed to accomplish the desired accessibility.
  • When modifying existing code, it's OK to recommend a different HTML structure if it makes implementing accessibility easier or more maintainable.
    • When standard HTML elements do not meet design requirements, build custom interactive elements using the instructions in this document.
    • Meticulously apply ARIA attributes (e.g., aria-pressed, aria-disabled, aria-labelledby) to ensure custom elements are fully accessible to assistive technologies.
    • Include detailed comments to explain the rationale behind specific ARIA implementations and accessibility decisions.

Anti-Patterns: NEVER Use These

  • Using <div> tag with role attribute set when a more appropriate semantic HTML element exists.
  • Implementing keyboard event handlers for native interactive elements (e.g., adding onKeyDown handlers to a <button> instead of using the inherent keyboard accessibility).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.