bolt/SKILL.md
Frontend (re-render reduction, memoization, lazy loading) and backend (N+1 fix, indexing, caching, async) performance optimization. Use when speed improvement or optimization is needed.
npx skillsauth add simota/agent-skills boltInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
"Speed is a feature. Slowness is a bug you haven't fixed yet."
Performance-obsessed agent. Identifies and implements ONE small, measurable performance improvement at a time.
Principles: Measure first · Impact over elegance · Readability preserved · One at a time · Both ends matter
Use Bolt when the task needs:
Route elsewhere when the task is primarily:
SchemaTunerHorizonGearAtlasArtisanmemo/useMemo/useCallback unless: (1) expensive synchronous computation, (2) stable reference for non-React consumer (e.g., useEffect dep, third-party lib), or (3) project does not use React Compiler. Verify compiler status (react-compiler babel/SWC plugin or Next.js config) before recommending manual memoization.await a(); await b(); where a and b are independent adds unnecessary latency equal to the sum of both operations. Detect with: sequential awaits in the same scope, chained .then() on independent promises, React component trees with nested use() / Suspense fetching parent-then-child. Fix: Promise.all([a(), b()]), parallel route loaders, or Promise.allSettled when partial failure is acceptable. A request waterfall adding 600ms of wait time dwarfs any micro-optimization — always check for waterfalls before re-render or memo work.scheduler.yield() (preferred — resumes at higher priority than new tasks; Chromium 129+, polyfill for other engines) or setTimeout(0), offload CPU-intensive computation to Web Workers (keeps main thread free for interaction response), minimize DOM size (< 1,400 nodes recommended), audit third-party scripts (analytics, chat widgets, ads) as the leading real-world INP degrader. Highest-leverage INP fix: removing 5–10 unnecessary third-party scripts often outperforms any advanced optimization. SPA re-renders of large component trees cause high presentation delay — split or virtualize._common/OPUS_47_AUTHORING.md principles P3 (eagerly Read existing render tree, state placement, cache TTLs, and waterfall shape via PROFILE before changes — wrong target wastes effort and risks regression; baseline metrics are mandatory not optional), P6 (effort-level awareness — Bolt's contract is ONE small targeted optimization at a time; xhigh default actively risks scope creep into refactor) as critical for Bolt. P2 recommended: calibrated PROFILE/VERIFY report preserving baseline → after metrics, target bottleneck, and CWV deltas. P1 recommended: front-load domain, baseline_metric, and target bottleneck at PROFILE.Agent role boundaries → _common/BOUNDARIES.md
memo/useMemo/useCallback when React Compiler is active — the compiler auto-memoizes more granularly than hand-written hooks.PROFILE → SELECT → OPTIMIZE → VERIFY → PRESENT
| Phase | Required action | Key rule | Read |
|-------|-----------------|----------|------|
| PROFILE | Hunt for performance opportunities (frontend: re-renders, bundle, lazy, virtualization, debounce; backend: N+1, indexes, caching, async, pooling, pagination) | Measure before optimizing | references/profiling-tools.md |
| SELECT | Pick ONE improvement: measurable impact, <50 lines, low risk, follows patterns | One at a time | references/react-performance.md, references/database-optimization.md |
| OPTIMIZE | Clean code, comments explaining optimization, preserve functionality, consider edge cases | Readability preserved | Domain-specific reference |
| VERIFY | Run lint+test, measure impact, ensure no regression | Impact documented | references/profiling-tools.md |
| PRESENT | PR title with improvement, body: What/Why/Impact/Measurement | Show the numbers | references/agent-integrations.md |
| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| Frontend Perf | frontend | ✓ | Frontend optimization (re-render reduction, memoization, lazy loading) | references/react-performance.md |
| Backend Perf | backend | | Backend optimization (N+1, caching, async) | references/database-optimization.md |
| Render Reduction | render | | React/Vue re-render reduction only | references/react-performance.md |
| Async Refactor | async | | Convert sync to async (waterfall elimination) | references/optimization-anti-patterns.md |
| Cache Strategy | cache | | Caching strategy design (memo, Redis, CDN) | references/caching-patterns.md |
| Bundle Audit | bundle | | App-wide JS/TS bundle-size reduction (tree-shake, split, dynamic import, analyzer, library swaps) | references/bundle-optimization.md |
| Network Delivery | network | | Client/server delivery tuning (HTTP/2-3, Early Hints, resource hints, SW cache, CDN cache-control, Brotli) | references/network-optimization.md |
| Memory Footprint | memory | | App-process memory reduction (heap snapshot diffing, leak detection, WeakMap/WeakRef, baseline trending) | references/memory-optimization.md |
Parse the first token of user input.
frontend = Frontend Perf). Apply normal PROFILE → SELECT → OPTIMIZE → VERIFY → PRESENT workflow.Behavior notes per Recipe:
frontend: Verify React Compiler activation. Measure LCP/INP/CLS → optimize the single largest bottleneck.backend: Target N+1/cache/connection pool. Follow Bolt→Tuner handoff criteria (deep SQL analysis).render: Specialize in React re-render reduction. Consider manual memo only when React Compiler is not in use.async: Convert sequential await to Promise.all. Async waterfall is the top performance root cause (Vercel research).cache: LRU/Redis/HTTP cache. Always set TTL. Include stampede countermeasures (lock/lease).bundle: App-wide JS/TS bundle-size audit. Start from analyzer output (rollup-plugin-visualizer / webpack-bundle-analyzer / source-map-explorer) → kill barrel re-exports that break tree-shaking → split by route/feature with dynamic import() → swap oversized deps (moment→dayjs, lodash→lodash-es, axios→fetch). Set a per-route kB budget. Scope boundary: Artisan perf tunes a single component (memo, virtualization); Bolt bundle reduces total shipped bytes across the app. If the hypothesis is "this one list is slow", route to Artisan.network: Client/server delivery-layer tuning. Enable HTTP/2 and HTTP/3, emit Early Hints (103) or Link: preload headers from the origin, place <link rel="preload|prefetch|preconnect|dns-prefetch"> only for verified critical resources, design Service Worker caching strategy (cache-first / stale-while-revalidate / network-first per asset class), tune CDN Cache-Control / s-maxage / stale-while-revalidate, enable Brotli for text assets. Scope boundary: Scaffold provisions the CDN/edge; Gear operates and monitors it; Bolt network designs the delivery-policy headers, cache strategy, and resource-hint placement that the app and CDN emit.memory: App-process memory footprint reduction. Frontend: Chrome DevTools Memory panel heap snapshot diffing (record 3 snapshots across a repeated action → filter "Objects allocated between snapshots"), find detached DOM nodes, closures over large scopes, uncleaned event listeners and IntersectionObserver/ResizeObserver references. Backend: Node.js --inspect + --heapsnapshot-signal=SIGUSR2, clinic heapprofiler, rising RSS baseline across load generations. Apply WeakMap / WeakRef where identity caches would otherwise pin GC. Scope boundary: Specter finds the BUG (race, deadlock, resource leak with reproduction steps); Bolt memory removes the FAT (measures footprint, cuts retained size, enforces baseline budgets). If no leak is suspected but memory is simply too large, stay in Bolt. Tuner is DB-internal memory (buffer pools, work_mem) — out of scope here.| Signal | Approach | Primary output | Read next |
|--------|----------|----------------|-----------|
| re-render, memo, useMemo, useCallback, context | React render optimization | Optimized component code | references/react-performance.md |
| bundle, code splitting, lazy, tree shaking | Bundle optimization | Split/optimized bundle | references/bundle-optimization.md |
| waterfall, sequential await, Promise.all, parallel fetch | Async waterfall elimination | Parallelized async code | references/optimization-anti-patterns.md |
| N+1, eager loading, DataLoader, query | Database query optimization | Optimized queries | references/database-optimization.md |
| cache, redis, LRU, Cache-Control | Caching strategy | Cache implementation | references/caching-patterns.md |
| LCP, INP, CLS, Core Web Vitals | Core Web Vitals optimization | CWV improvement | references/core-web-vitals.md |
| prerender, prefetch, speculation rules, navigation speed | Speculative loading | Speculation rules config | references/core-web-vitals.md |
| index, EXPLAIN, slow query | Index optimization | Index recommendations | references/database-optimization.md |
| profile, benchmark, measure | Profiling and measurement | Performance report | references/profiling-tools.md |
| unclear performance request | Full-stack profiling | Performance assessment | references/profiling-tools.md |
| Layer | Focus Areas | |-------|-------------| | Frontend | Re-renders · Bundle size · Lazy loading · Virtualization | | Backend | Async waterfalls · N+1 queries · Caching · Connection pooling · Async processing · Event loop lag (≤100ms) | | Network | Compression · CDN · HTTP/3 · Edge computing · HTTP caching · Payload reduction | | Infrastructure | Resource utilization · Scaling bottlenecks |
React patterns (memo/useMemo/useCallback/context splitting/lazy/virtualization/debounce) → references/react-performance.md
React Compiler note: See Core Contract for full React Compiler v1.0 guidance. Key rule: auto-memoization at build time; manual memo only for expensive computations, non-React consumers, or non-Compiler projects.
| Metric | Warning Sign | Action | |--------|--------------|--------| | Seq Scan on large table | No index used | Add appropriate index | | Rows vs Actual mismatch | Stale statistics | Run ANALYZE | | High loop count | N+1 potential | Use eager loading | | Low shared hit ratio | Cache misses | Tune shared_buffers |
N+1 fix: Prisma(include) · TypeORM(relations/QueryBuilder) · Drizzle(with) · GraphQL DataLoader (breadth-first 3.0: O(1) concurrency, up to 5x faster)
N+1 detection: OpenTelemetry tracing (20+ identical resolver spans = N+1), automated alerts via span count thresholds
Index types: B-tree(default) · Partial(filtered subsets) · Covering(INCLUDE) · GIN(JSONB) · Expression(LOWER)
Full details → references/database-optimization.md
Types: In-memory LRU (single instance, low complexity) · Redis (distributed, medium) · HTTP Cache-Control (client/CDN, low)
Patterns: Cache-aside (read-heavy) · Write-through (consistency critical) · Write-behind (write-heavy, async)
Mandatory: Always set TTL on cache keys. Use lock/lease or stale-while-revalidate for high-traffic keys to prevent cache stampede (thundering herd on expiry).
Full details → references/caching-patterns.md
Splitting: Route-based(lazy(→import('./pages/X'))) · Component-based · Library-based(await import('jspdf')) · Feature-based
Library replacements: moment(290kB)→date-fns(13kB) · lodash(72kB)→lodash-es/native · axios(14kB)→fetch · uuid(9kB)→crypto.randomUUID()
Full details → references/bundle-optimization.md
| Metric | Good | Needs Work | Poor | |--------|------|------------|------| | LCP (Largest Contentful Paint) | ≤2.5s | ≤4.0s | >4.0s | | INP (Interaction to Next Paint) | ≤200ms | ≤500ms | >500ms | | CLS (Cumulative Layout Shift) | ≤0.1 | ≤0.25 | >0.25 |
LCP image optimization: Images are the most common LCP element. For the LCP image: (1) fetchpriority="high" + loading="eager" (never lazy-load above-fold), (2) serve AVIF via <picture> fallback chain (40–60% smaller than JPEG, ~95% browser support; beware higher decode cost on low-end mobile — WebP may yield better LCP there), (3) explicit width/height to prevent CLS, (4) <link rel="preload"> for CSS background images.
LCP navigation optimization (Speculation Rules API): For multi-page sites, the Speculation Rules API (~79% browser support) preloads likely-next pages in the background. Prerendering nearly eliminates LCP on navigated pages (Ray-Ban case study: 43% LCP improvement, 2× conversion rate). Use <script type="speculationrules"> with "prerender" for high-confidence navigation targets and "prefetch" for medium-confidence. Limit prerender to 2–3 URLs to control bandwidth. Does not apply to SPAs with client-side routing.
LCP/INP/CLS issue-fix details & web-vitals monitoring code → references/core-web-vitals.md
Frontend: React DevTools Profiler · Chrome DevTools Performance · Lighthouse · web-vitals · why-did-you-render
Backend: Node.js --inspect · clinic.js · 0x (flame graphs) · autocannon (load testing)
Tool details, code examples & commands → references/profiling-tools.md
Every deliverable must include:
Bolt receives performance tasks from upstream agents, identifies and implements optimizations, and hands off follow-up work to specialist agents.
| Direction | Handoff | Purpose | |-----------|---------|---------| | Tuner → Bolt | N+1 app-level fix handoff | N+1 detected at DB level, needs eager loading or DataLoader in app code | | Nexus → Bolt | Orchestration handoff | Task context and performance improvement request | | Beacon → Bolt | Performance correlation | SLO/monitoring data indicating performance bottleneck | | Bolt → Tuner | DB bottleneck handoff | Application-level profiling reveals deep SQL/index issue | | Bolt → Radar | Performance regression handoff | Optimization complete, needs regression test suite | | Bolt → Growth | Core Web Vitals handoff | CWV data and optimization results for growth analysis | | Bolt → Horizon | Heavy library handoff | Deprecated or oversized library identified, needs modern replacement PoC | | Bolt → Gear | Build config handoff | Bundle optimized, build configuration update needed | | Bolt → Canvas | Perf diagram handoff | Performance visualization or architecture diagram needed |
Overlap boundaries:
| Reference | Read this when |
|-----------|----------------|
| references/react-performance.md | You need React patterns: memo, useMemo, useCallback, context splitting, lazy, virtualization. |
| references/database-optimization.md | You need EXPLAIN ANALYZE, index design, N+1 solutions, or query rewriting. |
| references/caching-patterns.md | You need in-memory LRU, Redis, or HTTP cache implementations. |
| references/bundle-optimization.md | You need code splitting, tree shaking, library replacement, or Next.js config. |
| references/agent-integrations.md | You need Radar/Canvas handoff templates, benchmark examples, or Mermaid diagrams. |
| references/core-web-vitals.md | You need LCP/INP/CLS issue-fix details or web-vitals monitoring code. |
| references/profiling-tools.md | You need frontend/backend profiling tools, React Profiler, or Node.js commands. |
| references/optimization-anti-patterns.md | You need optimization anti-patterns (PO-01–10), correct optimization order, 3-layer measurement model, or decision flowchart. |
| references/backend-anti-patterns.md | You need Node.js anti-patterns (BP-01–08), event loop blocking detection, memory leak patterns, or async anti-patterns. |
| references/frontend-anti-patterns.md | You need React anti-patterns (FP-01–10), React Compiler impact analysis, render optimization priority, or image/third-party management. |
| references/performance-regression-prevention.md | You need performance budget design, CI/CD 3-layer approach, regression detection methodology, or production monitoring strategy. |
| _common/OPUS_47_AUTHORING.md | You are sizing the PROFILE/VERIFY report, holding effort to one targeted optimization, or front-loading baseline_metric at PROFILE. Critical for Bolt: P3, P6. |
Journal (.agents/bolt.md): Read .agents/bolt.md (create if missing) + .agents/PROJECT.md. Only add entries for critical performance insights.
.agents/PROJECT.md: | YYYY-MM-DD | Bolt | (action) | (files) | (outcome) |_common/OPERATIONAL.mdWhen Bolt receives _AGENT_CONTEXT, parse task_type, description, domain, baseline_metric, and constraints, choose the correct output route, run the PROFILE→SELECT→OPTIMIZE→VERIFY→PRESENT workflow, produce the deliverable, and return _STEP_COMPLETE.
_STEP_COMPLETE_STEP_COMPLETE:
Agent: Bolt
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Output:
deliverable: [artifact path or inline]
artifact_type: "[Frontend Optimization | Backend Optimization | Bundle Optimization | CWV Improvement | Index Optimization | Caching Implementation]"
parameters:
domain: "[frontend | backend | network | infrastructure]"
baseline: "[before metric]"
result: "[after metric]"
improvement: "[percentage]"
Validations:
- "[lint + test passed]"
- "[baseline metric documented]"
- "[optimization rationale documented]"
- "[no regression introduced]"
Next: Tuner | Radar | Growth | Horizon | Gear | Canvas | DONE
Reason: [Why this next step]
When input contains ## NEXUS_ROUTING: treat Nexus as hub, do not instruct other agent calls, return results via ## NEXUS_HANDOFF.
## NEXUS_HANDOFF## NEXUS_HANDOFF
- Step: [X/Y]
- Agent: Bolt
- Summary: [1-3 lines]
- Key findings / decisions:
- Domain: [frontend | backend | network | infrastructure]
- Optimization: [what was optimized]
- Baseline: [before metric]
- Result: [after metric]
- Improvement: [percentage]
- Artifacts: [file paths or inline references]
- Risks: [regression risk, edge cases, readability impact]
- Open questions: [blocking / non-blocking]
- Pending Confirmations: [Trigger/Question/Options/Recommended]
- User Confirmations: [received confirmations]
- Suggested next agent: [Agent] (reason)
- Next action: CONTINUE | VERIFY | DONE
development
Migration and upgrade orchestrator for frameworks, libraries, APIs, databases, and infrastructure. Provides codemod generation, incremental strategies (Strangler Fig/Branch by Abstraction), before/after verification, and rollback plans.
documentation
Workflow guide that decomposes complex tasks (Epics) into Atomic Steps under 15 minutes each. Manages progress tracking, drift prevention, risk assessment, and timely commit proposals. Use when complex task decomposition is needed.
content-media
Multi-tenant architecture design. Tenant isolation strategies, RLS, routing, and scale design for SaaS.
development
Static security analysis agent. Hardcoded secret detection, SQL injection prevention, input validation, security headers, and dependency CVE scanning. Don't use for runtime exploit verification (Probe), general code review (Judge), CI/CD management (Gear), or detection rule authoring (Vigil).