ultra11y 5.42.1 → 5.43.1

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 (52) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +3 -3
  3. package/.codex-plugin/plugin.json +4 -4
  4. package/.opencode/plugins/ultra11y.js +1 -1
  5. package/README.md +11 -11
  6. package/package.json +3 -3
  7. package/scripts/build-pack-rgaa.mjs +9 -0
  8. package/scripts/ultra11y.mjs +2430 -1354
  9. package/scripts/vendor/wcag-2.2-fr.json +95 -78
  10. package/scripts/vendor/wcag-2.2-sc-universe.json +1 -1
  11. package/scripts/vendor/wcag-2.2-techniques.json +5 -5
  12. package/scripts/vendor/wcag-2.2-text.json +1 -1
  13. package/skills/review-a11y/SKILL.md +1 -1
  14. package/skills/review-a11y/scripts/ultra11y.mjs +2430 -1354
  15. package/skills/ultra11y/SKILL.md +1 -1
  16. package/skills/ultra11y/references/audit.md +7 -5
  17. package/skills/ultra11y/references/ci.md +12 -12
  18. package/skills/ultra11y/references/dynamic.md +1 -1
  19. package/skills/ultra11y/references/harnesses.md +3 -3
  20. package/skills/ultra11y/references/methodology.md +44 -6
  21. package/skills/ultra11y/references/orchestrators.md +44 -16
  22. package/skills/ultra11y/references/verify.md +5 -0
  23. package/skills/ultra11y/scripts/ultra11y.mjs +2430 -1354
  24. package/skills/ultra11y/templates/gitlab-ci.yml +2 -2
  25. package/src/auditor.ts +128 -4
  26. package/src/check.ts +34 -2
  27. package/src/cli.ts +21 -11
  28. package/src/data/guidance/wcag.json +2 -2
  29. package/src/data/standards/rgaa.json +23 -0
  30. package/src/data/wcag-universe.json +1 -1
  31. package/src/data/wcag.json +67 -69
  32. package/src/graph/engine-resolve.ts +0 -0
  33. package/src/grounding.ts +5 -2
  34. package/src/html-report.ts +91 -7
  35. package/src/init.ts +3 -3
  36. package/src/install/codex.ts +2 -2
  37. package/src/install/index.ts +1 -1
  38. package/src/mcp/handlers.ts +7 -2
  39. package/src/md.ts +15 -1
  40. package/src/pages.ts +65 -0
  41. package/src/report.ts +1045 -269
  42. package/src/sarif.ts +1 -1
  43. package/src/scan.ts +6 -0
  44. package/src/standards/types.ts +12 -0
  45. package/src/standards/validate.ts +21 -0
  46. package/src/types.ts +1 -1
  47. package/src/util.ts +7 -0
  48. package/src/vendor/codeindex-engine.d.mts +4 -2
  49. package/src/vendor/codeindex-engine.mjs +565 -358
  50. package/scripts/check-artifact-recall.mjs +0 -199
  51. package/scripts/sync-engine.mjs +0 -158
  52. package/src/vendor/engine.meta.json +0 -9
@@ -10,10 +10,10 @@
10
10
  "name": "ultra11y",
11
11
  "source": "./",
12
12
  "description": "Automatic accessibility review before commit, push and pull request, plus detailed evidenced Markdown, HTML and per-page WCAG 2.2 AA / RGAA reports in Claude Code.",
13
- "version": "5.42.1",
13
+ "version": "5.43.1",
14
14
  "author": { "name": "maxgfr" },
15
- "homepage": "https://github.com/maxgfr/ultra11y",
16
- "repository": "https://github.com/maxgfr/ultra11y",
15
+ "homepage": "https://github.com/SocialGouv/ultra11y",
16
+ "repository": "https://github.com/SocialGouv/ultra11y",
17
17
  "license": "MIT",
18
18
  "category": "quality",
19
19
  "keywords": ["accessibility", "a11y", "wcag", "rgaa", "code-review", "audit"]
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "ultra11y",
3
3
  "description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): automatic review before commit, push and pull request, plus detailed evidenced Markdown, HTML and per-page conformance reports in interactive agent sessions.",
4
- "version": "5.42.1",
4
+ "version": "5.43.1",
5
5
  "author": { "name": "maxgfr" },
6
- "homepage": "https://github.com/maxgfr/ultra11y",
7
- "repository": "https://github.com/maxgfr/ultra11y",
6
+ "homepage": "https://github.com/SocialGouv/ultra11y",
7
+ "repository": "https://github.com/SocialGouv/ultra11y",
8
8
  "license": "MIT"
9
9
  }
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "ultra11y",
3
3
  "description": "Accessibility for WCAG 2.2 AA and country standards (RGAA…): automatic review before commit, push and pull request, plus detailed evidenced Markdown, HTML and per-page conformance reports in interactive agent sessions.",
4
- "version": "5.42.1",
4
+ "version": "5.43.1",
5
5
  "author": { "name": "maxgfr", "url": "https://github.com/maxgfr" },
6
- "homepage": "https://github.com/maxgfr/ultra11y",
7
- "repository": "https://github.com/maxgfr/ultra11y",
6
+ "homepage": "https://github.com/SocialGouv/ultra11y",
7
+ "repository": "https://github.com/SocialGouv/ultra11y",
8
8
  "license": "MIT",
9
9
  "keywords": ["accessibility", "a11y", "wcag", "rgaa", "code-review", "audit"],
10
10
  "skills": "./skills/",
@@ -15,7 +15,7 @@
15
15
  "developerName": "maxgfr",
16
16
  "category": "Productivity",
17
17
  "capabilities": ["Read", "Write"],
18
- "websiteURL": "https://github.com/maxgfr/ultra11y",
18
+ "websiteURL": "https://github.com/SocialGouv/ultra11y",
19
19
  "defaultPrompt": "Review my staged changes for accessibility."
20
20
  }
21
21
  }
@@ -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.42.1";
30
+ const ULTRA11Y_PLUGIN_VERSION = "5.43.1";
31
31
 
32
32
  const here = dirname(fileURLToPath(import.meta.url));
33
33
 
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ultra11y
2
2
 
3
- [![CI](https://github.com/maxgfr/ultra11y/actions/workflows/ci.yml/badge.svg)](https://github.com/maxgfr/ultra11y/actions/workflows/ci.yml)
3
+ [![CI](https://github.com/SocialGouv/ultra11y/actions/workflows/ci.yml/badge.svg)](https://github.com/SocialGouv/ultra11y/actions/workflows/ci.yml)
4
4
  [![npm](https://img.shields.io/npm/v/ultra11y?logo=npm)](https://www.npmjs.com/package/ultra11y)
5
5
  [![agent plugin](https://img.shields.io/badge/Claude_Code_·_Codex_·_OpenCode-plugin-6b46c1)](#add-to-your-coding-agent)
6
6
  [![node](https://img.shields.io/node/v/ultra11y)](https://nodejs.org)
@@ -13,12 +13,12 @@ pull request — you never type the skill's name:
13
13
 
14
14
  | | |
15
15
  |---|---|
16
- | **Claude Code** | `/plugin marketplace add maxgfr/ultra11y` then `/plugin install ultra11y@ultra11y` |
17
- | **OpenAI Codex CLI** | `codex plugin marketplace add maxgfr/ultra11y` then `codex plugin add ultra11y@ultra11y` |
16
+ | **Claude Code** | `/plugin marketplace add SocialGouv/ultra11y` then `/plugin install ultra11y@ultra11y` |
17
+ | **OpenAI Codex CLI** | `codex plugin marketplace add SocialGouv/ultra11y` then `codex plugin add ultra11y@ultra11y` |
18
18
  | **OpenCode** | `npx ultra11y install --opencode` — or pin `"plugin": ["ultra11y@latest"]` in `opencode.json` |
19
19
  | **Anything else** | `npx ultra11y install --agents-md` (no hook API: see the caveat below) |
20
20
 
21
- <sub>Prefer the skills only, without the automatic hook? `npx skills add maxgfr/ultra11y`
21
+ <sub>Prefer the skills only, without the automatic hook? `npx skills add SocialGouv/ultra11y`
22
22
  (`--agent codex`, `--agent opencode`, …). Already on npm and just want the gate?
23
23
  `npx ultra11y install --all`, and `npx ultra11y status` to check what is actually wired.
24
24
  Full details, thresholds and off-switches under [Install](#install).</sub>
@@ -73,8 +73,8 @@ working diff, or branch vs merge-base) and reports like a code reviewer. Both bu
73
73
  install-free engine.
74
74
 
75
75
  ```sh
76
- npx skills add maxgfr/ultra11y # this agent
77
- npx skills add maxgfr/ultra11y --agent codex # …or opencode, cursor, gemini, amp, zed…
76
+ npx skills add SocialGouv/ultra11y # this agent
77
+ npx skills add SocialGouv/ultra11y --agent codex # …or opencode, cursor, gemini, amp, zed…
78
78
  ```
79
79
 
80
80
  **As an agent plugin** — the same two skills, plus the hook that makes the review
@@ -83,8 +83,8 @@ that carries accessibility findings is stopped once and the agent is handed the
83
83
  so `review-a11y` runs before the work goes out — you never type the skill's name.
84
84
 
85
85
  ```
86
- /plugin marketplace add maxgfr/ultra11y # Claude Code
87
- codex plugin marketplace add maxgfr/ultra11y # Codex CLI
86
+ /plugin marketplace add SocialGouv/ultra11y # Claude Code
87
+ codex plugin marketplace add SocialGouv/ultra11y # Codex CLI
88
88
  npx ultra11y install --opencode # OpenCode
89
89
  ```
90
90
 
@@ -125,7 +125,7 @@ claude mcp add ultra11y -- npx -y ultra11y mcp
125
125
  **As a GitHub Action** — audits the PR diff and, optionally, the served pages:
126
126
 
127
127
  ```yaml
128
- - uses: maxgfr/ultra11y@v5
128
+ - uses: SocialGouv/ultra11y@v5
129
129
  with: { since: auto, standard: rgaa, fail-on: blocking }
130
130
  ```
131
131
 
@@ -436,7 +436,7 @@ is the source of truth; CI rebuilds it from the vendored DINUM data and rejects
436
436
  block. It re-decides nothing and invents no format, so a page sheet and the compliance report
437
437
  cannot disagree; `check` gates it against invented criteria like any other report.
438
438
  See `references/pages.md`.
439
- - **A shipped GitHub Action** — `uses: maxgfr/ultra11y@v5` audits the **code** (PR diff) and,
439
+ - **A shipped GitHub Action** — `uses: SocialGouv/ultra11y@v5` audits the **code** (PR diff) and,
440
440
  optionally, the **pages** (it can start your app, wait for it, then scan real URLs or your
441
441
  declared sample). The engine ships inside the action, so there is nothing to install and no
442
442
  `setup-node`. With pages in scope, its job summary and `pages-status.md` artifact list every
@@ -577,7 +577,7 @@ pnpm run build:icons # re-generate the browser extension's icons from their
577
577
  ```
578
578
 
579
579
  Releases are cut automatically by **semantic-release** on push to `main` (GitHub release +
580
- npm publish via OIDC trusted publishing, plus the moving `v2` major tag). The version bump is
580
+ npm publish via OIDC trusted publishing, plus the moving `v5` major tag). The version bump is
581
581
  decided by **Conventional Commits**: a commit whose subject carries no `feat:`/`fix:` prefix
582
582
  is analysed as *no release*, so a change that must ship needs at least one conventional commit
583
583
  in the range — otherwise the major alias and npm keep serving the previous version while `main`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultra11y",
3
- "version": "5.42.1",
3
+ "version": "5.43.1",
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",
@@ -55,7 +55,7 @@
55
55
  "lint:fix": "biome check --write .",
56
56
  "format": "biome format --write .",
57
57
  "verify:bundle": "node scripts/verify-skill-bundle.mjs",
58
- "check:build": "tsup && node scripts/copy-bundle.mjs && git diff --exit-code -- scripts/ultra11y.mjs skills/ultra11y/scripts/ultra11y.mjs skills/review-a11y/scripts/ultra11y.mjs dist && node scripts/build-extension-icons.mjs --check && node scripts/verify-skill-bundle.mjs && node scripts/sync-engine.mjs --check",
58
+ "check:build": "tsup && node scripts/copy-bundle.mjs && git diff --exit-code -- scripts/ultra11y.mjs skills/ultra11y/scripts/ultra11y.mjs skills/review-a11y/scripts/ultra11y.mjs dist && node scripts/build-extension-icons.mjs --check && node scripts/verify-skill-bundle.mjs",
59
59
  "build:wcag": "node scripts/build-standards.mjs",
60
60
  "check:standards": "node scripts/build-standards.mjs --check",
61
61
  "build:pack:rgaa": "node scripts/build-pack-rgaa.mjs",
@@ -75,7 +75,7 @@
75
75
  "author": "maxgfr",
76
76
  "repository": {
77
77
  "type": "git",
78
- "url": "https://github.com/maxgfr/ultra11y"
78
+ "url": "https://github.com/SocialGouv/ultra11y"
79
79
  },
80
80
  "dependencies": {
81
81
  "@axe-core/playwright": "^4.13.0",
@@ -711,6 +711,15 @@ const DOWNLOAD_EXT = "pdf|docx?|pptx?|xlsx?|odt|ods|odp|rtf|csv|zip|rar|7z|gz|ep
711
711
  // Where DINUM publishes each criterion. Cited by the adjudication brief so a reader can
712
712
  // reach the normative page — the vendored text above stays the authority either way.
713
713
  criterionUrl: "https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#{id}",
714
+ // The three levels a French declaration of accessibility may state, fixed by the arrêté of
715
+ // 20 September 2019 (accessibilite.numerique.gouv.fr, obligations): every applicable
716
+ // criterion validated, at least half of them, or fewer. The report summary names the
717
+ // audited site's level from this scale and says what separates it from the next one.
718
+ conformityLevels: [
719
+ { min: 100, label: { fr: "Totalement conforme", en: "Fully compliant" } },
720
+ { min: 50, label: { fr: "Partiellement conforme", en: "Partially compliant" } },
721
+ { min: 0, label: { fr: "Non conforme", en: "Non-compliant" } },
722
+ ],
714
723
  // Auditor-display vocabulary (FR): the nouns an RGAA auditor reads. Rendered by the
715
724
  // `prd` auditor block + GitHub issues; see src/standards/vocabulary.ts.
716
725
  vocabulary: {