Skip to content
Back to skills

Aetox Performance

ASecurity

ตอนมีอะไรช้า หรือถูกขอให้หาคอขวดและทำให้เร็วขึ้น บิ้ว เปิดแอป หน้าจอ คิวรี รีเควสต์ การโหลดข้อมูล รวมถึงชี้ว่าสถาปัตยกรรมการโหลดข้อมูลผิดตรงไหน

  • 46 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgoreactcode-reviewperformance

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add Mikedev115/Aetox --skill aetox-performance --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Aetox Performance?

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

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

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: aetox-performance
before: finding why something is slow or making it faster, a build, a startup, a screen, a query, a request, a data load
description: ตอนมีอะไรช้า หรือถูกขอให้หาคอขวดและทำให้เร็วขึ้น บิ้ว เปิดแอป หน้าจอ คิวรี รีเควสต์ การโหลดข้อมูล รวมถึงชี้ว่าสถาปัตยกรรมการโหลดข้อมูลผิดตรงไหน
source: vercel-labs/agent-skills vercel-optimize and react-best-practices (MIT) for signal-before-source, the not-investigated list and the waterfall and bundle rules; Brendan Gregg's USE method for the system pass; this repository's BENCHMARK.md for the noise rule
license: MIT
copyright: Copyright (c) 2026 Aetox Skills
---

# Aetox Performance

A bottleneck is a number at a line. A fix is the same number, smaller by
more than the measurement's own swing. No number, no finding; no second
number, no fix. Everything else is a hunch, and is labelled as one.

## First, the number and its noise

1. Say what "slow" is: which action, measured from where to where, and
   what fast enough would be. When the user cannot say, measure the thing
   they pointed at end to end and put the first number on it.
2. Measure the baseline five times or more, same command, same inputs.
   The spread is the noise. A later change smaller than the spread is not
   a result. This machine swung ±107% on one benchmark with nothing
   changed (BENCHMARK.md); the noise is measured before any fix is judged.
3. Profile before reading. The tool per stack is in `references/tools.md`.
   Read the top of the profile; the first thing to fix is the top entry,
   not the one that looks interesting.
4. Open source files only where the profile or the timing points. A grep
   for anti-patterns is the last resort, and its hits are leads, each one
   read and timed before it is called a cause.

## Where the time usually is

In the order it is usually found:

- Waiting, one after another: a request, a query, a file, a lock, each
  awaited before the next is started when they do not depend on each
  other. The signature is wall time far above CPU time.
- Doing it N times: a query per row, an IPC call per item, a file re-read
  per request, a parse of the same bytes per call.
- Doing too much: the whole table, file or tree loaded for one row; no
  pagination; a list that grew past what its O(n²) loop was written for.
- Doing it again: no cache where the input did not change; the same
  computation on every render or keystroke.
- Doing it in the wrong place: on the UI thread; at startup for something
  needed later; on every request for something static.
- The build: one package or step that takes the time, a generated file, a
  cgo dependency, a bundle that pulls a library for one function. The
  build tool has its own profile (`references/tools.md`); it is read the
  same way.

## When the architecture is the finding

Some slowness has no line to fix: the shape of the loading is the cost.
The signs, with what each looks like in a profile, are in
`references/data-loading.md`. The short list: fetch-on-render waterfalls
across components; one request per item; a startup that loads everything;
the same data fetched in three places with no shared cache; a store with
no index on the column every query filters by; data kept in the shape it
is written in and read a thousand times; a synchronous call per row across
a process boundary.

An architecture finding is written like any other, with its number, and
then names the shape that fixes it and what would change. It is not
rebuilt in the same turn: a reshape is a design change and goes through
`aetox-brainstorm` for the yes first.

## Fixing

- One change at a time, measured against the same baseline with the same
  command and the same number of runs. Kept only when it moved beyond the
  noise; otherwise reverted, and the report says it did not move.
- The order of fixes: do not do it · do it once · do it at once (in
  parallel) · do it later (defer) · do it faster. A fix from the first
  three usually beats any from the last.
- A fix that changes behaviour (a cache that can serve stale, a page size,
  a dropped field) is a design change and is asked about before it is
  made.
- A fix is not traded against correctness or clarity for a number nobody
  asked for.
- When the number cannot be taken (the command refused, nothing to run
  it with), the fix is proposed as a diff and not applied. "The change is
  obviously right, the user can measure it" is the claim the noise rule
  exists for; the baseline comes before the edit, not after.
- The improvement is stated as before → after with the noise beside it. An
  estimate for a fix not yet made is a range from the measured baseline,
  never "much faster".

## What is not a finding

- A pattern with no number: a loop that looks quadratic on twelve items.
- A micro-optimisation below the noise.
- Something on a path nobody runs, unless the user asked about it.
- A dependency that is large but loaded once and off the measured path.

## Report

1. One line: the bottleneck (number, where) and what was done (before →
   after, with the noise), or what is proposed.
2. Findings, each with: Evidence (the number, the profile line,
   `file:line`) · Share of the total · Cause · Fix, applied or proposed ·
   Result, measured.
3. What was measured and how to run it again.
4. What was not investigated, and why. A lead that was seen and not
   followed is listed here, not dropped.

## Hand-offs

- Slowness that is a bug (a leak, a retry loop, a lock held too long):
  `aetox-debug` for the cause, then back here for the number.
- Before saying it is faster: `aetox-verify`, the command run fresh.
- A reshape of how data is loaded: `aetox-brainstorm`, or
  `aetox-idea-to-architecture` when it is a new system.
- The change is otherwise under review: the verdict is
  `aetox-code-review`'s; this skill supplies the numbers.

Files in this skill

  • SKILL.md6 KB
  • references/data-loading.md4.8 KB
  • references/tools.md4.8 KB

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…