What you’ll do
In this example, you will:- run the Nimbus Desk demo app;
- open Claude Code from the Nimbus workspace;
- ask Claude Code to make a small UI change;
- let Claude Code use HoloDesktop CLI to run the relevant behavioral QA spec;
- have Claude Code fix the bug that the CLI observes;
- verify the fix with HoloDesktop CLI.
The scenario
Nimbus Desk is a small support dashboard inside the HoloDesktop CLI checkout. It has a Tickets page with aStatus dropdown. The behavioral spec says that selecting Open should show exactly three open tickets: #2042, #2040, and #2036.
The app contains a realistic status-filter bug. The source looks plausible, but the UI behavior is wrong: the filter compares each ticket’s status object to the selected string value.

Start Nimbus
From theholo-desktop checkout:
Prepare HoloDesktop CLI
In another terminal, sign in for hosted mode:.mcp.json file that points Claude Code at the root HoloDesktop CLI MCP server:
Give Claude Code the closed-loop prompt
Ask Claude Code:What should happen
Claude Code should follow this loop: The first QA run should fail because selectingOpen does not show the expected open tickets. Claude Code should then inspect the Tickets page source and fix the filter logic.

The fix Claude Code should discover
The relevant code lives in:Verify the fix
After the patch, Claude Code should ask HoloDesktop CLI to run the sametickets-filter spec again.
A good final result looks like:

Run a passing QA check too
The ticket spec is useful because it catches a regression. HoloDesktop CLI is also useful when the flow already works. It can produce positive UI evidence that a real user path still behaves correctly. Nimbus includes a passing chat spec:How do refunds work?, waits for the assistant response, and verifies that the reply mentions refunds being processed within 5 business days.

Why this works
This example works because each system has a clear job:| System | Role |
|---|---|
| Claude Code | Reads instructions, edits source, reasons about the bug, applies the patch |
| HoloDesktop CLI | Opens the app, signs in, clicks the UI, observes visible behavior, reports evidence |
| QA spec | Defines the expected user-visible behavior in plain Markdown |
Troubleshooting
| Symptom | Try |
|---|---|
Claude Code cannot find holo_desktop | Open Claude Code from examples/software_qa/nimbus-desk so the checked-in .mcp.json is active |
| HoloDesktop CLI asks for login | Run uv run holo login from the holo-desktop checkout, or configure local model env vars before starting Claude Code |
| The app is unreachable | Confirm npm run dev is running and http://localhost:5173 returns 200 |
| HoloDesktop CLI cannot observe or click | Check macOS Screen Recording and Accessibility permissions |
| HoloDesktop CLI reports a failure twice | Stop and inspect both reports; the second failure is usually a different bug or an incomplete fix |
What to copy into your own project
For your own app, copy the pattern, not the Nimbus details:- Write a small Markdown QA spec for one user-visible behavior.
- Configure Claude Code to call HoloDesktop CLI through MCP.
- Ask Claude Code to make a product change.
- Require Claude Code to verify the affected flow with HoloDesktop CLI.
- If HoloDesktop CLI reports a failure, fix once and verify again.