ultra11y 5.34.1 → 5.34.2
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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.opencode/plugins/ultra11y.js +1 -1
- package/package.json +1 -1
- package/scripts/ultra11y.mjs +1 -1
- package/scripts/verify-skill-bundle.mjs +15 -16
- package/skills/review-a11y/SKILL.md +2 -4
- package/skills/review-a11y/scripts/ultra11y.mjs +1 -1
- package/skills/ultra11y/SKILL.md +7 -5
- package/skills/ultra11y/scripts/ultra11y.mjs +1 -1
- package/src/types.ts +1 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"name": "ultra11y",
|
|
11
11
|
"source": "./",
|
|
12
12
|
"description": "Automatic accessibility review of the code under change before every commit, push and pull request, plus full WCAG 2.2 AA / RGAA audits and conformance deliverables on demand.",
|
|
13
|
-
"version": "5.34.
|
|
13
|
+
"version": "5.34.2",
|
|
14
14
|
"author": { "name": "maxgfr" },
|
|
15
15
|
"homepage": "https://github.com/maxgfr/ultra11y",
|
|
16
16
|
"repository": "https://github.com/maxgfr/ultra11y",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultra11y",
|
|
3
3
|
"description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): an automatic review of the code under change before every commit, push and pull request, plus full audits and conformance deliverables on demand.",
|
|
4
|
-
"version": "5.34.
|
|
4
|
+
"version": "5.34.2",
|
|
5
5
|
"author": { "name": "maxgfr" },
|
|
6
6
|
"homepage": "https://github.com/maxgfr/ultra11y",
|
|
7
7
|
"repository": "https://github.com/maxgfr/ultra11y",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultra11y",
|
|
3
3
|
"description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): an automatic review of the code under change before every commit, push and pull request, plus full audits and conformance deliverables on demand.",
|
|
4
|
-
"version": "5.34.
|
|
4
|
+
"version": "5.34.2",
|
|
5
5
|
"author": { "name": "maxgfr", "url": "https://github.com/maxgfr" },
|
|
6
6
|
"homepage": "https://github.com/maxgfr/ultra11y",
|
|
7
7
|
"repository": "https://github.com/maxgfr/ultra11y",
|
|
@@ -27,7 +27,7 @@ import { fileURLToPath } from "node:url";
|
|
|
27
27
|
// Ownership marker: `ultra11y install --opencode` refuses to overwrite a plugin file that
|
|
28
28
|
// does not carry it, so a user's own ultra11y.js is never clobbered.
|
|
29
29
|
const ULTRA11Y_OPENCODE_PLUGIN = "ULTRA11Y_OPENCODE_PLUGIN";
|
|
30
|
-
const ULTRA11Y_PLUGIN_VERSION = "5.34.
|
|
30
|
+
const ULTRA11Y_PLUGIN_VERSION = "5.34.2";
|
|
31
31
|
|
|
32
32
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
33
33
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultra11y",
|
|
3
|
-
"version": "5.34.
|
|
3
|
+
"version": "5.34.2",
|
|
4
4
|
"description": "Audit HTML/CSS/JSX against WCAG 2.2 AA and produce a dated compliance report, or author/review accessible markup (native-HTML-first). A skills.sh agent skill: an install-free static engine (bundled, no npm install) plus the agent's judgment, with check/verify gates against hallucinated non-conformities, and pluggable in-repo standards packs (RGAA France first; Section 508 & EN 301 549 next).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.33.0",
|
package/scripts/ultra11y.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import { join as join52, relative as relative5, resolve as resolve16, sep as sep
|
|
|
6
6
|
import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
|
|
7
7
|
|
|
8
8
|
// src/types.ts
|
|
9
|
-
var VERSION = "5.34.
|
|
9
|
+
var VERSION = "5.34.2";
|
|
10
10
|
var SCHEMA_VERSION = 2;
|
|
11
11
|
var INAPPLICABLE_STATUS = "C";
|
|
12
12
|
|
|
@@ -16,17 +16,14 @@ import { spawnSync } from "node:child_process";
|
|
|
16
16
|
import { dirname, join } from "node:path";
|
|
17
17
|
import { fileURLToPath } from "node:url";
|
|
18
18
|
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
//
|
|
27
|
-
// (`license`, `metadata`). An unknown key at the root is almost always a typo
|
|
28
|
-
// — `when-to-use` for `when_to_use` costs the whole automatic trigger and
|
|
29
|
-
// otherwise fails silently, so it is a hard error here.
|
|
19
|
+
// Codex accepts descriptions up to 1024 characters. Keep the gate at the
|
|
20
|
+
// official limit so the same frontmatter remains discoverable across hosts.
|
|
21
|
+
const DESCRIPTION_MAX = 1024;
|
|
22
|
+
const CLAUDE_LISTING_MAX = 1500;
|
|
23
|
+
|
|
24
|
+
// Accept the union of the Codex keys and the Claude Code keys supported by this
|
|
25
|
+
// multi-host repository. The installable skills themselves are tested below
|
|
26
|
+
// against the stricter portable subset.
|
|
30
27
|
const KNOWN_KEYS = new Set([
|
|
31
28
|
"name",
|
|
32
29
|
"description",
|
|
@@ -107,11 +104,13 @@ for (const name of skillNames) {
|
|
|
107
104
|
const when = scalar(fm[1], "when_to_use");
|
|
108
105
|
if (!desc) bad(`skills/${name}: frontmatter has no description`);
|
|
109
106
|
else {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
107
|
+
desc.length <= DESCRIPTION_MAX
|
|
108
|
+
? ok(`description ${desc.length} chars (<= ${DESCRIPTION_MAX} Codex limit)`)
|
|
109
|
+
: bad(`skills/${name}: description ${desc.length} chars exceeds the ${DESCRIPTION_MAX}-char Codex limit`);
|
|
110
|
+
const listingLength = desc.length + (when?.length ?? 0);
|
|
111
|
+
listingLength <= CLAUDE_LISTING_MAX
|
|
112
|
+
? ok(`Claude listing ${listingLength} chars (<= ${CLAUDE_LISTING_MAX} safety cap)`)
|
|
113
|
+
: bad(`skills/${name}: Claude listing ${listingLength} chars exceeds the ${CLAUDE_LISTING_MAX}-char safety cap`);
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
116
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: review-a11y
|
|
3
|
-
description: "Use to REVIEW code
|
|
4
|
-
when_to_use: "Invoke WITHOUT being asked whenever changed front-end code should be checked: the user just finished or modified a component, template, page or stylesheet; is about to commit, push or open a pull request; asks 'is this accessible?' or 'anything to fix before merge?'; a diff, branch or PR is under discussion; or a hook or CI reports accessibility findings on the change. NOT for a whole-repo audit, a dated conformance report, an RGAA/Section 508 deliverable or a PRD backlog — that is the `ultra11y` skill."
|
|
5
|
-
allowed-tools: Bash(node ${CLAUDE_SKILL_DIR}/scripts/ultra11y.mjs *), Read, Grep, Glob
|
|
3
|
+
description: "Use to REVIEW changed frontend code for accessibility: staged files, a working diff, branch, or PR; prompts such as 'review a11y', 'is this accessible?', or 'anything to fix before merge?'; and hook or CI findings on a change. Run the bundled install-free engine with cross-file JSX/TSX analysis, then adjudicate candidates and return a severity-ranked WCAG 2.2 AA review with file:line fixes, residual rendering risks, and a verdict. Use `ultra11y` instead for whole-repo audits, dated conformance reports, country standards, PRD backlogs, or authoring accessible markup."
|
|
6
4
|
license: MIT
|
|
7
5
|
metadata:
|
|
8
|
-
version: 5.34.
|
|
6
|
+
version: 5.34.2
|
|
9
7
|
---
|
|
10
8
|
|
|
11
9
|
# review-a11y — accessibility review of changed code
|
|
@@ -6,7 +6,7 @@ import { join as join52, relative as relative5, resolve as resolve16, sep as sep
|
|
|
6
6
|
import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
|
|
7
7
|
|
|
8
8
|
// src/types.ts
|
|
9
|
-
var VERSION = "5.34.
|
|
9
|
+
var VERSION = "5.34.2";
|
|
10
10
|
var SCHEMA_VERSION = 2;
|
|
11
11
|
var INAPPLICABLE_STATUS = "C";
|
|
12
12
|
|
package/skills/ultra11y/SKILL.md
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra11y
|
|
3
|
-
description: "Use to AUDIT
|
|
4
|
-
when_to_use: "Invoke when the user asks for an accessibility AUDIT or a formal deliverable: audit a repo, site or page against WCAG 2.2 AA or a country standard (RGAA, Section 508, EN 301 549); produce a dated conformance report, a criterion grid, a PRD backlog, or tickets (GitHub/GitLab/Jira); author accessible markup from scratch; wire the repo gate (init --hook/--ci) or a rendered-DOM capture pipeline. For a review of the code UNDER CHANGE (diff, branch, PR), use the `review-a11y` skill instead."
|
|
3
|
+
description: "Use to AUDIT a repository, site, or page against WCAG 2.2 AA or a country standard such as RGAA; produce a dated conformance report, criterion grid, PRD backlog, or tickets; AUTHOR accessible markup; fix accessibility; or wire a repo gate and rendered-DOM capture pipeline. The bundled install-free engine runs 81 static checks tied to success criteria, while the agent adjudicates judgment criteria and routes rendering criteria to browser scans; check/verify reject invented non-conformities. Use `review-a11y` instead for a review scoped only to a diff, branch, or PR."
|
|
5
4
|
license: MIT
|
|
6
5
|
metadata:
|
|
7
|
-
version: 5.34.
|
|
6
|
+
version: 5.34.2
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# ultra11y — audit WCAG 2.2 AA and write accessible markup
|
|
@@ -14,7 +13,7 @@ that with a **division of labour**: the deterministic, install-free engine
|
|
|
14
13
|
(`node scripts/ultra11y.mjs <command>` — no `npm install`, no key; the JSX/TSX parser
|
|
15
14
|
is embedded in the bundle) does the *mechanical* work — detect the machine-checkable
|
|
16
15
|
non-conformities and tie each to the right **WCAG success criterion** — and **the AI agent**
|
|
17
|
-
(
|
|
16
|
+
(the AI agent running this skill) *adjudicates the judgment criteria itself* — alt relevance, link
|
|
18
17
|
purpose in context, reading order — statically, from the evidence the engine harvests
|
|
19
18
|
(`verify --manual`), each verdict gated by `verify`/`check`. Only the truly **rendered-DOM**
|
|
20
19
|
criteria (computed contrast, visible focus, zoom/reflow, content-on-hover) fall to the `scan`
|
|
@@ -411,8 +410,11 @@ This skill does the analysis end to end: audit, render, adjudicate, fix, re-audi
|
|
|
411
410
|
When it has produced fixes, **dispatch `review-a11y` on the code under change as a subagent**,
|
|
412
411
|
and report what it returns.
|
|
413
412
|
|
|
413
|
+
Use the host's native subagent capability: Codex dispatches a subagent with the prompt below;
|
|
414
|
+
Claude Code can use `Agent(...)`. If the host exposes neither, follow the sequential route below.
|
|
415
|
+
|
|
414
416
|
```
|
|
415
|
-
|
|
417
|
+
Use the review-a11y skill on the working diff. Return its report verbatim.
|
|
416
418
|
```
|
|
417
419
|
|
|
418
420
|
Two skills, two scopes, and the split is not cosmetic:
|
|
@@ -6,7 +6,7 @@ import { join as join52, relative as relative5, resolve as resolve16, sep as sep
|
|
|
6
6
|
import { fileURLToPath as fileURLToPath5, pathToFileURL as pathToFileURL3 } from "url";
|
|
7
7
|
|
|
8
8
|
// src/types.ts
|
|
9
|
-
var VERSION = "5.34.
|
|
9
|
+
var VERSION = "5.34.2";
|
|
10
10
|
var SCHEMA_VERSION = 2;
|
|
11
11
|
var INAPPLICABLE_STATUS = "C";
|
|
12
12
|
|
package/src/types.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Single source of truth for shared types + the embedded version. sync-version.mjs
|
|
2
2
|
// rewrites VERSION at release time (kept in lockstep with package.json + SKILL.md).
|
|
3
|
-
export const VERSION = "5.34.
|
|
3
|
+
export const VERSION = "5.34.2";
|
|
4
4
|
export const SCHEMA_VERSION = 2;
|
|
5
5
|
|
|
6
6
|
// Lang = the UI FRAME's language — the `L` localization tables each module (report,
|