firstp1ck/pi-coding-agent-forge/performance-optimizer

Claude Code and agent skill by firstp1ck/pi-coding-agent-forge

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Agents should invoke this skill for slow code, high CPU/memory, latency, large data processing, algorithmic complexity, profiling plans, benchmarks, or optimization requests. Profiles first and weighs trade-offs before changing code.

Install

npx vskill@latest install firstp1ck/pi-coding-agent-forge/performance-optimizer

SKILL.md

Performance Optimizer

Evidence-based performance optimization. Never optimize without profiling first. Every optimization comes with a trade-off analysis.

Quick Start

Investigate a Performance Issue
  1. Reproduce: Can you reliably reproduce the slowness? What are the conditions?
  2. Measure: Profile to find the actual bottleneck. Don't guess.
  3. Analyze: What's the root cause? Algorithm? I/O? Memory? Contention?
  4. Propose: 2-3 options with trade-offs (speed vs readability, memory vs CPU, etc.)
  5. Verify: After optimization, re-measure to confirm improvement.

The cardinal rule: Profile first, optimize second. Gut feelings about performance are wrong more often than right.


Profiling Toolkits

Rust
ToolPurposeCommand
cargo benchMicro-benchmarks (criterion)cargo bench
cargo flamegraphCPU flamegraph visualizationcargo flamegraph --bin <name>
perfLinux perf eventsperf record --call-graph dwarf ./target/release/<bin>
valgrind --tool=callgrindInstruction-level profilingvalgrind --tool=callgrind ./target/release/<bin>
cargo bloatBinary size analysiscargo bloat --release
DHAT (via valgrind)Heap allocation profilingvalgrind --tool=dhat ./target/release/<bin>

Quick benchmark setup with criterion:

rust
// benches/my_bench.rs
use criterion::{criterion_group, criterion_main, Criterion};
fn benchmark_function(c: &mut Criterion) {
c.bench_function("descriptive name", |b| {
b.iter(|| {
// code to benchmark
})
});
}
criterion_group!(benches, benchmark_function);
criterion_main!(benches);
TypeScript / React
ToolPurposeHow
React DevTools ProfilerComponent render timingBrowser extension, Profiler tab
LighthouseOverall web performanceChrome DevTools > Lighthouse
console.time() / console.timeEnd()Quick timingWrap suspicious code
webpack-bundle-analyzerBundle size analysisbun run build --analyze
performance.mark() / performance.measure()Web Performance APIPrecise timing of code sections
React <Profiler> componentProgrammatic render profilingWrap components in <Profiler>

Key React performance checks:

  • Unnecessary re-renders (use React DevTools "Highlight updates")
  • Large component trees re-rendering from state at the top
  • Missing useMemo / useCallback for expensive computations or stable references
  • Bundle size — are you importing entire libraries for one function?
Django / Python
ToolPurposeCommand
django-debug-toolbarSQL queries, template timingAdd to INSTALLED_APPS
cProfileFunction-level profilingpython -m cProfile -s cumtime manage.py <command>
py-spySampling profiler (no code changes)py-spy record -o profile.svg -- python manage.py runserver
silkDjango request/response profilingAdd to middleware
memory_profilerLine-by-line memory usage@profile decorator
django.db.connection.queriesRaw SQL query logfrom django.db import connection; print(connection.queries)

Key Django performance checks:

  • N+1 queries (use django-debug-toolbar or assertNumQueries in tests)
  • Missing database indexes on filtered/ordered columns
  • Unoptimized querysets (use .only(), .defer(), .values() when appropriate)
  • Template rendering time (are you doing computation in templates?)

Complexity Analysis

Big-O Quick Reference
ComplexityNameExampleScale
O(1)ConstantHashMap lookupHandles any size
O(log n)LogarithmicBinary searchHandles billions
O(n)LinearSingle pass over collectionHandles millions
O(n log n)LinearithmicGood sorting (merge, heap)Handles millions
O(n^2)QuadraticNested loops over same collectionHandles thousands
O(n^3)CubicTriple nested loopsHandles hundreds
O(2^n)ExponentialBrute-force subsetsHandles ~25
When to Care
  • O(1) to O(n): Almost never a problem. Don't optimize.
  • O(n log n): Fine for most use cases. Only optimize for very hot paths.
  • O(n^2): Watch the input size. Fine for n < 1000, problematic for n > 10000.
  • O(n^3) or worse: Red flag. Look for algorithmic improvements first.
Cyclomatic and Data Flow Complexity

Per the project coding standards:

  • Cyclomatic complexity: Must be < 25 per function
  • Data flow complexity: Must be < 25 per function

When complexity exceeds these thresholds, the refactoring-advisor skill should be used to plan decomposition.


Common Optimization Patterns

Rust-Specific
PatternWhenTrade-off
Replace Vec<Box<dyn Trait>> with enum dispatchKnown, finite set of variantsLess flexible, but no heap allocation per item
Use &str instead of StringFunction doesn't need ownershipLifetime annotations may complicate API
Pre-allocate with Vec::with_capacity()Known or estimated collection sizeMinor memory overhead if estimate is wrong
Use SmallVecUsually-small collectionsExtra dependency, more complex type
Replace clone() with borrowsCloning on hot pathsMore lifetime management
Use rayon for data parallelismCPU-bound work on large collectionsThread pool overhead for small collections
React/TypeScript-Specific
PatternWhenTrade-off
React.memo()Component re-renders with same propsExtra memory for memoized result, stale risk if deps wrong
useMemo / useCallbackExpensive computation or stable reference neededComplexity, memory for cache
Code splitting with React.lazy()Large bundles, route-level splittingLoading states, waterfall risk
Virtualized lists (react-window)Rendering 100+ items in a listMore complex implementation
Debounce/throttleFrequent events (scroll, resize, input)Delayed response
Django/Python-Specific
PatternWhenTrade-off
select_related()ForeignKey lookups in loopsLarger initial query, but fewer total queries
prefetch_related()Reverse FK / M2M lookups in loopsExtra query, but bounded number of queries
.values() / .values_list()Only need specific columnsLose model instance methods
Database indexesFrequently filtered/ordered columnsSlower writes, disk space
Caching (django.core.cache)Expensive queries repeated oftenStale data risk, cache invalidation complexity
Bulk operationsCreating/updating many rowsLess granular error handling

Trade-Off Analysis Template

When recommending an optimization, always present:

markdown
### Optimization: [Description]
**Current:** [What's happening now, with measured performance]
**Proposed:** [What to change]
| Dimension | Before | After |
|---|---|---|
| Time complexity | O(n^2) | O(n log n) |
| Space complexity | O(1) | O(n) |
| Readability | Simple nested loop | Sort + scan requires comment |
| Maintainability | Easy to modify | Requires understanding of invariant |
**Recommendation:** [Proceed / Defer / Skip]
**Justification:** [Why this trade-off is or isn't worth it in this context]

Anti-Patterns: When NOT to Optimize

  • Premature optimization. If there's no measured performance problem, don't create complexity to solve one.
  • Micro-optimizing cold paths. That function called once at startup? Leave it readable.
  • Optimizing without benchmarks. "I think this is slow" is not evidence. Profile first.
  • Sacrificing correctness for speed. Fast and wrong is worse than slow and right.
  • Cargo-culting. "I read that HashMap is faster" — depends on the size, access pattern, and key type. Measure in your context.

Integration

  • Data: Performance findings logged to MEMORY.md
  • Tools: Can run profiling/benchmarking tools without asking (see execution policies in AGENTS.md)
  • Refactoring: When optimization requires restructuring, use the refactoring-advisor skill for safe migration planning
  • Trade-offs: Every optimization recommendation includes a trade-off table

_Arc skill — Performance profiling and optimization_

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
5

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/firstp1ck/pi-coding-agent-forge/performance-optimizer/badge)](https://verified-skill.com/skills/firstp1ck/pi-coding-agent-forge/performance-optimizer)

Something wrong with this skill or its page? Tell us.