Homepage timing: a bounded browser observation
This sample records initial-load observations for the BB Skills homepage. It demonstrates a bounded measurement workflow associated with the Cloudflare web-performance resource. It does not establish full skill effectiveness or Core Web Vitals compliance.
Method and acceptance scope
Six homepage navigations in fresh automated Chromium contexts: three per viewport, observe 3000ms after load; default browser cache within each context; no CPU/network throttling or interactions.
Measurement workflow completed: six public homepage reads with valid navigation/paint observations, English output and no horizontal overflow. Passed does not grade performance or the full skill.
Both viewports use the same desktop Chromium browser, not real mobile devices. The recorded user agent is Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36. Measurements were recorded in UTC on 2026-10-03T02:53:48.119Z.
Every measured navigation
| Viewport | Run | TTFB ms | FCP ms | Last LCP candidate ms | Initial-window shift sum |
|---|---|---|---|---|---|
| 1440×900 | 1 | 884.6 | 1336.0 | 1336.0 | 0.0000 |
| 1440×900 | 2 | 433.1 | 620.0 | 620.0 | 0.0000 |
| 1440×900 | 3 | 240.9 | 408.0 | 408.0 | 0.0000 |
| 390×844 | 1 | 822.5 | 1068.0 | 1068.0 | 0.0000 |
| 390×844 | 2 | 360.5 | 464.0 | 464.0 | 0.0000 |
| 390×844 | 3 | 238.4 | 336.0 | 336.0 | 0.0000 |
This small sample does not isolate performance causes; cache and connection setup were not controlled. Interpret each recorded observation within the stated initial window. These observations do not predict all user sessions.
What this does not prove
- Viewport resizing on a desktop browser is not physical mobile hardware.
- Three loads per viewport are a small sequential sample; cache, connection reuse, CPU and network were not controlled.
- Observations stop 3000ms after load; LCP entries are candidates and layout shifts cover only that window.
- No interactions, INP, finalized session CLS, Lighthouse score, DevTools trace, CrUX or real-user percentiles were measured.
- This is direct browser observation, not an AI-agent end-to-end evaluation of the skill.
Source and interpretation
Read Google’s Web Vitals guide before interpreting lab and field data, and PerformanceObserver documentation for the browser API. Full lifecycle measurement and field aggregation require a separate setup. No field compliance grade is assigned here.
Open the resource and its package notes.
Package version: 41e0d1985894.bb1. Package SHA-256: e2b41ef1431b0a6a024cf673cca85f57f2d460fc9115cb42f6012ab7143b42b3. Evidence JSON SHA-256: 6b4c4516b7c8219a21e991b6c10124b8a8793f75b1bb122927e3d418eb06f378. Probe script SHA-256: 4c6b571d27f49e16928391129d0caa48cef13feef87e924015f51d47ef86e115.
Reproduce the browser observation
Run the following async function with a Playwright page in an automation browser. It creates isolated contexts, makes six public homepage reads and closes those contexts. Review the URL before using it; it performs no deployment or account action. Results will vary across environments and dates.
async(page)=>{const browser=page.context().browser();if(!browser)throw Error('No isolated browser available');const runs=[];for(const viewport of [{width:1440,height:900},{width:390,height:844}]){const context=await browser.newContext({viewport});await context.addInitScript(()=>{const state={lcp:[],shifts:[],observers:[],unsupported:[]};window.__bbTimingEvidence=state;for(const type of ['largest-contentful-paint','layout-shift']){if(!PerformanceObserver.supportedEntryTypes.includes(type)){state.unsupported.push(type);continue;}const record=entries=>{for(const e of entries){if(type==='largest-contentful-paint')state.lcp.push({startTime:e.startTime,size:e.size,tag:e.element?.tagName||null});else state.shifts.push({startTime:e.startTime,value:e.value,hadRecentInput:e.hadRecentInput});}};const observer=new PerformanceObserver(list=>record(list.getEntries()));observer.observe({type,buffered:true});state.observers.push({observer,record});}});try{for(let run=1;run<=3;run++){const p=await context.newPage();const response=await p.goto('https://bb.fouho.com/',{waitUntil:'load',timeout:30000});await p.waitForTimeout(3000);const metrics=await p.evaluate(()=>{const s=window.__bbTimingEvidence;for(const x of s.observers){x.record(x.observer.takeRecords());x.observer.disconnect();}const n=performance.getEntriesByType('navigation')[0];return {user_agent:navigator.userAgent,url:location.href,title:document.title,lang:document.documentElement.lang,observed_until_ms:performance.now(),navigation:{ttfb_ms:n.responseStart-n.startTime,dom_content_loaded_ms:n.domContentLoadedEventEnd,load_event_end_ms:n.loadEventEnd,transfer_bytes:n.transferSize,encoded_body_bytes:n.encodedBodySize,decoded_body_bytes:n.decodedBodySize},paints:performance.getEntriesByType('paint').map(e=>({name:e.name,startTime:e.startTime})),lcp_candidates:s.lcp,layout_shift_entries:s.shifts,unsupported:s.unsupported,horizontal_overflow:document.documentElement.scrollWidth>innerWidth,resource_count:performance.getEntriesByType('resource').length};});runs.push({viewport,run,response_status:response.status(),measured_at:new Date().toISOString(),...metrics});await p.close();}}finally{await context.close();}}return {method:'Six homepage navigations in fresh automated Chromium contexts: three per viewport, observe 3000ms after load; default browser cache within each context; no CPU/network throttling or interactions.',scope:'Initial-window navigation, paint and layout-shift observations only; not finalized Core Web Vitals, field data, Lighthouse, a trace, or an agent end-to-end evaluation.',runs};}
Recorded raw observations
{
"method": "Six homepage navigations in fresh automated Chromium contexts: three per viewport, observe 3000ms after load; default browser cache within each context; no CPU/network throttling or interactions.",
"scope": "Initial-window navigation, paint and layout-shift observations only; not finalized Core Web Vitals, field data, Lighthouse, a trace, or an agent end-to-end evaluation.",
"runs": [
{
"viewport": {
"width": 1440,
"height": 900
},
"run": 1,
"response_status": 200,
"measured_at": "2026-10-03T02:53:29.318Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 4330.10000000149,
"navigation": {
"ttfb_ms": 884.6000000014901,
"dom_content_loaded_ms": 1322.1000000014901,
"load_event_end_ms": 1323.1000000014901,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 1336
},
{
"name": "first-contentful-paint",
"startTime": 1336
}
],
"lcp_candidates": [
{
"startTime": 1336,
"size": 72606,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 1336,
"last_lcp_candidate_ms": 1336,
"initial_window_shift_sum": 0
},
{
"viewport": {
"width": 1440,
"height": 900
},
"run": 2,
"response_status": 200,
"measured_at": "2026-10-03T02:53:33.080Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 3603.2999999970198,
"navigation": {
"ttfb_ms": 433.09999999403954,
"dom_content_loaded_ms": 492.8999999985099,
"load_event_end_ms": 586.5,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 620
},
{
"name": "first-contentful-paint",
"startTime": 620
}
],
"lcp_candidates": [
{
"startTime": 620,
"size": 72606,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 620,
"last_lcp_candidate_ms": 620,
"initial_window_shift_sum": 0
},
{
"viewport": {
"width": 1440,
"height": 900
},
"run": 3,
"response_status": 200,
"measured_at": "2026-10-03T02:53:36.628Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 3397.7000000029802,
"navigation": {
"ttfb_ms": 240.90000000596046,
"dom_content_loaded_ms": 313.40000000596046,
"load_event_end_ms": 385.90000000596046,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 408
},
{
"name": "first-contentful-paint",
"startTime": 408
}
],
"lcp_candidates": [
{
"startTime": 408,
"size": 72606,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 408,
"last_lcp_candidate_ms": 408,
"initial_window_shift_sum": 0
},
{
"viewport": {
"width": 390,
"height": 844
},
"run": 1,
"response_status": 200,
"measured_at": "2026-10-03T02:53:41.024Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 4076.10000000149,
"navigation": {
"ttfb_ms": 822.5,
"dom_content_loaded_ms": 1059.2999999970198,
"load_event_end_ms": 1060.1000000014901,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 1068
},
{
"name": "first-contentful-paint",
"startTime": 1068
}
],
"lcp_candidates": [
{
"startTime": 1068,
"size": 38968,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 1068,
"last_lcp_candidate_ms": 1068,
"initial_window_shift_sum": 0
},
{
"viewport": {
"width": 390,
"height": 844
},
"run": 2,
"response_status": 200,
"measured_at": "2026-10-03T02:53:44.631Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 3455.4000000059605,
"navigation": {
"ttfb_ms": 360.5,
"dom_content_loaded_ms": 377.1000000014901,
"load_event_end_ms": 442.6000000014901,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 464
},
{
"name": "first-contentful-paint",
"startTime": 464
}
],
"lcp_candidates": [
{
"startTime": 464,
"size": 38968,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 464,
"last_lcp_candidate_ms": 464,
"initial_window_shift_sum": 0
},
{
"viewport": {
"width": 390,
"height": 844
},
"run": 3,
"response_status": 200,
"measured_at": "2026-10-03T02:53:48.119Z",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.0.0 Safari/537.36",
"url": "https://bb.fouho.com/",
"title": "BB Skills | Open AI Skills & Practical Workflows",
"lang": "en",
"observed_until_ms": 3337.7000000029802,
"navigation": {
"ttfb_ms": 238.39999999850988,
"dom_content_loaded_ms": 324,
"load_event_end_ms": 325.1000000014901,
"transfer_bytes": 5019,
"encoded_body_bytes": 4719,
"decoded_body_bytes": 17401
},
"paints": [
{
"name": "first-paint",
"startTime": 336
},
{
"name": "first-contentful-paint",
"startTime": 336
}
],
"lcp_candidates": [
{
"startTime": 336,
"size": 38968,
"tag": "H1"
}
],
"layout_shift_entries": [],
"unsupported": [],
"horizontal_overflow": false,
"resource_count": 5,
"first_contentful_paint_ms": 336,
"last_lcp_candidate_ms": 336,
"initial_window_shift_sum": 0
}
],
"skill_slug": "cloudflare-web-perf",
"skill_version": "41e0d1985894.bb1",
"package_sha256": "e2b41ef1431b0a6a024cf673cca85f57f2d460fc9115cb42f6012ab7143b42b3",
"executed_at": "2026-10-03T02:53:48.119Z",
"probe_script_sha256": "4c6b571d27f49e16928391129d0caa48cef13feef87e924015f51d47ef86e115",
"status": "passed",
"acceptance_scope": "Measurement workflow completed: six public homepage reads with valid navigation/paint observations, English output and no horizontal overflow. Passed does not grade performance or the full skill.",
"limitations": [
"Viewport resizing on a desktop browser is not physical mobile hardware.",
"Three loads per viewport are a small sequential sample; cache, connection reuse, CPU and network were not controlled.",
"Observations stop 3000ms after load; LCP entries are candidates and layout shifts cover only that window.",
"No interactions, INP, finalized session CLS, Lighthouse score, DevTools trace, CrUX or real-user percentiles were measured.",
"This is direct browser observation, not an AI-agent end-to-end evaluation of the skill."
]
}