performance-optimization
Skill33 starsChanged 4 months agoApache-2.0View on GitHub
Optimizes application performance. Use when performance requirements exist, when you suspect performance regressions, or when Core Web Vitals or load times need improvement. Use when profiling reveals bottlenecks that need fixing.
We split this skill into the rules it gives an agent
3 rules. 0 are common, 3 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 102 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 25
Before changing anything, capture the current state:
- Distinctive: line 42
Don't guess. Use profiling tools:
- Distinctive: line 177
After any performance change:
“Common” is measured: kept by at least 6 in 10 of the 102 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Performance Optimization
Overview
Measure first, then optimize. Never optimize without data. Performance problems have specific root causes — guessing wastes time and can introduce regressions. The goal is to identify the specific bottleneck, fix it, and measure the improvement.
When to Use
- A specific performance regression has been reported or measured
- A feature has a performance requirement (e.g., "< 200ms API response time")
- Core Web Vitals are in the "Needs Improvement" or "Poor" range
- Bundle size has grown significantly
When NOT to use: "Let's make it faster" without a measured baseline. Profile first.
The Measure-First Workflow
Step 1: Establish a Baseline
Before changing anything, capture the current state:
# API response time (via curl)
curl -w "@curl-format.txt" -s -o /dev/null https://api.gitscape.app/api/skills
# Frontend bundle size
npx vite build --mode production 2>&1 | grep "dist/"
# Lighthouse audit (frontend)
npx lighthouse https://gitscape.app --output json --output-path ./baseline.jsonRecord the specific numbers. You need them to prove the optimization worked.
Step 2: Profile to Find the Real Bottleneck
Don't guess. Use profiling tools:
Backend (Python FastAPI):
import cProfile
import pstats
with cProfile.Profile() as pr:
result = await generate_skill(repo)
stats = pstats.Stats(pr)
stats.sort_stats("cumulative")
stats.print_stats(20) # Top 20 hotspotsFrontend (React):
- Chrome DevTools → Performance tab → Record → Replay user action
- React DevTools Profiler → Identify components that re-render unnecessarily
Network:
- Chrome DevTools → Network tab → Filter by type, check response sizes and waterfall
Step 3: Fix Only the Measured Bottleneck
Fix the specific issue the profile reveals — not everything that could theoretically be faster.
Step 4: Measure After
Compare against the baseline. If the improvement isn't measurable, the optimization wasn't worth it.
Common Bottlenecks in GitScape
Large File Previews Freezing the Browser
// BAD: Rendering full file content for large files
function FilePreview({ content }: { content: string }) {
return <pre>{content}</pre>; // 10MB file = browser freeze
}
// GOOD: Truncate at a safe limit
const MAX_PREVIEW_CHARS = 10_000;
function FilePreview({ content }: { content: string }) {
const truncated = content.length > MAX_PREVIEW_CHARS;
return (
<div>
<pre>{truncated ? content.slice(0, MAX_PREVIEW_CHARS) : content}</pre>
{truncated && <p>Preview truncated — full content exported.</p>}
</div>
);
}Slow GitHub API Calls (N+1 Pattern)
# BAD: Separate API call per file (N+1)
async def get_file_contents(repo: str, paths: list[str]) -> dict:
result = {}
for path in paths:
# One API call per file
result[path] = await github.get_file(repo, path)
return result
# GOOD: Batch or parallelize
async def get_file_contents(repo: str, paths: list[str]) -> dict:
tasks = [github.get_file(repo, path) for path in paths]
contents = await asyncio.gather(*tasks, return_exceptions=True)
return {path: content for path, content in zip(paths, contents)
if not isinstance(content, Exception)}Unnecessary React Re-renders
// BAD: New object reference on every render
function SkillList({ skills }: Props) {
return <SkillFilters options={{ sortBy: 'name' }} />;
}
// GOOD: Stable reference
const DEFAULT_FILTER_OPTIONS = { sortBy: 'name' } as const;
function SkillList({ skills }: Props) {
return <SkillFilters options={DEFAULT_FILTER_OPTIONS} />;
}Large Bundle Size
// GOOD: Dynamic import for heavy, rarely-used features
const MonacoEditor = lazy(() => import('./MonacoEditor'));
function App() {
return (
<Suspense fallback={<div>Loading editor...</div>}>
<MonacoEditor />
</Suspense>
);
}Performance Budget
Track these targets and alert when exceeded:
API response time (p95): < 2000ms for skill generation
< 200ms for metadata endpoints
Frontend JS bundle: < 200KB gzipped (initial load)
File preview rendering: < 100ms for files < 10KB
Lighthouse Performance: ≥ 80 (acceptable), ≥ 90 (target)Common Rationalizations
| Rationalization | Reality |
| "We'll optimize later" | Performance debt compounds. Address measured regressions now. |
| "It's fast on my machine" | Your machine isn't the user's. Profile on representative hardware. |
| "This optimization is obvious" | If you didn't measure, you don't know. Profile first. |
| "The framework handles performance" | Frameworks prevent some issues but can't fix N+1 queries or unbounded previews. |
Red Flags
- Optimization without profiling data
- N+1 API call patterns (loop of individual calls)
- Rendering full content of files without size limits
- Re-fetching data that hasn't changed
React.memoanduseMemoeverywhere (overusing is as bad as underusing)- Bundle size growing release-over-release without review
Verification
After any performance change:
- Before and after measurements exist (specific numbers, not "feels faster")
- The specific bottleneck is identified and addressed
- Full test suite passes (optimization didn't break behavior)
- Bundle size hasn't increased on changes unrelated to bundling
- The performance budget still passes
Other versions117 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- buildpad-ai/skills★ 112% same
Wrote their own version · 116
- addyosmani/agent-skills★ 112ksame name
- sanity-io/sanity★ 6.4ksame name
- gamedev-skills/awesome-gamedev-agent-skills★ 6.4ksame name
- compozy/compozy★ 2.8ksame name
- ollaya-dev/ollaya★ 1.4ksame name
- buddy-compiler/buddy-mlir★ 772same name
- ThibautBaissac/rails_ai_agents★ 665same name
- rizqinrr/viserys-agent★ 560same name
- derHaken/SuperAntigravity★ 439same name
- ukanwat/aaabench★ 399same name
106 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use constraint-driven-development, idea-refine and 1 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MrCipherSmithSkillconstraint-driven-development
Use when a project needs a persistent, measurable quality bar — starting a project without documented standards, 'set up constraints', or when coverage/perf/a11y thresholds get re-debated per-PR. Produces CONSTRAINTS.md with enforceable numbers, ratchets, and a guard against silent weakening. NOT for throwaway prototypes or a one-off CI setup.
Also in 16 projects that use this
LLl0k0laDSkillidea-refine
Refine ideas through structured divergent and convergent thinking. Use "idea-refine" or "ideate" to trigger.
Also in 40 projects that use this
ukanwatSkillinput-systems
Architect game input — action mapping (abstracting keys into named actions), rebinding with conflict detection and persistence, multi-device support (keyboard, gamepad, touch), analog deadzones, and feel features like input buffering and coyote time, plus accessibility. Engine-neutral. Use when the user mentions input mapping, rebind controls, gamepad support, deadzone, input buffering, coyote time, or accessible controls.
Also in 4 projects that use this
In this repository53 other files it gives its agents.
- .agents/AGENTS.mdAGENTS.md
- ad-creativeSkill
- addyosmani-agent-skillsSkill
- api-and-interface-designSkill
- brandkitSkill
- browser-testing-with-devtoolsSkill
- chef-assistantSkill
- ci-cd-and-automationSkill
- cloud-run-basicsSkill
- code-review-and-qualitySkill
- code-simplificationSkill
- context-engineeringSkill
- debugging-and-error-recoverySkill
- deprecation-and-migrationSkill
- design-taste-frontendSkill
- design-taste-frontend-v1Skill
- documentation-and-adrsSkill
- frontend-ui-engineeringSkill
- full-output-enforcementSkill
- gemini-apiSkill
- git-workflow-and-versioningSkill
- googlecloudplatform-knowledge-catalogSkill
- google-cloud-recipe-authSkill
- google-cloud-recipe-networking-observabilitySkill
- google-cloud-recipe-onboardingSkill
- google-cloud-waf-cost-optimizationSkill
- google-cloud-waf-reliabilitySkill
- google-cloud-waf-securitySkill
- gpt-tasteSkill
- high-end-visual-designSkill
- imagegen-frontend-mobileSkill
- imagegen-frontend-webSkill
- image-to-codeSkill
- incremental-implementationSkill
- industrial-brutalist-uiSkill
- marketing-ideasSkill
- minimalist-uiSkill
- nvidia-skillspectorSkill
- observability-and-instrumentationSkill
- planning-and-task-breakdownSkill
- pricing-strategySkill
- programmatic-seoSkill
- redesign-existing-projectsSkill
- security-and-hardeningSkill
- seo-auditSkill
- shipping-and-launchSkill
- social-contentSkill
- source-driven-developmentSkill
- spec-driven-developmentSkill
- stitch-design-tasteSkill
- test-driven-developmentSkill
- using-agent-skillsSkill
- videoSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

