Agent skill

Perf Review

by octanejs in octanejs/octane

Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it…

MITAuto-check passedDevelopment

Install Perf Review

skills CLI
$ npx skills add octanejs/octane --skill perf-review -a claude-code

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

GitHub CLI
$ gh skill install octanejs/octane perf-review --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/perf-review .claude/skills/perf-review && 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
perf-review
GitHub stars
1.5k
Token cost
~2.1k tokens
SKILL.md length
986 words
Files
1
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it…

  • Works in 5 steps: Choose the target → Classify the change before judging it → Read the mechanical candidates → …
  • Development work in your project
  • SKILL.md covers 1. Choose the target, 2. Classify the change before…, 3. Read the mechanical… and 4. Judge each dimension, plus 2 more sections
  • Calls node, gh and pnpm

What it does

Perf Review is an agent skill from octanejs/octane. Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it carries the evidence each risk needs. Use before readying a PR that touches packages/octane/src, compiler output, or binding hot paths, or when reviewing agent-written code.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

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

  • Development work in your project

Example prompts

  • “/perf-review”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Choose the target
  2. Classify the change before judging it
  3. Read the mechanical candidates
  4. Judge each dimension
  5. Require evidence

What it can do on your machine

Read from SKILL.md and the folder at commit efe12e3. 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
    • gh
    • pnpm

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

  • Network

    No URLs in SKILL.md. Its commands use gh and 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

Perf Review loads about 2.1k tokens when it runs. Until then it costs about 95 tokens; SKILL.md has 986 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~95
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

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 efe12e3, republished under its MIT licence (© octanejs). 986 words, ~2,123 tokens.

Download SKILL.mdSave it as .claude/skills/perf-review/SKILL.md (or your agent's skills folder).
name
perf-review
description
Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it carries the evidence each risk needs. Use before readying a PR that touches packages/octane/src, compiler output, or binding hot paths, or when reviewing agent-written code.

Skill: Perf review

Use this to verify that a change applied the hot-path discipline in performance-audit, which you load alongside this skill. Its references hold the rules and the runtime code that already follows them: V8 shapes, DOM work, and scheduling.

This is a validator. On someone else's PR, report findings and do not push fixes unless asked. On your own diff before handoff, fix every must-fix finding and run the review again.

1. Choose the target

bash
node scripts/perf-review-scan.mjs                         # your worktree against its merge-base with origin/main
node scripts/perf-review-scan.mjs --head <branch>         # a branch's committed diff
gh pr diff <number> --repo octanejs/octane | node scripts/perf-review-scan.mjs --diff -
node scripts/perf-review-scan.mjs packages/<binding>/src/ # a binding's hot path
  • The default scope is shipped runtime source under packages/octane/src, excluding compiler/. Path prefixes replace that scope; tests, fixtures, and benchmarks are always excluded. --json prints machine-readable findings.
  • gh pr diff carries only three lines of context, so the loop and read-after-write notes see less. A pasted diff also lacks the head's runtime.ts, so --diff skips hot-class-shape. For a full review, check out the PR head in a worktree and use --head.

2. Classify the change before judging it

For each changed function, find its callers and decide how often it runs:

  • Hot: per render, node, item, event, signal notification, or server request. Framework fundamentals count as hot until the call graph shows otherwise (.rulesync/rules/core-engineering.md).
  • Cold: module initialization, once per root, error and abort paths, and development-only branches. A development-only branch must still not change a production shape.

Then note which dimensions apply: shapes and allocation, reachability, DOM, scheduling, and compiler output.

3. Read the mechanical candidates

The scan reports candidates on added lines with comments and strings blanked. Every candidate must end up as a finding or as a dismissal with a reason.

RuleCatchesTypical dismissal
hot-class-shapeA BlockImpl, ScopeImpl, or LiteBlockImpl field that is a runtime class field, never assigned in the constructor, assigned conditionally, or assigned without a declarationNone. Holds on main; fix it
hot-field-writeA write through a Block or Scope receiver, cast or not, to a field those classes do not declareNone. Holds on main; declare and initialize it
delete-operatordelete on an objectIntentional dictionary or cold path
conditional-shape...(cond ? {…} : {…}) or ...(cond && {…})Cold options object
shape-mutationObject.freeze, defineProperty, setPrototypeOf outside module-scope constantsOnce per template or module, or a pinned exemplar
holey-arraynew Array(n) without .fillNever indexed out of order and cold
rest-or-argumentsA rest parameter or argumentsCold branch, as in the HMR wrapper
layout-readGeometry reads, noting a DOM write earlier in the hunkBatched measure phase, or a layout effect that reads before writing
microtask-hopqueueMicrotask, Promise.resolve().then, noting an enclosing loopOne hop per burst that does no framework work per value
await-as-yieldawait of a settled valueNot used to yield
schedule-renderA new scheduleRender call, noting an enclosing loopCalled once per burst, not per item or value
animation-framerequestAnimationFrameVisual work meant to land before paint, with a timer fallback
task-posterMessageChannel, setTimeout(…, 0) or without a delay, setImmediate, postTask, requestIdleCallbackExtends an existing poster

The scan cannot see the following, so check them by hand:

  • Compiled output. Compile a representative fixture from packages/octane/tests/_fixtures/ before and after through the public compiler. Diff it for per-render closures, literals whose keys vary, extra runtime calls per node, changed bagN arity, and new runtime imports.
  • Reachability. A new reference from a hot or compiled path to a large function or driver, a new import into runtime.ts, or a hydrating guard that does not fold.
  • Polymorphism and representation. A hot function that now receives a new receiver shape or argument type, returns a different shape, or stores a new type in an existing field, such as a double in a Smi field or undefined in a numeric one.
  • Allocation. Closures, literals, spreads, Array.from, or iterators created per item or per render.
  • DOM across functions. A read after a write that sits in a different function or hunk, and new per-element listeners or per-node DOM creation where a template clone would do.
  • Scheduling semantics. An existing render request moved into a loop or a producer, more frequent drainPassivesBeforeRender, or a change to the contract in docs/differences-from-react.md §Scheduler.
Show full SKILL.md (322 more words)Show less

4. Judge each dimension

Answer these from the code. Cite file:line for every answer.

  • Shapes: Is every new field on a hot record initialized at every allocation site, with identical keys and order across literal sites? Does any hot function gain a receiver map, argument type, or return shape?
  • Allocation: What does the change allocate per render or per item? Can it be hoisted, reused, or replaced with an intrusive list?
  • DOM: Are reads batched before writes, and outside the render walk? Is each built subtree inserted once? Do resize callbacks that write go through createResizeObserver?
  • Scheduling: Can any producer now render or commit per value or hop? Does a new microtask chain do framework work at each step? Does a new task poster duplicate schedulePostPaint, actCheckpoint, createResizeObserver's poster, or resumeOnSettle, and does it survive hidden tabs and act()? Does the change alter the documented contract without a decision from #1864?
  • React divergences: Is anything you would flag a documented divergence in docs/differences-from-react.md? Those are not defects. When a trade-off is ambiguous, prefer React semantics.

5. Require evidence

Each finding names the evidence it needs, from the table in performance-audit: a one-map %HaveSameMap probe, allocation per call with pinned semi-space, deterministic work counters, bundle rows from the CI report, the marker-task commit count, or Event Timing in Chromium. Mark whether the PR provides it.

Run only the owning suite or a scratch probe locally, one at a time. Leave the full pnpm test, benchmark sweeps, and browser suites to CI.

Report

md
## Perf review: <PR, branch, or worktree> (<base>..<head>)

Scan: `node scripts/perf-review-scan.mjs <args>` → <N> candidates.
Hot paths touched: <functions, with their frequency>.

| # | Severity | Location | Dimension | Finding | Required evidence | Provided? |
| --- | --- | --- | --- | --- | --- | --- |
| 1 | must-fix | packages/octane/src/runtime.ts:1234 | shapes | … | `%HaveSameMap` across modes | no |

Dismissed candidates:
- `packages/octane/src/runtime.ts:4567` [microtask-hop]: error-report path, once per uncaught error.

Not checked: <for example, browser latency, because no Chromium run>.
  • must-fix: breaks a rule on a hot path, or fails hot-class-shape or hot-field-write.
  • needs-evidence: may be fine, but the claim or the risk needs the listed measurement before the PR is ready.
  • note: a cold-path observation or a follow-up.

A finding without a file:line and an argument for why the path is hot is not a finding. When create-a-pr invokes this skill, paste the report into the PR body's validation section.

© 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

Just SKILL.md in .agents/skills/perf-review of octanejs/octane.

Open the folder on GitHubat commit efe12e3

Compare with similar skills

Perf Review 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.

Perf Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Perf Review this skilloctanejs/octane1.5k—~2.1kAutomated 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-code78k4 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 4 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 13 skills in this repo
  • Performance Audit

    octanejs/octane

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

    1.5k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • 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
  • 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 Perf Review

What does Perf Review do?

Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it…. Perf Review is an agent skill from octanejs/octane. Check that a diff, branch, or PR keeps Octane hot paths fast - stable V8 shapes and monomorphic sites, DOM work without forced layout, no new microtask hops or ad-hoc task posters - and that it carries the evidence each risk needs.

When should I use Perf Review?

Perf Review fits situations like: development work in your project.

How do I install Perf Review in Claude Code?

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

How do I install Perf Review in Codex?

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

Can I use Perf Review 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 perf-review -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/perf-review, .gemini/skills/perf-review, .github/skills/perf-review and .opencode/skills/perf-review in your project.

What does Perf Review need to run?

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

Does Perf Review access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Perf Review 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 Perf Review use?

Perf Review 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 Perf Review use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Perf Review?

Skills that share tags, products or a category with Perf Review: 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 Perf Review?

octanejs (a GitHub organization) maintains it in octanejs/octane, which has 1,456 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 11, 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.