Agent skill

Performance Profiler

by EliasOulkadi in EliasOulkadi/shokunin

Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching…

MITAuto-check: notesFrontend & Design

Install Performance Profiler

skills CLI
$ npx skills add EliasOulkadi/shokunin --skill performance-profiler -a claude-code

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

GitHub CLI
$ gh skill install EliasOulkadi/shokunin performance-profiler --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/EliasOulkadi/shokunin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.pack/skills/performance-profiler .claude/skills/performance-profiler && 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-profiler
GitHub stars
114
Token cost
~2.7k tokens
SKILL.md length
840 words
Files
5 (incl. scripts, references)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching…

  • Works in 6 steps: Run Lighthouse audit (exact command) → Fix Core Web Vitals → Profile backend → …
  • User asks to improve performance
  • SKILL.md covers Sub-Commands, Workflow, Production Checklist and Anti-Patterns, plus 3 more sections
  • Runs PowerShell scripts from its folder; calls npx, node and python

What it does

Performance Profiler is an agent skill from EliasOulkadi/shokunin. Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching strategies (Redis, CDN, HTTP), and performance budgets. Use when user asks to improve performance, run Lighthouse audit, profile a Node.js app, optimize Core Web Vitals, reduce bundle size, or investigate slow response times. Do NOT use for database schema optimization (use db-sculptor), Docker image optimization (use…

Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/backend-performance.md` and `references/web-vitals.md`). Compatibility notes: opencode

It sits in Frontend & Design, covering Web performance. It works with Docker, Node.js, Redis and Contentful. The repository describes itself as: 職人 Shokunin 62 AI agent skills for OpenCode, Claude Code, Cursor, Windsurf. ChromaDB memory, MCP servers, declarative self-updates. Multi-model, open source, zero cost. The licence is MIT.

When your agent uses it

  • User asks to improve performance
  • Run Lighthouse audit
  • Profile a Node.js app
  • Optimize Core Web Vitals

Example prompts

  • “/performance-profiler”

Requirements

  • Python 3
  • Node.js
  • PowerShell
  • Docker
  • Compatibility (from SKILL.md): opencode
  • Pre-approved tools (allowed-tools): Read, Bash, Write, WebFetch

Workflow steps

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

  1. Run Lighthouse audit (exact command)
  2. Fix Core Web Vitals
  3. Profile backend
  4. Bundle analysis
  5. Caching strategy decision tree
  6. Performance budgets in CI

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Bash
    • Write
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (PowerShell), which the agent can run.

    Shell commands in SKILL.md call:

    • npx
    • node
    • python

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

  • Network

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

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

Performance Profiler loads about 2.7k tokens when it runs, and up to ~6k if it reads all its reference files. Until then it costs about 141 tokens; SKILL.md has 840 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Bash, Write, WebFetch

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); the scripts in this folder are not scanned.

SKILL.md

The full file from EliasOulkadi/shokunin at commit 4c68e5b, republished under its MIT licence (© EliasOulkadi). 840 words, ~2,723 tokens.

Download SKILL.mdSave it as .claude/skills/performance-profiler/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
performance-profiler
description
Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching strategies (Redis, CDN, HTTP), and performance budgets. Use when user asks to improve performance, run Lighthouse audit, profile a Node.js app, optimize Core Web Vitals, reduce bundle size, or investigate slow response times. Do NOT use for database schema optimization (use db-sculptor), Docker image optimization (use docker), or CDN configuration.
allowed-tools
Read, Bash, Write, WebFetch
compatibility
opencode
triggers
performance, optimize, slow, Lighthouse, Core Web Vitals, LCP, INP, CLS, bundle size, profiling, N+1 query, caching, response time
negatives
schema optimization, Docker image optimization, CDN configuration, database indexes
license
MIT
metadata.workflow
quality
metadata.audience
developers
metadata.version
4.0.0
metadata.author
shokunin

Performance Profiler

Find and fix performance issues from frontend to backend. Based on Google Core Web Vitals, Lighthouse, Chrome DevTools, and production patterns from WebPageTest and clinic.js.

Sub-Commands

CommandDescription
auditRun comprehensive performance audit (frontend + backend)
vitalsAudit Core Web Vitals specifically (LCP, INP, CLS, TBT)
lcpOptimize Largest Contentful Paint
inpFix Interaction to Next Paint (long tasks)
bundleAnalyze bundle size and split strategy
backendProfile Node.js/Python backend performance
budgetSet and verify performance budgets

Workflow

Step 1: Run Lighthouse audit (exact command)
bash
npx lighthouse https://example.com --preset=desktop --output=html --output-path=./lighthouse-report.html
npx lighthouse https://example.com --preset=desktop --output=json --output-path=./lighthouse.json

Target scores:

MetricTargetSeverity if missed
Performance> 90Critical
LCP (Largest Contentful Paint)< 2.5sCritical
INP (Interaction to Next Paint)< 200msCritical
CLS (Cumulative Layout Shift)< 0.1Critical
TBT (Total Blocking Time)< 200msHigh
FCP (First Contentful Paint)< 1.8sMedium
Speed Index< 3.4sMedium
Step 2: Fix Core Web Vitals
LCP optimization (exact fixes)
html
<!-- 1. Preload LCP image -->
<link rel="preload" as="image" href="hero.webp" fetchpriority="high">

<!-- 2. LCP image: no lazy loading -->
<img src="hero.webp" width="1200" height="600" fetchpriority="high" alt="">

<!-- 3. Inline critical CSS in <head> -->
<style>
  .hero { display: grid; min-height: 100dvh; }
  .hero img { width: 100%; height: auto; aspect-ratio: 2/1; }
</style>

<!-- 4. Defer non-critical CSS -->
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'">

<!-- 5. Self-host fonts with font-display: swap -->
@font-face {
  font-family: 'Geist';
  src: url('/fonts/geist.woff2') format('woff2');
  font-display: swap;
}

LCP sub-parts breakdown:

  1. TTFB (Time to First Byte): < 800ms. Optimize server response. CDN. Caching.
  2. Resource load delay: Preload + fetchpriority + no render-blocking.
  3. Resource load time: Compress, CDN, modern format (WebP/AVIF).
  4. Element render delay: Inline critical CSS. No layout-shifting JS above fold.
INP optimization (long task breakup)
typescript
// Break up long tasks with scheduler.yield()
async function processLargeDataset(items: Item[]) {
  const CHUNK_SIZE = 50

  for (let i = 0; i < items.length; i += CHUNK_SIZE) {
    const chunk = items.slice(i, i + CHUNK_SIZE)
    processChunk(chunk)

    if (i + CHUNK_SIZE < items.length) {
      // Yield to main thread every 50ms
      await new Promise(resolve => setTimeout(resolve, 0))
    }
  }
}

// Or use scheduler.yield() (Chrome 115+)
for (let i = 0; i < items.length; i += CHUNK_SIZE) {
  processChunk(items.slice(i, i + CHUNK_SIZE))
  await scheduler.yield()
}

Common INP causes:

  • Expensive event handlers (click, keydown, input)
  • Synchronous layout reads/writes (layout thrashing)
  • Large DOM manipulations in single frame
  • JSON.parse() on large payloads (> 50KB)
CLS optimization
css
/* Reserve space for images */
img, video, iframe {
  width: 100%;
  height: auto;
  aspect-ratio: attr(width) / attr(height);
}

/* Reserve space for dynamic content */
.ad-container {
  min-height: 250px;
}

/* Prevent layout shift from web fonts */
body {
  font-display: swap;
}

/* Fixed size for injected elements */
.cookie-banner {
  min-height: 80px;
}
Step 3: Profile backend
bash
# Node.js CPU profile
node --cpu-prof --cpu-prof-interval=1 server.js
# Analyze: clinic doctor -- node server.js

# Node.js heap snapshot
node --heapsnapshot server.js
# Load in Chrome DevTools > Memory tab

# Python profiling
python -m cProfile -o output.prof server.py
# Analyze: snakeviz output.prof
SymptomLikely causeFix
High CPUN+1 queries, synchronous cryptoAdd eager loading. Use async operations.
High memoryNo streaming. Array growth.Stream responses. Paginate results.
High latency p99DB lock contentionAdd indexes. Use read replicas.
GC pausesHigh allocation ratePool objects. Reduce allocations. Use Buffer pools.
Connection timeoutsPool exhaustionIncrease pool size. Add connection queue.
Step 4: Bundle analysis
bash
# Next.js
ANALYZE=true next build

# Vite/Rollup
npx vite-bundle-visualizer

# Generic
npx source-map-explorer dist/**/*.js
TargetBudget
Total JS< 300KB (gzipped)
Total CSS< 50KB (gzipped)
Total fonts< 100KB
First load JS< 100KB (gzipped)
Total image payload< 500KB
Largest chunk< 150KB (gzipped)
Step 5: Caching strategy decision tree
WhatCache whereTTL
Static assets (JS, CSS, images)CDN + browser1 year (versioned filenames)
API responses (public, stable)CDN + HTTP Cache-Control5 min to 1h (stale-while-revalidate)
Dynamic data (user-specific)Redis30s to 5min
Database query resultsApplication memory (LRU)10s
Full pages (public)CDN + Edge caching5 min
Auth tokensNever cache—
Step 6: Performance budgets in CI
json
{
  "ci": {
    "assert": {
      "assertions": {
        "categories:performance": ["error", { "minScore": 0.9 }],
        "largest-contentful-paint": ["error", { "maxNumericValue": 2500 }],
        "interactive": ["error", { "maxNumericValue": 3800 }],
        "total-blocking-time": ["error", { "maxNumericValue": 200 }],
        "cumulative-layout-shift": ["error", { "maxNumericValue": 0.1 }],
        "resource-summary:script:size": ["warn", { "maxNumericValue": 300000 }]
      }
    }
  }
}
bash
npx lighthouse https://staging.example.com --output=json | \
  npx lighthouse-ci --collect --assert

Production Checklist

  • Lighthouse Performance > 90 (mobile throttled)
  • LCP < 2.5s (p75 field data)
  • INP < 200ms (p75 field data)
  • CLS < 0.1 (p75 field data)
  • Bundle: JS < 300KB, CSS < 50KB (gzipped)
  • Images: WebP/AVIF, srcset, lazy loading below fold
  • Fonts: self-hosted, font-display: swap, subset
  • Critical CSS inlined, rest deferred
  • Hero image preloaded with fetchpriority="high"
  • Server response < 200ms (p95)
  • N+1 queries detected and fixed
  • CDN + HTTP caching configured
  • CI: Lighthouse budget enforcement
  • RUM (Real User Monitoring) configured

Anti-Patterns

Anti-patternFix
Optimizing without measuringAlways measure first. Field data > lab data.
Only testing on dev machineTest on real devices with throttling (3G, 4x CPU slowdown)
Cache everythingCache only what changes infrequently. Stale cache is worse than no cache.
Lazy loading above-fold imagesOnly lazy load below-fold. LCP image must load immediately.
Bundle splitting too aggressivelySplit at route boundaries. Not by component.
Optimizing non-bottleneckUse Lighthouse + RUM to find actual bottleneck.
Ignoring mobileMobile is 2-4x slower than desktop. Optimize for mobile first.
No performance budgetCI must fail when budget exceeded.
Show full SKILL.md (297 more words)Show less

Sources

  • web.dev — Core Web Vitals
  • Lighthouse documentation
  • Addy Osmani — Performance optimization patterns
  • Paul Lewis — RequestAnimationFrame, compositor-only properties
  • Node.js performance guide
  • clinic.js — Node.js profiling
  • WebPageTest — Real device testing
  • Chrome UX Report — Field data for Core Web Vitals

Error Handling

CauseFix
Lighthouse audit crashes on SPA with hash routingUse --chrome-flags="--disable-web-security" or serve localhost via static server, never file://
Lighthouse scores vary 5+ points between runsNormal. Run 3-5 times, use median. Always audit Incognito with no extensions. Variance from network jitter and CPU scheduling
Bundle analyzer can't parse source maps — blank treemapVerify devtool: 'hidden-source-map' in webpack/Vite. Regenerate build with source maps enabled. Check sourceMapFilename matches
RUM field data shows much worse LCP than lab (Lighthouse)Lab is synthetic (fast CPU/network). Field data from real users on slow devices. Trust field data. Optimize for p75, not median
Performance budget assertion fails CI on every PRInvestigate which chunk exceeded budget immediately. Treat as build failure. Block merge until resolved or budget explicitly raised with justification
Chrome DevTools Performance tab freezes on large trace (>30s)Record shorter traces (5-10s max). Use --user-data-dir with clean profile. Export HAR for sharing instead of full trace
clinic doctor fails with "Cannot find module"Works only with Node.js < 22. For Node 22+, use node --cpu-prof and analyze with Chrome DevTools. clinic is community-maintained, lagging Node releases
WebPageTest results vary significantly by test locationTest from 2+ geographic regions. Use medianRun and repeatView in WPT API. Document which locations were tested in audit report

Checklist

  • Skill loads without errors in the AI agent
  • YAML frontmatter is valid (description, compatibility, audience)
  • Workflow section provides clear step-by-step instructions
  • Error handling section covers common failure modes
  • All referenced files (references/, scripts/, assets/) exist
  • Skill triggers correctly for intended use cases
  • No broken links or missing resources

© EliasOulkadi, 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 4 other files (scripts, references) in .pack/skills/performance-profiler of EliasOulkadi/shokunin.

  • SKILL.md
  • references/backend-performance.md
  • references/web-vitals.md
  • scripts/audit-lighthouse.ps1
  • scripts/profile-node.ps1

Open the folder on GitHubat commit 4c68e5b

Compare with similar skills

Performance Profiler 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 Profiler compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Performance Profiler this skillEliasOulkadi/shokunin114—~2.7kAutomated safety check: NotesMIT
Core Web VitalsvmDeshpande/ai-agent-automation1784 repos~3.6kAutomated safety check: PassMIT
Bun Buildinvolvex/youtube-music-cli456—~2.1kAutomated safety check: NotesMIT
Frontend UIoomol-lab/open-flow234—~819Automated safety check: PassApache-2.0
Next.js DeveloperJeffallan/claude-skills12k—~1.4kAutomated safety check: PassMIT
Core Web Vitalstheopenco/llmgateway1.7k—~955Automated safety check: PassCustom licence

Similar skills

  • Core Web Vitals

    vmDeshpande/ai-agent-automation

    Optimize Core Web Vitals (LCP, INP, CLS) for better page experience and search ranking.

    178 GitHub starsUsed in 4 repos~3.6k tokens
    Frontend & DesignAuto-check passed
  • Bun Build

    involvex/youtube-music-cli

    Create optimized production bundles with Bun's native bundler.

    456 GitHub stars~2.1k tokensUpdated 2 days ago
    Frontend & DesignAuto-check: notes
  • Frontend UI

    oomol-lab/open-flow

    Implement and review Open Flow frontend components, styling, layout, and interactions.

    234 GitHub stars~819 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Next.js Developer

    Jeffallan/claude-skills

    Builds Next.js 14+ apps on the App Router with server components, server actions, explicit caching, SEO metadata, loading and error boundaries and Vercel deployment.

    12k GitHub stars~1.4k tokensUpdated 7 days ago
    Frontend & DesignAuto-check passed
  • Core Web Vitals

    theopenco/llmgateway

    Diagnose and improve Largest Contentful Paint, Interaction to Next Paint, and Cumulative Layout Shift in this repository's Next.js App Router frontends.

    1.7k GitHub stars~955 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Dependency Audit

    agulli/atlas-agents

    Audit project dependencies for vulnerabilities, license issues, and bloat.

    579 GitHub stars~477 tokensUpdated 2 mo ago
    Frontend & DesignAuto-check passed

More from EliasOulkadi/shokunin

All 49 skills in this repo
  • CI CD

    EliasOulkadi/shokunin

    Design CI/CD pipelines for GitHub Actions, GitLab CI, and CircleCI with matrix builds, test sharding, caching, Docker layer caching, OIDC auth, deployment strategies (rolling, blue-green, canary)…

    114 GitHub stars~3.4k tokensUpdated 5 days ago
    Auto-check: notes
  • Component Forge

    EliasOulkadi/shokunin

    Build production-grade components for React, Vue 3, and Svelte 5 with all states (loading, empty, error, success, idle), TypeScript strict, WCAG 2.2 accessibility, server components (RSC), and…

    114 GitHub stars~3.6k tokensUpdated 5 days ago
    Auto-check: notes
  • DB Admin

    EliasOulkadi/shokunin

    PostgreSQL database administration — backup/restore (pgdump, PITR, WAL archiving), health monitoring (connections, bloat, cache hit ratio, dead tuples), connection pooling (PgBouncer), replication…

    114 GitHub stars~2k tokensUpdated 5 days ago
    Auto-check: notes
  • DB Sculptor

    EliasOulkadi/shokunin

    Design database schemas with Prisma/Drizzle, PostgreSQL index strategy (B-tree, GIN, GiST, BRIN, Hash), query optimization (EXPLAIN ANALYZE), migration safety (expand/contract, zero-downtime), and…

    114 GitHub stars~3.1k tokensUpdated 5 days ago
    Auto-check: notes
  • Docker

    EliasOulkadi/shokunin

    Optimize Docker images with multi-stage builds, distroless bases, BuildKit cache mounts, multi-arch builds, compose watch, security hardening (non-root, seccomp, capabilities drop), and…

    114 GitHub stars~3.8k tokensUpdated 5 days ago
    Auto-check: notes
  • Error Handler

    EliasOulkadi/shokunin

    Design error handling, structured logging, and observability with OpenTelemetry (traces, metrics, logs), error classification, recovery patterns (retry with jitter, circuit breaker, bulkhead…

    114 GitHub stars~3.6k tokensUpdated 5 days ago
    Auto-check: notes

Questions about Performance Profiler

What does Performance Profiler do?

Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching…. Performance Profiler is an agent skill from EliasOulkadi/shokunin. Performance profiling and optimization for web apps — Core Web Vitals (LCP, INP, CLS), Lighthouse audits, bundle analysis, backend profiling (CPU, memory, DB queries), N+1 detection, caching strategies (Redis, CDN, HTTP), and performance budgets.

When should I use Performance Profiler?

Performance Profiler fits situations like: user asks to improve performance; run Lighthouse audit; profile a Node.js app; optimize Core Web Vitals.

How do I install Performance Profiler in Claude Code?

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

How do I install Performance Profiler in Codex?

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

Can I use Performance Profiler 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 EliasOulkadi/shokunin --skill performance-profiler -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-profiler, .gemini/skills/performance-profiler, .github/skills/performance-profiler and .opencode/skills/performance-profiler in your project.

What does Performance Profiler need to run?

Going by SKILL.md and its folder, Performance Profiler needs PowerShell for the scripts in its folder and the command-line tools its instructions call (npx, node and python). Our summary lists: Python 3; Node.js; PowerShell; Docker. Its frontmatter pre-approves these tools: Read, Bash, Write, WebFetch. Compatibility (from SKILL.md): opencode.

Does Performance Profiler access the network?

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

Is Performance Profiler safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Performance Profiler use?

Performance Profiler is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Performance Profiler use?

About 2.7k 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 3.3k tokens, read only when the agent opens those files.

What are the alternatives to Performance Profiler?

Skills that share tags, products or a category with Performance Profiler: Core Web Vitals (vmDeshpande/ai-agent-automation, 178 stars), Bun Build (involvex/youtube-music-cli, 456 stars), Frontend UI (oomol-lab/open-flow, 234 stars) and Next.js Developer (Jeffallan/claude-skills, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Performance Profiler?

EliasOulkadi (a GitHub user) maintains it in EliasOulkadi/shokunin, which has 114 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 5, 2026.

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