Checks meaning, not just syntax

Catch semantic problems before they ship.

ZemDomu is a semantic-first linting system for HTML, JSX, TSX, and Vue. Catch structure, accessibility, and search-related markup issues in the editor, in local workflows, and in CI, including cross-component problems that only appear in the full tree.

One rule system across your workflow

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

VS Code extension

Keep semantic feedback in the editor

Catch 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 issues are detected.
Install the extension

Command palette

ZemDomu: Scan Workspace for Semantic Issues

Run this when you want a full project sweep.

CLI workflows

Run semantic 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

Enforce semantic quality in CI

Run ZemDomu GitHub Action in pull requests so semantic regressions are caught before merge.

  • Annotates pull requests with actionable feedback.
  • Runs on the same rules as the extension and CLI.
  • Ideal for shared standards across teams.
Add to your workflow

Workflow snippet

name: ZemDomu Semantic 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

Catch issues single-file tools miss

Trace semantic issues across imports so missing landmarks, heading breaks, and labeling problems are found in the full tree.

  • Follow React and Vue imports automatically.
  • Track headings across nested component trees.
  • Control depth for large design systems.
Explore the rules
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

Built for semantic structure, not just valid markup

ZemDomu exists to close the gap between syntax linting and late-stage scanner reports. It focuses on meaning, structure, and developer-ready remediation across the full workflow.

Checks meaning, not just syntax

ZemDomu: Focuses on semantic structure, accessible naming, landmarks, and document relationships instead of only syntax or style.

Typical alternatives: Many generic linters stop at file validity or style rules and never explain whether the markup still makes sense.

Cross-component analysis

ZemDomu: Follows imported components so issues are caught where the full tree is composed, not only in isolated files.

Typical alternatives: Single-file tools routinely miss bugs that only appear after layouts, wrappers, and sections are composed together.

One shared rule system

ZemDomu: Uses the same rules engine in VS Code, CLI, and GitHub Action to keep local and CI expectations aligned.

Typical alternatives: Patchwork stacks often produce different outputs in the editor, local scripts, and CI.

Focused semantic signal

ZemDomu: Stays focused on practical structure, accessibility, and search-related markup issues that teams can fix quickly.

Typical alternatives: Broad scanners can bury semantic issues inside unrelated style or performance noise.

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.

Can I add custom rules?

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