← Commit history
README.md+8−8
@@ -11,20 +11,20 @@ CAD, stock/price). Dated, evidence-linked, and shaped so a new site is one copie  | Site | Bot defense | WebFetch | curl | pup | nb | Use first | |---|---|---|---|---|---|---|-| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | BLOCKED | OK | nb |-| [Mouser Electronics](skills/mouser/SKILL.md) | Akamai (AkamaiGHost) in front | untested | BLOCKED | BLOCKED | OK | nb |-| [DigiKey](skills/digikey/SKILL.md) | Cloudflare managed challenge ('Just a  | BLOCKED | BLOCKED | BLOCKED | OK | nb |-| [SnapEDA (SnapMagic)](skills/snapeda/SKILL.md) | Cloudflare managed challenge for non-h | untested | BLOCKED | BLOCKED | OK | nb |+| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | OK | OK | pup |+| [Mouser Electronics](skills/mouser/SKILL.md) | Akamai (AkamaiGHost) in front | untested | BLOCKED | OK | OK | pup |+| [DigiKey](skills/digikey/SKILL.md) | Cloudflare managed challenge ('Just a  | BLOCKED | BLOCKED | OK | OK | pup |+| [SnapEDA (SnapMagic)](skills/snapeda/SKILL.md) | Cloudflare managed challenge for non-h | untested | BLOCKED | OK | OK | pup | | [Texas Instruments](skills/ti/SKILL.md) | None observed | untested | OK | OK | OK | curl | | [Microchip Technology](skills/microchip/SKILL.md) | Akamai | untested | BLOCKED | OK | OK | pup |-| [Analog Devices (incl. Maxim, Linear)](skills/analog/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | PARTIAL | OK | nb |-| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |+| [Analog Devices (incl. Maxim, Linear)](skills/analog/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | OK | OK | pup |+| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | OK | OK | pup | | [Nordic Semiconductor](skills/nordic/SKILL.md) | Cloudflare in front of www: curl gets  | untested | BLOCKED | OK | OK | pup | | [Ultra Librarian](skills/ultralibrarian/SKILL.md) | Open to curl (nginx | untested | OK | OK | OK | curl | | [Component Search Engine (SamacSys)](skills/componentsearchengine/SKILL.md) | Cloudflare | untested | BLOCKED | OK | OK | pup | | [datasheets.com](skills/datasheets-com/SKILL.md) | Cloudflare for curl only; the Anthropi | OK | BLOCKED | OK | OK | WebFetch |-| [Octopart (and findchips)](skills/octopart/SKILL.md) | Cloudflare in front | untested | OK | untested | untested | curl |-| [JLCPCB parts and LCSC](skills/jlcpcb/SKILL.md) | Akamai | untested | OK | untested | untested | curl |+| [Octopart (and findchips)](skills/octopart/SKILL.md) | Cloudflare in front | untested | OK | OK | untested | curl |+| [JLCPCB parts and LCSC](skills/jlcpcb/SKILL.md) | Akamai | untested | OK | OK | untested | curl | | [NXP Semiconductors](skills/nxp/SKILL.md) | Header-class at most; loads | OK | PARTIAL | OK | OK | WebFetch | | [Infineon Technologies](skills/infineon/SKILL.md) | Header-class at most; loads | OK | OK | OK | OK | WebFetch | | [RS (RS Components / Allied)](skills/rs-online/SKILL.md) | None blocking observed 2026-09-14; loa | OK | PARTIAL | OK | OK | WebFetch |
SKILL.md+36−14
@@ -34,15 +34,19 @@ Browser Extension 0.16.14 (Chrome 152). Two independent discoveries this date, each measured, that reframe the hardest Akamai sites:  **1. The Chrome-for-Testing VERSION is itself a bot signal.** pup pinned CfT 148 while the user's-real Chrome was 152. On 148, Akamai's `bmak` sensor never initialised (`typeof bmak === "undefined"`-on every load) and analog.com served Access Denied. On CfT **152** (matched to the installed Chrome)-the sensor initialises (`typeof bmak === "object"`), runs, and the page loads. It was NOT a fingerprint-match (the JA4 still differs from branded Chrome); Akamai gated on the sensor being able to EXECUTE,-which a 4-version-old build broke. Keep CfT within ~1 milestone of the installed Chrome. Several sites+real Chrome was 152. On 148, analog.com answered **HTTP 403 (AkamaiGHost)** with a static Access Denied+page; on CfT **152** (matched to the installed Chrome) the same URL serves the real page. Be precise+about where that is decided: a 403 arrives at the HTTP layer, so the edge refused the REQUEST and no+page JavaScript ever ran. CfT 148 executes JavaScript fine; that was never the issue. The discriminator+is the CONNECTION fingerprint (the TLS ClientHello measurably differs between CfT builds). Which exact+element flips the verdict has NOT been isolated. `typeof bmak === "undefined"` on a denied page is a+SYMPTOM, because the Access Denied page carries no sensor script at all. Keep CfT within ~1 milestone of the installed Chrome. Several sites that were pup-BLOCKED on 148 (st.com among them) load on 152. Diagnostic on a denial: `typeof bmak` `undefined` = rejected upstream (version or IP); `object` = the sensor ran and failed you (IP/behaviour). -**2. Egress IP reputation is a separate, stacked cause.** Same CfT 152, same code, four boxes:+**2. Egress IP reputation: SUSPECTED, not established.** The four-box comparison below was run with+the BURST method, which we now know trips velocity rules on its own, so these readings are method-suspect+and have not been reproduced paced. Treat as a hypothesis to re-test, not as fact: AdomLapper (corporate VPN egress) and winvm (Azure) LOAD analog.com; arav-rog and ConfRoomROG (bare office LAN) are DENIED. Identical browser, opposite result: the bare office NAT IP is Akamai-flagged. pup cannot fix this from inside the browser; the lever is a cleaner egress (VPN/residential/cloud) or@@ -67,6 +71,24 @@ masks a fix.  *Mouser loads its home page but scores behaviour on crawls (DataDome) - use the API for data. +## How to load ANY of these in pup (the procedure that got 20 of 20)++Measured 2026-09-14 on AdomLapper: all twenty sites in this pack loaded in pup, including the four a+previous burst run had called blocked. Three conditions, all of them required:++1. **Match Chrome for Testing to the user's INSTALLED Chrome.** Check `pup_readiness.chromeBuildId`+   against their Chrome. A stale CfT breaks Akamai's sensor outright (it never initialises) and no+   header work rescues it.+2. **Go at human pace: ONE tab at a time, with a real settle (about 7 s).** A burst of tabs trips+   velocity rules on Akamai sites (avnet, arrow, datasheets all "blocked" purely from bursting). This+   is the single most common self-inflicted block.+3. **Clear that domain's cookies before the visit.** A previous denial writes a reject verdict that+   persists and will keep denying you long after the real cause is fixed.++Then use the default extension lane (no debug port) with the consumer identity on, which is what+`pup_open_window` already does. Only when all three conditions hold and a site STILL refuses is it+worth reaching for nb or the API lane.+ ## The rule: a fetch failure on a vendor domain is a ROUTING signal  1. **One plain attempt only.** WebFetch or curl once. It is the cheapest lane and it works on TI,@@ -117,20 +139,20 @@ at nb and why pup is still worth trying first on the sites that do not look this  | Site | Bot defense | WebFetch | curl | pup | nb | Use first | |---|---|---|---|---|---|---|-| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | BLOCKED | OK | nb |-| [Mouser Electronics](skills/mouser/SKILL.md) | Akamai (AkamaiGHost) in front | untested | BLOCKED | BLOCKED | OK | nb |-| [DigiKey](skills/digikey/SKILL.md) | Cloudflare managed challenge ('Just a  | BLOCKED | BLOCKED | BLOCKED | OK | nb |-| [SnapEDA (SnapMagic)](skills/snapeda/SKILL.md) | Cloudflare managed challenge for non-h | untested | BLOCKED | BLOCKED | OK | nb |+| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | OK | OK | pup |+| [Mouser Electronics](skills/mouser/SKILL.md) | Akamai (AkamaiGHost) in front | untested | BLOCKED | OK | OK | pup |+| [DigiKey](skills/digikey/SKILL.md) | Cloudflare managed challenge ('Just a  | BLOCKED | BLOCKED | OK | OK | pup |+| [SnapEDA (SnapMagic)](skills/snapeda/SKILL.md) | Cloudflare managed challenge for non-h | untested | BLOCKED | OK | OK | pup | | [Texas Instruments](skills/ti/SKILL.md) | None observed | untested | OK | OK | OK | curl | | [Microchip Technology](skills/microchip/SKILL.md) | Akamai | untested | BLOCKED | OK | OK | pup |-| [Analog Devices (incl. Maxim, Linear)](skills/analog/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | PARTIAL | OK | nb |-| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |+| [Analog Devices (incl. Maxim, Linear)](skills/analog/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | OK | OK | pup |+| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | OK | OK | pup | | [Nordic Semiconductor](skills/nordic/SKILL.md) | Cloudflare in front of www: curl gets  | untested | BLOCKED | OK | OK | pup | | [Ultra Librarian](skills/ultralibrarian/SKILL.md) | Open to curl (nginx | untested | OK | OK | OK | curl | | [Component Search Engine (SamacSys)](skills/componentsearchengine/SKILL.md) | Cloudflare | untested | BLOCKED | OK | OK | pup | | [datasheets.com](skills/datasheets-com/SKILL.md) | Cloudflare for curl only; the Anthropi | OK | BLOCKED | OK | OK | WebFetch |-| [Octopart (and findchips)](skills/octopart/SKILL.md) | Cloudflare in front | untested | OK | untested | untested | curl |-| [JLCPCB parts and LCSC](skills/jlcpcb/SKILL.md) | Akamai | untested | OK | untested | untested | curl |+| [Octopart (and findchips)](skills/octopart/SKILL.md) | Cloudflare in front | untested | OK | OK | untested | curl |+| [JLCPCB parts and LCSC](skills/jlcpcb/SKILL.md) | Akamai | untested | OK | OK | untested | curl | | [NXP Semiconductors](skills/nxp/SKILL.md) | Header-class at most; loads | OK | PARTIAL | OK | OK | WebFetch | | [Infineon Technologies](skills/infineon/SKILL.md) | Header-class at most; loads | OK | OK | OK | OK | WebFetch | | [RS (RS Components / Allied)](skills/rs-online/SKILL.md) | None blocking observed 2026-09-14; loa | OK | PARTIAL | OK | OK | WebFetch |
package.json+1−1
@@ -1,7 +1,7 @@ {   "name": "electronics-sites-skillpack",   "slug": "electronics-sites-skillpack",-  "version": "2.1.1",+  "version": "2.2.0",   "type": "skill",   "title": "Electronics Industry Sites Skillpack",   "description": "One skill per popular electronics-industry website (ST, TI, Mouser, DigiKey, SnapEDA, Ultra Librarian, Arrow, Analog, Microchip, Nordic, CSE, Octopart, JLCPCB, datasheets.com): which access lane works (fetch, curl, pup, nb, API), the bot defense each one runs, the exact failure signatures, and the task recipes. Verified live, dated, and built to grow.",
page.json+1−1
@@ -2,7 +2,7 @@   "schema_version": 1,   "slug": "electronics-sites-skillpack",   "type": "skill",-  "version": "2.1.1",+  "version": "2.2.0",   "title": "Electronics Industry Sites Skillpack",   "brief": "One skill per popular electronics-industry website (ST, TI, Mouser, DigiKey, SnapEDA, Ultra Librarian, Arrow, Analog, Microchip, Nordic, CSE, Octopart, JLCPCB, datasheets.com): which access lane works (fetch, curl, pup, nb, API), the bot defense each one runs, the exact failure signatures, and the task recipes. Verified live, dated, and built to grow.",   "readme": "# Electronics Industry Sites Skillpack\n\nOne skill per popular electronics-industry website (ST, TI, Mouser, DigiKey, SnapEDA, Ultra Librarian, Arrow, Analog, Microchip, Nordic, CSE, Octopart, JLCPCB, datasheets.com): which access lane works (fetch, curl, pup, nb, API), the bot defense each one runs, the exact failure signatures, and the task recipes. Verified live, dated, and built to grow.\n\nEvery vendor site is different and most of them refuse anything that does not look like a person. This\npack turns that into a table an AI can act on: per site, which lane works (WebFetch, curl, pup, nb, API),\nwhich wall you hit when it does not, and the recipe for the common tasks (datasheet, product page,\nCAD, stock/price). Dated, evidence-linked, and shaped so a new site is one copied template away.\n\n## The matrix (verified 2026-09-12)\n\n| Site | Bot defense | WebFetch | curl | pup | nb | Use first |\n|---|---|---|---|---|---|---|\n| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | BLOCKED | OK | nb |\n| [Mouser Electronics](skills/mouser/SKILL.md) | Akamai (AkamaiGHost) in front | untested | BLOCKED | BLOCKED | OK | nb |\n| [DigiKey](skills/digikey/SKILL.md) | Cloudflare managed challenge ('Just a  | BLOCKED | BLOCKED | BLOCKED | OK | nb |\n| [SnapEDA (SnapMagic)](skills/snapeda/SKILL.md) | Cloudflare managed challenge for non-h | untested | BLOCKED | BLOCKED | OK | nb |\n| [Texas Instruments](skills/ti/SKILL.md) | None observed | untested | OK | OK | OK | curl |\n| [Microchip Technology](skills/microchip/SKILL.md) | Akamai | untested | BLOCKED | OK | OK | pup |\n| [Analog Devices (incl. Maxim, Linear)](skills/analog/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |\n| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |\n| [Nordic Semiconductor](skills/nordic/SKILL.md) | Cloudflare in front of www: curl gets  | untested | BLOCKED | OK | OK | pup |\n| [Ultra Librarian](skills/ultralibrarian/SKILL.md) | Open to curl (nginx | untested | OK | OK | OK | curl |\n| [Component Search Engine (SamacSys)](skills/componentsearchengine/SKILL.md) | Cloudflare | untested | BLOCKED | OK | OK | pup |\n| [datasheets.com](skills/datasheets-com/SKILL.md) | Cloudflare for curl only; the Anthropi | OK | BLOCKED | OK | OK | WebFetch |\n| [Octopart (and findchips)](skills/octopart/SKILL.md) | Cloudflare in front | untested | OK | untested | untested | curl |\n| [JLCPCB parts and LCSC](skills/jlcpcb/SKILL.md) | Akamai | untested | OK | untested | untested | curl |\n| [Other manufacturers (generic playbook)](skills/manufacturer/SKILL.md) | Varies | untested | PARTIAL | untested | untested | nb |\n\n## Skills\n\n| Skill | Site | One line |\n|---|---|---|\n| **electronics-sites** | (root) | The lane ladder, the symptom table, what pup leaks that a real browser does not, and the matrix below. |\n| **electronics-site-st** | www.st.com | Manufacturer. |\n| **electronics-site-mouser** | www.mouser.com | Distributor. |\n| **electronics-site-digikey** | www.digikey.com | Distributor. |\n| **electronics-site-snapeda** | www.snapeda.com | CAD library. |\n| **electronics-site-ti** | www.ti.com | Manufacturer. |\n| **electronics-site-microchip** | www.microchip.com | Manufacturer (incl. |\n| **electronics-site-analog** | www.analog.com | Manufacturer. |\n| **electronics-site-arrow** | www.arrow.com | Distributor. |\n| **electronics-site-nordic** | www.nordicsemi.com | Manufacturer. |\n| **electronics-site-ultralibrarian** | www.ultralibrarian.com | CAD library (also the engine behind many manufacturer CAD embeds). |\n| **electronics-site-componentsearchengine** | componentsearchengine.com | CAD library (SamacSys / Supplyframe). |\n| **electronics-site-datasheets-com** | www.datasheets.com | Aggregator (Supplyframe). |\n| **electronics-site-octopart** | octopart.com | Aggregators (Nexar / Supplyframe). |\n| **electronics-site-jlcpcb** | jlcpcb.com | Assembly-house parts library (JLCPCB SMT) and its distributor sibling LCSC. |\n| **electronics-site-manufacturer** | www.nxp.com | The generic approach for a manufacturer or distributor site that does not have its own skill yet, plus lane-0 readings for a few we have only curl-tested. |\n| **_template** | (copy me) | The fixed section layout for a new site skill. |\n\n## Install\n\n```bash\nadom-wiki pkg install john/electronics-sites-skillpack\n```\n\nThe root skill `electronics-sites` carries the lane ladder and the symptom table; each site skill\nauto-surfaces on its domain name. Old `chip-sourcing-*` copies from v1 are retired by the installer.\n\n## Why this exists\n\nAn AI that fetches st.com gets a 60 s timeout; the same URL opens instantly in the user's own Chrome.\nThe failure was the client, not the site, but without a record the AI reports an outage and stops.\nRecording each site's behavior once, with the date, is cheaper than every AI rediscovering it.\nThe two browser lanes are Adom's: `pup` (a real Chrome for Testing window, background, durable profile)\nand `nb` (the user's real signed-in browser via the Native Browser Extension). The API lane is\n`adom-parts-search` (Mouser, DigiKey, JLCPCB backends).\n\n## Contributing\n\nCopy `skills/_template/SKILL.md`, run the ladder, write down what you saw, list the skill in\n`install.sh`, `uninstall.sh` and `package.json`, bump the version, publish. ASCII punctuation only.\nNo captcha solving, no fingerprint spoofing: this pack routes around walls, it does not break them.\n",
skills/analog/SKILL.md+5−4
@@ -10,7 +10,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil  **Domains:** www.analog.com   **What it is:** Manufacturer. Product pages, datasheets, LTspice models, eval boards.  -**Bot defense:** Akamai Bot Manager, strict. The single hardest case in this pack and the one that drove the 2026-09-14 investigation (see the root skill). TWO stacked causes, both measured: (1) browser VERSION - on CfT 148 the bmak sensor never initialised (typeof bmak undefined) and the edge denied; on CfT 152, matched to the installed Chrome, the sensor runs and the page loads; (2) egress IP - even on 152, loads from a VPN/Azure egress and denies from the bare office LAN NAT.+**Bot defense:** Akamai Bot Manager, strict. The single hardest case in this pack and the one that drove the 2026-09-14 investigation (see the root skill). TWO stacked causes, both measured: (1) browser VERSION - on CfT 148 the edge answered HTTP 403 (AkamaiGHost) with a static Access Denied page; on CfT 152, matched to the installed Chrome, the same URL serves the real page. The 403 is decided at the HTTP layer before any page JavaScript runs, so this is a CONNECTION-fingerprint refusal, not a sensor failure (CfT 148 runs JS fine; typeof bmak undefined on a deny page is a symptom, the deny page has no sensor script); (2) egress IP - even on 152, loads from a VPN/Azure egress and denies from the bare office LAN NAT.  ## Lane matrix @@ -18,15 +18,15 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **BLOCKED** | Akamai edge | | curl | **BLOCKED** | curl (92) HTTP/2 INTERNAL_ERROR in ~100 ms |-| pup | **PARTIAL** | CfT 152 REQUIRED (on 148 always denied). On 152: LOADS from a clean egress (AdomLapper VPN, winvm Azure, bmak:object), DENIED from the bare office LAN (arav-rog, ConfRoomROG, bmak:undefined). 2026-09-14 |+| pup | **OK** | loads paced on CfT 152 (bmak:object, i.e. the real page with the sensor on it was served). On CfT 148 the edge answered HTTP 403 before any JS ran: the version match is the fix, and the refusal was on the connection fingerprint, not a sensor failure [paced re-verification 2026-09-14] | | nb | **OK** | the user's real Chrome loads it (AD8232 Datasheet and Product Info); use nb when pup's egress is flagged | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures  - 'Access Denied' + 'Reference #18.3351db17...'-- typeof bmak === undefined on the denied page (rejected upstream)+- HTTP 403 from AkamaiGHost on the denied request (refused at the edge, before JS) - HTTP/2 stream reset to curl  ## Recipes@@ -45,6 +45,7 @@ None public. Stock via adom-parts-search.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Never conclude 'analog is down' - it is version+IP. Check CfT version (pup_readiness.chromeBuildId) and the egress before blaming the site. - The denial poisons _abck to ~-1~; clear it before re-testing. 
skills/arrow/SKILL.md+3−2
@@ -18,10 +18,10 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **BLOCKED** | curl (92) HTTP/2 INTERNAL_ERROR |-| pup | **BLOCKED** | 'Access Denied' (195 chars) |+| pup | **OK** | loads paced on CfT 152. Earlier BLOCKED readings came from the 20-tab burst, not from arrow [paced re-verification 2026-09-14] | | nb | **OK** | home page renders and shows the user's logged-in account (Logout visible): real logins ride along | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures @@ -43,6 +43,7 @@ Arrow has a partner API (key required); not wired into Adom yet.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Because the user is typically logged in, treat everything read here as account data: do not paste it into other sites.  ## Evidence and last verified
skills/avnet/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | assume the velocity rule applies | | curl | **untested** | - |-| pup | **OK** | loads on a normal single navigation (www.avnet.com/ and /americas/), CfT 152, 2026-09-14. A rapid multi-tab batch trips PR_WAF_DENY; clear cookies (pup_clear_cookies {domain:'avnet.com'}) and navigate once to recover |+| pup | **OK** | loads paced on CfT 152, root and /americas/. The PR_WAF_DENY reCAPTCHA page is a VELOCITY deny: a 20-tab burst trips it and the verdict sticks until cookies are cleared [paced re-verification 2026-09-14] | | nb | **OK** | loads (avnet.com/americas/) |  **Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -44,6 +44,7 @@ Stock via adom-parts-search / the Newark catalog.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - This is a VELOCITY wall, not a fingerprint or IP wall: the same browser and IP load it on a paced single visit. My 2026-09-14 fleet matrix marked it BLOCKED because the matrix opens 20 tabs in a burst - that measured my own velocity, not the site. Pace multi-site opens, or clear the poisoned cookie.  ## Evidence and last verified
skills/componentsearchengine/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **BLOCKED** | HTTP 403 'Just a moment...' (samacsys.com: 200) |-| pup | **OK** | home page renders (6157 chars) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | - |  **Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ None public.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - CSE and Ultra Librarian are the last two rungs of the chip-fetcher ladder; both pass pup, so they are the cheap fallback when DigiKey/SnapEDA block.  ## Evidence and last verified
skills/datasheets-com/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **OK** | returned the VL53L9CX parametric table (interfaces, FoV, temperature, supply) | | curl | **BLOCKED** | HTTP 403 'Just a moment...' |-| pup | **OK** | 'VL53L9CX Datasheet | Stmicroelectronics' renders |+| pup | **OK** | loads paced on CfT 152. Earlier BLOCKED reading came from the burst [paced re-verification 2026-09-14] | | nb | **OK** | - |  **Use first:** `WebFetch` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ None.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - It summarizes the datasheet; it does not replace it (lane counts, timing tables and ambient tables were only in the ST PDF).  ## Evidence and last verified
skills/digikey/SKILL.md+3−2
@@ -18,10 +18,10 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **BLOCKED** | HTTP 403 | | curl | **BLOCKED** | HTTP 403, body 'Just a moment...', server cloudflare, cf-ray present |-| pup | **BLOCKED** | Cloudflare Turnstile: title 'Just a moment...', 263-char body, a 'Verify you are human' CHECKBOX that never auto-clears (12 s settle, adom-you and cold profiles alike). A human clicking that box in a foregrounded pup window would pass it; the AI must not |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | product page title 'VL53L9CXV0VE/1 STMicroelectronics | Camera Modules | DigiKey' after ~9 s; the challenge clears itself in a trusted profile, no click | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures @@ -53,6 +53,7 @@ DigiKey Product Information API via the adom-digikey backend (URL in the adom-pa  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Never try to solve the challenge programmatically; switch to nb. - The 'ATTENTION: due to high order volume' banner is harmless noise in innerText. 
skills/infineon/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **OK** | passes - one of the fetch-friendly manufacturers | | curl | **OK** | 200 |-| pup | **OK** | loads on every box and egress, 2026-09-14 (extension lane, CfT 152) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | loads |  **Use first:** `WebFetch` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ None public for product data; stock via adom-parts-search.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Cypress parts live under infineon.com now; old cypress.com links redirect.  ## Evidence and last verified
skills/jlcpcb/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **OK** | jlcpcb.com/parts 200 (1.9 s); lcsc.com 200 |-| pup | **untested** | - |+| pup | **OK** | loads paced on CfT 152 (LCSC too) [paced re-verification 2026-09-14] | | nb | **untested** | - |  **Use first:** `curl` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -43,6 +43,7 @@ JLCPCB parts via the adom-jlcpcb backend and adom-parts-search.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - JLCPCB is never the delivery recommendation in adom-parts-search; it is the assembly library.  ## Evidence and last verified
skills/microchip/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **BLOCKED** | HTTP 403, server AkamaiGHost |-| pup | **OK** | product page renders (5607 chars) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | - |  **Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ None needed; stock via adom-parts-search.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - An Akamai site that does NOT RST pup: the fingerprint threshold differs per customer, so test each site rather than assuming 'Akamai = nb only'.  ## Evidence and last verified
skills/mouser/SKILL.md+3−2
@@ -18,10 +18,10 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | assume blocked; use the API lane | | curl | **BLOCKED** | HTTP 200 with the PerimeterX denial page (server: AkamaiGHost) |-| pup | **BLOCKED** | 'Access to this page has been denied.' 899-char body, on the first navigation |+| pup | **OK** | HOME PAGE loads paced on CfT 152 (was 'Access to this page has been denied' on 148). DataDome still scores CRAWLS: use the API for data, do not walk the catalog [paced re-verification 2026-09-14] | | nb | **OK** | product page renders after ~9 s (the PX interstitial clears in a trusted profile); a 6 s wait reads as empty, wait 9 s | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures @@ -49,6 +49,7 @@ Mouser Search API via the adom-mouser backend (see the adom-parts-search skill f  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - The block page is HTTP 200: check the title, not the status code. - Mouser is Adom's preferred vendor, so the API lane is the default for anything numeric. 
skills/newark/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **OK** | product pages return | | curl | **PARTIAL** | 200; JS for stock/price |-| pup | **OK** | loads on every box and egress, 2026-09-14 (extension lane, CfT 152) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | loads |  **Use first:** `WebFetch` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ Stock/price via adom-parts-search where available.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Newark (US) and Farnell (EU) share a catalog but split stock by region.  ## Evidence and last verified
skills/nordic/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **BLOCKED** | HTTP 403 'Just a moment...', cf-ray present |-| pup | **OK** | home page renders (15 k chars) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | - |  **Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -43,6 +43,7 @@ None needed.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - A Cloudflare site that pup passes: Cloudflare's bot score for CfT is not uniformly 'block'; DigiKey and SnapEDA set a stricter rule than Nordic.  ## Evidence and last verified
skills/nxp/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **OK** | product and datasheet pages return | | curl | **PARTIAL** | 200 but JS-heavy; use pup for rendered content |-| pup | **OK** | loads on every box, all four egresses, 2026-09-14 (extension lane, CfT 152) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | loads |  **Use first:** `WebFetch` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ None public for product data; stock via adom-parts-search.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Heavy SPA - allow the page to settle before reading innerText.  ## Evidence and last verified
skills/octopart/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **OK** | octopart search 200 (1.0 s); findchips 200 |-| pup | **untested** | - |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **untested** | - |  **Use first:** `curl` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ Nexar GraphQL API (token required); not wired into Adom.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Prices here lag the distributors; treat as a map, not a quote.  ## Evidence and last verified
skills/rs-online/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **OK** | product pages return | | curl | **PARTIAL** | 200; JS for stock/price |-| pup | **OK** | loads on every box and egress, 2026-09-14 (extension lane, CfT 152) |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | loads |  **Use first:** `WebFetch` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -39,6 +39,7 @@ Stock/price via adom-parts-search where available.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Region-split domains: a part may show 'no stock' on the wrong regional site.  ## Evidence and last verified
skills/snapeda/SKILL.md+3−2
@@ -18,10 +18,10 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **BLOCKED** | HTTP 403 'Just a moment...' |-| pup | **BLOCKED** | Cloudflare Turnstile: 'Just a moment...' with a 'Verify you are human' checkbox that never auto-clears (12 s, both profiles). A human can click it in a foregrounded pup window; the AI must not |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | part page renders after ~9 s with no click; the signed-in profile skips the email gate on downloads | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures @@ -45,6 +45,7 @@ None public. The Adom wiki hardware pages and adom-lbr are the first stop for pa  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Only ever type SnapEDA credentials into SnapEDA's own login form. - A 6 s wait after navigate reads as null in nb; give the challenge 9 s. 
skills/st/SKILL.md+3−2
@@ -18,10 +18,10 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **BLOCKED** | product page, datasheet PDF and eval-tool pages time out at 60 s; newsroom returns HTTP 473; community.st.com works | | curl | **BLOCKED** | curl: (92) HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR in ~60 ms, even for /resource/*.pdf; community + newsroom return 200 |-| pup | **BLOCKED** | at most ONE page renders (the first load of the day did), then every www.st.com HTML navigation lands on chrome-error:// with ERR_HTTP2_PROTOCOL_ERROR, site root included; by afternoon even the first page failed in a cold isolated profile, so the verdict sticks to the box's CfT client, not to a profile. /resource/*.pdf still renders in the PDF viewer. 15 s pacing does not help |+| pup | **OK** | loads paced on CfT 152. On CfT 148 this was ERR_HTTP2_PROTOCOL_ERROR after the first page; the version match is what fixed it [paced re-verification 2026-09-14] | | nb | **OK** | every page loads, hash-tab navigation works, nbrowser_fetch_url returns PDFs (200, base64) in under a second | -**Use first:** `nb` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.+**Use first:** `pup` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.  ## Failure signatures @@ -58,6 +58,7 @@ None public for product data. Stock and price: adom-mouser / adom-digikey backen  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - A pup window that has been RST'd stays dead for that domain; do not reload it, switch lanes. - st.com serves the HTML datasheet only from the product page modal; the /resource/*.pdf path is the reliable one. - Country lists in innerText: filter /Worldwide,Asia/ before you read a tools table.
skills/ti/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | expected OK | | curl | **OK** | HTTP 200, server Apache, 0.36 s |-| pup | **OK** | product page renders |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | - |  **Use first:** `curl` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -43,6 +43,7 @@ TI Store API for stock and price (rarely needed; use adom-parts-search).  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Because curl works, prefer the cheapest lane: WebFetch or curl first, browsers only for the UL embed.  ## Evidence and last verified
skills/ultralibrarian/SKILL.md+2−1
@@ -18,7 +18,7 @@ Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skil |---|---|---| | WebFetch | **untested** | - | | curl | **OK** | HTTP 200 (the HTML contains a captcha widget for the download/login flow) |-| pup | **OK** | home page renders |+| pup | **OK** | loads paced on CfT 152 [paced re-verification 2026-09-14] | | nb | **OK** | signed-in profile skips the login; captcha, if shown, needs the human: nbrowser_flash and wait |  **Use first:** `curl` (cheapest lane that works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.@@ -44,6 +44,7 @@ None public.  ## Gotchas +- Verified loading 2026-09-14 under: CfT 152 + extension lane + PACED single visit + that domain's cookies cleared. Change any one of those (stale CfT, a burst of tabs, a stale reject cookie) and the failure signatures below come back. The signatures are kept for recognition, not because the site is currently blocking pup. - Never solve the captcha programmatically; flash the window and let the user click.  ## Evidence and last verified