a11y-loop 0.2.2 → 0.2.4
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.
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Makes AI coding agents decide accessibility while the work is still being planned and write accessible UI by default, then verify it in a real browser across the states they built — and say exactly what could not be checked. Ships the a11y-loop Agent Skill, a /a11y-plan command, and a plan-mode gate that declines a UI plan with no accessibility content in it.",
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.4"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "a11y-loop",
|
|
14
14
|
"source": "./",
|
|
15
|
-
"version": "0.2.
|
|
15
|
+
"version": "0.2.4",
|
|
16
16
|
"description": "Accessibility in the plan, not after the pull request. Adds §0 plan rules (conformance target, per-component criteria, the product decisions that foreclose accessibility, color tokens before components), standing WCAG 2.2 AA generation rules, and a PreToolUse hook on ExitPlanMode that declines a UI-touching plan with no accessibility content — once, handing back the section to fill in. Verification is the a11y-loop CLI: axe-core in Chromium across default, dark, forced-colors, reduced-motion and 320px passes.",
|
|
17
17
|
"author": {
|
|
18
18
|
"name": "Chan Meng",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "a11y-loop",
|
|
4
4
|
"displayName": "a11y-loop",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.4",
|
|
6
6
|
"description": "Hard-gates plan mode: a plan that changes UI has to say what it decided about accessibility before it can be approved. Ships the a11y-loop skill and a /a11y-plan command alongside it.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Chan Meng",
|
package/README.md
CHANGED
|
@@ -364,6 +364,16 @@ want the plugin. Do not do both: the plugin carries its own copy, so the model e
|
|
|
364
364
|
`a11y-loop` *and* the directory-qualified `a11y-loop:a11y-loop`, paying the always-on token cost
|
|
365
365
|
twice. If both names show up, delete `~/.claude/skills/a11y-loop` and keep the plugin.
|
|
366
366
|
|
|
367
|
+
**Upgrading is a different command from installing** — `claude plugin install` on something already
|
|
368
|
+
installed reports "already installed" and does nothing:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
npm i -g a11y-loop@latest
|
|
372
|
+
cp -r "$(npm root -g)/a11y-loop/skill/a11y-loop" ~/.claude/skills/ # if using the skill
|
|
373
|
+
claude plugin marketplace update chanmeng-a11y-loop # if using the plugin
|
|
374
|
+
claude plugin update a11y-loop@chanmeng-a11y-loop
|
|
375
|
+
```
|
|
376
|
+
|
|
367
377
|
### Installation (details)
|
|
368
378
|
|
|
369
379
|
```bash
|
|
@@ -540,11 +550,17 @@ npm run test:integration # integration tests only (drives real Chromium)
|
|
|
540
550
|
The optional plugin layer is plain Node with no dependencies. Exercise the plan gate directly:
|
|
541
551
|
|
|
542
552
|
```bash
|
|
543
|
-
echo '{"session_id":"s1","tool_name":"ExitPlanMode","tool_input":{"plan":"
|
|
544
|
-
| node hooks/plan-gate.mjs
|
|
545
|
-
claude plugin validate . --strict
|
|
553
|
+
echo '{"session_id":"s1","tool_name":"ExitPlanMode","tool_input":{"plan":"Add a settings page in React: a modal dialog, a members table with row actions, tabs, and a dark mode toggle styled with Tailwind CSS."}}' \
|
|
554
|
+
| node hooks/plan-gate.mjs # expect a "deny" verdict
|
|
555
|
+
claude plugin validate . --strict # shape only — see AGENTS.md on why this is not proof
|
|
546
556
|
```
|
|
547
557
|
|
|
558
|
+
Silence and exit 0 is the gate's normal answer, so an example that prints nothing proves nothing:
|
|
559
|
+
the plan has to clear 40 characters and be unambiguously about UI, or you are testing the pass path
|
|
560
|
+
by accident. Re-running the *same* plan returns `defer` rather than `deny` — the loop guard spends
|
|
561
|
+
each plan's hash once, deliberately — so prefix with `CLAUDE_PLUGIN_DATA="$(mktemp -d)"` for a clean
|
|
562
|
+
verdict. See [`AGENTS.md`](AGENTS.md) for the rest of the plugin-layer gotchas.
|
|
563
|
+
|
|
548
564
|
See [`AGENTS.md`](AGENTS.md) for AI-agent-oriented project conventions, the fixture-manifest
|
|
549
565
|
testing pattern, the loop discipline expected when touching `demo/` or other UI, and the rule that
|
|
550
566
|
keeps `skill/` free of any Claude-Code-specific mechanism.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "a11y-loop",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Makes AI coding agents decide accessibility while the work is still being planned and write accessible UI by default, then proves what it can prove with a real browser audit across the states they built — and tells you exactly what it could not check.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/skill/a11y-loop/SKILL.md
CHANGED
|
@@ -28,7 +28,7 @@ compatibility: >-
|
|
|
28
28
|
The generation and honesty rules apply with or without the CLI; every step
|
|
29
29
|
that says "audit" requires it.
|
|
30
30
|
metadata:
|
|
31
|
-
"a11y-loop/version": "0.2.
|
|
31
|
+
"a11y-loop/version": "0.2.4"
|
|
32
32
|
allowed-tools: 'Bash(a11y-loop *) Bash(npx a11y-loop *) Bash(node ${CLAUDE_SKILL_DIR}/../../src/cli.js *)'
|
|
33
33
|
---
|
|
34
34
|
|