Skip to content

skills: add spacecraft-accessibility (Standard §18 implementation layer)#11

Merged
UnbreakableMJ merged 2 commits into
mainfrom
feat/spacecraft-accessibility-skill
Jul 23, 2026
Merged

skills: add spacecraft-accessibility (Standard §18 implementation layer)#11
UnbreakableMJ merged 2 commits into
mainfrom
feat/spacecraft-accessibility-skill

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

Standard v1.33 (Spacecraft-Software/Standard#11) adds §18 and a Skill Cross-References row pointing at spacecraft-accessibility. This PR adds it.

Division of labour: §18 says what accessibility must do. This skill says how to build it. Where they appear to diverge, §18 governs and this skill gets fixed.

Contents

SKILL.md — the router and the rules that fit in working memory:

  • The §18.1 activation contract with precedence, and the rule that protects the default: unset at every source ⇒ standard Steelbore rendering, unchanged.
  • The three failure modes that recur in practice: color as the sole signal, assuming the TUI framework handles accessibility, and text on unverified colored fills.
  • The §11.1.1 variant table, and the reserved NVDA/Orca/VoiceOver chords.

references/cli-tui.md — why terminals have no accessibility tree (no ARIA, no roles, no live regions; the reader parses the character grid) and everything that follows: redraws cause speech loops, column alignment conveys nothing, no library rescues you. Splits always-on rules from accessible-mode rules, covers TUI linear mode, and includes a Rust sketch that resolves the toggle once into a value and puts status tags in the renderer so a call site cannot forget one.

references/gui.md — bridge selection with the custom-drawing failure case called out explicitly: a canvas-painted control is not "partially accessible," it is invisible. AccessKit for Rust/custom-drawn UI, GtkAccessible, Flutter Semantics, QAccessible, with sketches. Notes AccessKit's Apache-2.0 license against §4.2/§4.3.

references/audit.md — nine gates, each something you run, not something you read. Notably Gate 1 tests that default-mode output is byte-identical to pre-§18 behavior, so the Steelbore default is protected by test rather than by assumption; Gate 5 pipes accessible output through espeak-ng, because reading output is not verification; Gate 8 ships the contrast function rather than asking anyone to eyeball a ratio.

Verification

  • reuse lint → compliant (589/589). The references/ code samples contain example SPDX headers; the existing REUSE.toml precedence = "override" on ** already covers them.
  • .github/validate-configs.py → 47 config files, 0 failed
  • Both bundles built and verified with unzip -l.skill drops directory entries, .zip keeps them, per CLAUDE.md
  • Registered in README §2 (placed before spacecraft-ada-guidelines, alphabetically)

Merge after Construct#10, which adds the cross-reference row that points here.

🤖 Generated with Claude Code

Standard v1.33 adds §18 and a Skill Cross-References row pointing here.
§18 says what accessibility must do; this skill says how to build it.

- SKILL.md — the activation contract (--accessible / SPACECRAFT_A11Y /
  config / hints, with precedence), the three failure modes that recur
  (color as sole signal, assuming the TUI framework handles it, text on
  unverified colored fills), the §11.1.1 variant table, and reserved
  screen-reader chords.
- references/cli-tui.md — why terminals have no accessibility tree and
  what follows from it; always-on vs. accessible-mode rules; TUI linear
  mode; a Rust sketch resolving the toggle once and putting status tags
  in the renderer so they cannot be forgotten.
- references/gui.md — bridge selection (AccessKit for Rust/custom-drawn,
  GtkAccessible, Flutter Semantics, QAccessible) with the custom-drawing
  failure case called out, plus AccessKit's Apache-2.0 §4.2 note.
- references/audit.md — nine gates, each something you run rather than
  read. Includes an explicit gate that default-mode output is unchanged,
  so the Steelbore default is protected by test rather than by assumption.

Registered in README §2. Both bundles built.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

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>
@UnbreakableMJ
UnbreakableMJ merged commit 42fbb26 into main Jul 23, 2026
1 check passed
@UnbreakableMJ
UnbreakableMJ deleted the feat/spacecraft-accessibility-skill branch July 23, 2026 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant