skill
Electronics Industry Sites Skillpack
Public Made by Adomby adom
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.
← Commit history
v2.0.1: DigiKey/SnapEDA pup wall is a Cloudflare Turnstile checkbox (never auto-clears; nb clears it in ~9 s); st.com now refuses the box's CfT client on the first page across profiles; 12 s re-test with screenshots
3 files changed
+10−10
gen.py+10−10@@ -34,7 +34,7 @@ SITES = [ lanes={ "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": ("PARTIAL", "the FIRST page load renders, then every further www.st.com HTML navigation lands on chrome-error:// with ERR_HTTP2_PROTOCOL_ERROR (site root included). /resource/*.pdf still renders in the PDF viewer. A cold isolated profile and 15 s pacing do not help: it is the client verdict, not rate"),+ "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"), "nb": ("OK", "every page loads, hash-tab navigation works, nbrowser_fetch_url returns PDFs (200, base64) in under a second"), }, symptoms=["ERR_HTTP2_PROTOCOL_ERROR on the second www.st.com page in pup", "curl (92) HTTP/2 INTERNAL_ERROR within 100 ms", "HTTP 473 from newsroom.st.com to a fetcher", "60 s WebFetch timeout on any www.st.com URL"],@@ -74,10 +74,10 @@ SITES = [ lanes={ "WebFetch": ("BLOCKED", "HTTP 403"), "curl": ("BLOCKED", "HTTP 403, body 'Just a moment...', server cloudflare, cf-ray present"),- "pup": ("BLOCKED", "stuck on the 'Just a moment...' challenge (263-char body, never resolves)"),- "nb": ("OK", "product page title 'VL53L9CXV0VE/1 STMicroelectronics | Camera Modules | DigiKey' after ~9 s; the challenge clears itself in a trusted profile"),+ "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"),+ "nb": ("OK", "product page title 'VL53L9CXV0VE/1 STMicroelectronics | Camera Modules | DigiKey' after ~9 s; the challenge clears itself in a trusted profile, no click"), },- symptoms=["title 'Just a moment...' and a 263-char body", "HTTP 403 with cf-ray", "endless spinner in pup"],+ symptoms=["title 'Just a moment...' and a 263-char body", "'Performing security verification' + a 'Verify you are human' checkbox (Turnstile)", "HTTP 403 with cf-ray"], recipes=[ ("Stock, price, datasheet", "API lane: `adom-parts-search show \"<MPN>\"` or the adom-digikey CLI. DigiKey qty-1 pricing is often lower than Mouser on new parts (VL53L9CX: $49.07 vs $63.36); the recommendation banner still follows the Mouser-preferred policy unless you switch it."), ("Keyword -> category -> MPN list (parametric families)", "nb: `https://www.digikey.com/en/products/result?keywords=<QUERY>` lands on a category overview; collect the /products/filter/ links, navigate into one, then regex MPNs out of the DOM. Proven on the VL53L family (25 MPNs)."),@@ -94,10 +94,10 @@ SITES = [ lanes={ "WebFetch": ("untested", ""), "curl": ("BLOCKED", "HTTP 403 'Just a moment...'"),- "pup": ("BLOCKED", "stuck on 'Just a moment...' (263-char body)"),- "nb": ("OK", "part page renders after ~9 s; the signed-in profile skips the email gate on downloads"),+ "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"),+ "nb": ("OK", "part page renders after ~9 s with no click; the signed-in profile skips the email gate on downloads"), },- symptoms=["'Just a moment...'", "Download bounces to a login modal (session lost)", "'Request this design' instead of Download (no model yet)"],+ symptoms=["'Just a moment...' + 'Verify you are human' checkbox (Turnstile)", "Download bounces to a login modal (session lost)", "'Request this design' instead of Download (no model yet)"], recipes=[ ("Part page", "`https://www.snapeda.com/parts/<MPN-urlencoded>/<Manufacturer>/view-part/` in nb; wait 9 s."), ("Download flow", "Download (top right) -> pick Symbol and Footprint (KiCad), 3D Model (STEP), Eagle/Fusion, Altium. Zip lands in the desktop Downloads; pull it with `adom-bridge pull_file`. Full choreography in chip-fetcher-sites/snapeda."),@@ -388,7 +388,7 @@ spoof a fingerprint. Switch lanes, then write down what you saw in that site's s | `ERR_HTTP2_PROTOCOL_ERROR` / `chrome-error://` on the SECOND page of a domain in pup; `curl: (92) HTTP/2 stream ... INTERNAL_ERROR` in ~100 ms | Akamai Bot Manager reset the stream after its sensor verdict (st.com, analog.com, arrow.com) | nb. Do not reload the pup tab; it stays dead for that domain | | `Access Denied` + `Reference #18.xxxx` | Akamai deny page (analog, arrow to pup; microchip to curl) | nb (pup passes microchip; test, do not assume) | | `Access to this page has been denied.` with **HTTP 200**, or `press and hold` | PerimeterX / HUMAN (mouser.com) | nb for the page, API for the data |-| title `Just a moment...`, 263-char body, HTTP 403, `cf-ray` header | Cloudflare managed challenge (digikey, snapeda, CSE, nordic, datasheets.com, alldatasheet) | pup passes CSE / nordic / datasheets.com; digikey + snapeda need nb; wait 9 s |+| title `Just a moment...`, 263-char body, HTTP 403, `cf-ray` header; on digikey/snapeda a `Verify you are human` CHECKBOX (Turnstile) | Cloudflare managed challenge (digikey, snapeda, CSE, nordic, datasheets.com, alldatasheet) | pup passes CSE / nordic / datasheets.com on its own; digikey + snapeda show the checkbox and never auto-clear in pup: use nb (clears in ~9 s, no click). Never click the box for the human | | HTTP 473 | Akamai to a fetcher (newsroom.st.com) | pup or nb | | WebFetch 60 s timeout on a vendor URL | the fetcher is being tarpitted, not an outage | pup, then nb | | `captcha` in the HTML but the page renders | login / download gate (ultralibrarian) | nb, `nbrowser_flash`, let the human click |@@ -520,7 +520,7 @@ def main(): {"label": "Which browser for DigiKey", "prompt": "which browser lane do I need to read a DigiKey product page"}, {"label": "Mouser 200 but denied", "prompt": "why does Mouser return HTTP 200 with access denied and what do I do"}, {"label": "Add a site", "prompt": "add an electronics-sites skill for nxp.com and verify its lanes"}]- pkg = {"name": PACK, "slug": PACK, "version": "2.0.0", "type": "skill", "title": TITLE, "description": BRIEF,+ pkg = {"name": PACK, "slug": PACK, "version": "2.0.1", "type": "skill", "title": TITLE, "description": BRIEF, "license": "MIT", "files": files, "scripts": {"install": "./install.sh", "uninstall": "./uninstall.sh"}, "dependencies": {}, "tags": TAGS, "keywords": TAGS, "discovery_triggers": TRIGGERS, "discovery_pitch": PITCH, "sample_prompts": PROMPTS, "hero": {"path": "docs/hero.png"}}@@ -568,7 +568,7 @@ No captcha solving, no fingerprint spoofing: this pack routes around walls, it d """ write("README.md", readme) page = json.load(open(os.path.join(ROOT, "page.json")))- page.update({"slug": PACK, "version": "2.0.0", "title": TITLE, "brief": BRIEF, "readme": readme, "license": "MIT",+ page.update({"slug": PACK, "version": "2.0.1", "title": TITLE, "brief": BRIEF, "readme": readme, "license": "MIT", "tags": TAGS, "hero": {"type": "image", "path": "docs/hero.png"}, "sample_prompts": PROMPTS, "discovery_triggers": TRIGGERS, "discovery_pitch": PITCH,
install.shuninstall.sh