Semantic accessibility static analysis

Catch semantic accessibility problems in the source structure that produces them.

ZemDomu analyzes supported HTML, JSX, TSX, and Vue source while you work. Its project-aware mode can find named structural issues across statically resolvable React and Vue imports. Use it before runtime and manual accessibility testing, not instead of them.

Its differentiated focus is static analysis for semantic HTML architecture across component-based applications.

One rule system across your workflow

  • ZemDomu VS Code Extension: inline diagnostics and workspace scans.
  • ZemDomu CLI: scriptable semantic checks for local workflows.
  • ZemDomu GitHub Action: CI annotations and merge-time enforcement.

VS Code extension

Keep semantic feedback in the editor

Catch supported structure and accessible-name issues while markup is still easy to change, with inline diagnostics and a consistent view in the Problems panel.

  • Inline squiggles and quick fixes for common issues.
  • Workspace scan command for larger audits.
  • Status bar summary when findings are reported.
Install the extension

Command palette

ZemDomu: Scan Workspace for Semantic Accessibility Issues

Run this when you want a full project sweep.

CLI workflows

Run semantic accessibility checks in local workflows

Use ZemDomu Core from scripts, pre-commit checks, or build steps when you need repeatable semantic checks outside the editor.

  • Lint HTML, JSX, TSX, and Vue templates.
  • Enable cross component analysis when needed.
  • Pair with custom rules for team-specific checks.
CLI setup

CLI example

npx zemdomu "**/*.{html,jsx,tsx,vue}"
npx zemdomu "src/**/*.tsx" --cross --cross-depth 3

GitHub Action

Report source findings in pull requests

Run the ZemDomu GitHub Action on pull requests to annotate supported semantic HTML and accessibility findings before merge.

  • Annotates pull requests with actionable feedback.
  • Runs on the same rules as the extension and CLI.
  • Complements rendered and manual accessibility testing.
Add to your workflow

Workflow snippet

name: ZemDomu Semantic Accessibility Checks
on: [pull_request]

jobs:
  zemdomu:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Zemdomu/ZemDomu-action@main
        with:
          files: |
            **/*.{html,jsx,tsx,vue}

Cross component analysis

Find supported structural issues across imports

Analyze supported heading, section, navigation, list, and ID relationships across statically resolvable React and Vue imports.

  • Follow supported local imports up to the configured depth.
  • Track named structural rules across component composition.
  • Leave dynamic, external, or unresolved composition outside the combined model.
VS Code showing ZemDomu detecting a skipped heading level across React components and clearing the warning after h3 is changed to h2.
Heading order stays checked even when the page and nested component live in separate files.

Why ZemDomu

One source-analysis layer in an accessibility workflow

ZemDomu focuses on supported semantic HTML architecture in source. Compare it with other tools by the evidence each layer can observe, not with generic superiority claims.

Source linting

ZemDomu: Analyzes supported HTML, JSX, TSX, and Vue patterns and can follow named structural rules across statically resolvable local imports.

Other layer: Framework-specific linters offer mature source rule catalogs and may model configured component abstractions. Compare enabled rules and observed diagnostics for your project.

Rendered automated testing

ZemDomu: Reports supported source defects early and points back to the authoring files and component context that produced them.

Other layer: Runtime tools inspect rendered states, CSS, frames, shadow DOM, and other browser evidence that static source analysis cannot prove. Use both layers.

Manual, keyboard, and assistive-technology testing

ZemDomu: Moves repeatable source checks earlier, with rule explanations and explicit static-analysis limits.

Other layer: Human review and interaction testing provide evidence about meaning, behavior, focus, announcements, and task success. A clean ZemDomu scan cannot replace them.

General code-quality platforms

ZemDomu: Provides a focused semantic HTML and accessibility source model through ZemDomu Core in the editor, CLI, and pull requests.

Other layer: Broader platforms cover security, maintainability, governance, and many languages. ZemDomu is a specialist source-analysis layer, not a replacement for that breadth.

Review the evidence-grounded guides for a reproducible source-linter comparison and for static versus runtime accessibility testing.

SEO and accessibility

Support accessibility and SEO together

Semantic structure is shared infrastructure for both. ZemDomu helps teams catch markup issues early enough to fix them before release.

  • Detect missing alt text and link labels.
  • Ensure landmark structure and heading order.
  • Prevent empty inline tags and duplicated IDs.
Browse all rules

Rules library

  • requireAltText
  • enforceHeadingOrder
  • requireLinkText
  • uniqueIds
  • requireHtmlLang
  • requireTableCaption
  • requireDocumentTitle
  • requireSingleMain
  • ariaValidAttrValue

Rules index preview

ZMD series rules at a glance

Scan the rules by category or jump straight to the full index.

Browse all rules

Structure and headings

Outline, sections, and document hierarchy.

Links and navigation

Anchor clarity, destinations, and navigation intent.

Forms and controls

Labels, buttons, and keyboard access.

Media and embeds

Images and embeds with the right metadata.

Lists, tables, and integrity

Structure, captions, empty tags, and ID uniqueness.

FAQ and support

Common questions, clear answers

Which files does ZemDomu lint?

HTML, JSX, TSX, and Vue templates are supported across the extension, CLI, and GitHub Action. See installation options.

How do I enable cross component analysis?

Use the CLI --cross flag or enable cross component analysis in the extension settings. Review the rules.

Does ZemDomu require a first or page-level H1?

Not in the current VS Code Extension. The heading-order rule does not warn on the first heading it observes, and the house-style single-H1 rule reports additional H1 elements without requiring one.

Can I add custom rules?

Yes. Use the CLI or API integration to supply custom rule modules. See the core repo.