Kb Github A11y Scanner logo

Kb Github A11y Scanner

Organization
Community-Access
kb-github-a11y-scanner

Reference data, not a reviewer. Integrate GitHub Accessibility Scanner. Detects configuration, parses scanner issues, correlates with local scans, and tracks Copilot-assigned fixes.

Overview

PublisherCommunity-Access
Repositoryaccessibility-agents
Skill namekb-github-a11y-scanner
Stars
429
Forks
51
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Community-Access on GitHub. Read the source before you install it.

Installation

Install the Kb Github A11y Scanner AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-github-a11y-scanner
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Community-Access/accessibility-agents.git /tmp/accessibility-agents
mkdir -p .claude/skills
cp -r /tmp/accessibility-agents/skills/kb-github-a11y-scanner .claude/skills/kb-github-a11y-scanner
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Kb Github A11y Scanner in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Kb Github A11y Scanner on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Kb Github A11y Scanner is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

GitHub Accessibility Scanner Integration

What Is the GitHub Accessibility Scanner?

The GitHub Accessibility Scanner (github/accessibility-scanner@v2) is an official GitHub Action that:

  • Scans live URLs for accessibility barriers using axe-core in a headless browser
  • Creates trackable GitHub Issues for each finding, with affected element, WCAG criterion, and remediation guidance
  • Optionally assigns issues to GitHub Copilot for AI-powered fix suggestions and PR creation
  • Caches results across runs for delta detection (new, fixed, persistent findings)
  • Supports authenticated scanning (login flows, SSO, passkeys via Playwright auth context)
  • Optionally captures screenshots and attaches them to filed issues

Current version: v2 (public preview)

Detecting Scanner Presence

To determine whether a repository has the GitHub Accessibility Scanner configured:

Workflow File Detection

Search for workflow files referencing the scanner action:

bash
# Search in .github/workflows/ for the scanner action reference
grep -rl "github/accessibility-scanner" .github/workflows/

Pattern to match in YAML:

yaml
- uses: github/accessibility-scanner@v2

Workflow Inputs

When a scanner workflow is found, extract its configuration:

InputRequiredDescription
urlsYesNewline-delimited list of URLs to scan
repositoryYesRepository (owner/name) where issues and PRs are created
tokenYesFine-grained PAT with write access (contents, issues, PRs, metadata)
cache_keyYesFilename for caching results across runs (e.g., cached_results-mysite.json)
login_urlNoLogin page URL for authenticated scanning
usernameNoUsername for authentication
passwordNoPassword for authentication (via repository secret)
auth_contextNoStringified JSON for complex authentication (Playwright session state)
skip_copilot_assignmentNoSet true to skip assigning issues to Copilot
include_screenshotsNoSet true to capture screenshots (stored on gh-cache branch)

Parsing Scanner-Created Issues

The scanner creates GitHub Issues with a structured format. Agents should parse these fields:

Issue Identification

Scanner-created issues can be identified by:

  1. Author: The GitHub Actions bot that runs the workflow
  2. Labels: The scanner applies labels to categorize findings (typically accessibility-related labels)
  3. Body structure: Issues contain structured sections with violation details

Issue Body Structure

Scanner issues typically contain:

SectionContentAgent Use
Violation titleThe axe-core rule that was violatedMap to help-url-reference for remediation docs
WCAG criterionThe specific WCAG success criterionUsed for severity scoring and compliance mapping
Affected elementCSS selector or HTML snippet of the failing elementUsed by scanner-bridge to map to source code
Impact levelCritical, Serious, Moderate, or MinorDirect mapping to agent severity model
Remediation guidanceHow to fix the issueEnriched by agent specialists with framework-specific fixes
URLThe page URL where the issue was foundUsed for cross-referencing with local axe-core scans
Screenshot linkLink to screenshot on gh-cache branch (if enabled)Included in audit reports

Severity Mapping

The scanner uses axe-core impact levels that map directly to the agent severity model:

Scanner ImpactAgent SeverityScore Weight
CriticalCritical-15 (both sources) / -10 (single source)
SeriousSerious-7 (high confidence)
ModerateModerate-3 (high confidence)
MinorMinor-1

axe-core Rule Correlation

The scanner uses axe-core under the hood. Scanner issue titles and violation IDs correspond to axe-core rules already cataloged in help-url-reference. Common scanner-reported rules:

axe-core Rule IDWCAG CriterionCommon Description
image-alt1.1.1Images must have alternate text
label1.3.1Form elements must have labels
color-contrast1.4.3Elements must have sufficient color contrast
link-name2.4.4Links must have discernible text
html-has-lang3.1.1<html> element must have a lang attribute
button-name4.1.2Buttons must have discernible text
document-title2.4.2Documents must have <title> element
bypass2.4.1Page must have means to bypass repeated blocks
heading-order1.3.1Heading levels should increase by one
aria-allowed-attr4.1.2ARIA attributes must be allowed for element role

Caching and Delta Detection

The scanner uses a cache_key to persist results across workflow runs. This enables delta tracking:

StatusMeaning
NewIssue found in current scan but not in cached results
FixedIssue in cached results but not found in current scan (issue auto-closed)
PersistentIssue found in both current scan and cached results

Cache Key Conventions

When setting up scanner integration, align the cache key with agent conventions:

  • Use a descriptive name: cached_results-{domain}-{branch}.json
  • Include branch context for branch-specific scanning
  • The cache is stored as a GitHub Actions artifact

Correlation with Local Scans

Dual-Source Confidence Boosting

When both the GitHub Accessibility Scanner (CI) and a local axe-core scan (agent) find the same issue:

  1. Match by rule ID: Both sources use axe-core rule IDs (e.g., color-contrast, image-alt)
  2. Match by URL: Compare the scanned URL from the scanner issue with the local scan target
  3. Match by element: Compare CSS selectors or HTML paths for the affected element
  4. Boost confidence: Findings confirmed by both sources automatically receive high confidence

Source Comparison Analysis

Each scenario, with its interpretation and action.

ScenarioInterpretationAction
Found by scanner AND local scanHigh confidence -- confirmed by bothReport as high confidence, full severity weight
Found by scanner onlyEnvironment-specific or intermittentReport as medium confidence, note "CI-only finding"
Found by local scan onlyNew since last CI scan, or local-only conditionReport as medium confidence, note "local-only finding"
In scanner cache as "fixed"Recently remediatedTrack in delta section as resolved

Copilot Fix Tracking

When the scanner assigns issues to GitHub Copilot:

Fix Lifecycle

Each stage, with GitHub state and how to detect.

StageGitHub StateHow to Detect
Issue createdOpen issue, assigned to Copilotassignee includes Copilot bot
Fix proposedOpen PR linked to issuePR references issue number, author is Copilot
Fix reviewedPR has review commentsPR review state is CHANGES_REQUESTED or APPROVED
Fix mergedPR merged, issue closedIssue state is closed, linked PR is merged
Fix rejectedPR closed without mergePR state is closed, not merged

Querying Copilot Fix Status

text
# Find scanner issues assigned to Copilot
repo:{REPO} is:issue is:open assignee:copilot label:accessibility

# Find Copilot PRs from scanner issues
repo:{REPO} is:pr author:copilot-swe-agent label:accessibility

# Find merged scanner fixes
repo:{REPO} is:pr is:merged author:copilot-swe-agent label:accessibility

Structured Output Format

When scanner-bridge normalizes scanner issue data, it produces findings in this format:

json
{
  "source": "github-a11y-scanner",
  "ruleId": "color-contrast",
  "wcagCriterion": "1.4.3",
  "wcagLevel": "AA",
  "severity": "serious",
  "confidence": "high",
  "url": "https://example.com/login",
  "element": "button.submit-btn",
  "description": "Element has insufficient color contrast ratio of 3.2:1 (expected 4.5:1)",
  "remediation": "Change the text color or background to achieve at least 4.5:1 contrast ratio",
  "githubIssue": {
    "number": 42,
    "url": "https://github.com/owner/repo/issues/42",
    "state": "open",
    "copilotAssigned": true,
    "fixPR": null
  },
  "screenshot": "https://github.com/owner/repo/blob/gh-cache/screenshots/login-contrast.png"
}

Search Patterns for Scanner Issues

By Repository

text
repo:{OWNER}/{REPO} is:issue label:accessibility created:>{YYYY-MM-DD}

By Scan Run

Issues from a specific scan run share the same creation timestamp and batch pattern. Filter by:

  • Creation date matching the workflow run date
  • Common label set applied by the scanner

Cross-Repository Scanner Discovery

text
user:{USERNAME} is:issue label:accessibility sort:created-desc
org:{ORGNAME} is:issue label:accessibility sort:created-desc

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Kb Github A11y Scanner AI skill do?

Reference data, not a reviewer. Integrate GitHub Accessibility Scanner. Detects configuration, parses scanner issues, correlates with local scans, and tracks Copilot-assigned fixes.

Why use Kb Github A11y Scanner on TypingMind?

Because you install it once and use it with any model. Kb Github A11y Scanner is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Kb Github A11y Scanner in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Community-Access/accessibility-agents/tree/main/skills/kb-github-a11y-scanner. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Kb Github A11y Scanner?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Kb Github A11y Scanner?

As many as you like. As long as a model supports skills, you can use Kb Github A11y Scanner with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Kb Github A11y Scanner AI skill free?

Yes. It is published on GitHub by Community-Access under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇