/synthex:performance-audit/synthex:performance-audit
ShipQuantified analysis across frontend, backend, db, infra.
Invocation
Run from inside Claude Code in any project where Synthex is installed:
/synthex:performance-auditSome commands accept parameters; see the source-of-truth file linked below for the full parameter list and workflow.
Lifecycle phase
Ship. Performance, observability, and ops audits.
Related agents
- Tech Lead · Full-stack orchestrator. Breaks tasks down, delegates to specialists, rolls up the result.
- Lead Frontend Engineer · Coordinates frontend delivery, enforces UX quality, accessibility, and design-system fidelity.
- Security Reviewer · Mandatory gate. Secrets, injection, auth, supply chain, OWASP.
- Terraform Reviewer · Plan review with cost, blast-radius and security verdict for AWS.
- Performance Engineer · Quantified, full-stack performance analysis with budgets.
- SRE · SLOs, observability, runbooks, deployment risk, postmortems.
- Technical Writer · API docs, guides, migrations, changelogs verifiable against code.
Source
The command's parameters, workflow, and sub-agent invocations are defined in markdown at bluminal/lumenai/blob/main/plugins/synthex/commands/performance-audit.md.
Last modified:
What it does, end-to-end
/synthex:performance-audit/synthex:performance-audit has the Performance Engineer agent measure your bottlenecks, compare them to budgets, and rank fixes by impact and effort. Every finding comes with real numbers — "LCP is 4.2s, target is < 2.5s", not "the page is slow".
-
Loads config for review-loop settings.
-
Routes to a standing pool, if one is running and
standing_pools.enabledistrue(see Host notes). -
Confirms sandbox-yolo CLIs. If any external CLI in the run is configured with
sandbox-yolopermissions, it warns once per CLI and asksContinue audit with sandbox-yolo CLI(s)? [y/N]. The default is no; non-interactive runs abort without prompting. In the default safe configuration this step is skipped. -
Resolves scope:
Scope What's analyzed frontendCore Web Vitals, bundle size, rendering, asset optimization apiResponse times, payload sizes, N+1 queries, connection pooling databaseQuery performance, indexing, connection management, schema efficiency full-stackAll of the above -
Gathers context — your project instruction file (
AGENTS.md,CLAUDE.md,GEMINI.md, or.hermes.md) if the host didn't already load it,package.json, any existing performance budgets or benchmarks, and your deployment target (Vercel, AWS, self-hosted). -
Runs the Performance Engineer with the scope,
url, project context, and any available data (Lighthouse reports, APM data, slow-query logs). -
Optimization loop. If any CRITICAL or HIGH findings exist, it shows them ordered by impact/effort and waits for you to optimize. Then a fresh Performance Engineer re-audits with a one-line summary of each unresolved finding. It stops when none remain or
max_cyclesis reached. MEDIUM-only findings don't trigger the loop. It never applies fixes itself. -
Presents the final audit.
Parameters
| Parameter | Description | Default | Required |
|---|---|---|---|
scope | Area to audit: frontend, api, database, or full-stack | full-stack | No |
url | URL to audit for frontend performance (Core Web Vitals) | None | No |
config_path | Path to synthex project config | .synthex/config.yaml | No |
--profile <tier> | Override models.profile (economy, balanced, premium) for this run | models.profile config (balanced) | No |
The agent's model resolves in this order: --profile, then models.agents.<name>, then the
models.profile delta, then the agent's own frontmatter. A profile change doesn't affect a
standing pool — pools never re-spawn their reviewers.
Configuration
| Key | Default |
|---|---|
performance_audit.review_loops.max_cycles | Inherits review_loops.max_cycles (2) |
performance_audit.review_loops.min_severity_to_address | Inherits review_loops.min_severity_to_address (high) |
models.profile | balanced |
standing_pools.enabled | false |
standing_pools.routing_mode | prefer-with-fallback |
standing_pools.matching_mode | covers |
lifecycle.submission_timeout_seconds | 300 |
Output
The audit is printed to the console (no file is written). It contains an executive summary, a Performance Budget Status table (LCP, INP, CLS, JS bundle size, API p95 against budget, each PASS/FAIL), findings with category, current and target values, estimated impact in concrete units (ms, KB, queries), recommendation, effort (S/M/L), and evidence. Frontend scope adds a Bundle Analysis table; database work adds a Database Analysis table. It ends with an Optimization Priority Matrix (P1–P3) and Caveats that separate lab measurements from field data.
Examples
/synthex:performance-audit
/synthex:performance-audit frontend https://staging.example.com
/synthex:performance-audit api --profile premiumHost notes
Standing-pool routing. When standing_pools.enabled is true in .synthex/config.yaml
(the legacy .synthex-plus/config.yaml is still read for one major version, with a deprecation
warning), the command looks for a running pool whose roster covers performance-engineer. If
one matches, it prints Routing to standing pool '<name>' (multi-model: yes|no)., submits one
task, and returns the pool's report with a Review path: standing pool ... line on top —
skipping the local audit. With the default prefer-with-fallback routing mode, no match means
a normal local audit. With explicit-pool-required, it stops and tells you to start a matching
pool with /synthex:start-review-team --reviewers performance-engineer.
No subagent tool. If the host has no Agent, Task, task, spawn_agent, or
delegate_task tool, the Performance Engineer role runs inline in your session instead.
Plugin root. On hosts other than Claude Code, the plugin root comes from
.synthex/state.json.
See also
- Standing review pools
- /synthex:start-review-team/synthex:start-review-team