From bureau
Renders a bureau workspace into an offline navigable HTML gazette using the bundled press renderer, then opens it for inspection.
How this command is triggered — by the user, by Claude, or both
Slash command
/bureau:inspect [--workspace <name>]The summary Claude sees in its command listing — used to decide when to auto-load this command
# bureau:inspect
Render the workspace (cabinets + logbook) into a navigable offline **gazette** — the board you
read — with the bundled **press** (bureau's renderer), and open it. The press ships inside this
plugin (`${CLAUDE_PLUGIN_ROOT}/press/`), so there is nothing else to install.
## Steps
1. **Locate the workspace.** Use `--workspace <name>` if given; else look for a directory
with a `bureau.json` (the single `*/bureau.json` at the repo root). Validate the name as a safe
path segment (`^[A-Za-z0-9._-]+$`, not `.`/`..`). If none is found, tell the user to run
`bureau:init` f...Render the workspace (cabinets + logbook) into a navigable offline gazette — the board you
read — with the bundled press (bureau's renderer), and open it. The press ships inside this
plugin (${CLAUDE_PLUGIN_ROOT}/press/), so there is nothing else to install.
Locate the workspace. Use --workspace <name> if given; else look for a directory
with a bureau.json (the single */bureau.json at the repo root). Validate the name as a safe
path segment (^[A-Za-z0-9._-]+$, not ./..). If none is found, tell the user to run
bureau:init first.
Read + validate config. From <workspace>/bureau.json read board (default gazette)
and validate it as a safe single path segment under the repo root — reject ../absolute
paths so output can't escape the repo. The gazette MUST be outside the workspace (the press's
guardOutDir enforces this too).
Build with the bundled press — passing each argument separately (no shell string interpolation):
node "${CLAUDE_PLUGIN_ROOT}/press/bin/gazette.mjs" build --dir <workspace> --out <board>
The press is a self-contained Node bundle (no node_modules, Node ≥18). Report the dossier
count from the build output.
Findings. The build prints COUNTS only. For the detailed structural findings (which
dangling link, which orphan, which contradiction), run
node "${CLAUDE_PLUGIN_ROOT}/press/bin/gazette.mjs" health --dir <workspace> and surface
those. (Semantic findings are a separate concern — bureau:lint.)
Open. Open <board>/index.html (the gazette), or print the path if no opener is available.
bureau:lint.scripts/build-gazette.mjs (regenerated from the
renderer source); it is not a separate install.npx claudepluginhub xiaolai/bureau --plugin bureau/previewLaunches interactive preview for HTML document editing: starts local HTTP server, sets up control panel, opens wrapper in Playwright browser.
/inspectInspects a website URL before extraction: detects platform (Shopify, Wix, etc.), scans sitemap for URL inventory, assesses extractability on samples, flags features with WordPress notes.
/inspectDisplays memories for a specified Pensyve entity in tables grouped by type (semantic, episodic, procedural). Supports --type and --limit filters; guides if no entity given.
/inspectRuns a local Aegis security inspection for unsafe agent-memory flows (OWASP ASI06), producing a risk score, memory map, and findings grouped by severity.
/inspectInspects a WebAssembly binary in the project and reports its structure, validity, and interfaces using wasm-inspector subagent.
/inspectConnects to a running Pulp inspector server to query view hierarchy, widget state, layout, and runtime diagnostics. Also supports screenshot and DOM commands.