safari-specific-debugging — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited safari-specific-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 something works in other browsers but breaks in Safari, or when debugging WebKit-specific behavior.
Start by running check_webkit_compatibility — it checks every CSS property on the page against the live Safari session via CSS.supports() and reports what is actually broken (unsupported properties, missing -webkit- prefixes):
check_webkit_compatibilityFor specific elements, inspect computed styles directly:
get_computed_style uid="<element-uid>" properties=["display", "gap", "aspect-ratio", "container-type", "backdrop-filter"]Common Safari CSS gotchas:
-webkit-backdrop-filter: Still requires prefix in Safari <18.100vh on iOS Safari includes the address bar — use 100dvh instead.position: sticky inside overflow: auto containers often breaks.:has() selector: Safari was first to ship it, but edge cases may differ.Run diagnostics with evaluate_script:
evaluate_script function="() => {
return {
userAgent: navigator.userAgent,
webkitVersion: navigator.userAgent.match(/AppleWebKit\/(\d+)/)?.[1],
features: {
structuredClone: typeof structuredClone !== 'undefined',
requestIdleCallback: typeof requestIdleCallback !== 'undefined',
offscreenCanvas: typeof OffscreenCanvas !== 'undefined',
webComponents: typeof customElements !== 'undefined',
resizeObserver: typeof ResizeObserver !== 'undefined',
intersectionObserver: typeof IntersectionObserver !== 'undefined'
}
};
}"Known Safari JS quirks:
requestIdleCallback: Not available — use setTimeout fallback.OffscreenCanvas: Partial support — 2d context only, no WebGL.new Date('2024-01-15') works, butnew Date('01-15-2024') may fail. Always use ISO 8601.
fetch with keepalive: Stricter size limits than Chrome.<input type="date">: Renders differently. Check with take_snapshot.Check failing requests:
list_network_requests resourceTypes=["fetch", "xhr"]Then get details for any request with a 0 or 4xx/5xx status:
get_network_request reqid=<id>Known Safari network quirks:
get_cookies.Access-Control-Max-Age may beignored for non-standard headers.
evaluate_scriptto check registration: () => navigator.serviceWorker.getRegistration().
Safari renders <select>, <input type="date">, <input type="time"> with native OS controls that differ from Chrome. Use take_snapshot to see what the a11y tree reports, then take_screenshot for visual comparison.
navigate_page url="<problem-url>" list_console_messages types=["error", "warn"] list_network_requests take_snapshot
take_screenshot evaluate_script function="() => { /* feature detection code */ }" check_webkit_compatibility get_computed_style uid="<element-uid>"~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.