docs-accessibility-review
Skill17k starsChanged 8 days agoMITView on GitHub
Review the accessibility of added or modified frontend code in La Suite Docs (PRs, diffs, React components, styles, editor features). Covers HTML semantics, accessible names, ARIA, keyboard navigation, focus entry and restoration (Cancel, Escape, submit, removed trigger), screen-reader announcements, forms, dialogs, menus, the document tree, BlockNote and collaboration. Verifies in a real browser when one is available and keeps static, browser, axe and screen-reader evidence apart.
Adopted by
Steady: 0 new projects took it in the last 4 weeks, none the 4 weeks before.thin data
Who's talking about suitenumerique/docs
- Digitiz Business“LaSuite numérique : j’ai testé les outils collaboratifs libres de l’État français”YouTube · Sep 27, 2026 · 80k views
- A Hacker News story“Docs – Open source alternative to Notion or Outline”Hacker News · Mar 16, 2025 · 2k points
- A la french 💻“L'État défie Microsoft Word et Google Docs avec ses développeurs open source! @alafrench”YouTube · Jan 9, 2026 · 1.2k views
- trms“The Government-Mandated Notion Alternative”YouTube · Apr 4, 2025 · 1.1k views
- Digitiz Business“La Suite numérique est réservée à l'État… sauf si vous l'installez vous-même”YouTube · Oct 18, 2026 · 661 views
The biggest 5 of 110 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 110
Talked about on GitHub, Bluesky, YouTube and Hacker News (110 times).
On GitHub · 50
- Apr 25, 2025NixOS native deployment of La Suite — suitenumerique/hackdays202525 reactions · 9 comments
- Apr 22, 2025Sheets app — suitenumerique/hackdays20253 reactions · 3 comments
- Apr 25, 2025nixos/lasuite-docs: init — NixOS/nixpkgs2 reactions · 9 comments
- Dec 2, 2025lasuite-docs{-frontend,-collaboration-server}: 3.6.0 -> 4.0.0, lasuite-docs: 3.9.0 -> 4.0.0 — NixOS/nixpkgs1 reaction · 1 comment
- May 31, 2025Docs - AI Agent that gives all kind of data — suitenumerique/hackdays20251 reaction
45 more on GitHub
- May 23, 2025Couple of improvement on the open source repo — etalab-ia/OpenGateLLM1 reaction
- Apr 25, 2025Publish a security policy — suitenumerique/django-lasuite1 reaction
- Mar 19, 2025Add Docs to wishlist — YunoHost/apps1 reaction · 4 comments
- Mar 18, 2025Drop obsolete code from the initial boilerplate — suitenumerique/meet1 reaction · 3 comments
- Nov 5, 2026Docs v6 (yhub) for Node.js security fixes — suiteterritoriale/ansible0 reactions
- Nov 3, 2026Inline math source popup opens in a read-only editor — TypeCellOS/BlockNote0 reactions · 1 comment
- Oct 26, 2026Upgrade to v6.0.4 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 2 comments
- Oct 26, 2026✨(feature) Being able to limit number of versions of documents — yjs/yhub0 reactions
- Oct 26, 2026Toggling “Header row” on a table wipes cell content being edited by another collaborator — TypeCellOS/BlockNote0 reactions
- Oct 25, 2026Decide how to treat reference material that is not a package (12) — djangopackages/djangopackages0 reactions · 2 comments
- Oct 23, 2026Upgrade to v6.0.3 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 1 comment
- Oct 22, 2026🐛(Bug) editor crash when typing the caret character at the start of an inline equation — TypeCellOS/BlockNote0 reactions
- Oct 21, 2026Upgrade to v6.0.2 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 2 comments
- Oct 15, 2026Upgrade to v6.0.1 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 2 comments
- Oct 15, 2026Awareness renewal pulls a sync round forward, so syncInterval is not respected — yjs/yhub-http-fallback0 reactions
- Oct 9, 2026Upgrade to v6.0.0 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 2 comments
- Oct 5, 2026Prevent line breaks after literal hyphens in words — TypeCellOS/BlockNote0 reactions · 1 comment
- Sep 16, 2026Upgrade to v5.7.0 — YunoHost-Apps/lasuite-docs_ynh0 reactions · 3 comments
- Sep 11, 2026Dropdown doesn't adapt well when text is too long — suitenumerique/ui-kit0 reactions · 2 comments
- Sep 1, 2026Hosted App Research: LaSuite Docs — Z-Space-Society/Corliss0 reactions · 1 comment
- Aug 31, 2026Recipe: lasuite-docs — spelingbee/drillback0 reactions
- Aug 3, 2026✨(backend) make forward auth request uri header configurable — suitenumerique/drive0 reactions · 2 comments
- Jul 21, 2026🐛 Should not pinned dependencies — suitenumerique/ui-kit0 reactions
- Jul 6, 2026Dev: Timoni Part 4 — evocloud-dev/evocloud-paas0 reactions
- Jun 20, 2026Add PR template including AI requirements — PnX-SI/GeoNature0 reactions
- Jun 11, 2026Milestone 6: La Suite adapters — Docs API + Grist API/webhooks — gibouu/docgit0 reactions
- May 25, 2026Common configuration base — suitenumerique/django-lasuite0 reactions · 2 comments
- May 11, 2026Evaluate La Suite Docs — EnigmaCurry/d.rymcg.tech0 reactions
- Apr 6, 2026[Project]: Docs — yncyrydybyl/ex-od-us0 reactions
- Apr 6, 2026[Project]: Docs — yncyrydybyl/ex-od-us0 reactions
- Feb 19, 2026⬆️(ci) upgrade GitHub Actions workflow steps to latest versions — suitenumerique/drive0 reactions · 5 comments
- Feb 19, 2026⬆️(ci) upgrade GitHub Actions workflow steps to latest versions — suitenumerique/meet-kyutai-moshi-stt0 reactions · 3 comments
- Feb 19, 2026ci: upgrade GitHub Actions workflow steps to latest versions — suitenumerique/e2esdk0 reactions · 3 comments
- Feb 19, 2026👷(docker) add arm64 platform support for image builds — suitenumerique/meet-kyutai-moshi-stt0 reactions · 3 comments
- Feb 19, 2026👷(docker) add arm64 platform support for image builds — suitenumerique/e2esdk0 reactions · 3 comments
- Feb 10, 2026Sort user search by proximity — suitenumerique/django-lasuite0 reactions
- Feb 7, 2026I want general notes to be able to live close to my data, code, pubs, refs, etc. — calkit/calkit0 reactions
- Jan 26, 2026[Add App] docs — beclab/apps0 reactions
- Dec 12, 2025Use variable in cunningham-tokens.ts — suitenumerique/cunningham0 reactions
- Dec 11, 2025Réaliser un PoC de Docs pour COFOLIO — avenirs-esr/AVENIRS-Project0 reactions
- Nov 2, 2025Posted: suitenumerique / docs — nanameru/x-post-automation0 reactions
- Jun 11, 2025DevX guidelines — suitenumerique/dev-handbook0 reactions
- May 2, 2025Automated grammatical corrections — suitenumerique/hackdays20250 reactions
- Mar 18, 2025Support for Docs — souvikinator/notion-to-md0 reactions
- Mar 16, 2025Add https://github.com/suitenumerique/docs — sdil/open-production-web-projects0 reactions
On Bluesky · 47
- Mar 17, 2025Docs : une alternative Open Source à Notion ou Outline. (P) Ce projet est le fruit d'une collaboration entre les gouvernements français (la… — @bearstech.com107 likes and reposts · 6 replies
- Apr 21, 2026Also, ICYMI, here's the official logo of the French/German/Dutch government effort to build some open source software:… — @wonkish.bsky.social28 likes and reposts
- Mar 17, 2025Docs is an open source collaborative text editor created by a joint effort from the French 🇫🇷 and German 🇩🇪governments.… — @chrisoffner3d.bsky.social27 likes and reposts
- Mar 16, 2025French gov's open source alternative to Notion or Outline Discussion — @hackernewsbot.bsky.social19 likes and reposts
- Apr 25, 2025github.com/suitenumeriq... — @aurelia.nullvoid.space16 likes and reposts · 2 replies
42 more on Bluesky
- Mar 17, 2025Docs is a Notion alternative that is: - European - open source - built with public financing (public money, public code!)… — @bomberstudios.com13 likes and reposts
- Mar 17, 2025Opensource alternative to Notion or Outline: a collaborative note taking, wiki and documentation platform that scales. "the result of a… — @brucel.bsky.social13 likes and reposts · 1 reply
- Mar 16, 2025Je viens de tomber sur ça sur Linkedin, ça a l’air sympa vu les alternatives qui existent (SharePoint, Confluence…)… — @tzkuat.bsky.social11 likes and reposts · 4 replies
- Mar 16, 2025Docs: #opensource alternative to Notion or Outline. Simple editing tools, collaborate with others, work offline, and built-in wiki… — @davidbisset.com8 likes and reposts
- Mar 16, 2025Docs: A collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to… — @scripting.com8 likes and reposts
- Mar 30, 2026French and German government open source initiatives, an alternative to using Notion, wiki, and office suites etc.,… — @harshak.bsky.social4 likes and reposts
- Aug 22, 2025🔗 Liens utiles Docs : 👉 Le projet : github.com/suitenume... 👉 En savoir plus : docs.numerique.gouv.... — @bearstech.com4 likes and reposts
- Mar 29, 2025Docs A collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to… — @pythonhub.dev4 likes and reposts
- Mar 17, 2025Docs - Notion 또는 Outline의 오픈 소스 대체제 | GeekNews news.hada.io/topic?id=19791 suitenumerique/docs: A collaborative note taking, wiki and… — @lunamoth.bsky.social4 likes and reposts
- Mar 16, 2025Docs - NotionやOutlineに代わるオープンソース Docs – Open source alternative to Notion or Outline 🔺 344 💬 21 🔗 HN Post | Article — @hacker-news-jp.bsky.social4 likes and reposts · 1 reply
- Jul 27, 2026Alors pour les notes c’est docs de #LaSuite github.com/suitenumeriq... et pour les liens et à lire + tard c’est karakeep karakeep.app en… — @souverain.ovh3 likes and reposts · 1 reply
- Mar 19, 2025github.com/suitenumeriq... C’est terriblement courant aujourd’hui malheureusement… — @aeris.eu.org3 likes and reposts
- Apr 15, 2026github.com/suitenumeriq... has good DX to get up and running in development, good job. — @paulmwatson.com2 likes and reposts
- Jan 6, 2026open source et ça peut être self-hosted. Faut voir quelle infra est utilisée par les insitutions pour leur hébergement du service… — @tapyplus.bsky.social2 likes and reposts · 1 reply
- Jun 14, 2025Tem o github! github.com/suitenumeriq... — @rrrenato.bsky.social2 likes and reposts · 1 reply
- Mar 22, 2025The mascot of github.com/suitenumeriq... is a really cute way of depicting the countries. Everyone lives foreign food 😀 — @martin.rauscheronline.de2 likes and reposts · 1 reply
- Mar 19, 2025Looks delish! 😌 github.com/suitenumeriq... — @kimberlybiscuits.bsky.social2 likes and reposts
- Mar 16, 2025"Docs – Open source alternative to Notion or Outline" Open source tools like Docs can break free from expensive subscription models. They… — @hackerbriefs.bsky.social2 likes and reposts
- Mar 16, 2025Docs: A collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to… — @dave.feediverse.org2 likes and reposts
- Mar 16, 2025Docs: A collaborative note taking, wiki and documentation platform that scales. Built with Django and React. Opensource alternative to… — @radiofreeameri.ca2 likes and reposts
- Mar 16, 2025The French government really are taking digital government to the next level github.com/suitenumeriq... — @radiobeartime.com2 likes and reposts · 1 reply
- Mar 30, 2026French and German government open source initiatives, an alternative to using Notion, wiki, and office suites etc.,… — @harshak.mastodon.social.ap.brid.gy1 likes and repost
- Jan 12, 2026Niet alleen, de Duitse overheid heeft zelf ook dit ontwikkeld: www.opendesk.eu/en/ En de Duitsers hebben samen met de Fransen dit… — @jeroeneuropa.bsky.social1 likes and repost
- Dec 1, 2025So wie ich es verstanden habe ist es eine komplette Neuentwicklung. Die "Docs"-Suite wurde im Rahmen einer deutsch-französischen… — @ixolius.bsky.social1 likes and repost
- Nov 1, 2025📦 suitenumerique / docs ⭐ 14,100 (+26) 🗒 Python A collaborative note taking, wiki and documentation platform that scales. Built with… — @github-trending.bsky.social1 likes and repost
- Jul 28, 2025github.com/suitenumeriq... — @astralfrontier.org1 likes and repost · 1 reply
- Apr 24, 2025En su GitHub ( github.com/suitenumeriq...) lo ponen: 🚀 Easy to install, scalable and secure alternative to Notion, Outline or Confluence — @quest10.eurosky.social1 likes and repost · 1 reply
- Apr 21, 2025It's really cool the EU is financing and open sourcing a Google Docs and Notion alternative... But why did they have to use React and Next?… — @pierbover.com1 likes and repost · 1 reply
- Apr 3, 2025Participate to the #Docs project on #Github : A #european #sovereign #opensource #foss alternative to #GoogleDocs 🤘… — @rod2ik.bsky.social1 likes and repost
- Apr 3, 2025Participate to the #Docs project on #Github : A #european #sovereign #opensource #foss alternative to #GoogleDocs 🤘… — @rod2ik.bsky.social1 likes and repost
- Mar 20, 2025J'ai vu passé ça il y a peu: github.com/suitenumeriq... Alternative open source à Notion! — @loicmathieu.fr1 likes and repost
- Mar 18, 2025Wow. TIL the French and German governments are collaborating on a docs platform. Nice! github.com/suitenumeriq... — @ajkelkar.bsky.social1 likes and repost
- Mar 17, 2025French gov being based and making their own offline-first OSS alternative to Notion/similar github.com/suitenumeriq... — @murrax.dev1 likes and repost · 1 reply
- Mar 17, 2025Collaborative writing tool (like Notion) funded by German and French governments. Open source. I think this is the way to build essential… — @canolcer.eu1 likes and repost
- Mar 16, 2025An interesting project. Opensource alternative to Notion or Outline. Test login credentials available. — @balticseadivingr.eurosky.social1 likes and repost
- Mar 16, 2025Very cool project supported by the French and German governments. Such efforts save tax payers money in the long run and benefit everyone.… — @kobia.dev1 likes and repost
- Mar 16, 2025🌐Docs – Notion や Outline のオープンソース代替品 https://github.com/suitenumerique/docs via #HackerNews — @kdmsnr.com1 likes and repost
- Mar 16, 2025Docs – Open source alternative to Notion or Outline https://github.com/suitenumerique/docs (https://news.ycombinator.com/item?id=43378239) — @betterhn300.e-work.xyz1 likes and repost
- Mar 16, 2025French gov's open source alternative to Notion or Outline https://github.com/suitenumerique/docs… — @betterhn50.e-work.xyz1 likes and repost
- Apr 24, 2025El el github, aparece como 'demo document'. github.com/suitenumeriq... — @cartdestr.eurosky.social0 likes and reposts · 1 reply
- Mar 17, 2025Docs une alternative open source à Notion ou Outline mais développée en collab entre la France 🇫🇷 (gov) et l'Allemagne 🇩🇪 (gov) Cela… — @thibaud.dev0 likes and reposts · 1 reply
- Mar 16, 2025代码仓库地址: github.com/suitenumeriq... — @luosays.bsky.social0 likes and reposts · 1 reply
On YouTube · 11
- Sep 27, 2026LaSuite numérique : j’ai testé les outils collaboratifs libres de l’État français — Digitiz Business80k views · 57 comments
- Jan 9, 2026L'État défie Microsoft Word et Google Docs avec ses développeurs open source! @alafrench — A la french 💻1.2k views · 6 comments
- Apr 4, 2025The Government-Mandated Notion Alternative — trms1.1k views · 6 comments
- Oct 18, 2026La Suite numérique est réservée à l'État… sauf si vous l'installez vous-même — Digitiz Business661 views · 3 comments
- Oct 3, 2026Docs (La Suite): edit team documents on your own server | open source — Git Gems233 views
6 more on YouTube
- Jun 11, 2025Our Paris HackDays submission for integration with docs — BigBlueButton230 views · 1 comment
- Mar 16, 2025GitHub - suitenumerique/docs: A collaborative note taking, wiki and documentation platform that s... — GitHub Daily Trend AI Podcast148 views
- May 13, 2026docs belongs on your radar — Repo Radar76 views
- Nov 3, 2025suitenumerique/docs - Gource visualisation — Gourcer37 views
- Jan 24, 2026Binärgewitter Talk #356: ... wenn du ein Ceph Cluster betreibst — Binaergewitter0 views
- Jan 8, 2026Binärgewitter Talk #356: ... wenn du ein Ceph Cluster betreibst — Binaergewitter0 views
On Hacker News · 2
- Mar 16, 2025Docs – Open source alternative to Notion or Outline2k points · 454 comments
- May 9, 2026La Suite Docs v5.0.0 released4 points
In this repository7 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs-backend-djangoSkill
- docs-create-issueSkill
- docs-e2e-testSkill
- docs-frontendSkill
- docs-pr-reviewSkill
- docs-startSkill
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Read the diff the user asked for.
- Distinctive: line 14
Before reviewing, write a small matrix: flow/state | expected focus | expected accessible information or announcement | how it was verified.
- Very specific: line 24
Controlled DropdownMenu: when isOpen is controlled, onOpenChange does not fire on open, only on react-aria-initiated changes (Escape, …
- Very specific: line 29
Search with the Grep tool (rg may not be installed in the shell), then narrow the search to the affected feature: …
- Distinctive: line 33
Check only the dimensions the change touches:
- Distinctive: line 36
Keyboard: every action reachable and operable with the keyboard, the expected keys for the widget (arrows in menus, trees and listboxes.
- Very specific: line 39
Editor continuity: after a toolbar action, a dialog, or a cancelled AI action, the caret and selection come back where they were, not only …
- Distinctive: line 46
Use whatever browser tooling this session exposes (Playwright MCP, Chrome DevTools MCP, Claude in Chrome, …).
- Distinctive: line 50
If no browser is available, finish the source review, say so, and list the exact remaining manual steps.
- Very specific: line 57
Do not write E2E tests unless the user explicitly asks.
- Very specific: line 60
Prefer getByRole / getByLabel.
- Distinctive: line 73
Keep apart new regressions (checked against the base when possible, otherwise say it is unknown), pre-existing issues nearby, and …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Docs accessibility review
Review the changed experience end to end. Report evidenced regressions, not a generic checklist. Stay in review mode unless the user asked for fixes.
1. Scope
- Read the diff the user asked for. For a branch, compare against the merge base with the real target branch (
git merge-base), not only the last commit. Include uncommitted changes when asked. Never reset, stash or stage user work. - Map changed files to the rendered components, routes and shared primitives, and to their other consumers: a change in
src/components/affects every caller. Include styles, portals, event handlers and async state. Backend-only changes are in scope only if they change what the UI renders (permissions, error responses). - Before reviewing, write a small matrix: flow/state | expected focus | expected accessible information or announcement | how it was verified. Cover the states that apply: idle, open, loading, success, empty, error, cancel, trigger removed.
- Target WCAG 2.2 A/AA. APG is pattern guidance, not a normative requirement: do not report an APG deviation as a WCAG failure. Do not claim RGAA or legal conformance.
2. Docs landmarks
App: src/frontend/apps/impress/src (@/ alias). Read the implementation of a primitive before reporting that it lacks semantics or focus handling: wrappers often delegate them. Conversely, using an accessible primitive does not make its usage accessible.
- UI primitives:
@gouvfr-lasuite/ui-components(Modal, DropdownMenu, …) built onreact-aria-components; local wrappers incomponents/(components/modal/,components/dropdown-menu/,DropButton.tsx). Floating UI (@floating-ui/react) for some popovers. - Focus restoration:
stores/useFocusStore.tsxholds a singlelastFocusedElement;restoreFocus()focuses it on the next frame and clears it. Check that nested overlays do not overwrite each other's element, and that the element is still connected when restored (focusing a detached node fails silently and focus drops tobody). - Route changes:
hooks/useRouteChangeCompleteFocus.tsxmoves focus to the start of the main content (layouts/utils.ts) only after a keyboard-initiated navigation. - Controlled DropdownMenu: when
isOpenis controlled,onOpenChangedoes not fire on open, only on react-aria-initiated changes (Escape, outside click, item chosen). Anything that observes the open state must be updated by the trigger handler itself. - Announcements:
announce(t('…'), 'polite' | 'assertive')from@react-aria/live-announcer(seeuseCreateFavoriteDoc.tsx,DocShareModal.tsx,FindReplace.tsx). Reuse it; do not add another live region. A visible toast is not automatically announced. - Editor:
features/docs/doc-editor/(BlockNote over ProseMirror, version inpackage.json). Check the installed BlockNote API before proposing selection or focus changes. - i18n: accessible names and announcements go through
t(). Never edittranslations.json: it is generated from Crowdin.
Search with the Grep tool (rg may not be installed in the shell), then narrow the search to the affected feature: aria-|tabIndex|autoFocus|announce\(|restoreFocus|addLastFocus|initialFocus.
3. Review the changed flows
Check only the dimensions the change touches:
- Semantics and names: native elements over
divplus ARIA, meaningful accessible names and labels, heading order and landmarks, valid ARIA relationships (aria-controls,aria-describedbytargets exist), current state (aria-expanded,aria-selected,aria-current,aria-pressed). Icon-only buttons need a name. Do not duplicate the visible text inaria-labelwith different wording. - Keyboard: every action reachable and operable with the keyboard, the expected keys for the widget (arrows in menus, trees and listboxes; Escape closes), no trap, focus indicator visible (WCAG 2.4.7) and focused elements not entirely hidden by a sticky header or overlay (WCAG 2.4.11).
- Focus lifecycle: where focus lands on open, then after each exit path separately: Cancel, Escape, close button, outside click, success, failure, deletion, navigation, unmount. Focus returns to the trigger when appropriate, or to a logical, visible, enabled successor when the trigger is gone or the context has changed (deleted item, closed sub-page). Check nested overlays and make sure delayed focus restoration doesn't override another intentional focus move.
- Announcements: state changes the user cannot see without moving focus (save, delete, copy link, search results count, errors) must be communicated to screen readers, either through existing accessible information or an announcement when needed. Avoid duplicate announcements and races against focus moves.
- Editor continuity: after a toolbar action, a dialog, or a cancelled AI action, the caret and selection come back where they were, not only focus on the
contenteditable. Collaborators' edits must never move the local user's focus or selection. - Visual and pointer: contrast of new colours (use Cunningham tokens), zoom to 200 % and reflow at 320 px, content shown on hover also shown on focus and dismissible, target size (2.5.8), an alternative to dragging (2.5.7, e.g. moving documents in the tree),
prefers-reduced-motion.
Describe the expected behaviour before choosing a fix. Do not add ARIA, a focus trap or a live region by reflex.
4. Verify at runtime when possible
- Use whatever browser tooling this session exposes (Playwright MCP, Chrome DevTools MCP, Claude in Chrome, …). Discover the actual tool names; never invent them. No browser MCP is configured in the repository itself.
- The stack must be running (
make run, frontend on http://localhost:3000). Log in with the seeded accounts ofdocker/auth/realm.json(user-e2e-chromium/password-e2e-chromium, orimpress/impress); do not guess others. Use a disposable document. Check that the served build contains the reviewed change. - Reach the UI with real key presses, then read the accessibility snapshot and
document.activeElementat each transition. Take screenshots for focus visibility. - axe is not a dependency of the E2E suite. Use it only through available tooling (e.g. an MCP or DevTools injection); do not add the package without asking. Scan the rendered states, portals included.
- If no browser is available, finish the source review, say so, and list the exact remaining manual steps. Never report a blocked check as passing, and never install tools or change MCP configuration silently.
- An accessibility tree, a DOM mutation of the announcer or a clean axe run is not speech. Only an actual screen-reader session (NVDA, VoiceOver, …) verifies what is spoken and when.
Label every piece of evidence: static, browser/DOM, axe, screen reader, or not verified.
5. Tests
- Do not write E2E tests unless the user explicitly asks; when they do, follow the
docs-e2e-testskill (Chromium only, focused spec, existingutils-*.tshelpers). In review mode, describe the smallest meaningful test instead. - For a component-level regression (names, roles, focus return of a wrapper), a Vitest + Testing Library test next to the component is often cheaper than E2E (see
components/dropdown-menu/__tests__/). - In focus assertions, do not let the test fix the focus:
getEditor()calls.focus()andtryFocusEditorContent()clicks, so never call them between the action under test andtoBeFocused(). Usepage.keyboard(Tab, Shift+Tab, Enter, Escape) for the measured interaction: a click or.focus()does not prove keyboard reachability. - Prefer
getByRole/getByLabel; a test ID may locate a container but does not check the accessible name. No arbitrary waits, noforce: trueclicks.
6. Report
Lead with confirmed findings in order of impact. For each:
- Severity / confidence,
file:line, flow and state. - User impact: the concrete key sequence that fails.
- Observed vs expected, evidence label, WCAG criterion when the mapping is clear.
- Smallest fix, reusing a local primitive, and the regression check.
Severity by user impact: critical — an essential flow cannot be completed and there is no alternative; high — a major navigation or operation barrier; medium — confusing or recoverable; low — minor friction.
Keep apart new regressions (checked against the base when possible, otherwise say it is unknown), pre-existing issues nearby, and unverified risks. Merge findings caused by the same shared primitive.
End with a compact coverage table (flow/state × static / browser / axe / screen reader) and the manual checks still needed. Say "No confirmed issue found in the reviewed scope" when that is the case, never "fully accessible" or a conformance percentage. Name the dimensions and tools that were skipped or failed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

