switchboard kit
Lists the Site Kits and App Kits, shows how one is doing, recompiles it, checks its anchors, fit and styles, shows an App Kit's readings live, and runs the design census.
Details #
switchboard kit list shows each Site Kit: its id, name, site, version, whether it is on, and whether its last compile worked. kit status <kit> shows one kit's problems, each anchor and how it did last (hit, fallback or miss, with the address and time), and its files. kit reload <kit> recompiles it and tells the connected browsers, the same as saving a file. kit check <kit> tests every anchor against the pages saved with Save Page for Checks in the Kit tab, so it needs no browser. kit check then says whether the site's CSS changed since its profile was made and lists the kit's style findings (a stylesheet that sets font-family, font-size, color or background on an sb-* element, uses a literal colour where a token exists, or names a token that doesn't exist). kit fit <kit> asks the open tabs of the site how each element the kit placed compares with the sibling it was made to match, and prints every difference (placement 2 beside button "Sort": 2 px shorter than its neighbour). kit profile <url> runs the design census on a page: it reads the site's own variables, buttons, fields and type in light and dark, and writes the site profile the kits draw with. A <kit> is its id (kit.github-plus), its group's id or its name.
For an App Kit (a kit for a Mac app), kit check <kit> tests every anchor against the screens saved with Save Screen for Checks, then looks up each menuShortcuts path in the app's live menu (found, or not found (did you mean “Archive Message”?), or not checked when the app isn't running), then lists the lint findings: a shortcut the app or another kit already uses, a key that can't be written, a reading that can't work. kit readings <kit> prints one line for each of the kit's readings: its name, its value now, when it last changed, fresh or stale, and where it is read from; a stale one gets a second line that says why. kit reading <kit> <name> prints one value. With --watch it prints the value, then a line (2026-10-30T14:02:11Z unread 4) each time it changes, checking once a second, until you press ⌃C.
switchboard kit list
switchboard kit status kit.github-plus
switchboard kit reload GitHub+
switchboard kit check kit.github-plus
switchboard kit fit kit.github-plus
switchboard kit profile https://github.com/ --out ./profiles
switchboard kit readings kit.mail
switchboard kit reading kit.mail unread --watch
Parameters #
switchboard kit list [--json]
switchboard kit status <kit> [--json]
switchboard kit reload <kit>
switchboard kit check <kit>
switchboard kit fit <kit>
switchboard kit profile <url> [--out <dir>]
switchboard kit readings <kit> [--json]
switchboard kit reading <kit> <name> [--watch]
The Site Kits: id, name, site, version, on or off, and whether the last compile worked.
One kit: its problems, its anchors and how each did last, its files.
Recompile a kit and tell the browsers (a kit is its id, its group's id or its name).
Test every anchor against the kit's saved pages; exit 1 when a required one is missing, 2 with no saved page. Then: whether the site's CSS changed since the profile, and the kit's stylesheet lint.
Ask the open tabs how the kit's elements fit their neighbours; exit 1 when any differ.
Run the design census on a page and write its site profile (needs the Switchboard repo; --state, --themes, --host and --snapshot go to the census as they are).
An App Kit's readings: name, value now, how long ago it changed, stale, and where it is read from.
One reading's value; --watch prints each change as it comes (⌃C ends it).
Gotchas #
kit checkexits 1 when a required anchor is missing in any saved page, and 2 when the kit has no saved page (an App Kit with menu shortcuts always has something to check).kit readingsandkit readingneed the App Kit to be on; for one that is off or paused they say "isn't an App Kit that is on" and exit 1. A reading nothing is using is read once per call, so--watchcosts one read a second while it runs and nothing after.kit fitexits 1 when any element differs from its neighbour, and also when no tab of the site answers within three seconds (open the site in a browser first).kit profileis a build-time tool under Playwright, not shipped with the app. It runs from a Switchboard checkout (found from the binary's location, elseSWITCHBOARD_REPO) and needsnode; away from one it prints where it runs and exits 2. It doesn't need the engine.kit reloadexits 1 when the new version didn't compile; the old one keeps running.The engine must be running (except for
kit profile); otherwise the command exits with 69.