A demo iOS app for testing Full Keyboard Access (FKA). It mirrors the top-level tabs of the production Emergency app, with no real data — every row is hardcoded. Three uses:
- Reproducing FKA bugs in isolation from production complexity.
- Prototyping new FKA patterns (e.g.
FocusHaloLayervariants,FKAButton) before upstreaming. - Serving as a clean reference app the team can run.
Two ways to get this repo onto your Mac without learning Git:
- Easiest: install Claude Code (see Setting up Claude Code below), then ask Claude to grab the project: "Download the FullKeyboardAccess GitHub repo into ~/
{your_local_directory}." Claude checks whether your Mac hasgitand usesgit cloneif so; otherwise it falls back tocurl+unzip(both built into macOS by default). No git knowledge required. - No-tools alternative: on the GitHub repo page, click the green Code button → Download ZIP, then unzip wherever you like. You won't get future updates — re-download when needed.
Xcode 26.x or newer required. One target deploys to iOS 26.2 for the cell-skip bug repro, so the iOS 26 SDK is non-negotiable. Check your Xcode version:
xcodebuild -versionDon't have Xcode 26.x? Install or update via the Mac App Store (free with an Apple ID).
Point releases (26.0, 26.1, 26.2, …) all work — ThunderTable is a local Swift package built from source, so Swift module-compatibility issues across Xcode versions don't apply.
If you've never used Claude Code before:
-
Install it. Most 3SC teammates already have Claude Code installed — skip if you do. Two options:
- Desktop app (easiest if you're not comfortable in Terminal): download from claude.com/claude-code — Mac and Windows builds.
- Terminal (CLI): run
npm install -g @anthropic-ai/claude-code, then runclaudein any folder.
-
Sign in. Skip if you're already signed in to Claude Code. On first launch, Claude Code will open your browser to authenticate with your Anthropic account.
-
Open this project. Point Claude Code at the repo folder:
- Desktop app: choose the
FullKeyboardAccessfolder when prompted. - CLI:
cdinto this repo, then runclaude.
- Desktop app: choose the
Claude reads CLAUDE.md automatically at the start of every session here, so it already knows the project's build setup, conventions, and what you can ask for. You don't need to paste any setup instructions yourself.
Once Claude Code is running in this repo, paste any of these prompts to get started:
- "Build and run the app on a simulator."
- "Verify focus order on the Locations tab."
- "Reproduce the iOS 26 cell-skip bug."
Claude handles xcodebuild, simulator selection, keystroke injection, and screenshots for you. See CLAUDE.md for the full phrasebook and rules.
Claude Code asks for your permission the first time it runs any command. The commands you'll see most often in this repo are all safe to approve for QA work on your own Mac:
| Command | What it does |
|---|---|
xcodebuild … |
Compiles the iOS app. Local-only; just produces build artifacts. |
xcrun simctl … |
Controls the iOS Simulator (boot, install, launch, screenshot). Local-only. |
open -a Simulator |
Opens or focuses the iOS Simulator app. Harmless. |
osascript … |
Sends keystrokes to the frontmost app (Claude brings the Simulator forward first). |
git … |
Runs Git operations (clone, checkout, status, etc.). Local-only by default. |
curl … |
Downloads files from URLs (used to grab the repo as a ZIP). |
unzip … |
Extracts ZIP archives. |
If you see any other command you're not sure about, paste it back to Claude and ask "is this safe?" — Claude will explain before running it.
Walkthrough video: docs/fka-setup.mp4. Or follow the steps below.
CleanShot.2026-05-25.at.04.34.02.-.01.mp4
- Launch the iOS Simulator (
open -a Simulator). - Inside the simulator: Settings → Accessibility → Keyboards → Full Keyboard Access → toggle ON.
- (Optional) If pressing Ctrl+Tab doesn't move focus between elements, your Mac isn't forwarding the Ctrl key to the Simulator. Fix: in the same Full Keyboard Access screen, open Commands → Move to next item and re-record the shortcut as Option+Tab.
Run on an iOS 26.x simulator runtime — current FKA work targets that OS.
For the full verification procedure (keystroke injection, screenshots), see FKA_VERIFICATION.md.
| Symptom | Cause / fix |
|---|---|
| "Cannot open project / unsupported version" in Xcode | Your Xcode is below 26.x. Upgrade. |
No such module 'ThunderTable' |
SPM didn't resolve. In Xcode: File → Packages → Reset Package Caches, or close and reopen the project. |
| Simulator keystrokes do nothing during FKA verification | Full Keyboard Access isn't enabled in the Simulator (re-check the steps above). |
CLAUDE.md— project guide read by Claude Code at every session start.FKA_PATTERNS.md— comprehensive FKA pattern catalog.FKA_VERIFICATION.md— keystroke + screenshot verification procedure.docs/superpowers/specs/— active design specs for the tab-port work.