React Doctor
makeplane/plane
Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.
Measure and improve Palot desktop runtime performance. An agent skill from ItsWendell/palot.
$ npx skills add ItsWendell/palot --skill palot-performance -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ItsWendell/palot palot-performance --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/palot-performance .claude/skills/palot-performance && rm -rf skills-srcUse ~/.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/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .claude/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performanceType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ItsWendell/palot --skill palot-performance -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ItsWendell/palot palot-performance --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/palot-performance .agents/skills/palot-performance && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .agents/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ItsWendell/palot --skill palot-performance -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ItsWendell/palot palot-performance --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/palot-performance .cursor/skills/palot-performance && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .cursor/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ItsWendell/palot.git --path .agents/skills/palot-performance--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ItsWendell/palot --skill palot-performance -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ItsWendell/palot palot-performance --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/palot-performance .gemini/skills/palot-performance && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .gemini/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ItsWendell/palot palot-performanceInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ItsWendell/palot --skill palot-performance -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/palot-performance .github/skills/palot-performance && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .github/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ItsWendell/palot --skill palot-performance -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ItsWendell/palot palot-performance --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ItsWendell/palot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/palot-performance .opencode/skills/palot-performance && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "palot-performance" agent skill from https://github.com/ItsWendell/palot/tree/main/.agents/skills/palot-performance into .opencode/skills/palot-performance/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "palot-performance", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
palot-performanceMeasure and improve Palot desktop runtime performance. An agent skill from ItsWendell/palot.
Palot Performance is an agent skill from ItsWendell/palot. Measure and improve Palot desktop runtime performance. Use for reported slowness or regressions; profiling CPU, memory, long tasks, React commits, style/layout/paint cost, GPU compositing, frame pacing, or streaming latency; changing the performance harness; React Scan or Compiler experiments; or performance budgets. Use test-palot-desktop for non-performance UI QA.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `agents/openai.yaml`, `references/main-thread-budget.md` and `references/poll-driven-renders.md`).
It sits in Frontend & Design, covering Web performance. It works with React. The repository describes itself as: Just another desktop client for OpenCode 2. Manage projects, sessions, parallel agents, requests, and changes on Linux and macOS. The licence is MIT.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5b71bf9. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Palot Performance loads about 3.1k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 97 tokens; SKILL.md has 1,541 words of instructions outside code blocks.
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.
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.
The full file from ItsWendell/palot at commit 5b71bf9, republished under its MIT licence (© ItsWendell). 1,541 words, ~3,134 tokens.
.claude/skills/palot-performance/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Use the smallest loop that can prove or disprove the suspected cost. Preserve UX, motion, and native/CSS material unless measurements show a concrete problem and the cheaper rendering path still looks right.
Read repository-root ../../../docs/desktop-testing.md for harness commands and measurement contracts. Read references/main-thread-budget.md for current main-thread investigation rules; historical measurements are not evidence for the current checkout.
bun run perf:doctor for changed code and bun run perf:react-check for React Compiler compatibility diagnostics.bun run perf:doctor:full. Treat it as advisory until the documented baseline has been paid down.bun run perf:e2e. It builds an isolated Electron app, warms a long transcript switch, records frame intervals, long tasks, CDP metrics, Electron process CPU/memory, and streaming latency, then retains private artifacts.bun run perf:input. It types a real draft while the visible session and background sessions stream. Use it to evaluate responsiveness, not only throughput.bun run perf:batch:steady and bun run perf:batch:burst use identical numbered text with different provider arrival clustering. Inspect actual renderer batch sizes and synchronous callback durations alongside typing, freshness, and throughput; the transport timer is not a processing budget. These are different workloads, not a product A/B comparison.bun run perf:interactions. It checks trusted session switches, wheel-up, a stable visible reading anchor, return to latest, and Stop under four continuous streams. Per-action DOM milestones include existing fades and are not compositor presentation.bun run perf:input:video or add --video to a matching E2E command. Requires ffmpeg; retains renderer-only video.mp4 and capture metadata. Recording adds observer overhead, is not presented-frame/FPS evidence, and must not be compared to unrecorded benchmarks.bun run perf:stability (or perf:stability:video) adds bounded active-turn/composer/scroll geometry sampling. Use it for bottom-follow jumps, not as a clean input benchmark. Inspect rAF and resize-observer phases separately; transient DOM measurements are not presented-frame proof.bun run perf:parallel; use bun run perf:parallel:trace for whole-app attribution. bun run perf:parallel:memory repeats accumulating workloads with forced GC to investigate retention, not independent latency samples.bun run perf:selectors. Phase-separated React render attribution: run bun run perf:scan:render. Both add observer overhead and are not neutral benchmarks.bun run perf:compare <baseline.json...> -- <candidate.json...> checks matched report metadata and summarizes run-level medians/ranges. It requires at least two independent runs per group (five recommended), rejects legacy/memory-cycle reports, and does not launch tests or declare regression budgets.bun run perf:trace. It repeats the deterministic scenario with React's profiling build and writes performance-trace.json beside performance.json.bun run dev:scan. The dev client starts hidden; use PALOT_REACT_SCAN=1 bun run dev:visible for visible inspection without taking focus, and PALOT_REACT_SCAN=1 bun run dev:focus only when focus behavior matters. Palot reloads so React Scan can install before React. Use it to find candidate rerenders, then disable it before measuring.bun run perf:compiler for whole-renderer infer mode or bun run perf:compiler:annotation to validate opt-in mode. The normal build does not enable React Compiler.The deterministic harness is the default. Load test-palot-desktop before live native inspection or screenshots.
--focus only when focus behavior is part of the test. Hidden or fully occluded Electron windows are throttled and cannot provide a valid FPS baseline..local/ directory. Treat them as private because traces can contain rendered text and source paths.PALOT_DISABLE_GLASS=1, then isolate individual CSS backdrop surfaces.performance.json contains:
sessionSwitch.targetVisibleAtMs: click to useful target transcript.interaction.page: document visibility and Chromium's internal document.hasFocus() state.interaction.runIdentity: revision/dirty state, host hardware/load context, declared versions, runner versions, scenario, and explicit build/trace/material controls. Power, refresh rate, and occlusion still require controlled manual recording.interaction.measurementWindow: renderer monotonic start/end and time origin, correlated with palot:measurement:start / palot:measurement:end trace marks.interaction.collectors and interaction.droppedEntries: distinguish observing, disabled, unsupported, or failed collectors and truncated samples. Missing instrumentation never means zero work.interaction.inputTimings: Event Timing stages and per-interaction duration summaries. Entries are thresholded at 16 ms, quantized, and limited to supported discrete interactions; these are not page-level INP or a distribution of every keystroke.interaction.longAnimationFrames: optional rendering/script attribution without React Scan; enabled by the input scenario. Entries and script attribution are bounded.interaction.frames: p50, p95, maximum frame interval, and counts over 25/50/100 ms.interaction.longTasks: count, total duration, maximum, and the 20 longest entries.interaction.reactCommits: profiling-build React commit count and actual/base render durations.interaction.browserMetrics.delta: CDP task, script, layout, style, heap, node, document, frame, and listener deltas.interaction.batchProcessing: opt-in (captureBatchProcessing) synchronous event-subscriber timing, event counts, and text-delta UTF-16 lengths. Only active in harness builds during measurement. The first 2,048 numeric samples are retained; complete counts/total/max continue after truncation. disabled/unavailable is not zero work. This excludes later React rendering, asynchronous request completion, and paint.interaction.appMetrics: on-demand Electron app.getAppMetrics() snapshots, host-window focus/visibility, interval CPU, working set, GPU feature status, and hardware acceleration state.interaction.streamingLatency: commit-cursor-scoped receive-to-React-commit samples, owner identity, applied batch count, oldest pending age, and retention loss. Latest-batch stage timings alone can hide an older pending batch. Top-level streamingLatency in older scenario reports remains a run-wide buffer.CPU percentages from Electron are interval values since the prior snapshot. Memory values from Electron are KiB. CDP duration metrics are seconds, so convert deltas to milliseconds when presenting them.
Use interaction.appMetrics.*.window.focused for OS window focus. interaction.page.documentHasFocus is Chromium renderer state and can remain true for a non-focusable Electron window.
perf:trace only when the aggregate report cannot attribute the cost.Read references/poll-driven-renders.md when polling appears to trigger expensive React work. Read references/react-compiler.md before changing compiler configuration or adopting compiled components.
await Promise.resolve() is a microtask, not a rendering yield. rAF runs before rendering; it is not a general background-work queue. React transitions do not make arbitrary synchronous computation interruptible.will-change. Virtualization does not automatically stop offscreen parsing, subscriptions, or animation preparation.subagent-card-stability --visible --keep checks the native summary/timer behavior; it is a correctness scenario, not a latency benchmark.A performance change is complete when the exact scenario and build mode are recorded, before/after artifacts exist, UX and visual behavior are unchanged or explicitly approved, the smallest relevant correctness checks pass, and the result identifies remaining uncertainty without claiming more than the data proves.
© ItsWendell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in .agents/skills/palot-performance of ItsWendell/palot.
Open the folder on GitHubat commit 5b71bf9
Palot Performance 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Palot Performance this skillItsWendell/palot | 191 | — | ~3.1k | Automated safety check: Pass | MIT | |
| React Doctormakeplane/plane | 61k | 12 repos | ~657 | Automated safety check: Pass | AGPL-3.0 | |
| React Frontend Development Guidelinesdiet103/claude-code-infrastructure-showcase | 10k | 2 repos | ~2.9k | Automated safety check: Pass | MIT | |
| Core Web VitalsvmDeshpande/ai-agent-automation | 178 | 4 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Reduce Bundle Sizekcsujeet/ilamy-calendar | 351 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Shader for Interfacesv2space-labs/shader-for-interfaces | 115 | — | ~3.1k | Automated safety check: Pass | MIT |
makeplane/plane
Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.
diet103/claude-code-infrastructure-showcase
Guidelines for React 18 and TypeScript apps covering Suspense data fetching, lazy loading, feature folders, MUI v7 styling, TanStack Router and performance.
vmDeshpande/ai-agent-automation
Optimize Core Web Vitals (LCP, INP, CLS) for better page experience and search ranking.
kcsujeet/ilamy-calendar
Systematically reduce the shipped bundle size of a JS/TS library without sacrificing code readability or breaking consumer APIs.
v2space-labs/shader-for-interfaces
Decides whether an interface effect belongs in CSS, SVG, Canvas 2D, WebGL or WebGPU, then builds, debugs and visually verifies focused GPU effects inside product UIs.
Lomray-Software/vite-ssr-boost
Migrate an existing Vite and React Router SPA to vite-ssr-boost SSR in Data mode, preserving route objects and checking streaming, hydration, bundle size, and deployment readiness.
ItsWendell/palot
A skill your agent uses when changing Palot code, file, or diff rendering built on @pierre/diffs, including the Changes tab, file views, CodeView, parsing, selection, annotations, workers, or Shiki…
ItsWendell/palot
A skill your agent uses when changing Palot file-tree behavior built on @pierre/trees, especially the Changes tab tree, selection, search, rename, drag and drop, Git status, or theme integration.
ItsWendell/palot
A skill your agent uses when adding, updating, composing, or debugging source components managed by shadcn; changing apps/desktop/components.json, registries, or presets; or running the shadcn CLI.
ItsWendell/palot
Check or update Palot's OpenCode CLI, client, protocol/schema and runtime contract.
ItsWendell/palot
Test Palot's native Electron renderer with preload, IPC, and OpenCode integration.
ItsWendell/palot
Audit Palot's OpenCode 2 operation and event coverage, analyzer or baseline regressions, published contract-surface deltas, or reviewed baseline updates.
Works with
Categories
Measure and improve Palot desktop runtime performance. An agent skill from ItsWendell/palot. Palot Performance is an agent skill from ItsWendell/palot. Measure and improve Palot desktop runtime performance.
Palot Performance fits situations like: reported slowness; style/layout/paint cost; GPU compositing; streaming latency.
Run `npx skills add ItsWendell/palot --skill palot-performance -a claude-code`. Or copy the skill folder (.agents/skills/palot-performance in ItsWendell/palot) into .claude/skills/palot-performance in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ItsWendell/palot --skill palot-performance -a codex`. Or copy the skill folder (.agents/skills/palot-performance in ItsWendell/palot) into .agents/skills/palot-performance in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ItsWendell/palot --skill palot-performance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/palot-performance, .gemini/skills/palot-performance, .github/skills/palot-performance and .opencode/skills/palot-performance in your project.
Going by SKILL.md and its folder, Palot Performance needs the command-line tools its instructions call (bun).
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.
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.
Palot Performance is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 13k 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 3.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Palot Performance: React Doctor (makeplane/plane, 61k stars), React Frontend Development Guidelines (diet103/claude-code-infrastructure-showcase, 10k stars), Core Web Vitals (vmDeshpande/ai-agent-automation, 178 stars) and Reduce Bundle Size (kcsujeet/ilamy-calendar, 351 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ItsWendell (a GitHub user) maintains it in ItsWendell/palot, which has 191 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 7, 2026.
Source: ItsWendell/palot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.