app-build
Run the sprint — launch developer agents in parallel, review each PR, gate to QA, surface bugs back into the loop
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 remediation backlog, then fix (safe fixes automatically, risky changes only with your approval)
> /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-auditContext preview
What this command does when you run it.
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 remediation backlog, then fix (safe fixes automatically, risky changes only with your approval)
description: 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 remediation backlog, then fix (safe fixes automatically, risky changes only with your approval) argument-hint: [dimension or "all" — e.g. security, monetization, ios, android; default = all] allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Task, Agent
Dimension (optional, default = all): $ARGUMENTS
missing, run `/app-onboard` first, then continue.
1. **Fan out the auditors in parallel** (single message), matched to the detected platform(s). Each checks ONE dimension against the House KB pack it owns and returns findings, read-only:
are **external and optional** (separate plugin, not this one's `skills/`) and are listed in exactly one place: the canonical auditor list in `agents/code-reviewer.md`. Read the roster and the detect-else-degrade rule there — do not re-list them here, because the copy that drifts is always the one nobody is looking at.
**State which auditors ran and which dimensions fell back, in the scorecard.** Never skip a dimension silently: an unaudited dimension that prints no findings is indistinguishable from a clean one, and it is the scorecard the user makes the ship decision on.
Room/DataStore rules, no logic in composables), plus lint/detekt/ktlint results.
source of truth, AdGate ordering, NO-AD zones, consent, test-IDs-by-default).
If a single dimension was named in $ARGUMENTS, run only that one.
1a. **Verify the findings before you believe them.** Spawn `verification-engineer` over the returned findings. An audit finding is a claim produced by the same agent that went looking for it, and the two most expensive kinds of wrong finding are invisible to re-reading:
range against outside reference data), and
finds its own comments — ten of nineteen real guard rules were bypassable this way).
Findings it cannot reproduce are marked `WRONG-FINDING(evidence)`, not silently dropped.
2. **Consolidate into `docs/80-audit.md`.** Every finding gets:
Lead with a scorecard: per-dimension pass/gap counts and the top risks.
2a. **Open the findings register — `docs/81-findings.md`.** The moment a finding is recorded it gets a **stable ID** and a row:
| ID | Source | Severity | One-line description | Status | Closing commit |
`Status` is one of `OPEN` / `IN-PROGRESS` / `FIXED` / `DEFERRED(reason)` / `WRONG-FINDING(evidence)`. **Never blank, and "not mentioned" is not a status.**
This exists because prose findings scattered across documents cannot be diffed. In a real programme ~150 findings produced a plan that claimed to contain them all, and roughly **70 were never scheduled, deferred, or even contradicted** — four review rounds missed it, because reviewers check what was done, not what was left out.
3. **Build the remediation backlog.** Spawn `tech-manager` to turn findings into `AUDIT-NNN` tickets on `docs/31-board.md`, prioritized by severity, each carrying its violated-rule + Safe/Risky tag. Risky tickets also get a short written plan and are marked `needs-approval`.
**Owner must be a role `/app-build` can spawn.** The roster is in `board-doctor`'s Manual-fallback check 4 — read it there, never from a copy. The copy that used to live in this step had already dropped the designers and `qa-engineer`, which are the natural owners of this command's own Safe-fix class (accessibility labels, Dynamic Type, touch targets, design tokens, test-plan gaps), so those remediation tickets were filed to nobody. Never `security-reviewer` or any other gating role: it *finds* the gap, it does not work the ticket, and the board doctor rejects it as `owner_not_spawnable`.
A finding with no ticket stays `OPEN` in the register. A ticket with no finding is a scope leak.
4. **GATE — present the gap summary to the user.** Print the scorecard and the backlog grouped by severity and Safe/Risky. Ask which to fix (e.g. "all S1/S2", "safe-only", a specific set). Wait.
This is `/app-run`'s Gate 1 for a brownfield project. **When `/app-audit` was invoked by `/app-run`, `/app-run` owns the gate — print the summary and return it rather than asking, so the user approves scope once.** Invoked directly, ask here.
5. **Remediate** via the normal `/app-build` loop on the approved tickets:
the 2-cycle cap.
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
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
Open the emergency/diagnostic dashboard — zero-dependency, single file, works when the build stack is broken
Evaluation manifests define reproducible cases with an executable command, expected exit code, and required evidence text: