Agent skill

Performance Audit

by octanejs in octanejs/octane

Audit or defend Octane performance. An agent skill from octanejs/octane.

MITAuto-check passedDevelopment

Install Performance Audit

skills CLI
$ npx skills add octanejs/octane --skill performance-audit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install octanejs/octane performance-audit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/octanejs/octane.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/performance-audit .claude/skills/performance-audit && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
performance-audit
GitHub stars
1.5k
Token cost
~2.8k tokens
SKILL.md length
1,330 words
Files
4 (incl. references)
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Audit or defend Octane performance. An agent skill from octanejs/octane.

  • Works in 6 steps: Define target → Choose harness → Run baseline and candidate → …
  • A change can affect per-render
  • SKILL.md covers Read first, Hot-path discipline, Workflow and Reuse stable member reads, plus 4 more sections
  • Calls node and pnpm

What it does

Performance Audit is an agent skill from octanejs/octane. Audit or defend Octane performance. Use when a change can affect per-render, per-node, scheduling, compiler-output, SSR, hydration, or bundle cost, or when asked whether something is fast enough. Holds the V8-shape, DOM, and scheduling rules hot-path code must follow.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/dom-work.md`, `references/scheduling.md` and `references/v8-shapes.md`).

It sits in Development. The repository describes itself as: React’s programming model, compiled. The successor to Inferno. The licence is MIT.

When your agent uses it

  • A change can affect per-render
  • Compiler-output
  • Asked whether something is fast enough

Example prompts

  • “/performance-audit”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Define target
  2. Choose harness
  3. Run baseline and candidate
  4. Diagnose
  5. Patch or report
  6. Challenge the conclusion

What it can do on your machine

Read from SKILL.md and the folder at commit 961638e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Performance Audit loads about 2.8k tokens when it runs, and up to ~8.9k if it reads all its reference files. Until then it costs about 72 tokens; SKILL.md has 1,330 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from octanejs/octane at commit 961638e, republished under its MIT licence (© octanejs). 1,330 words, ~2,769 tokens.

Download SKILL.mdSave it as .claude/skills/performance-audit/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
performance-audit
description
Audit or defend Octane performance. Use when a change can affect per-render, per-node, scheduling, compiler-output, SSR, hydration, or bundle cost, or when asked whether something is fast enough. Holds the V8-shape, DOM, and scheduling rules hot-path code must follow.

Skill: Octane performance audit

Use this to investigate performance regressions, benchmark results, scheduler/reconciler overhead, compiler output quality, or ecosystem binding perf.

Read first

  • Benchmark README in the affected benchmarks/* directory
  • packages/octane/src/runtime.ts comments for runtime-level changes
  • Existing benchmark scripts in benchmarks/*/package.json and run.mjs
  • The discipline reference for each dimension the change touches: V8 shapes and allocation, DOM work, and scheduling

Hot-path discipline

These rules apply to code that runs per render, node, item, event, signal notification, or server request. Each reference cites the runtime code that already follows the rule.

  • Shapes: allocate hot records from one constructor or one literal site with every field present, in a fixed order, as BlockImpl and the bagN factories do. No delete, conditional keys, runtime class fields on hot classes, or per-instance freezing. Keep call sites and return shapes monomorphic, numeric fields integral, and arrays packed. Do not allocate closures, literals, rest arrays, or iterators per item.
  • Reachability: never name a heavy function from a hot compiled path. Put feature-only code behind the capability or driver that owns it.
  • Member reads: look for repeated property reads and member-chain prefixes in hot code and emitted JS. Prefer a local const for a stable value used more than once; follow Reuse stable member reads.
  • DOM: read geometry before writing, never in the render walk, and never interleaved with writes in a loop. Insert built subtrees once. Keep events native and delegated. Write from resize callbacks only through createResizeObserver.
  • Scheduling: a microtask, await of a settled value, or requestAnimationFrame is not a yield. Do not add a render or commit per microtask hop. Coalesce first, then yield by posting a task through an existing poster. Leave the documented scheduler contract to issue #1864.

Run the perf-review skill on the diff before handoff. It applies these rules to the change and lists the evidence each finding needs.

Workflow

  1. Define target

    • Scenario: mount, update, keyed reorder, context, effects, Suspense, hydration, SSR, binding package.
    • Metric: runtime duration, allocations, DOM operations, bundle size, compiler output size, benchmark score.
    • Baseline: current main, previous commit, React, Solid/Ripple comparison, or documented expectation.
    • Semantic control: the output, identity, ordering, or lifecycle result that proves both candidates perform the same work.
  2. Choose harness

    • Existing benchmarks: node benchmarks/bench.mjs --list names every suite. Common ones are js-framework, dbmon, news, recursive-context, signal-favoring, and todomvc.
    • Object shapes: benchmarks/runtime-object-shapes gates one map per record family with %HaveSameMap. Tier and deopt traces: benchmarks/client-hot-paths/functions.mjs.
    • Scheduling: scheduler-responsiveness, passive-scheduling, effect-scheduling, and the marker-task commit count in scheduling.
    • Micro regression: focused Vitest with counters/logging.
    • Compiler output: inspect emitted JS from compile.js/Vite transform.
    • Browser-only perf: use Playwright or benchmark harness if available.
  3. Run baseline and candidate

    • Warm up.
    • Run multiple iterations.
    • Record environment and command.
    • Avoid mixing dependency install/build changes with code changes.
    • Use the same commit inputs, runner options, and machine state. Do not compare a quick smoke result with a full result.
    • Treat a delta inside observed variance as inconclusive. Prefer ratio guards and deterministic counters when wall-clock noise is larger than the claim.
    • The pull request benchmark gates js-framework production calls and DOM mutations per operation against the merge commit's first parent: any increase fails it. Wall time there is a paired report, called slower or faster only when its 95% interval lies beyond ±3%.
  4. Diagnose

    • Runtime hot paths: scheduler queues, effect flushing, keyed reconciliation, event delegation, context propagation, refs.
    • Compiler hot paths: unnecessary deopts, over-broad dynamic regions, missed folding, slot churn, repeated closures.
    • Binding hot paths: excessive subscriptions, selector equality failures, layout-effect loops.
  5. Patch or report

    • Prefer measurable changes with a regression test/benchmark note.
    • Preserve correctness over micro-optimizations.
    • Document tradeoffs and residual risk.
  6. Challenge the conclusion

    • Inspect whether work was shifted to startup, compilation, hydration, garbage collection, or a less visible branch rather than removed.
    • Check allocation lifetime and invalidation for new caches or memoization.
    • Attempt a workload that should make the proposed improvement disappear; if it does not, look for a harness or measurement error.
    • Re-run the final candidate after self-review changes. Never report a stale intermediate measurement as the final result.
Show full SKILL.md (655 more words)Show less

Reuse stable member reads

Repeated node.firstChild, node.nextSibling, record.field, or object[key] reads can repeat accessor work and duplicate property names in emitted code. Cache a reused value in a local declaration at its first needed read, in the smallest scope covering its uses. Prefer this simple reuse over a persistent cache or a new helper abstraction; do not alias every one-off property read.

For a native DOM node with no intervening tree mutation:

ts
// Before: read the same first child up to three times.
if (node.firstChild !== null && node.firstChild.nodeType === 3) {
  return node.firstChild;
}

// After: read once and reuse the result.
const firstChild = node.firstChild;
if (firstChild !== null && firstChild.nodeType === 3) {
  return firstChild;
}
  • Prove the receiver, computed key, and value stay stable across all uses. A getter or proxy may have observable effects or return a different value on each read; evaluating the receiver or coercing the key can also have effects. Reducing these evaluations is not automatically equivalent.
  • Preserve evaluation order, null guards, and short-circuit behavior. Do not hoist a read onto a path that previously skipped it or before its guard.
  • Re-read after DOM or state mutation, callbacks or reentrant calls, and await/yield boundaries that can invalidate the value. In loops, cache per iteration unless stability across iterations is established; a removal loop must observe the new firstChild after each removal.
  • Keep Octane's existing access semantics: where code uses getFirstChild, getNextSibling, or staged DOM views, reuse that result instead of switching to a raw native read. Compiled template walks can reuse stable chain prefixes without routing every access through a shared helper.
  • Check the emitted and minified JS, including raw and compressed size, before claiming a size win. A local declaration can cost more than it saves, and a JIT or minifier may already eliminate some repeated reads. Use the owning benchmark for runtime claims and relevant correctness checks when changing code; fewer source-level reads alone do not establish a speedup.

Bundle bytes

  • There are no committed byte budgets, and no check fails on bytes. The pull request benchmark report lists every byte change; read the rows your change moved and justify any growth in the pull request description.
  • Keep growth small anyway: move hydration-only or feature-only code behind the capability that owns it. Judge growth by raw and gzip; brotli can grow when code is removed.
  • Measure while iterating with node benchmarks/bundle-size/run-minimal.mjs [scenario...] and node benchmarks/bundle-size/run.mjs octane-tsrx octane-jsx.

Evidence required for hot-path changes

ChangeEvidence
Any runtime, compiler-output, or binding hot pathThe pull request benchmark report (.github/workflows/pr-bench.yml): byte changes, reported only, and js-framework production calls and DOM mutations per operation, where any increase fails.
Bundle bytesnode benchmarks/bundle-size/run-minimal.mjs <scenario> and run.mjs octane-tsrx octane-jsx while iterating. CI's report rows are authoritative: brotli, and occasionally gzip or raw for path-dependent scenarios, can differ locally.
A hot record's shape%HaveSameMap across every construction mode, as benchmarks/runtime-object-shapes does, and perf-review-scan clean.
Allocation or tieringA scratch harness on the production bundle: pinned semi-space for bytes per call, %GetOptimizationStatus and --trace-deopt for tiers.
Scheduling, commits, or effect timingThe marker-task commit count from scheduling, plus the relevant scheduling suite.
User-visible latency claimsEvent Timing in Chromium, maximum duration per interactionId, against React on the same app. Long-task entries are not evidence.
Optimization claims in generalnode benchmarks/bench.mjs <suite> --ratios for the suite that owns the scenario.

Run locally only the suite or scratch probe that owns the scenario, one suite at a time (--quick while iterating). Leave wide runs to CI: the full pnpm test, the full benchmark sweep, and end-to-end or browser suites. Parallel agent sessions share one machine, and a wide local run makes every timing on it noise.

Report template

md
## Performance audit
- Target: ...
- Baseline command/result: ...
- Candidate command/result: ...
- Delta: ...

## Findings
- ...
- `perf-review` result: ...

## Recommendation
- ...

## Validation
- ...

## Confidence and residual risk
- Noise/variance: ...
- Modes not measured: ...
- Alternative explanation considered: ...

Common pitfalls

  • jsdom is poor for layout/paint measurements.
  • A microtask-level change can look free in a benchmark that awaits each operation, and still add a commit per hop under a burst. Count commits before a marker task.
  • V8 trace flags piped to a busy parent lose records. Write traces to a file.
  • Differential innerHTML tests prove correctness, not performance.
  • React and Octane may perform different physical DOM move sets while producing identical final DOM.
  • Compiler output changes can shift runtime cost; inspect both layers.

© octanejs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in .agents/skills/performance-audit of octanejs/octane.

  • SKILL.md
  • references/dom-work.md
  • references/scheduling.md
  • references/v8-shapes.md

Open the folder on GitHubat commit 961638e

Compare with similar skills

Performance Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Performance Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Performance Audit this skilloctanejs/octane1.5k—~2.8kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k58 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers297k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 58 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    297k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from octanejs/octane

All 19 skills in this repo
  • Update Bindings

    octanejs/octane

    Audit one, several, or all existing Octane bindings; implement selected maintenance findings or remove redundant copied files with evidence matched to source ownership.

    1.5k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Concise Code

    octanejs/octane

    Keep a change small and in the existing idiom - size the plan and weigh smaller alternatives before writing it, reuse the mechanism that already owns the behavior instead of adding a parallel one…

    1.5k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Handle Issue

    octanejs/octane

    Work a GitHub issue in the octane repo. An agent skill from octanejs/octane.

    1.5k GitHub stars~638 tokensUpdated today
    Auto-check passed
  • Migrate V8 To V9

    octanejs/octane

    Perform a complete @tanstack/react-table v8-to-v9 migration: hook and feature architecture, row-model slots, React state and subscriptions, rendering, composable tables, type helpers, and every…

    1.5k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Implement and verify new React-library ports or copied/rewritten React surfaces in Octane bindings from npm names or npm/GitHub links/lists.

    1.5k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Triage

    octanejs/octane

    Work out which part of the octane monorepo owns an unfamiliar failure or task.

    1.5k GitHub stars~374 tokensUpdated today
    Auto-check passed

Categories

Questions about Performance Audit

What does Performance Audit do?

Audit or defend Octane performance. An agent skill from octanejs/octane. Performance Audit is an agent skill from octanejs/octane. Audit or defend Octane performance.

When should I use Performance Audit?

Performance Audit fits situations like: A change can affect per-render; compiler-output; asked whether something is fast enough.

How do I install Performance Audit in Claude Code?

Run `npx skills add octanejs/octane --skill performance-audit -a claude-code`. Or copy the skill folder (.agents/skills/performance-audit in octanejs/octane) into .claude/skills/performance-audit in your project. Claude Code loads it when a task matches its description.

How do I install Performance Audit in Codex?

Run `npx skills add octanejs/octane --skill performance-audit -a codex`. Or copy the skill folder (.agents/skills/performance-audit in octanejs/octane) into .agents/skills/performance-audit in your project. Codex loads it when a task matches its description.

Can I use Performance Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add octanejs/octane --skill performance-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/performance-audit, .gemini/skills/performance-audit, .github/skills/performance-audit and .opencode/skills/performance-audit in your project.

What does Performance Audit need to run?

Going by SKILL.md and its folder, Performance Audit needs the command-line tools its instructions call (node and pnpm).

Does Performance Audit access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Performance Audit safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Performance Audit use?

Performance Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Performance Audit use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.2k tokens, read only when the agent opens those files.

What are the alternatives to Performance Audit?

Skills that share tags, products or a category with Performance Audit: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 297k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Performance Audit?

octanejs (a GitHub organization) maintains it in octanejs/octane, which has 1,452 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 9, 2026.

Source: octanejs/octane on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.