performance-debugging — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited performance-debugging (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use this skill when investigating slow page loads, rendering issues, or optimizing Core Web Vitals in Safari.
Use evaluate_script to capture key metrics from the browser:
evaluate_script function="() => {
const nav = performance.getEntriesByType('navigation')[0];
if (!nav) return { error: 'No navigation entry found' };
return {
url: nav.name,
redirectTime: Math.round(nav.redirectEnd - nav.redirectStart),
dnsLookup: Math.round(nav.domainLookupEnd - nav.domainLookupStart),
tcpConnect: Math.round(nav.connectEnd - nav.connectStart),
ttfb: Math.round(nav.responseStart - nav.requestStart),
responseTime: Math.round(nav.responseEnd - nav.responseStart),
domInteractive: Math.round(nav.domInteractive),
domContentLoaded: Math.round(nav.domContentLoadedEventEnd),
fullLoad: Math.round(nav.loadEventEnd),
transferSize: nav.transferSize,
encodedBodySize: nav.encodedBodySize,
decodedBodySize: nav.decodedBodySize
};
}"evaluate_script function="() => {
const results = {};
// LCP
const lcpEntries = performance.getEntriesByType('largest-contentful-paint');
if (lcpEntries.length > 0) {
const lcp = lcpEntries[lcpEntries.length - 1];
results.lcp = {
value: Math.round(lcp.startTime),
element: lcp.element?.tagName,
url: lcp.url || null,
rating: lcp.startTime <= 2500 ? 'good' : lcp.startTime <= 4000 ? 'needs-improvement' : 'poor'
};
}
// CLS
let clsValue = 0;
for (const entry of performance.getEntriesByType('layout-shift')) {
if (!entry.hadRecentInput) clsValue += entry.value;
}
results.cls = {
value: Math.round(clsValue * 1000) / 1000,
rating: clsValue <= 0.1 ? 'good' : clsValue <= 0.25 ? 'needs-improvement' : 'poor'
};
return results;
}"evaluate_script function="() => {
const entries = performance.getEntriesByType('resource');
return entries
.map(e => ({
name: e.name.split('/').pop()?.substring(0, 60),
type: e.initiatorType,
duration: Math.round(e.duration),
transferSize: e.transferSize,
start: Math.round(e.startTime)
}))
.sort((a, b) => b.duration - a.duration)
.slice(0, 15);
}"evaluate_script function="() => {
if (!window.__longTasks) {
window.__longTasks = [];
new PerformanceObserver(list => {
for (const entry of list.getEntries()) {
window.__longTasks.push({
startTime: Math.round(entry.startTime),
duration: Math.round(entry.duration)
});
}
}).observe({ type: 'longtask', buffered: true });
return { status: 'observer started — call again after interaction to see results' };
}
return window.__longTasks;
}"| Rating | Threshold |
|---|---|
| Good | ≤ 2.5s |
| Needs improvement | ≤ 4.0s |
| Poor | > 4.0s |
Common causes of slow LCP:
list_network_requests resourceTypes=["image"])| Rating | Threshold |
|---|---|
| Good | ≤ 0.1 |
| Needs improvement | ≤ 0.25 |
| Poor | > 0.25 |
Common causes of CLS:
width/height attributesdifferently from Blink — will-change and transform: translateZ(0) hacks may behave differently.
for third-party resources.
Microbenchmarks may not reflect real-world performance.
navigate_page url="<target-url>"Then run the Navigation Timing and Core Web Vitals scripts above.
list_network_requests resourceTypes=["script", "stylesheet"] list_console_messages types=["error"] take_screenshotin the network log.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.