Install
$ agentstack add skill-claude-dev-suite-claude-dev-suite-axe-core ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
axe-core - Quick Reference
When NOT to Use This Skill
- Manual WCAG compliance audits - Use the
wcagskill for understanding guidelines and manual testing - Screen reader testing - axe-core doesn't replace manual screen reader verification
- Complex ARIA pattern implementation - Use
wcagskill for ARIA authoring practices - Accessibility strategy planning - This is for test automation, not accessibility consulting
> Deep Knowledge: Use mcp__documentation__fetch_docs with technology: axe-core for comprehensive documentation on rules, configuration, and integrations.
Setup Base
npm install -D @axe-core/react # For React
npm install -D axe-core # Core library
Pattern Essenziali
React DevTools Integration
import React from 'react';
import ReactDOM from 'react-dom/client';
if (process.env.NODE_ENV !== 'production') {
import('@axe-core/react').then(axe => {
axe.default(React, ReactDOM, 1000);
});
}
Jest/Vitest Integration
import { axe, toHaveNoViolations } from 'jest-axe';
expect.extend(toHaveNoViolations);
test('should have no accessibility violations', async () => {
const { container } = render();
const results = await axe(container);
expect(results).toHaveNoViolations();
});
Playwright Integration
import { test, expect } from '@playwright/test';
import AxeBuilder from '@axe-core/playwright';
test('should not have accessibility issues', async ({ page }) => {
await page.goto('/');
const accessibilityScanResults = await new AxeBuilder({ page }).analyze();
expect(accessibilityScanResults.violations).toEqual([]);
});
// With specific rules
test('should pass WCAG AA', async ({ page }) => {
await page.goto('/');
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa'])
.analyze();
expect(results.violations).toEqual([]);
});
Cypress Integration
// cypress/support/commands.ts
import 'cypress-axe';
// In test
describe('Accessibility', () => {
it('has no violations', () => {
cy.visit('/');
cy.injectAxe();
cy.checkA11y();
});
});
Programmatic Usage
import axe from 'axe-core';
async function checkAccessibility() {
const results = await axe.run();
if (results.violations.length > 0) {
console.log('Violations:', results.violations);
}
}
Anti-Patterns
| Anti-Pattern | Why It's Wrong | Correct Approach | |-------------|----------------|------------------| | Running axe on empty/loading states | Tests incomplete DOM, false negatives | Wait for content to load before running axe | | Ignoring all violations | Defeats purpose of automated testing | Fix violations or document exceptions with reasoning | | Testing only homepage | Most accessibility issues in complex interactions | Test all critical user flows and components | | Not configuring WCAG level | Tests against all rules, may be too strict | Set withTags(['wcag2a', 'wcag2aa']) for target level | | Running axe synchronously in loops | Slow test execution | Use Promise.all() for parallel execution | | Committing violations to CI | Prevents catching regressions | Fail builds on new violations | | Testing hidden/inactive components | Axe tests invisible elements unnecessarily | Use exclude parameter for hidden sections | | No baseline for legacy code | All violations block progress | Create baseline, track improvements incrementally |
Quick Troubleshooting
| Issue | Diagnosis | Solution | |-------|-----------|----------| | axe finds no violations but page is inaccessible | Automated tools catch only ~30-40% of issues | Supplement with manual keyboard and screen reader testing | | "No violations" but form has issues | axe doesn't test form logic/flow | Test form submission, error handling manually | | Timeout in Playwright axe tests | Large/complex page takes too long | Increase timeout or analyze specific regions | | False positive on custom component | axe rule doesn't understand pattern | Use disableRules or add proper ARIA to fix | | Violations in third-party widgets | Can't modify external code | Document exceptions, contact vendor, or replace widget | | Different results in different browsers | Browser-specific rendering differences | Run axe in multiple browsers, use cross-browser test suite | | CI fails but local passes | Environment differences (timing, content) | Ensure consistent test data and wait conditions | | Too many violations to fix at once | Legacy codebase with extensive issues | Create baseline, use --save flag to track improvements |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: claude-dev-suite
- Source: claude-dev-suite/claude-dev-suite
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.