Skip to content

Commit 40e2699

Browse files
UnbreakableMJclaude
andcommitted
skills: exempt games from accessibility rules (Standard §18.5)
This skill is what fires during game work, so it must not push §18 rules at a project the Standard exempts. The carve-out is stated before any requirement rather than as a footnote after them. - SKILL.md: "Stop here if this is a game" placed above the mandatory rule, telling the agent not to add gates, flag missing accessibility as a defect, or ask for a remediation entry on a registered game. New Games section carries the registry, the recommended list a game may decline, and the shared-vocabulary note. - frontmatter description: now also triggers on game work, so the skill loads to say "these rules do not apply here" rather than staying silent and letting §18 be applied by default. - references/audit.md: Gate 0 short-circuits the whole audit for a registered game — report exempt, not failing, and skip gates 1-9. Gate 9 restated to exclude games from the remediation entry. Bundles rebuilt in the same commit per CLAUDE.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 89cfa65 commit 40e2699

4 files changed

Lines changed: 78 additions & 4 deletions

File tree

spacecraft-accessibility.skill

1.32 KB
Binary file not shown.

spacecraft-accessibility.zip

1.32 KB
Binary file not shown.

spacecraft-accessibility/SKILL.md

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ description: >
1212
"accessibility", "a11y", "screen reader", "NVDA", "Orca", "VoiceOver",
1313
"AccessKit", "AT-SPI", "high contrast", "color contrast", "reduced motion",
1414
"keyboard navigation", "no-animation", "NO_COLOR", "linear mode", "WCAG",
15-
"EN 301 549", and "EAA". Every Spacecraft Software application must ship a
16-
working accessible mode (§18), so consult this the moment user-facing output
17-
— terminal or graphical — appears on the horizon.
15+
"EN 301 549", and "EAA". Every Spacecraft Software application other than a
16+
registered game must ship a working accessible mode (§18), so consult this
17+
the moment user-facing output — terminal or graphical — appears on the
18+
horizon. Also consult it when working on a game (§18.5 exempts games from
19+
§18 and §10 entirely; accessibility there is optional and unenforced) so
20+
those rules are not applied where they do not belong.
1821
license: GPL-3.0-or-later
1922
maintainer: Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>
2023
website: https://Construct.SpacecraftSoftware.org/
@@ -31,6 +34,20 @@ website: https://Construct.SpacecraftSoftware.org/
3134
> system). This skill is the *how*; §18 is the *what*. Where they appear to
3235
> diverge, §18 governs — fix this skill.
3336
37+
## Stop here if this is a game
38+
39+
**Projects registered as games under §18.5 are exempt from §18 in full and
40+
from §10 in full.** Accessibility in a game is **optional, nothing is
41+
enforced**, and its absence is never a compliance failure.
42+
43+
If you are working on a registered game — today that is **Ironway** — do not
44+
apply the rest of this skill as requirements. Do not add compliance gates, do
45+
not flag missing accessibility as a defect, and do not ask for a remediation
46+
entry. Jump to [Games](#games) for the recommendations a game may freely
47+
decline, then stop.
48+
49+
Everything below this section applies to **non-game** projects.
50+
3451
## The rule that governs everything else
3552

3653
Accessibility support is **mandatory for the developer to implement** and
@@ -147,6 +164,52 @@ mechanism GitHub adopted for `gh a11y`.
147164
- Every pointer-reachable action must be keyboard-reachable; focus order
148165
linear, focused element visibly indicated.
149166

167+
## Games
168+
169+
Standard §18.5. Games are exempt from §18 and §10 in full — **nothing here is
170+
required**, and a game that ships no accessibility features at all is fully
171+
compliant.
172+
173+
**Why the carve-out exists.** §18 assumes a character grid, or a widget tree
174+
with roles and names. Games are neither: they are real-time simulations
175+
rendering custom, non-widget interfaces where play itself is the purpose. The
176+
accessibility techniques that suit games are a genuinely different discipline
177+
from the one §18 codifies, so applying §18 to a game would enforce the wrong
178+
requirements at disproportionate cost.
179+
180+
**Registry** (§18.5.1) — a project is a game when it declares so in its
181+
`README.md` *and* appears here:
182+
183+
| Project | Class |
184+
|---------|-------|
185+
| Ironway | **Game** — exempt from §18 and §10 |
186+
| (all other projects) | Standard — §18 and §10 apply in full |
187+
188+
The carve-out is narrow. It covers registered projects, not any project that
189+
merely has a playful or game-like interface. A TUI with animated ASCII art is
190+
not a game.
191+
192+
### Recommended for games (never required)
193+
194+
Offer these; never require them. A game may decline any or all without
195+
justification:
196+
197+
- **Remappable controls** — already standard practice in games, independent of
198+
accessibility.
199+
- **Leave screen-reader chords alone**`Insert`, `CapsLock`, `KP_Insert`,
200+
`Ctrl`+`Option` belong to NVDA, Orca, and VoiceOver. Capturing them collides
201+
with a screen reader the player may be running.
202+
- **Colorblind-safe signalling** — pair hue with shape, icon, or text.
203+
- **Subtitles and captions** for spoken or plot-critical audio.
204+
- **Honor the system reduced-motion preference** where the engine exposes it.
205+
206+
### If a game does ship a toggle
207+
208+
Use the §18.1 names (`--accessible`, `SPACECRAFT_A11Y`) and the §11.1.1
209+
variant names rather than inventing new ones. This constrains only the
210+
*naming* of something the game already chose to build — it requires no feature
211+
to exist.
212+
150213
## Normative targets
151214

152215
**WCAG 2.2 Level AA** where the success criteria apply, and **EN 301 549

spacecraft-accessibility/references/audit.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
Standard §18.4. An accessibility claim is **not satisfied by inspection**.
44
Every item below is something you run, not something you read.
55

6+
## Gate 0 — Is this a registered game?
7+
8+
- [ ] Check the §18.5 registry (today: **Ironway**).
9+
10+
**If yes: stop.** §18 and §10 do not apply. There is nothing to audit, no gate
11+
to pass, and no remediation entry to file. Report the project as exempt, not
12+
as failing. Do not run gates 1–9.
13+
14+
**If no:** continue.
15+
616
## Gate 1 — Activation (§18.1)
717

818
- [ ] `--accessible` turns it on; `--no-accessible` turns it off.
@@ -132,7 +142,8 @@ def contrast(a: str, b: str) -> float:
132142

133143
## Gate 9 — Remediation record (§18.4)
134144

135-
For any project not yet conforming:
145+
Registered games (Gate 0) are excluded — they owe no remediation entry,
146+
because they owe no conformance. For any other project not yet conforming:
136147

137148
- [ ] A **dated remediation entry** exists in `PROJECTS.md` recording the
138149
current accessibility state and the intended remediation.

0 commit comments

Comments
 (0)