app-audit
Grade an existing app against the Mobify Studio House KB and Axiom standards — fan out the specialist auditors, produce a severity-ranked gap report, build a…
Open the emergency/diagnostic dashboard — zero-dependency, single file, works when the build stack is broken
> /plugin marketplace add vmobifystudio/app-dev-team > /plugin install app-dev-team@mobify-studio
How it fires
How this command gets triggered: by you, by Claude, or both.
/app-dashboardContext preview
What this command does when you run it.
Open the emergency/diagnostic dashboard — zero-dependency, single file, works when the build stack is broken
description: Open the emergency/diagnostic dashboard — zero-dependency, single file, works when the build stack is broken allowed-tools: Read, Glob, Grep, Bash
A **projection** of `docs/`, served on `localhost:4173`. It never writes state: where it acts, it invokes the same validated CLI the agents use and shows you the command and its exit code.
There are two dashboards, permanently, and neither replaces the other.
| | This one — `/app-dashboard` | `/app-control-room` | |---|---|---| | What it is | the **emergency / diagnostic** interface | the **product** | | Dependencies | **zero** — one file, Node stdlib, no build step | React + TypeScript + Vite in `control-room/`, with its own `package.json` | | Shape | eight ranked panels, cause first | five screens: Mission Control · Communications · Board · Team · Founder Inbox | | Reach for it when | the build stack is broken, `npm install` fails, or you need one shareable file | day to day — following threads, reading the roster, working the founder inbox |
**Never make the only diagnostic tool depend on the stack it may need to diagnose.** That is why this one has no dependencies and why it is not going away. Both use the *same* action whitelist (`scripts/lib/actions.mjs`) and the *same* read layer (`scripts/lib/project.mjs`), so they cannot disagree about one board.
1. **Start it** from the project root:
node "${CLAUDE_PLUGIN_ROOT}/scripts/studio-dashboard.mjs" --project . --port 4173Print the URL it emits and stop. Do not summarise the panels — the page is the output, and a summary of a live page is stale the moment it is written.
Flags: `--port N` if 4173 is taken · `--no-actions` for a strictly read-only session.
2. **Or export a static copy** to share with someone who will not run a server:
node "${CLAUDE_PLUGIN_ROOT}/scripts/studio-dashboard.mjs" --project . --export docs/34-dashboard.htmlOne self-contained file: the state is baked in, there is no server, and the action buttons are absent because a file on disk cannot invoke a CLI. It is a **snapshot** — it carries its generation timestamp in the header for exactly that reason. Regenerate it, never hand-edit it.
The order is the deliverable. On a blocked sprint a burn-down is a flat line that explains nothing, so this leads with cause, not progress.
| # | Panel | The question it answers | |---|---|---| | 1 | **Why is nothing moving** | every blocked ticket **with its recorded reason**, every ticket stranded behind one, and every gate that returned CANNOT EVALUATE with what it could not evaluate | | 2 | **Inspectable but not runnable** | work verified statically (`qa (static only)`) and what was never executed — plus "N awaiting review, 0 reviewers ever acted", the fact that would have caught DR4-002 in seconds | | 3 | **Unowned artifacts** | a file a spec requires that does not exist and that no ticket names | | 4 | **Work with no provenance** | files changed in the tree, and commits made since the board existed, belonging to no ticket | | 5 | **Question → answer → delivery** | open questions, and answers that **name no artifact they were folded into** — a closed ledger is not delivery | | 6 | **Board** | kanban and per-owner load, the same semantics as `board-render` | | 7 | **Metrics** | cycle time, review pass rate, rework rate, gates fired. `n/a`, never `0%`, on an empty denominator | | 8 | **Timeline** | the event log, most recent first. Forensics, deliberately last |
**Every panel states the population it swept.** A panel with nothing in it says either `CLEAR — ` followed by what it looked at, or `CANNOT EVALUATE` followed by what it could not read. It never renders empty and lets you read that as all-clear.
Whitelist only. Anything else is refused by the server, not hidden by the page.
the answer into, or panel 5 will keep flagging it, correctly
Each shows the command it ran and its exit code. **If the CLI refuses, the refusal is printed verbatim** — a refusal is a finding, not an error to swallow.
Deliberately not actionable: re-prioritisation. Nobody wanted it once in a real run, and every button here is one more thing that must stay in step with the CLI's rules.
marked CANNOT EVALUATE rather than shown as zero.
The URL, or the path of the exported file. Nothing else — the page is the report.
Describe your app idea in one line. Get a shipped iOS & Android app. AI App Studio is a team of 30 AI specialists — a CEO, product manager, designers, iOS/Android engineers, a code reviewer, QA, and a release manager — that works like a real software studio.
Repo: vmobifystudio/app-dev-team
Grade an existing app against the Mobify Studio House KB and Axiom standards — fan out the specialist auditors, produce a severity-ranked gap report, build a…
Run the sprint — launch developer agents in parallel, review each PR, gate to QA, surface bugs back into the loop
Create a deterministic provenance manifest before an agent starts work:
Open the full control room — five screens (Mission Control, Communications, Board, Team, Founder Inbox) in the browser
Evaluation manifests define reproducible cases with an executable command, expected exit code, and required evidence text: