Agent skill

Performance

by kid-sid in kid-sid/claude-spellbook

A skill your agent uses when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a…

MITAuto-check passedDatabases

Install Performance

skills CLI
$ npx skills add kid-sid/claude-spellbook --skill performance -a claude-code

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

GitHub CLI
$ gh skill install kid-sid/claude-spellbook performance --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/kid-sid/claude-spellbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/performance .claude/skills/performance && 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
GitHub stars
189
Token cost
~3.8k tokens
SKILL.md length
983 words
Files
1
Skills in repo
54
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a…

  • Diagnosing a slow HTTP endpoint
  • SKILL.md covers When to Activate, Profiling, Caching Strategies and HTTP Cache Headers, plus 3 more sections
  • Calls npx and go
  • High-latency service — profiling

What it does

Performance is an agent skill from kid-sid/claude-spellbook. Use when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a latency budget. For slow queries or missing indexes, use database-design or postgresql.

Its SKILL.md is about 3.8k 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 Databases, covering Performance optimization, Query optimization and Database schema design. It works with PostgreSQL. The repository describes itself as: A curated collection of skills, prompts, and workflows that extend Claude's capabilities — your personal grimoire for AI-powered development. The licence is MIT.

When your agent uses it

  • Diagnosing a slow HTTP endpoint
  • High-latency service — profiling
  • Adding an application-level cache
  • Offloading CPU-bound work to threads

Example prompts

  • “/performance”

Requirements

  • Python 3
  • Node.js

What it can do on your machine

Read from SKILL.md and the folder at commit a7c2ac9. 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:

    • npx
    • go

    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.

Context cost

Performance loads about 3.8k tokens when it runs. Until then it costs about 69 tokens; SKILL.md has 983 words of instructions outside code blocks.

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

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 kid-sid/claude-spellbook at commit a7c2ac9, republished under its MIT licence (© kid-sid). 983 words, ~3,831 tokens.

Download SKILL.mdSave it as .claude/skills/performance/SKILL.md (or your agent's skills folder).
name
performance
description
Use when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a latency budget. For slow queries or missing indexes, use database-design or postgresql.

Performance

A structured guide to profiling, caching, database optimization, async patterns, and performance budgets for production services.

When to Activate

  • Profiling a slow endpoint or service
  • Implementing a caching layer (in-process, Redis, or HTTP)
  • Optimizing a database query or fixing N+1 problems
  • Setting a performance budget for an API endpoint
  • Reducing memory usage or GC pressure
  • Choosing between sync and async patterns for a workload

Profiling

When to Profile
  • Profile before optimizing — never guess where the bottleneck is
  • CPU profiling — where is time spent (function call time)?
  • Memory profiling — what objects are consuming heap space?
  • I/O profiling — what is blocking on disk or network?
Python — cProfile + snakeviz
python
import cProfile
import pstats
import io

pr = cProfile.Profile()
pr.enable()
result = my_slow_function()
pr.disable()

s = io.StringIO()
ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
ps.print_stats(20)  # top 20 slowest functions
print(s.getvalue())

# Profile a whole script from the command line:
# python -m cProfile -o output.prof script.py
# snakeviz output.prof  # opens interactive flame graph in browser

Memory profiling with memory_profiler:

python
# pip install memory-profiler
from memory_profiler import profile

@profile
def my_function():
    # annotated line-by-line memory usage
    data = [x for x in range(10_000_000)]
    return data
TypeScript/Node.js — clinic.js + 0x
bash
# CPU flame graph
npx 0x -- node dist/server.js
# Opens a generated .html flame graph in the browser

# Heap snapshot + event loop lag
npx clinic doctor -- node dist/server.js

# CPU flame graph via clinic
npx clinic flame -- node dist/server.js

# Async waterfall / I/O bottlenecks
npx clinic bubbleprof -- node dist/server.js
Go — pprof
go
import (
    "net/http"
    _ "net/http/pprof" // side-effect import registers /debug/pprof handlers
)

// In main(), run alongside your app server:
go func() {
    http.ListenAndServe("localhost:6060", nil)
}()
bash
# CPU profile (30-second sample)
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=30

# Memory (heap) profile
go tool pprof http://localhost:6060/debug/pprof/heap

# In the pprof interactive prompt:
# (pprof) top10          — top 10 functions by CPU or memory
# (pprof) web            — open flame graph in browser (requires graphviz)
# (pprof) list FuncName  — annotated source with per-line costs
Reading Flame Graphs
  • X-axis — time (box width = proportion of total execution time)
  • Y-axis — call stack depth (parent calls children above it)
  • Wide flat boxes near the top — hot code paths; primary optimization targets
  • Long stacks with narrow top boxes — deep recursion; usually not a problem
  • Plateaus — the widest boxes in the middle of a stack often hide the real work

Caching Strategies

Strategy Comparison
StrategyScopeLatencyConsistencyBest For
In-process LRUSingle instance~nanosecondsPer-instance (inconsistent across replicas)Immutable lookups, config, computed values
Distributed (Redis)All instances~1 msEventually consistentSession state, rate limits, shared counters
HTTP cache (CDN/browser)Client + CDN~0 ms on hitTTL-basedPublic read-heavy content, static assets
Cache-Aside Pattern (most common)
python
def get_user(user_id: str) -> User:
    # 1. Check cache first
    cached = redis.get(f"user:{user_id}")
    if cached:
        return User.from_json(cached)

    # 2. Cache miss — fetch from DB
    user = db.query(User).filter(User.id == user_id).first()

    # 3. Populate cache with TTL
    redis.setex(f"user:{user_id}", 300, user.to_json())  # 5 min TTL
    return user
Caching Pattern Comparison
PatternDescriptionConsistencyUse When
Cache-asideApp manages cache reads and writesEventualGeneral purpose (most cases)
Read-throughCache fetches from DB automatically on missEventualSimplify application read code
Write-throughWrite to cache and DB synchronouslyStrongRead-heavy workloads needing consistency
Write-behindWrite to cache, async write to DBEventualWrite-heavy workloads that can accept risk
Cache Invalidation
  • TTL (time-to-live) — simplest; accept stale data up to TTL duration
  • Event-driven — invalidate on write (redis.delete(f"user:{user_id}") after UPDATE)
  • Write-through — always write to both cache and DB; no stale data, but slower writes
  • Avoid — invalidating cache on reads is an anti-pattern; adds latency to hot paths
In-Process LRU Cache
python
# Python
from functools import lru_cache

@lru_cache(maxsize=1000)
def get_config(key: str) -> str:
    return db.get_config(key)
typescript
// TypeScript
import LRU from 'lru-cache';

const cache = new LRU<string, string>({ max: 1000, ttl: 1000 * 60 * 5 });

function getConfig(key: string): string {
  if (cache.has(key)) return cache.get(key)!;
  const value = db.getConfig(key);
  cache.set(key, value);
  return value;
}
go
// Go
import "github.com/hashicorp/golang-lru/v2"

cache, _ := lru.New[string, string](1000)

func getConfig(key string) string {
    if val, ok := cache.Get(key); ok {
        return val
    }
    val := db.GetConfig(key)
    cache.Add(key, val)
    return val
}

HTTP Cache Headers

HeaderExample ValueWhat It Controls
Cache-Controlmax-age=3600, s-maxage=86400Browser and CDN TTL
ETag"abc123"Version fingerprint for conditional requests
Last-ModifiedWed, 15 Jan 2025 10:00:00 GMTLast modified time for conditional requests
VaryAccept-Encoding, Accept-LanguageKeys the cache on these request headers
Key Cache-Control Directives
DirectiveMeaning
max-age=NBrowser caches for N seconds
s-maxage=NCDN caches for N seconds (overrides max-age for CDN)
no-cacheRevalidate with server on every request (ETag/If-None-Match check)
no-storeNever cache (sensitive data)
privateBrowser only — not stored by CDN
stale-while-revalidate=NServe stale while fetching fresh in background
immutableContent will never change (pair with hash-based filenames)
Conditional Requests (ETag)
http
# First request
GET /api/products/123
→ 200 OK
   ETag: "v2-abc123"
   Cache-Control: max-age=60

# After TTL expires — client sends ETag back
GET /api/products/123
If-None-Match: "v2-abc123"
→ 304 Not Modified   (no response body — saves bandwidth)
# or, if product changed:
→ 200 OK
   ETag: "v3-def456"

Database N+1 Problem

The Problem
python
# BAD: N+1 — 1 query for orders + 1 query per order for its user
orders = db.query(Order).all()      # 1 query
for order in orders:
    print(order.user.name)          # N queries (lazy load per order)

With 500 orders this emits 501 queries. Use EXPLAIN ANALYZE or ORM query logging to detect this in review.

Fix Per ORM

Python — SQLAlchemy

python
from sqlalchemy.orm import selectinload, joinedload

# selectinload: 2 queries total — 1 for orders, 1 IN query for all related users
orders = db.query(Order).options(selectinload(Order.user)).all()

# joinedload: 1 query with a JOIN (better for single related object)
orders = db.query(Order).options(joinedload(Order.user)).all()

TypeScript — Prisma

typescript
// BAD
const orders = await prisma.order.findMany();
for (const order of orders) {
  const user = await prisma.user.findUnique({ where: { id: order.userId } });
}

// GOOD — Prisma batches the related fetches automatically
const orders = await prisma.order.findMany({
  include: { user: true },
});

Go — GORM

go
var orders []Order

// BAD — N separate queries inside the loop
db.Find(&orders)
for i := range orders {
    db.First(&orders[i].User, orders[i].UserID)
}

// GOOD — Preload issues a single IN query for all users
db.Preload("User").Find(&orders)
Detecting N+1 in Practice
ToolHow to Enable
SQLAlchemyecho=True on create_engine, or use sqlalchemy-query-counter
Prismalog: ['query'] in PrismaClient constructor
GORMdb.Debug() or custom logger
Django ORMdjango-debug-toolbar or connection.queries
GeneralEXPLAIN ANALYZE SELECT ... in psql to see sequential scans

Async Patterns

I/O-Bound vs CPU-Bound
Work TypePythonTypeScript/Node.jsGo
I/O-bound (HTTP calls, DB)asyncio / async defasync/await (native event loop)goroutines (native)
CPU-bound (computation)ProcessPoolExecutor (bypass GIL)worker_threads modulegoroutines (native, real parallelism)
Background jobsCelery, RQBullMQ, Agendagoroutines + channels
Python — asyncio for I/O-Bound Work
python
import asyncio
import aiohttp

async def fetch_all(urls: list[str]) -> list[dict]:
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        return await asyncio.gather(*tasks)  # concurrent, not parallel

async def fetch(session: aiohttp.ClientSession, url: str) -> dict:
    async with session.get(url) as response:
        return await response.json()

CPU-bound work in Python must use ProcessPoolExecutor to escape the GIL:

python
from concurrent.futures import ProcessPoolExecutor

def cpu_heavy(data: list) -> int:
    return sum(x ** 2 for x in data)

async def process_many(chunks: list[list]) -> list[int]:
    loop = asyncio.get_event_loop()
    with ProcessPoolExecutor() as pool:
        results = await asyncio.gather(
            *[loop.run_in_executor(pool, cpu_heavy, chunk) for chunk in chunks]
        )
    return results
TypeScript/Node.js — Protect the Event Loop
typescript
import fs from 'fs';
import { Worker, isMainThread, workerData, parentPort } from 'worker_threads';

// BAD: sync read blocks the event loop for all requests
const data = fs.readFileSync('large-file.json', 'utf8');

// GOOD: async I/O — yields control back to event loop
const data = await fs.promises.readFile('large-file.json', 'utf8');

// BAD: CPU-heavy work in the main thread stalls all requests
const result = heavyComputation(data);

// GOOD: offload CPU work to a worker thread
function runInWorker(payload: unknown): Promise<unknown> {
  return new Promise((resolve, reject) => {
    const worker = new Worker(__filename, { workerData: payload });
    worker.on('message', resolve);
    worker.on('error', reject);
  });
}
Go — Goroutines for Concurrency
go
// Fan-out: fire N goroutines, collect with WaitGroup + channel
func fetchAll(urls []string) []Result {
    results := make(chan Result, len(urls))
    var wg sync.WaitGroup

    for _, url := range urls {
        wg.Add(1)
        go func(u string) {
            defer wg.Done()
            resp, err := http.Get(u)
            results <- Result{URL: u, Err: err, Body: readBody(resp)}
        }(url)
    }

    wg.Wait()
    close(results)

    var out []Result
    for r := range results {
        out = append(out, r)
    }
    return out
}

Show full SKILL.md (392 more words)Show less

Performance Budgets

Deriving a Budget from SLOs
  • If the SLO is p99 < 500 ms, the internal service call budget is ~200 ms (leave headroom for network, serialization, retries)
  • Decompose latency: total = DB + cache + downstream API + serialization + middleware
  • Assign each component a share; the tightest constraint sets the overall shape
Endpoint Budget Reference
Endpoint Categoryp50 Targetp99 Target
Read-only lookups< 50 ms< 200 ms
Search / aggregation< 200 ms< 1 s
Write operations< 100 ms< 500 ms
Background jobsN/AN/A (use queue depth + processing lag metrics)
CI Regression Detection
yaml
# k6 threshold example — fails the PR if p99 regresses
import http from 'k6/http';
import { check } from 'k6';

export const options = {
  thresholds: {
    http_req_duration: ['p(99)<500'],  // fail if p99 > 500ms
  },
};

export default function () {
  const res = http.get('http://localhost:3000/api/users/1');
  check(res, { 'status 200': (r) => r.status === 200 });
}

Run this in CI on every PR:

bash
k6 run --vus 50 --duration 30s load-test.js
# Exit code non-zero if any threshold is breached

Fail the build if p99 degrades more than 20% from the baseline captured on main.

See also: database-design, observability, performance-testing


Red Flags

  • Optimizing before profiling — intuition targets the wrong 5% of runtime; always profile with representative load before touching any code
  • Profiling with 1K rows when production has 10M — hotspots at small scale vanish or invert at large scale; profile with production-representative data volume
  • Blanket eager loading to fix N+1 — fetching every relationship on every query loads data you never use; apply selectinload/joinedload surgically to proven hotspots
  • In-process LRU cache across forked workers — forked processes maintain separate memory spaces; a cache write in one worker is invisible to others; use Redis for cross-process caching
  • Async for CPU-bound work — Python asyncio and Node.js event loops don't parallelize CPU; CPU-bound work blocks the loop; offload to ProcessPoolExecutor or a task queue
  • ETags set but If-None-Match not handled server-side — setting ETag without handling conditional requests means clients never get 304; implement both sides of the exchange
  • Mean latency as the primary metric — mean hides tail problems; always track p95 and p99; the slowest 1% of requests represents the worst user experience

Checklist

  • Profiled before optimizing — no premature optimization
  • Flame graph or profile output captured to identify the actual bottleneck
  • N+1 queries detected with EXPLAIN ANALYZE or ORM query logging
  • Eager loading configured for all related-entity fetches
  • Cache layer added for hot read paths (in-process for single-instance, Redis for distributed)
  • Cache keys include version or tenant identifier to prevent cross-user data leaks
  • Cache-Control headers set for all public API responses
  • ETags implemented for cacheable resources (304 responses save bandwidth)
  • async/await or equivalent used for all I/O-bound operations
  • CPU-bound work offloaded to worker processes or threads
  • Performance budget defined per endpoint category and documented
  • Baseline p50/p95/p99 measured before and after changes

© kid-sid, 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 skills/performance of kid-sid/claude-spellbook.

Open the folder on GitHubat commit a7c2ac9

Compare with similar skills

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.

Performance compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Performance this skillkid-sid/claude-spellbook189—~3.8kAutomated safety check: PassMIT
Database Domain Specialistmodu-ai/moai-adk1.2k—~2.8kAutomated safety check: PassApache-2.0
Postgres PatternsThibautBaissac/rails_ai_agents6657 repos~922Automated safety check: PassMIT
Jpa Hibernate OptimizationHack23/cia239—~531Automated safety check: PassApache-2.0
Supabase Postgres Best Practicessupabase/agent-skills2.7k24 repos~808Automated safety check: PassMIT
Veloxdb Scalable Performanceveloxbase/veloxdb646—~1.7kAutomated safety check: PassMIT

Similar skills

  • Database guidance for PostgreSQL, MongoDB, Redis and Oracle plus Neon, Supabase and Firestore: schema design, indexing, query tuning and cloud database choice.

    1.2k GitHub stars~2.8k tokensUpdated today
    DatabasesAuto-check passed
  • Postgres Patterns

    ThibautBaissac/rails_ai_agents

    PostgreSQL database patterns for query optimization, schema design, indexing, and security.

    665 GitHub starsUsed in 7 repos~922 tokens
    DatabasesAuto-check passed
  • Optimize JPA/Hibernate: entity design, query performance, N+1 prevention, caching strategies

    239 GitHub stars~531 tokensUpdated yesterday
    DatabasesAuto-check passed
  • Official

    Gives the agent Postgres rules to consult before writing or changing tables, queries, indexes, RLS policies or migrations, and when diagnosing slow queries.

    2.7k GitHub starsUsed in 24 repos~808 tokens
    DatabasesAuto-check passed
  • Guides scalability and performance work for VeloxDB's Tauri + Rust PostgreSQL backend and React + TanStack frontend.

    646 GitHub stars~1.7k tokensUpdated 7 days ago
    DatabasesAuto-check passed
  • Database Expert

    cin12211/orca-q

    Database performance optimization, schema design, query analysis, and connection management across PostgreSQL, MySQL, MongoDB, and SQLite with ORM integration.

    223 GitHub stars~2.8k tokensUpdated 16 days ago
    DatabasesAuto-check passed

More from kid-sid/claude-spellbook

All 54 skills in this repo
  • Accessibility

    kid-sid/claude-spellbook

    A skill your agent uses when building or reviewing UI components for keyboard and screen reader compatibility, adding ARIA to custom widgets, auditing a page for WCAG AA conformance, or preparing…

    189 GitHub stars~3.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Agentex

    kid-sid/claude-spellbook

    A skill your agent uses when building, wiring, or debugging an Agentex agent — choosing agent type, configuring acp.py and manifest.yaml, using adk.messages or adk.state, or resolving…

    189 GitHub stars~2.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • AI Engineer

    kid-sid/claude-spellbook

    A skill your agent uses when building production LLM applications — designing RAG pipelines, choosing vector databases, implementing agent orchestration, optimizing cost, or adding AI safety…

    189 GitHub stars~3.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Angular

    kid-sid/claude-spellbook

    A skill your agent uses when building or refactoring Angular applications — choosing between signals, RxJS, and NgRx for state, configuring routing with guards and lazy loading, optimizing change…

    189 GitHub stars~5k tokensUpdated 2 mo ago
    Auto-check passed
  • API Design

    kid-sid/claude-spellbook

    A skill your agent uses when designing new REST endpoints, reviewing an existing API contract, adding pagination or filtering, planning a versioning strategy, or building a public or partner-facing…

    189 GitHub stars~3.6k tokensUpdated 2 mo ago
    Auto-check passed
  • Auth

    kid-sid/claude-spellbook

    A skill your agent uses when implementing login flows, issuing or validating JWTs, setting up OAuth2/OIDC with a provider, designing role-based or attribute-based access control, securing API…

    189 GitHub stars~3.2k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Categories

Questions about Performance

What does Performance do?

A skill your agent uses when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a…. Performance is an agent skill from kid-sid/claude-spellbook. Use when diagnosing a slow HTTP endpoint or high-latency service — profiling, adding an application-level cache, offloading CPU-bound work to threads or workers, or defining a latency budget.

When should I use Performance?

Performance fits situations like: diagnosing a slow HTTP endpoint; high-latency service — profiling; adding an application-level cache; offloading CPU-bound work to threads.

How do I install Performance in Claude Code?

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

How do I install Performance in Codex?

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

Can I use Performance 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 kid-sid/claude-spellbook --skill 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/performance, .gemini/skills/performance, .github/skills/performance and .opencode/skills/performance in your project.

What does Performance need to run?

Going by SKILL.md and its folder, Performance needs the command-line tools its instructions call (npx and go). Our summary lists: Python 3; Node.js.

Does Performance 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 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 use?

Performance 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 use?

About 3.8k 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.

What are the alternatives to Performance?

Skills that share tags, products or a category with Performance: Database Domain Specialist (modu-ai/moai-adk, 1.2k stars), Postgres Patterns (ThibautBaissac/rails_ai_agents, 665 stars), Jpa Hibernate Optimization (Hack23/cia, 239 stars) and Supabase Postgres Best Practices (supabase/agent-skills, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Performance?

kid-sid (a GitHub user) maintains it in kid-sid/claude-spellbook, which has 189 GitHub stars. The repository holds 54 skills in this directory. The repository was last updated on August 5, 2026.

Source: kid-sid/claude-spellbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.