Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.
中文简介正在准备中。当前显示原文说明。
Expert guide for Web Performance optimization: Core Web Vitals (LCP, INP, CLS), bundle analysis, image optimization, rendering strategies, and Lighthouse score improvement / Panduan ahli untuk optimasi performa web: Core Web Vitals (LCP, INP, CLS), analisis bundle, optimasi gambar, strategi rendering, dan peningkatan skor Lighthouse.
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
<a name="english"></a>
Connects and orchestrates with relevant domain skills like brainstorming, zero-to-prod-orchestrator, and session-memory-manager to ensure cohesive execution.
Expert guide for measuring, diagnosing, and optimizing web application performance with a focus on Core Web Vitals (LCP, INP, CLS), JavaScript bundle optimization, image and font loading strategies, rendering performance, and achieving high Lighthouse scores. Covers Next.js 15, React 19, and modern browser APIs.
| Metric | Good | Needs Improvement | Poor | Measures |
|---|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | 2.5–4.0s | > 4.0s | Loading performance |
| INP (Interaction to Next Paint) | ≤ 200ms | 200–500ms | > 500ms | Interactivity (replaced FID) |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | 0.1–0.25 | > 0.25 | Visual stability |
| FCP (First Contentful Paint) | ≤ 1.8s | 1.8–3.0s | > 3.0s | Perceived loading |
| TTFB (Time to First Byte) | ≤ 800ms | 800–1800ms | > 1800ms | Server responsiveness |
// Measure LCP with web-vitals library
import { onLCP, onINP, onCLS } from 'web-vitals';
onLCP((metric) => {
console.log('LCP:', metric.value, 'element:', metric.attribution.lcpEntry?.element);
// Send to analytics
sendToAnalytics({ name: metric.name, value: metric.value });
});
<!-- In <head> — preload the hero image before CSS blocks it -->
<link rel="preload" as="image" href="/hero.webp"
imagesrcset="/hero-480.webp 480w, /hero-800.webp 800w"
imagesizes="(max-width: 600px) 480px, 800px"
fetchpriority="high">
import Image from 'next/image';
// LCP image: priority=true + fill or explicit size
<Image
src="/hero.webp"
alt="Hero banner"
width={1200}
height={600}
priority // disables lazy loading, adds preload link
fetchPriority="high"
quality={85}
sizes="(max-width: 768px) 100vw, 1200px"
/>
// Below-the-fold images: lazy load (default)
<Image
src="/product.webp"
alt="Product"
width={400}
height={300}
// loading="lazy" is the default — no need to specify
/>
// BAD: Long synchronous task blocks the main thread
function processLargeList(items: Item[]) {
return items.map(expensiveTransform); // blocks for 500ms
}
// GOOD: Yield control back to browser between chunks
async function processLargeListAsync(items: Item[]) {
const results: Result[] = [];
for (let i = 0; i < items.length; i++) {
results.push(expensiveTransform(items[i]));
if (i % 50 === 0) await scheduler.yield(); // yield every 50 items
}
return results;
}
import { useTransition, useDeferredValue, startTransition } from 'react';
// Non-urgent state updates — mark as transitions
function SearchResults() {
const [query, setQuery] = useState('');
const [isPending, startTransition] = useTransition();
const deferredQuery = useDeferredValue(query);
return (
<>
<input
value={query}
onChange={(e) => {
setQuery(e.target.value); // urgent: update input immediately
startTransition(() => {
// non-urgent: defer expensive filtering
});
}}
/>
{isPending && <Spinner />}
{/* deferredQuery triggers re-render without blocking input */}
<ResultsList query={deferredQuery} />
</>
);
}
// Use TanStack Virtual for large lists (1000+ items)
import { useVirtualizer } from '@tanstack/react-virtual';
function VirtualList({ items }: { items: Item[] }) {
const parentRef = useRef<HTMLDivElement>(null);
const virtualizer = useVirtualizer({
count: items.length,
getScrollElement: () => parentRef.current,
estimateSize: () => 60, // estimated row height in px
overscan: 5,
});
return (
<div ref={parentRef} style={{ height: '600px', overflow: 'auto' }}>
<div style={{ height: virtualizer.getTotalSize() }}>
{virtualizer.getVirtualItems().map((vItem) => (
<div
key={vItem.key}
style={{ position: 'absolute', top: vItem.start, height: vItem.size }}
>
<ItemRow item={items[vItem.index]} />
</div>
))}
</div>
</div>
);
}
/* 1. Reserve space for images with aspect-ratio */
img, video {
width: 100%;
height: auto;
aspect-ratio: 16 / 9; /* prevents layout shift before load */
}
/* 2. Reserve space for dynamic content */
.ad-container {
min-height: 250px; /* reserve ad slot height */
}
/* 3. Use font-display: optional or swap */
@font-face {
font-family: 'Inter';
src: url('/fonts/inter.woff2') format('woff2');
font-display: optional; /* no invisible text, no layout shift */
}
// 4. Avoid inserting content above existing content
// BAD: inserting notification banner at top pushes content down
setShowBanner(true); // causes CLS
// GOOD: use position:fixed or reserve space at the top
<div className="h-12">{showBanner && <Banner />}</div>
# Analyze bundle composition
ANALYZE=true npm run build
# Or use @next/bundle-analyzer
import dynamic from 'next/dynamic';
// Dynamic import — code splits automatically
const HeavyChart = dynamic(() => import('@/components/HeavyChart'), {
loading: () => <ChartSkeleton />,
ssr: false, // disable SSR for client-only components
});
// Lazy load with React.lazy (non-Next.js)
const Modal = React.lazy(() => import('./Modal'));
import { debounce } from 'lodash-es' (not import _ from 'lodash')"sideEffects": false in package.json for libraries.import * from large libraries.moment.js with date-fns or dayjs.sharp for server-side image processing.// memo — skip re-render if props didn't change
const ExpensiveList = memo(({ items }: { items: Item[] }) => (
<ul>{items.map((i) => <li key={i.id}>{i.name}</li>)}</ul>
));
// useCallback — stable function reference for memo children
const handleDelete = useCallback((id: string) => {
setItems((prev) => prev.filter((i) => i.id !== id));
}, []); // empty deps = stable reference
// useMemo — memoize expensive calculations
const sortedItems = useMemo(
() => [...items].sort((a, b) => a.name.localeCompare(b.name)),
[items]
);
// report-vitals.ts — send Core Web Vitals to analytics
import { onCLS, onINP, onLCP, onFCP, onTTFB } from 'web-vitals';
function sendToAnalytics({ name, value, id, navigationType }: Metric) {
// Send to PostHog, Google Analytics, or your own endpoint
fetch('/api/analytics/vitals', {
method: 'POST',
body: JSON.stringify({ name, value: Math.round(value), id, navigationType }),
keepalive: true, // ensures request completes even if page unloads
});
}
onCLS(sendToAnalytics);
onINP(sendToAnalytics);
onLCP(sendToAnalytics);
onFCP(sendToAnalytics);
onTTFB(sendToAnalytics);
priority or fetchpriority="high" + preload link.loading="lazy".font-display: optional or preloaded with rel="preload".<script> tags without defer or async.srcset.dns-prefetch, preconnect for third-party origins.<a name="bahasa-indonesia"></a>
Terhubung dan mengorkestrasi skill domain yang relevan seperti brainstorming, zero-to-prod-orchestrator, dan session-memory-manager untuk memastikan eksekusi yang kohesif.
Panduan ahli untuk mengukur, mendiagnosis, dan mengoptimalkan performa aplikasi web dengan fokus pada Core Web Vitals (LCP, INP, CLS), optimasi JavaScript bundle, strategi loading gambar dan font, performa rendering, dan mencapai skor Lighthouse yang tinggi.
| Metrik | Baik | Perlu Perbaikan | Buruk |
|---|---|---|---|
| LCP | ≤ 2,5 detik | 2,5–4,0 detik | > 4,0 detik |
| INP | ≤ 200ms | 200–500ms | > 500ms |
| CLS | ≤ 0,1 | 0,1–0,25 | > 0,25 |
priority di Next.js Image, optimalkan TTFB dengan CDN.scheduler.yield(), gunakan useTransition React 19, virtualisasi list panjang.aspect-ratio, hindari penyisipan konten di atas konten yang sudah ada.web-vitals library untuk melaporkan metrik ke analytics secara real-time.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Expert guide for automated and manual Web Accessibility (a11y) testing — axe-core, Pa11y, Playwright a11y, screen reader testing, and WCAG 2.2 Level AA/AAA compliance / Panduan ahli pengujian aksesibilitas web.
中文简介正在准备中。当前显示原文说明。
Expert guide for intelligent model cascading and routing — complexity-scored task routing from Flash/Haiku to Sonnet/Opus/Astra, dynamic escalation with quality gates, 40-60% token cost reduction while maintaining output quality / Panduan ahli untuk kaskade dan routing model cerdas — routing tugas berbasis skor kompleksitas dari Flash/Haiku ke Sonnet/Opus/Astra, eskalasi dinamis dengan gerbang kualitas, pengurangan biaya token 40-60% dengan kualitas output terjaga.
中文简介正在准备中。当前显示原文说明。
Expert guide for Affective Computing, emotional AI, and real-time sentiment analysis through native multimodal tokens (voice intonation and facial micro-expressions) / Panduan ahli komputasi afektif, AI emosional, dan analisis sentimen real-time melalui token multimodal native.
中文简介正在准备中。当前显示原文说明。
Expert guide for AI-assisted coding workflows — agentic code generation, multi-agent code swarms, self-healing CI/CD, automated PR review, spec-to-code pipelines, codebase knowledge graphs, and human-in-the-loop approval gates / Panduan ahli untuk workflow pengkodean berbasis AI — generasi kode agentic, code swarm multi-agen, CI/CD self-healing, review PR otomatis, pipeline spec-to-code, knowledge graph codebase, dan gate persetujuan human-in-the-loop.
中文简介正在准备中。当前显示原文说明。
Expert guide for autonomous Machine-to-Machine (M2M) agent settlement, dual-rail fiat & stablecoin micro-clearing, dynamic budget envelopes, and cryptographic agent invoicing / Panduan ahli settlement otonom antar-agen (M2M), kliring mikro dual-rail fiat & stablecoin, pagu anggaran dinamis, dan penagihan agen kriptografis.
中文简介正在准备中。当前显示原文说明。
Expert guide for long-term episodic memory integration (Mem0 v2, Letta/MemGPT, Zep v2), memory tier architecture, pgvector HNSW storage, and unified context management for autonomous AI agents / Panduan ahli untuk integrasi memori episodik jangka panjang (Mem0 v2, Letta/MemGPT, Zep v2), arsitektur tier memori, penyimpanan pgvector HNSW, dan manajemen konteks terpadu untuk agen AI otonom.
中文简介正在准备中。当前显示原文说明。