Skip to content
Testing
Skill

/kb-markdown-accessibility

Reference data, not a reviewer. Audit and fix markdown for accessibility. Covers ambiguous links, anchors, emoji (remove/translate), Mermaid/ASCII templates, heading hierarchy, table descriptions, and severity scoring.

From plugin
accessibility-agents
431113 skills7 hooks

Claude Code

$ npx -y skills add Community-Access/accessibility-agents --skill kb-markdown-accessibility --agent claude-code

SKILL.md

kb-markdown-accessibility.SKILL.md
name: kb-markdown-accessibility
description: Reference data, not a reviewer. Audit and fix markdown for accessibility. Covers ambiguous links, anchors, emoji (remove/translate), Mermaid/ASCII templates, heading hierarchy, table descriptions, and severity scoring.
license: MIT
disable-model-invocation: true
user-invocable: false
metadata:
  tier: reference
  domain: cross-cutting
  output: none
  effort: low
  title: Markdown Accessibility

Markdown Accessibility Skill

Reusable knowledge module for the `markdown-a11y-assistant`, `markdown-scanner`, and `markdown-fixer` skills. Provides pattern libraries, severity scoring, fix templates, emoji translation maps, diagram description templates, and GitHub anchor generation rules for comprehensive markdown accessibility auditing across 9 domains.

Domains Covered

1. **Descriptive Links** (WCAG 2.4.4) - Ambiguous link text, bare URLs, repeated identical text 2. **Image Alt Text** (WCAG 1.1.1) - Missing, empty, filename-as-alt, generic placeholders 3. **Heading Hierarchy** (WCAG 1.3.1 / 2.4.6) - Skipped levels, multiple H1s, bold-as-heading 4. **Table Accessibility** (WCAG 1.3.1) - Missing descriptions, empty headers, layout tables 5. **Emoji** (WCAG 1.3.3 / Cognitive) - Remove-all, remove-decorative, translate, or leave-unchanged modes 6. **Mermaid and ASCII Diagrams** (WCAG 1.1.1 / 1.3.1) - Replace with accessible text + collapsible source 7. **Em-Dash / En-Dash Normalization** (Cognitive) - Normalize to ` - ` or leave unchanged 8. **Anchor Link Validation** (WCAG 2.4.4) - Validate `#anchor` links against actual headings 9. **Plain Language and List Structure** (Cognitive) - Emoji bullets, passive voice, sentence length

Severity Scoring

Each issue, with its severity, WCAG and auto-fix.

| Issue | Severity | WCAG | Auto-fix? | |-------|----------|------|-----------| | Image missing alt text | critical | 1.1.1 (A) | No - needs visual judgment | | Mermaid diagram with no text alternative | critical | 1.1.1 (A) | Partial - simple diagrams auto-described; complex need human | | ASCII diagram with no text description | critical | 1.1.1 (A) | Partial - flag and wrap; description needs human or auto-gen | | Broken anchor link | serious | 2.4.4 (A) | No - confirm which end changes | | Ambiguous link text ("here", "click here") | serious | 2.4.4 (A) | Yes - rewrite using surrounding context | | Skipped heading level | serious | 1.3.1 (A) | Yes - interpolate missing level | | Multiple H1s | serious | 1.3.1 (A) | Yes - demote all but first | | Emoji in heading | moderate | Cognitive | Yes - remove or translate per preference | | Consecutive emoji (2+) | moderate | 1.3.3 (A) | Yes - remove sequence or translate | | Emoji used as bullet | moderate | 1.3.1 (A) | Yes - replace with `-` | | Em-dash in prose | moderate | Cognitive | Yes - replace with ` - ` | | Table without preceding description | moderate | 1.3.1 (A) | Yes - add one-sentence summary | | Bold text used as heading | minor | 2.4.6 (AA) | Yes - convert to appropriate heading | | Bare URL in prose | minor | 2.4.4 (A) | Yes - wrap with descriptive text | | Emoji used for meaning, single inline | minor | 1.3.3 (A) | Conditional - remove-all: yes; remove-decorative: flag; translate: translate |

Scoring Formula

Scores and grades come from `skills/a11y-core/scripts/merge-findings.mjs`; do not compute them by hand. If the script cannot run, apply the formula below yourself; use only what you are given, and never say you scanned, ran or opened anything you did not. In summary:

penalty = sum over findings of weight x confidence factor
  weight: critical 10, serious 5, moderate 2, minor 1
  confidence factor: high 1, medium 0.7, low 0.4
checks  = max(findings + passed checks, 10)
score   = max(0, round(100 - (penalty / checks) x 20))

Score Grades

Each score, with its grade.

| Score | Grade | |-------|-------| | 90-100 | A | | 80-89 | B | | 70-79 | C | | 60-69 | D | | 0-59 | F |

Emoji Handling Modes

The agent supports four modes. The **active mode is determined by the nearest `markdown-accessibility.instructions.md` file** in the project being audited. If no instructions file sets a mode, the default is `remove-decorative`.

> **This repository:** The house style in `AGENTS.md` (no emoji, anywhere) means mode **`remove-all`** for this repo's own docs. All emoji are removed, not translated. This overrides the skill default.

| Mode | Description | Default? | |------|-------------|----------| | `remove-all` | Strip every emoji from prose, headings, and bullets. Keep surrounding plain-text meaning. | No (repo override sets this) | | `remove-decorative` | Remove emoji in headings, bullets, and consecutive sequences; flag single inline for review | **Skill default (no override)** | | `translate` | Replace known emoji with `(English)` text; flag unknown for review | No | | `leave-unchanged` | Do not flag or modify any emoji | No |

**Mode resolution order:**

1. Agent system prompt or per-task explicit mode override 2. Nearest `*.instructions.md` file in scope in the audited project (e.g., its `.github/instructions/markdown-accessibility.instructions.md`) 3. Skill default (`remove-decorative`)

Emoji Translation Map

When using `translate` mode, replace each emoji with the parenthesized English equivalent. This table and the emoji examples below contain emoji deliberately: they are input to match or examples of what not to write, not house style.

| Emoji | Translation | Emoji | Translation | |-------|------------|-------|------------| | ๐Ÿš€ | (Launch) | โœ… | (Done) | | โš ๏ธ | (Warning) | โŒ | (Error) | | ๐Ÿ“ | (Note) | ๐Ÿ’ก | (Tip) | | ๐Ÿ”ง | (Configuration) | ๐Ÿ“š | (Documentation) | | ๐ŸŽฏ | (Goal) | โœจ | (New) | | ๐Ÿ” | (Search) | ๐Ÿ› ๏ธ | (Tools) | | ๐Ÿ‘‹ | (Hello) | ๐ŸŽ‰ | (Celebration) | | โญ | (Featured) | ๐Ÿ’ฌ | (Discussion) | | ๐Ÿ  | (Home) | ๐Ÿ“Š | (Data) | | ๐Ÿ”’ | (Security) | ๐ŸŒ | (Web) | | ๐Ÿ“ฆ | (Package) | ๐Ÿ”— | (Link) | | ๐Ÿ“‹ | (Checklist) | ๐Ÿ† | (Achievement) | | โšก | (Quic

Read more
@community-access
Ships withaccessibility-agents

WCAG 2.2 AA enforcement for agentic coding, as a set of Agent Skills. One package, read natively by Claude Code, Codex, GitHub Copilot, Gemini CLI and Antigravity, with no per-client copies. Models forget accessibility while generating code.

Stars on GitHub

Momentum

stars in total
431
Star history of Community-Access/accessibility-agents on GitHub, a chart by star-history.com

Other skills on accessibility-agents.

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behaviorโ€ฆ

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2eโ€ฆ

grafanatoday78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,โ€ฆ

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,โ€ฆ

@confident-ai@confident-aiInstall Skill

Questions about kb-markdown-accessibility.

Which coding agents can use kb-markdown-accessibility?
kb-markdown-accessibility installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.