PlotJuggler 4 Perf Profiling
PlotJuggler/PlotJuggler
Guides CPU profiling of PlotJuggler 4 on Linux with perf: count first, record cheaply with LBR, then read per-thread, flat, flamegraph or time-window views.
The general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure.
$ npx skills add OutThisLife/brooklyn-skills --skill perf -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OutThisLife/brooklyn-skills perf --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/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/perf .claude/skills/perf && 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 "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .claude/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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/OutThisLife/brooklyn-skills/tree/main/skills/perfType 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 OutThisLife/brooklyn-skills --skill perf -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OutThisLife/brooklyn-skills perf --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/perf .agents/skills/perf && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .agents/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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 OutThisLife/brooklyn-skills --skill perf -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OutThisLife/brooklyn-skills perf --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/perf .cursor/skills/perf && 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 "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .cursor/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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/OutThisLife/brooklyn-skills.git --path skills/perf--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 OutThisLife/brooklyn-skills --skill perf -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OutThisLife/brooklyn-skills perf --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/perf .gemini/skills/perf && 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 "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .gemini/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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 OutThisLife/brooklyn-skills perfInstalls 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 OutThisLife/brooklyn-skills --skill perf -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/perf .github/skills/perf && 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 "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .github/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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 OutThisLife/brooklyn-skills --skill perf -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OutThisLife/brooklyn-skills perf --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OutThisLife/brooklyn-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/perf .opencode/skills/perf && 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 "perf" agent skill from https://github.com/OutThisLife/brooklyn-skills/tree/main/skills/perf into .opencode/skills/perf/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "perf", 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.
perfThe general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure.
Perf is an agent skill from OutThisLife/brooklyn-skills. The general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure. Use for /perf, "this is slow", or optimization work.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Skills that drive best-in-class engineering. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8a97904. 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.
No scripts in the folder and no shell commands in SKILL.md.
From 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.
Perf loads about 3.7k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 1,987 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 OutThisLife/brooklyn-skills at commit 8a97904, republished under its MIT licence (© OutThisLife). 1,987 words, ~3,652 tokens.
.claude/skills/perf/SKILL.md (or your agent's skills folder).The general performance loop. Profiling (CPU profile, flamegraph, memory snapshot, trace) is the usual tool, but the loop is the same regardless of which one fits.
pr-update), clean, keep CI green.UpdateLayoutTree and style invalidations before optimizing their callers. Isolate interacting selector families together: removing one broad :has() rule can show no gain while other rules still invalidate the same subtree. Preserve behavior with positively anchored owner selectors, sibling rules, or existing observed state; do not ban :has() generally.items(kit) eagerly creates a closed menu's elements even when its portal mounts nothing; a small child component lets presence defer construction without replacing open/close mechanics. Test both dropdown and context paths plus latest-item selection.export registrations are distinct, and registering an already-known type under a second ID is ignored. Use the shipped validateRefreshBoundaryAndEnqueueUpdate export where performReactRefresh is private, and verify rendered markers afterward.finally, and describe live injections as reload-volatile.Verify the delivered page's boot entry before attributing a disappearing CMS slot to async registration. In Vue, createSSRApp preserves existing SSR nodes while an async component loads; createApp clears the mount container, and hydrateOnVisible cannot preserve it on that client-rendered path. Exercise the real component with a held loader and assert node identity/presence; a zero rectangle in layout-shift attribution alone does not prove a DOM remount. Recheck the response from the exact browser run, including its viewport/UA and experiment cohort: a curl request and a fresh browser can receive different SSR/CSR paths for the same URL. Record real node geometry as well as identity; a node pushed outside the viewport can have a zero attribution rectangle without collapsing or unmounting.
For cached-SSR public directories, carry only a neutral display projection through serialized store state and keep those rows mounted during a small background revalidation. Removing every client fetch can leave changed locations stale inside cached HTML. Compare original-node retention, final text/links, interactions and settled screenshots; report payload savings separately from whole-page scores, including the new SSR-state bytes.
For personalized CMS request warming, separate public dependency identifiers from authoritative content and keep the actual visitor request on its existing service path. Prove hydrated-state availability before the remaining async route/component wait; inspect production module preloads before promising a gain. Use a manually released loader for ordering proof, never synthetic sleeps as a latency benchmark. Keep commit/validation/errors/exposure in the normal consumer, dedupe per store/context, skip existing cache hits, and verify invalidation of both settled and in-flight results. A short TTL or cookie fingerprint alone does not prove auth freshness; report manually simulated invalidation separately from wired application lifecycle coverage.
Preserve consent-container and ordered vendor-loader contracts when refreshing a performance branch. Restoring eager GTM or upstream DY ordering changes the startup profile; label old Lighthouse numbers as historical instead of carrying them forward as proof of the new revision.
For autofocus behind a visibility/reveal gate, wait for both initialization and reveal, consume the focus request once, and cancel it on reset. Verify the actual active element in a browser with the real hiding CSS; a mocked focus-call assertion cannot catch a silent focus no-op on a hidden iframe. Label simulated vendor-event tests separately from live SDK/environment verification.
Verify cache behavior after restarting the process and again on the deployed platform; a warm local Map can hide repeated multi-second catalog walks on new serverless instances. Compare exact product IDs/order/prices across the cache change, not only response timing.
In Next, move a Pages API handler to a real App Route when it needs persistent Data Cache SWR and after() lifetime support. Wrap overloaded Apollo integrations in a request-only adapter for Route Handler typing, and externalize graphql alongside @apollo/server so schema class identities stay shared.
Measure upstream page sizes before caching. Large Shopify pages can exceed the Data Cache's 2 MB entry budget; cache compressed validated pages and decompress losslessly, rather than dropping fields or storing one oversized full-catalog entry. If keeping decoded in-memory catalogs, carry the oldest upstream page's original fetch timestamp through persistent storage; cache reads must not restart that TTL. Bound the decoded-cache entry count.
Treat throttling, invalid payloads and required-page failures as errors, never end-of-catalog. Consume concurrent speculative pages in order, stop only at a successful short page, and safely settle remaining requests within the response lifetime; failed refreshes must not replace valid stale data with empty arrays.
Benchmark a trivial empty query when deployed latency remains high despite data caching: function startup alone may dominate. For public read-only GraphQL, use GET with a bounded-URL POST fallback and the required Apollo preflight header; cache only successful, non-authenticated JSON responses at the CDN for a short window. Verify real x-vercel-cache: HIT and keep cache-miss versus cache-hit timings separate. Update browser test request parsing and route interception for query-string GETs.
Inspect every entry in an IntersectionObserver delivery when a ready grid stalls at the sentinel. Rapid scrolling can coalesce a leave and re-entry for the same observed target; use its latest entry, not entries[0]. Record native batches and query readiness before blaming React closures or the network, then stress rapid successive reveals across data-batch boundaries.
innerWidth, innerHeight, DPR and theme for every named case; requested launch options are not proof. Use explicit units in sampling helpers and reject accidental millisecond/second mismatches. Exclude failed/misconfigured runs instead of folding them into a coverage total.play() on an initially paused closed-panel effect manufactures work and invalidates the native control; restore only the owners that were running. Save the exact harness/module versions with each capture.renderToString output, serialized state and createSSRApp hydration with an SSR device bucket opposite Chrome's viewport. Hold vendor readiness and data responses independently; record initial requests, mount-only requests, branch transitions, image geometry and hydration warnings. Native picture sources plus CSS sizing avoid UA-driven source swaps; preserve the existing media-aware SSR preload contract rather than adding a conflicting fallback-image preload. Check pre-hydration complete && !naturalWidth as well as later error events, then prove interactive handoff still proceeds. For billable image APIs, intercept every browser request before navigation, reject unexpected keys, and fulfill only explicitly nonsecret URLs with labeled synthetic images. This proves request selection and geometry, not cartography or page-level LCP gains.© OutThisLife, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/perf of OutThisLife/brooklyn-skills.
Open the folder on GitHubat commit 8a97904
Perf 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 |
|---|---|---|---|---|---|---|
| Perf this skillOutThisLife/brooklyn-skills | 199 | — | ~3.7k | Automated safety check: Pass | MIT | |
| PlotJuggler 4 Perf ProfilingPlotJuggler/PlotJuggler | 6.2k | — | ~1.6k | Automated safety check: Notes | MPL-2.0 | |
| Perf Profilercomposio-community/awesome-claude-plugins | 1.9k | — | ~182 | Automated safety check: Pass | None | |
| Profileccusage/ccusage | 19k | — | ~430 | Automated safety check: Pass | Custom licence | |
| Perf Profilerlaolaoshiren/claude-code-skills-zh | 878 | — | ~385 | Automated safety check: Pass | MIT | |
| Game Performance ProfilerDonchitos/Claude-Code-Game-Studios | 26k | — | ~2.5k | Automated safety check: Notes | MIT |
PlotJuggler/PlotJuggler
Guides CPU profiling of PlotJuggler 4 on Linux with perf: count first, record cheaply with LBR, then read per-thread, flat, flamegraph or time-window views.
composio-community/awesome-claude-plugins
A skill your agent uses when profiling CPU/memory hot paths, generating flame graphs, or capturing JFR/perf evidence.
ccusage/ccusage
Profiles ccusage performance. An agent skill from ccusage/ccusage.
laolaoshiren/claude-code-skills-zh
基于可复现基线和 profiler 证据分析性能问题。用于用户要求定位慢接口、慢任务、慢查询、内存或网络瓶颈,制定优化方案,或验证优化收益时;区分实测结论与静态推断,不虚构耗时和提升比例,生产环境操作需明确授权。
Donchitos/Claude-Code-Game-Studios
Finds performance bottlenecks, measures them against frame, draw-call and memory budgets, and ranks the optimization recommendations.
ClickHouse/ClickHouse
Profile a ClickHouse query using the sampling query profiler and system.tracelog.
OutThisLife/brooklyn-skills
Draft X/Twitter posts about shipped work. An agent skill from OutThisLife/brooklyn-skills.
OutThisLife/brooklyn-skills
Safely reclaim disk space on macOS without touching personal or agent data.
OutThisLife/brooklyn-skills
List my open MRs/PRs in the current repo/worktree, each with its tracker ticket.
OutThisLife/brooklyn-skills
Clear everything blocking an existing PR/MR from merging — rebase onto the default branch, get CI green, and resolve review threads (Copilot and human).
OutThisLife/brooklyn-skills
Maintainer triage on OTHER people's PRs/MRs — verdict of approve, supersede, or close, salvage with credit, close the cluster.
OutThisLife/brooklyn-skills
Open a PR/MR if missing, or refresh an existing one's title and description so they match the current diff.
The general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure. Perf is an agent skill from OutThisLife/brooklyn-skills. The general profile-driven perf loop for any language or runtime: baseline, profile, fix the real hot path, re-measure.
Perf fits situations like: optimization work.
Run `npx skills add OutThisLife/brooklyn-skills --skill perf -a claude-code`. Or copy the skill folder (skills/perf in OutThisLife/brooklyn-skills) into .claude/skills/perf in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OutThisLife/brooklyn-skills --skill perf -a codex`. Or copy the skill folder (skills/perf in OutThisLife/brooklyn-skills) into .agents/skills/perf 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 OutThisLife/brooklyn-skills --skill perf -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, .gemini/skills/perf, .github/skills/perf and .opencode/skills/perf in your project.
SKILL.md names no scripts, command-line tools or credentials: Perf is instructions for the agent only.
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.
Perf 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.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Perf: PlotJuggler 4 Perf Profiling (PlotJuggler/PlotJuggler, 6.2k stars), Perf Profiler (composio-community/awesome-claude-plugins, 1.9k stars), Profile (ccusage/ccusage, 19k stars) and Perf Profiler (laolaoshiren/claude-code-skills-zh, 878 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OutThisLife (a GitHub user) maintains it in OutThisLife/brooklyn-skills, which has 199 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 5, 2026.
Source: OutThisLife/brooklyn-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.