Skip to content
Back to skills

Performance Review

ASecurity

Use as a review dimension on any diff that could cost startup time, frames, memory, battery, bandwidth or bundle size — by code-reviewer during review and by web-developer and test-automation-engineer before claiming a UI or harness ticket done. The studio's position is that this is a dimension with existing auditors behind it, not a standing role.

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 6, 2026
developmentswiftcode-reviewperformance

Works with

  • cli

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add vmobifystudio/app-dev-team --skill performance-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Performance Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Performance Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vmobifystudio-performance-review/badge)](https://www.skillsdirectory.com/skills/vmobifystudio-performance-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: performance-review
description: Use as a review dimension on any diff that could cost startup time, frames, memory, battery, bandwidth or bundle size — by code-reviewer during review and by web-developer and test-automation-engineer before claiming a UI or harness ticket done. The studio's position is that this is a dimension with existing auditors behind it, not a standing role.
---

# Performance review

Performance is a budget, and a budget only exists if something can exceed it. The budgets live in
`docs/20-architecture.md` §8; if that section is empty, that is the finding.

Spawn the platform auditor first and fold its findings in — `axiom:swiftui-performance-analyzer`,
`axiom:swift-performance-analyzer`, `axiom:memory-auditor`, `axiom:energy-auditor` on Apple
platforms. **All external and optional** (separate plugins) — missing → record
`N/A: <tool> — not installed`, walk the list below by hand, never file the absence as a defect.

## Measure, then read the diff

**A performance finding with no number is an opinion.** Every finding names: the metric, the value,
the budget it is measured against, the device or environment, and the build. Where you could not
measure, the verdict is `CANNOT EVALUATE` — not a guess dressed as a warning.

## The dimensions

| Dimension | Budget it spends | What to look for in a diff |
|---|---|---|
| Startup | cold launch to first interaction | work moved into app init, eager singletons, sync I/O on the launch path |
| Frames | 60/120fps, jank-free scroll | layout or allocation per frame, unbounded list without recycling, expensive work in a view body |
| Memory | peak and steady-state | full-size images held, unbounded caches, retain cycles, accumulating observers |
| Battery / energy | background and foreground drain | polling instead of push, wake locks, continuous location, timers that never stop |
| Network | bytes and round trips | N+1 requests, no pagination, no caching headers, retry without backoff |
| Storage | disk footprint and write amplification | writing on every keystroke, unbounded logs, no eviction policy |
| Bundle / binary | download size | a whole library imported for one function, unsplit routes, uncompressed assets |

## The rules

- **Measure before optimising, and measure the thing users feel.** A 40% faster function on a path
  that runs once at midnight is not a result.
- **Regressions are found by comparing to a baseline**, so record the baseline value in the ticket.
  No baseline, no regression detection — that is how these arrive silently.
- **A cache is a correctness decision**, not a performance one. Every cache added must state its
  invalidation rule; an unstated one is a stale-data defect waiting.
- **Never optimise by removing a bound.** Widening a page size, dropping a limit or removing a
  timeout trades a slow path for an unbounded one.

## Verdict

```
PERFORMANCE: PASS | PASS WITH NOTES | FAIL — <metric> <value> vs budget <value> on <device/build>
```

Exceeding a stated budget is a `FAIL` and a blocker to raise — not a number to quietly move.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…