Write C/C++ in the Xenolith/Stappler monorepo the way the codebase is written. Use BEFORE creating or editing sources in runtime/, stappler/, xenolith/, tests/ or utils/ — new file, new header, new class, new platform branch, new allocation. Covers .cpp SCU vs .cc subunits, license/include-guard/namespace layout, SP_PUBLIC and SPRT_API, naming (_member, handleXxx, Rc<T>::create), #if SPRT_WINDOWS platform guards, pool vs malloc ownership rules (AllocPool, sprt::__delete, new (pool) T), independent pools that move between threads (PoolRef, SharedRef<T>, PoolObject), threads and dispatch (Looper, Task, Handle), the scene graph (Node geometry, and using System/Component instead of subclassing Node), strings (StringView lifetime, mem_std vs mem_pool, CallbackStream, reader API), Unicode text (compareCodepoints vs compareFolded vs collate, case mapping strings not characters, IDN, and the rules for generated Unicode tables), error handling with no exceptions (Status, Result<T>, slog(), asserts), weakly-typed data
Write CSS for the Xenolith/Stappler engine's CSS engine (stappler_document + xenolith_renderer_ui StyleSystem) CORRECTLY — it is a CSS subset, NOT web CSS. Use before writing or debugging any .css in this repo (resources/style.css, pug templates, ui:: atoms). Covers what flex/position/measure/selectors/units properties are really supported, and — critically — what web CSS features are silently ignored (:not(), ::before, [attr], min/max on a flex item's CROSS axis, position:relative offsets, prefers-color-scheme, transform/box-shadow).
Debug and drive a Xenolith app over its inspector socket — headless by default (`--headless`, no window system), so a GUI can be inspected, screenshotted and driven with no display, no compositor and no mouse. MCP tools: `inspect_scene` (the node tree), `get_logs` (the log ring buffer), `screenshot`, `list_commands`/`invoke_command` (scene-registered actions), `send_input`, `send_text`, `step_frame`, `window_control`, `quit_app`. Use when a Xenolith GUI app (installer, scaffolded app, tests/window) is misbehaving visually — missing elements, wrong layout, invisible nodes, overlap, wrong stacking, an element you can't find, "why is this hidden", "where did this node go"; when verifying business logic (catalogue load, install progress, errors, crashes) works BEFORE or independently of the UI; or when you need a screenshot of an app on a machine with no session at all. Complements source-level debugging (lldb/wine-debug).