@mcptoolshop/accessibility-suite 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.a11y_artifacts_test/evidence.json +52 -0
  2. package/.a11y_artifacts_test/gate-result.json +41 -0
  3. package/.a11y_artifacts_test/report.txt +19 -0
  4. package/.github/actions/a11y-ci/action.yml +106 -0
  5. package/.github/workflows/a11y-gate.yml +112 -0
  6. package/.github/workflows/ci.yml +68 -3
  7. package/.github/workflows/test-a11y-action.yml +93 -0
  8. package/.github/workflows/update-baseline.yml +49 -0
  9. package/.github/workflows/verify-docs.yml +26 -0
  10. package/CHANGELOG.md +33 -0
  11. package/GETTING_STARTED.md +87 -0
  12. package/HANDBOOK.md +747 -0
  13. package/README.md +202 -23
  14. package/assets/a11y-logo.png +0 -0
  15. package/docs/handbooks/A11Y-ASSIST.md +31 -0
  16. package/docs/handbooks/A11Y-CI.md +71 -0
  17. package/docs/handbooks/A11Y-DEMO-SITE.md +29 -0
  18. package/docs/handbooks/A11Y-EVIDENCE-ENGINE.md +31 -0
  19. package/docs/handbooks/A11Y-LINT.md +62 -0
  20. package/docs/handbooks/A11Y-MCP-TOOLS.md +34 -0
  21. package/docs/handbooks/ACCESSIBILITY-SUITE.md +51 -0
  22. package/docs/handbooks/ALLY-DEMO-PYTHON.md +23 -0
  23. package/docs/handbooks/COMMON-CONCEPTS.md +24 -0
  24. package/docs/handbooks/CURSORASSIST.md +18 -0
  25. package/docs/handbooks/README.md +20 -0
  26. package/docs/prov-spec/SETUP.md +1 -1
  27. package/docs/rules.md +132 -0
  28. package/docs/unified-artifacts.md +52 -0
  29. package/logo.png +0 -0
  30. package/package.json +1 -1
  31. package/pipelines/templates/a11y-ci.yml +135 -0
  32. package/pipelines/test-a11y-ci-template.yml +36 -0
  33. package/scripts/verify_handbooks.py +97 -0
  34. package/src/a11y-assist/README.md +5 -0
  35. package/src/a11y-ci/.a11y_artifacts_test/current.scorecard.json +11 -0
  36. package/src/a11y-ci/.a11y_artifacts_test/evidence.json +52 -0
  37. package/src/a11y-ci/.a11y_artifacts_test/gate-result.json +41 -0
  38. package/src/a11y-ci/.a11y_artifacts_test/report.txt +19 -0
  39. package/src/a11y-ci/README.md +83 -23
  40. package/src/a11y-ci/a11y_ci/allowlist.py +52 -9
  41. package/src/a11y-ci/a11y_ci/cli.py +143 -46
  42. package/src/a11y-ci/a11y_ci/error_ids.py +17 -0
  43. package/src/a11y-ci/a11y_ci/gate.py +83 -48
  44. package/src/a11y-ci/a11y_ci/help.py +119 -0
  45. package/src/a11y-ci/a11y_ci/mcp_payload.py +124 -0
  46. package/src/a11y-ci/a11y_ci/pr_comment.py +127 -0
  47. package/src/a11y-ci/a11y_ci/report.py +137 -0
  48. package/src/a11y-ci/a11y_ci/schema/scorecard.schema.json +89 -0
  49. package/src/a11y-ci/a11y_ci/schemas/allowlist.schema.json +11 -2
  50. package/src/a11y-ci/a11y_ci/scorecard.py +86 -30
  51. package/src/a11y-ci/a11y_ci/severity.py +29 -0
  52. package/src/a11y-ci/npm/README.md +47 -0
  53. package/src/a11y-ci/npm/package.json +1 -1
  54. package/src/a11y-ci/tests/fixtures/allowlist_expired.json +2 -1
  55. package/src/a11y-ci/tests/fixtures/allowlist_ok.json +2 -1
  56. package/src/a11y-ci/tests/fixtures/baseline_ok.json +17 -4
  57. package/src/a11y-ci/tests/fixtures/current_fail.json +10 -3
  58. package/src/a11y-ci/tests/fixtures/current_failures_many.json +11 -0
  59. package/src/a11y-ci/tests/fixtures/current_ok.json +10 -3
  60. package/src/a11y-ci/tests/fixtures/current_regresses.json +15 -4
  61. package/src/a11y-ci/tests/test_allowlist_v2.py +97 -0
  62. package/src/a11y-ci/tests/test_gate.py +3 -3
  63. package/src/a11y-ci/tests/test_mcp_cli.py +80 -0
  64. package/src/a11y-ci/tests/test_mcp_payload.py +76 -0
  65. package/src/a11y-ci/tests/test_polish.py +83 -0
  66. package/src/a11y-ci/tests/test_pr_comment.py +103 -0
  67. package/src/a11y-ci/tests/test_rule_help.py +70 -0
  68. package/src/a11y-ci/tests/test_schema_validation.py +36 -0
  69. package/src/a11y-ci/tests/test_scorecard_canonical.py +88 -0
  70. package/src/a11y-ci/tests/test_smoke_cli.py +41 -0
  71. package/src/a11y-evidence-engine/README.md +5 -0
  72. package/src/a11y-lint/README.md +5 -0
  73. package/src/a11y-lint/a11y_lint/cli.py +29 -0
  74. package/src/a11y-mcp-tools/README.md +5 -0
  75. package/tools/ado/a11y-ci.ps1 +195 -0
package/README.md CHANGED
@@ -1,37 +1,216 @@
1
- # accessibility-suite
1
+ <p align="center">
2
+ <img src="logo.png" width="200" alt="accessibility-suite">
3
+ </p>
2
4
 
3
- Unified monorepo for accessibility testing, evidence generation, and compliance tooling.
5
+ <h1 align="center">accessibility-suite</h1>
6
+
7
+ <p align="center">
8
+ Six tools. One mission: make accessibility testing verifiable, automated, and hard to ignore.
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://github.com/mcp-tool-shop-org/accessibility-suite/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License: MIT"></a>
13
+ <a href="https://mcptoolshop.com"><img src="https://img.shields.io/badge/part%20of-MCP%20Tool%20Shop-black" alt="Part of MCP Tool Shop"></a>
14
+ </p>
15
+
16
+ ---
17
+
18
+ ## At a Glance
19
+
20
+ Most accessibility tools stop at "you have 12 violations." The Accessibility Suite goes further: it captures tamper-evident evidence of what was tested, gates your CI pipeline on regressions, and surfaces fix guidance tuned for low-vision, screen-reader, dyslexia, and cognitive-load profiles.
21
+
22
+ The suite spans the full lifecycle -- lint CLI output for accessible patterns, scan HTML for WCAG violations with cryptographic provenance, enforce quality gates in CI, and expose everything through MCP so AI assistants can participate in the remediation loop.
23
+
24
+ **Key principles:**
25
+
26
+ - **Evidence over assertions** -- every finding is backed by a prov-spec provenance record with SHA-256 integrity digests
27
+ - **Low-vision-first output** -- all CLI tools use the `[OK]/[WARN]/[FAIL] + What/Why/Fix` contract
28
+ - **Deterministic** -- same input always produces identical output; no network calls, no randomness
29
+ - **CI-native** -- exit codes, scorecard JSON, and PR comments designed for automated pipelines
30
+
31
+ ---
4
32
 
5
33
  ## Projects
6
34
 
7
- | Project | Description | Tech |
8
- |---------|-------------|------|
9
- | `src/a11y-assist/` | Accessibility testing assistant | Python |
10
- | `src/a11y-ci/` | CI/CD integration for accessibility checks | Python |
11
- | `src/a11y-lint/` | Accessibility linter | Python |
12
- | `src/a11y-evidence-engine/` | Evidence generation and reporting | Node.js |
13
- | `src/a11y-mcp-tools/` | MCP server tools for accessibility | Node.js |
14
- | `examples/a11y-demo-site/` | Demo site for testing | HTML |
15
- | `docs/prov-spec/` | Provenance specification | Spec |
35
+ | Project | Description | Stack | Package |
36
+ |---------|-------------|-------|---------|
37
+ | [a11y-lint](src/a11y-lint/) | Accessibility linter for CLI output -- validates error messages follow accessible patterns | Python 3.10+ | [PyPI](https://pypi.org/project/a11y-lint/) |
38
+ | [a11y-ci](src/a11y-ci/) | CI gate for accessibility scorecards with regression detection and allowlists | Python 3.10+ | [PyPI](https://pypi.org/project/a11y-ci/) / [npm](https://www.npmjs.com/package/@mcptoolshop/a11y-ci) |
39
+ | [a11y-assist](src/a11y-assist/) | Low-vision-first CLI assistant with five accessibility profiles | Python 3.10+ | [PyPI](https://pypi.org/project/a11y-assist/) |
40
+ | [a11y-evidence-engine](src/a11y-evidence-engine/) | Headless HTML scanner with prov-spec provenance records | Node.js 18+ | [npm](https://www.npmjs.com/package/@mcptoolshop/a11y-evidence-engine) |
41
+ | [a11y-mcp-tools](src/a11y-mcp-tools/) | MCP server for accessibility evidence capture and diagnosis | Node.js 18+ | [npm](https://www.npmjs.com/package/@mcptoolshop/a11y-mcp-tools) |
42
+ | [a11y-demo-site](examples/a11y-demo-site/) | Demo site with intentional violations for end-to-end testing | HTML | -- |
43
+
44
+ ---
16
45
 
17
46
  ## Quick Start
18
47
 
48
+ ### Lint CLI output for accessible patterns
49
+
50
+ ```bash
51
+ pip install a11y-lint
52
+ a11y-lint scan output.txt
53
+ ```
54
+
55
+ ### Gate your CI on accessibility regressions
56
+
57
+ ```bash
58
+ pip install a11y-ci
59
+ a11y-lint scan . --artifact-dir .a11y_artifacts
60
+ a11y-ci gate --artifact-dir .a11y_artifacts
61
+ ```
62
+
63
+ ### Scan HTML and capture provenance
64
+
65
+ ```bash
66
+ npm install -g @mcptoolshop/a11y-evidence-engine
67
+ a11y-engine scan ./html --out ./results
68
+ ```
69
+
70
+ ### Get fix guidance for a CLI failure
71
+
72
+ ```bash
73
+ pip install a11y-assist
74
+ a11y-assist explain --json error.json --profile screen-reader
75
+ ```
76
+
77
+ ### Capture evidence and diagnose via MCP
78
+
79
+ ```bash
80
+ npm install -g @mcptoolshop/a11y-mcp-tools
81
+ a11y evidence --target page.html --dom-snapshot --out evidence.json
82
+ a11y diagnose --bundle evidence.json --verify-provenance --fix
83
+ ```
84
+
85
+ ### Run the demo site end-to-end
86
+
19
87
  ```bash
20
- # Clone
21
- git clone https://github.com/mcp-tool-shop-org/accessibility-suite.git
22
- cd accessibility-suite
88
+ cd examples/a11y-demo-site
89
+ ./scripts/a11y.sh
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Architecture
95
+
96
+ The six tools form a pipeline from detection through remediation:
97
+
98
+ ```
99
+ CLI output HTML files
100
+ | |
101
+ +-------v-------+ +--------v---------+
102
+ | a11y-lint | | a11y-evidence- |
103
+ | (scan & score)| | engine (scan + |
104
+ +-------+-------+ | provenance) |
105
+ | +--------+---------+
106
+ scorecard.json |
107
+ | evidence bundle
108
+ +-------v-------+ |
109
+ | a11y-ci | +---------v---------+
110
+ | (CI gate + | | a11y-mcp-tools |
111
+ | PR comment) | | (MCP evidence + |
112
+ +-------+-------+ | diagnosis) |
113
+ | +---------+---------+
114
+ pass / fail |
115
+ | findings + fixes
116
+ +-------v-------+ |
117
+ | a11y-assist |<----------------+
118
+ | (fix guidance |
119
+ | 5 profiles) |
120
+ +---------------+
121
+ ```
122
+
123
+ **Data flow:**
124
+
125
+ 1. **a11y-lint** scans CLI text for accessible error message patterns and produces a scorecard
126
+ 2. **a11y-evidence-engine** scans HTML files and emits findings with prov-spec provenance records
127
+ 3. **a11y-ci** consumes scorecards, enforces thresholds, detects regressions, and generates PR comments
128
+ 4. **a11y-mcp-tools** wraps evidence capture and diagnosis as MCP tools for AI assistant integration
129
+ 5. **a11y-assist** takes findings (structured JSON or raw text) and generates fix guidance in five accessibility profiles
130
+ 6. **a11y-demo-site** ties it all together as a runnable example with intentional violations
131
+
132
+ **Shared contracts:**
133
+
134
+ - `cli.error.schema.v0.1.json` -- structured error format across all Python tools
135
+ - `evidence.bundle.schema.v0.1.json` -- evidence bundles with provenance chains
136
+ - `.a11y_artifacts/` -- unified artifact directory for CI pipelines
137
+ - prov-spec method IDs -- stable, versioned identifiers for every provenance step
138
+
139
+ ---
140
+
141
+ ## MCP Client Configuration
142
+
143
+ To connect a11y-mcp-tools to your MCP client (Claude Desktop, Cursor, VS Code, etc.):
23
144
 
24
- # Python tools (a11y-assist, a11y-ci, a11y-lint)
25
- cd src/a11y-lint
26
- pip install -e .
27
- a11y-lint --help
145
+ ```json
146
+ {
147
+ "mcpServers": {
148
+ "a11y": {
149
+ "command": "npx",
150
+ "args": ["-y", "@mcptoolshop/a11y-mcp-tools"]
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ Or if installed globally:
28
157
 
29
- # Node.js tools (a11y-evidence-engine, a11y-mcp-tools)
30
- cd src/a11y-evidence-engine
31
- npm install
32
- npm test
158
+ ```json
159
+ {
160
+ "mcpServers": {
161
+ "a11y": {
162
+ "command": "a11y-mcp"
163
+ }
164
+ }
165
+ }
33
166
  ```
34
167
 
168
+ The server exposes two tools:
169
+
170
+ | Tool | Description |
171
+ |------|-------------|
172
+ | `a11y.evidence` | Capture tamper-evident evidence bundles from HTML, CLI logs, or other inputs |
173
+ | `a11y.diagnose` | Run WCAG rule checks over evidence bundles with provenance verification |
174
+
175
+ ---
176
+
177
+ ## CI Integration (GitHub Actions)
178
+
179
+ ```yaml
180
+ jobs:
181
+ accessibility:
182
+ runs-on: ubuntu-latest
183
+ steps:
184
+ - uses: actions/checkout@v4
185
+
186
+ - name: Scan code
187
+ run: |
188
+ pip install a11y-lint
189
+ mkdir .a11y_artifacts
190
+ a11y-lint scan . --artifact-dir .a11y_artifacts
191
+
192
+ - uses: mcp-tool-shop-org/accessibility-suite/.github/actions/a11y-ci@main
193
+ with:
194
+ artifact-dir: .a11y_artifacts
195
+ fail-on: serious
196
+ ```
197
+
198
+ See [GETTING_STARTED.md](GETTING_STARTED.md) for Azure DevOps examples and troubleshooting.
199
+
200
+ ---
201
+
202
+ ## Documentation
203
+
204
+ | Document | Description |
205
+ |----------|-------------|
206
+ | [HANDBOOK.md](HANDBOOK.md) | Architecture deep dive, integration patterns, and development guide |
207
+ | [GETTING_STARTED.md](GETTING_STARTED.md) | Three-command local setup, CI templates, and troubleshooting |
208
+ | [CHANGELOG.md](CHANGELOG.md) | Release history in Keep a Changelog format |
209
+ | [docs/unified-artifacts.md](docs/unified-artifacts.md) | Unified artifact directory strategy |
210
+ | [docs/prov-spec/](docs/prov-spec/) | Provenance specification |
211
+
212
+ ---
213
+
35
214
  ## License
36
215
 
37
- MIT
216
+ [MIT](LICENSE)
Binary file
@@ -0,0 +1,31 @@
1
+ # a11y-assist Handbook
2
+
3
+ Deterministic assistance for fixing accessibility failures. Think: “given a known failure signature, suggest safe remediation steps.”
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ pip install -e src/a11y-assist
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ a11y-assist help --rule "aria-required"
15
+ ```
16
+
17
+ **Output**
18
+ * Markdown remediation guide (stdout)
19
+
20
+ ## How it fits
21
+
22
+ * `a11y-ci` tells you what failed and links to `docs/hints`
23
+ * `a11y-assist` can turn that into guided remediation (rules-based, deterministic)
24
+
25
+ ## Recommended workflow
26
+
27
+ 1. Run `a11y-ci gate` and inspect `report.txt`
28
+ 2. Use `help_url` / `help_hint` fields to locate the rule
29
+ 3. Use `a11y-assist` for structured guidance (when available)
30
+
31
+ **(More detail to be added once CLI is confirmed)**
@@ -0,0 +1,71 @@
1
+ # a11y-ci Handbook
2
+
3
+ The policy gate. It turns findings into a pass/fail decision, detects regressions, supports waivers, and produces evidence + PR comments.
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ pip install -e src/a11y-ci
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ a11y-ci gate --artifact-dir .a11y_artifacts
15
+ ```
16
+
17
+ **Output**
18
+ * `.a11y_artifacts/gate-result.json`
19
+ * `.a11y_artifacts/report.txt`
20
+ * `.a11y_artifacts/evidence.json`
21
+
22
+ **Common Failures**
23
+ * `A11Y.CI.Schema.Invalid` (Exit 2): Scorecard JSON is mangled
24
+ * `A11Y.CI.Gate.Failed` (Exit 3): Open violations found
25
+
26
+ ## Options
27
+
28
+ ### Set the severity threshold
29
+
30
+ ```bash
31
+ a11y-ci gate --artifact-dir .a11y_artifacts --fail-on serious
32
+ ```
33
+
34
+ ### Use a baseline
35
+ If `.a11y_artifacts/baseline.scorecard.json` exists, it is automatically used (unless overridden).
36
+
37
+ ### Use an allowlist (waivers)
38
+ If `.a11y_artifacts/allowlist.json` exists, it is automatically used.
39
+
40
+ **Allowlist supports:**
41
+ * `owner` (required)
42
+ * `expires` (required)
43
+ * `ticket` (optional)
44
+ * suppression identity via `id` or `fingerprint` (best)
45
+
46
+ ## Output formats
47
+
48
+ ### Human report
49
+ `.a11y_artifacts/report.txt` is optimized for quick reading and low-vision clarity.
50
+
51
+ ### Machine report
52
+ `.a11y_artifacts/gate-result.json` is stable and parseable.
53
+
54
+ ### Evidence bundle (MCP)
55
+ `.a11y_artifacts/evidence.json` includes traceability metadata + hashes.
56
+
57
+ ### PR comments
58
+ Generate from evidence (recommended):
59
+
60
+ ```bash
61
+ a11y-ci comment --mcp .a11y_artifacts/evidence.json --platform github --top 10 > .a11y_artifacts/comment.md
62
+ ```
63
+
64
+ ## Error IDs and exit codes
65
+
66
+ * `0`: PASS
67
+ * `2`: Input error (schema, missing required file, etc.)
68
+ * `3`: Gate failed (policy violation / regression / expired waiver)
69
+ * `1`: Internal tool error
70
+
71
+ Error IDs are standardized (grep-friendly). If you see an error, copy the ID into issues/PR discussions.
@@ -0,0 +1,29 @@
1
+ # a11y-demo-site Handbook
2
+
3
+ An end-to-end demo details page.
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ npm install
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ npm run dev
15
+ ```
16
+
17
+ **Output**
18
+ * Localhost demo URL (e.g. `http://localhost:3000`)
19
+
20
+ ## What this is
21
+
22
+ * See how evidence is generated
23
+ * See how gates fail/pass
24
+ * See PR comments
25
+
26
+ ## How to use it
27
+
28
+ * Use it as the “golden tutorial”
29
+ * Use it to validate new workflows or rules without touching production repos
@@ -0,0 +1,31 @@
1
+ # a11y-evidence-engine Handbook
2
+
3
+ A headless engine that generates traceable, structured accessibility evidence (often beyond “a list of findings”), suitable for audits and verification.
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ pip install -e src/a11y-evidence-engine
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ (Pending CLI finalization)
15
+ ```
16
+
17
+ **Output**
18
+ * Screenshots (`.png`)
19
+ * DOM snapshots (`.html`)
20
+ * `.a11y_artifacts/evidence-manifest.json`
21
+
22
+ ## Where it fits
23
+
24
+ * `a11y-lint`: findings
25
+ * `a11y-ci`: policy + regression + waivers
26
+ * `a11y-evidence-engine`: traceable “proof artifacts” (screenshots, DOM snapshots), depending on what it supports
27
+
28
+ ## Best practice
29
+
30
+ * Store evidence artifacts under `.a11y_artifacts/` (or a subfolder like `.a11y_artifacts/evidence/`)
31
+ * Reference them from `evidence.json` so everything is linked and hashable
@@ -0,0 +1,62 @@
1
+ # a11y-lint Handbook
2
+
3
+ The scanner/linter that produces accessibility findings and writes the canonical scorecard used by `a11y-ci`.
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ pip install -e src/a11y-lint
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ a11y-lint scan docs --artifact-dir .a11y_artifacts
15
+ ```
16
+
17
+ **Output**
18
+ * `.a11y_artifacts/current.scorecard.json`
19
+ * `.a11y_artifacts/result.json`
20
+
21
+ **Common Failures**
22
+ * `A11Y.SCAN.IO`: Input path does not exist
23
+ * `A11Y.SCAN.SCHEMA`: Output directory not writable
24
+
25
+ ## Install
26
+
27
+ **Source-of-truth:** Lives in `accessibility-suite` (standalone `a11y-lint` repo may be deprecated).
28
+ **Recommended dev install:** Editable install from monorepo (e.g., `pip install -e src/a11y-lint`).
29
+
30
+ ## Usage
31
+
32
+ ### Standard mode (recommended)
33
+
34
+ Writes outputs to `.a11y_artifacts/`:
35
+
36
+ ```bash
37
+ a11y-lint scan --artifact-dir .a11y_artifacts
38
+ ```
39
+
40
+ **Expected outputs:**
41
+ * `.a11y_artifacts/current.scorecard.json`
42
+ * `.a11y_artifacts/result.json`
43
+
44
+ ### Using a custom output directory
45
+
46
+ ```bash
47
+ a11y-lint scan --artifact-dir path/to/output
48
+ ```
49
+
50
+ ## Output: scorecard schema
51
+
52
+ `current.scorecard.json` follows the locked schema:
53
+
54
+ * required `meta` object (tool, version)
55
+ * required `findings[]`
56
+ * each finding: `id`, `severity`, `message` (+ optional `location`)
57
+
58
+ ## Troubleshooting
59
+
60
+ If `a11y-ci` rejects your scorecard, validate that you’re writing:
61
+ * `meta.tool`, `meta.version`
62
+ * `findings[].id`, `findings[].severity`, `findings[].message`
@@ -0,0 +1,34 @@
1
+ # a11y-mcp-tools Handbook
2
+
3
+ An MCP server/tooling layer for capturing and transporting accessibility evidence bundles.
4
+
5
+ ## Quickstart
6
+
7
+ **Install**
8
+ ```bash
9
+ pip install -e src/a11y-mcp-tools
10
+ ```
11
+
12
+ **Run**
13
+ ```bash
14
+ mcp-server-a11y --evidence-dir .a11y_artifacts
15
+ ```
16
+
17
+ **Input**
18
+ * `.a11y_artifacts/evidence.json`
19
+
20
+ **Output**
21
+ * MCP Resources (`a11y://evidence/...`)
22
+ * MCP Prompts
23
+
24
+ ## Integration model
25
+
26
+ Treat `evidence.json` as the “source packet”:
27
+ * Store, index, or attach it to PR build artifacts
28
+ * **Prefer hash-verified artifacts** (`a11y-ci` includes SHA256 hashes)
29
+
30
+ ## In practice
31
+
32
+ Most teams:
33
+ 1. upload `.a11y_artifacts/` as CI artifacts
34
+ 2. optionally forward `evidence.json` to MCP tools for aggregation
@@ -0,0 +1,51 @@
1
+ # Accessibility Suite Handbook
2
+
3
+ This is the authoritative source for the entire suite. Most “standalone” repos are migrated here.
4
+
5
+ **Handbooks track main. For released versions, refer to tagged docs.**
6
+
7
+ **Also see:**
8
+ * [Universal Concepts](COMMON-CONCEPTS.md)
9
+ * [a11y-lint](A11Y-LINT.md)
10
+ * [a11y-ci](A11Y-CI.md)
11
+ * [a11y-mcp-tools](A11Y-MCP-TOOLS.md)
12
+ * [a11y-assist](A11Y-ASSIST.md)
13
+ * [a11y-evidence-engine](A11Y-EVIDENCE-ENGINE.md)
14
+ * [a11y-demo-site](A11Y-DEMO-SITE.md)
15
+ * [ally-demo-python](ALLY-DEMO-PYTHON.md)
16
+ * [CursorAssist](CURSORASSIST.md)
17
+
18
+ ## Install (developer)
19
+
20
+ Typical dev loop:
21
+
22
+ 1. Clone `mcp-tool-shop-org/accessibility-suite`
23
+ 2. Install tool packages from `src/…` (editable installs are preferred)
24
+
25
+ If your tools are Python packages (likely for `a11y-ci`, `a11y-lint`):
26
+
27
+ ```bash
28
+ # Install per-package from monorepo
29
+ pip install -e src/<tool>
30
+ ```
31
+
32
+ ## Run (suite convention)
33
+
34
+ From the repo root:
35
+
36
+ ```bash
37
+ a11y-lint scan --artifact-dir .a11y_artifacts
38
+ a11y-ci gate --artifact-dir .a11y_artifacts
39
+ a11y-ci comment --mcp .a11y_artifacts/evidence.json --platform github > .a11y_artifacts/comment.md
40
+ ```
41
+
42
+ ## CI
43
+
44
+ * **GitHub Actions:** `.github/workflows/a11y-gate.yml`
45
+ * **Baseline update:** `.github/workflows/update-baseline.yml`
46
+ * **Golden integration tests:** `.github/workflows/test-a11y-action.yml`
47
+
48
+ ## Where to add docs
49
+
50
+ * **Suite-wide conventions:** `docs/unified-artifacts.md`
51
+ * **Rule remediation index:** `docs/rules.md`
@@ -0,0 +1,23 @@
1
+ # ally-demo-python Handbook
2
+
3
+ A reference integration for Python showing how to consume or integrate the toolchain (“Ally” stack).
4
+
5
+ ## Quickstart
6
+
7
+ **Run**
8
+ ```bash
9
+ python examples/integrate_gate.py
10
+ ```
11
+
12
+ **Output**
13
+ * Console logs demonstrating API usage
14
+ * `.a11y_artifacts/` generated by example calls
15
+
16
+ ## Typical use
17
+
18
+ Learn how to integrate:
19
+
20
+ * scorecard generation
21
+ * gate execution
22
+ * evidence bundling
23
+ * parsing the `gate-result.json`
@@ -0,0 +1,24 @@
1
+ # Common Concepts
2
+
3
+ ## The Golden Folder: `.a11y_artifacts/`
4
+
5
+ All tools agree on a shared artifact directory:
6
+
7
+ ```plaintext
8
+ .a11y_artifacts/
9
+ current.scorecard.json # produced by a11y-lint (or scanners)
10
+ baseline.scorecard.json # optional, stored/managed by CI baseline workflow
11
+ allowlist.json # optional, expiring suppressions (waivers)
12
+ gate-result.json # produced by a11y-ci (structured report)
13
+ report.txt # produced by a11y-ci (human report)
14
+ evidence.json # produced by a11y-ci (MCP evidence bundle)
15
+ comment.md # produced by a11y-ci (PR comment markdown)
16
+ result.json # produced by a11y-lint (scanner result details)
17
+ ```
18
+
19
+ ## Typical pipeline flow
20
+
21
+ 1. **Scan** → `a11y-lint` writes `current.scorecard.json`
22
+ 2. **Gate** → `a11y-ci` gate reads it, compares baseline/allowlist, emits reports
23
+ 3. **Evidence** → `evidence.json` is produced for traceability/MCP
24
+ 4. **Comment** → `comment.md` generated for PR systems (GitHub/ADO)
@@ -0,0 +1,18 @@
1
+ # CursorAssist Handbook
2
+
3
+ Assistive cursor control and UI benchmarking. It’s adjacent to accessibility, but it’s more in the “motor assistance + UX measurement” lane.
4
+
5
+ ## Quickstart
6
+
7
+ **Run**
8
+ ```bash
9
+ cursor-assist --monitor
10
+ ```
11
+
12
+ **Output**
13
+ * Cursor metrics CSV
14
+
15
+ ## How it fits
16
+
17
+ * Can produce usability evidence/benchmarks that complement strict WCAG-style findings.
18
+ * If it emits structured outputs, it can be wrapped into `.a11y_artifacts/` as an additional evidence source.
@@ -0,0 +1,20 @@
1
+ # Accessibility Suite Handbooks
2
+
3
+ These handbooks are the authoritative documentation for the Accessibility Suite. The monorepo is the source of truth for all tools.
4
+
5
+ **Standalone repos contain redirects only.**
6
+
7
+ ## Start Here
8
+ * [Universal Concepts](COMMON-CONCEPTS.md) - **Read this first.** Explains `.a11y_artifacts`, the pipeline flow, and shared conventions.
9
+
10
+ ## Core Toolchain
11
+ 1. [a11y-lint](A11Y-LINT.md) - The scanner.
12
+ 2. [a11y-ci](A11Y-CI.md) - The policy gate.
13
+ 3. [a11y-mcp-tools](A11Y-MCP-TOOLS.md) - The integration layer.
14
+
15
+ ## Reference & Ecosystem
16
+ * [a11y-assist](A11Y-ASSIST.md)
17
+ * [a11y-evidence-engine](A11Y-EVIDENCE-ENGINE.md)
18
+ * [a11y-demo-site](A11Y-DEMO-SITE.md)
19
+ * [ally-demo-python](ALLY-DEMO-PYTHON.md)
20
+ * [CursorAssist](CURSORASSIST.md)
@@ -70,7 +70,7 @@ Third-party engines declare support using a capability manifest:
70
70
 
71
71
  ```json
72
72
  {
73
- "schema": "mcp-tool-shop/prov-capabilities@v0.1",
73
+ "schema": "mcp-tool-shop-org/prov-capabilities@v0.1",
74
74
  "engine": {
75
75
  "name": "example-engine",
76
76
  "version": "1.0.0"