← Commit history
README.md+64−21
@@ -1,31 +1,74 @@-# chip-sourcing-skillpack+# Electronics Industry Sites Skillpack -**Native-browser-first sourcing for the whole electronics industry.** Drive the user's *real-signed-in* Chrome/Edge (via the [adom-browser-extension](https://wiki.adom.inc/adom/adom-browser-extension))-so their DigiKey/Mouser/SnapEDA logins, distributor pricing, and captcha human-trust all work — no-auth to recreate in pup, and it bypasses bot-walls (DigiKey blocks pup outright). This is the-default sourcing path for [chip-fetcher](https://wiki.adom.inc/john/chip-fetcher).+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. -One root strategy skill + one sub-skill per website, so coverage grows until every popular-electronics site is handled.+Every vendor site is different and most of them refuse anything that does not look like a person. This+pack turns that into a table an AI can act on: per site, which lane works (WebFetch, curl, pup, nb, API),+which wall you hit when it does not, and the recipe for the common tasks (datasheet, product page,+CAD, stock/price). Dated, evidence-linked, and shaped so a new site is one copied template away.++## The matrix (verified 2026-09-12)++| Site | Bot defense | WebFetch | curl | pup | nb | Use first |+|---|---|---|---|---|---|---|+| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | PARTIAL | 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 |+| [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 | untested | BLOCKED | BLOCKED | OK | nb |+| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |+| [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 |+| [Other manufacturers (generic playbook)](skills/manufacturer/SKILL.md) | Varies | untested | PARTIAL | untested | untested | nb |  ## Skills -| Skill | Role |-|---|---|-| **chip-sourcing** | The strategy: native-browser-first, the decision ladder, the install pitch, the `nbrowser_*` verb surface. |-| **chip-sourcing-digikey** | DigiKey — hard-blocks pup; keyword→category drill→MPN extraction (proven on the VL53Lx ToF family). |-| **chip-sourcing-mouser** | Mouser — keyword + manufacturer-facet search, account pricing. |-| **chip-sourcing-snapeda** | SnapEDA — login-gated CAD downloads that "just work" in the signed-in profile. |-| **chip-sourcing-manufacturer** | Manufacturer-first (ST/TI/Nordic/…) — authoritative family list, datasheets, official STEP. |-| **_template** | Copy to `skills/<site>/` to add a new site. |+| Skill | Site | One line |+|---|---|---|+| **electronics-sites** | (root) | The lane ladder, the symptom table, what pup leaks that a real browser does not, and the matrix below. |+| **electronics-site-st** | www.st.com | Manufacturer. |+| **electronics-site-mouser** | www.mouser.com | Distributor. |+| **electronics-site-digikey** | www.digikey.com | Distributor. |+| **electronics-site-snapeda** | www.snapeda.com | CAD library. |+| **electronics-site-ti** | www.ti.com | Manufacturer. |+| **electronics-site-microchip** | www.microchip.com | Manufacturer (incl. |+| **electronics-site-analog** | www.analog.com | Manufacturer. |+| **electronics-site-arrow** | www.arrow.com | Distributor. |+| **electronics-site-nordic** | www.nordicsemi.com | Manufacturer. |+| **electronics-site-ultralibrarian** | www.ultralibrarian.com | CAD library (also the engine behind many manufacturer CAD embeds). |+| **electronics-site-componentsearchengine** | componentsearchengine.com | CAD library (SamacSys / Supplyframe). |+| **electronics-site-datasheets-com** | www.datasheets.com | Aggregator (Supplyframe). |+| **electronics-site-octopart** | octopart.com | Aggregators (Nexar / Supplyframe). |+| **electronics-site-jlcpcb** | jlcpcb.com | Assembly-house parts library (JLCPCB SMT) and its distributor sibling LCSC. |+| **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. |+| **_template** | (copy me) | The fixed section layout for a new site skill. |  ## Install+ ```bash-adompkg install chip-sourcing-skillpack   # or: bash install.sh+adom-wiki pkg install john/electronics-sites-skillpack ``` -## Why native browser (the pitch to give users)-Your browser is already logged in to every distributor and CAD site. Driving *it* means real-credentials, your real pricing, and no bot-walls — the headless browser gets refused by DigiKey and-hits captchas elsewhere. One-time extension install unlocks all of it.+The root skill `electronics-sites` carries the lane ladder and the symptom table; each site skill+auto-surfaces on its domain name. Old `chip-sourcing-*` copies from v1 are retired by the installer.++## Why this exists++An AI that fetches st.com gets a 60 s timeout; the same URL opens instantly in the user's own Chrome.+The failure was the client, not the site, but without a record the AI reports an outage and stops.+Recording each site's behavior once, with the date, is cheaper than every AI rediscovering it.+The two browser lanes are Adom's: `pup` (a real Chrome for Testing window, background, durable profile)+and `nb` (the user's real signed-in browser via the Native Browser Extension). The API lane is+`adom-parts-search` (Mouser, DigiKey, JLCPCB backends).++## Contributing++Copy `skills/_template/SKILL.md`, run the ladder, write down what you saw, list the skill in+`install.sh`, `uninstall.sh` and `package.json`, bump the version, publish. ASCII punctuation only.+No captcha solving, no fingerprint spoofing: this pack routes around walls, it does not break them.
SKILL.md+121−81
@@ -1,92 +1,132 @@ ----name: chip-sourcing-description: Native-browser-first strategy for sourcing electronic parts (chip-fetcher and any EE-site task). Drive the user's REAL signed-in Chrome/Edge via the adom-browser-extension so cookies/SSO/saved-logins/captcha-trust all work — no auth to recreate in pup, and it bypasses bot-walls (DigiKey blocks pup). Sub-skills cover one website each. Triggers: search DigiKey/Mouser/SnapEDA/Arrow, source a part, fetch CAD, find a chip, parametric search, chip-fetcher.+name: electronics-sites+description: >-+  THE map of how electronics-industry websites treat AI clients, one sub-skill per site (ST, TI, Mouser,+  DigiKey, SnapEDA, Ultra Librarian, Arrow, Analog, Microchip, Nordic, Component Search Engine, Octopart,+  JLCPCB/LCSC, datasheets.com, generic manufacturer). Which access lane works (WebFetch, curl, pup, nb,+  official API), which bot defense each runs (Akamai, PerimeterX, Cloudflare), the exact failure+  signatures, and what a Chrome-for-Testing window leaks that a real browser does not. Read BEFORE+  fetching anything from a vendor or manufacturer domain, and the MOMENT a fetch to one times out,+  403s, 473s, shows 'Just a moment', 'Access Denied', 'Access to this page has been denied', or+  ERR_HTTP2_PROTOCOL_ERROR. Trigger words: st.com, ti.com, mouser, digikey, snapeda, ultralibrarian,+  arrow, analog.com, microchip, nordicsemi, componentsearchengine, octopart, jlcpcb, lcsc, datasheets.com,+  vendor site blocked, manufacturer site timeout, datasheet download blocked, bot wall, cloudflare+  just a moment, akamai access denied, perimeterx, captcha on vendor site, which browser for this site,+  electronics website, electronics industry site skills. --- -# chip-sourcing — native-browser-first parts sourcing+# Electronics Industry Site Skills -When you source parts (chip-fetcher, datasheet hunts, CAD pulls, parametric searches, stock/price-lookups) you are driving websites that gate behind **logins, SSO, and bot-detection**. The old way-was Puppeteer (`pup`) with a cold profile where we tried to recreate the user's auth. **Stop doing-that by default.** The user's own browser is already signed in to every distributor and CAD site —-drive *that* instead.+Nobody built skills for the electronics industry's websites, so an AI meets each one cold: a fetch to+st.com times out, a pup window on DigiKey spins forever, Mouser answers HTTP 200 with a denial page, and+the AI reports "the site is down" when the site is fine and only that CLIENT was refused. These+vendors block anything that does not look like a person because they have not noticed the AI era+yet. This pack records, per site, exactly how it behaves toward each lane we have, dated, with the+evidence, so the next AI routes around the wall in one move instead of rediscovering it. -## The rule: native browser first, always explain why+Every sub-skill has the same sections (domains, bot defense, lane matrix, failure signatures, recipes,+API lane, gotchas, evidence). Verified live on 2026-09-12 from an Adom cloud container against a+Windows desktop running Adom Bridge 2.1.104, pup 2.0.464 (Chrome for Testing 148) and the Native+Browser Extension 0.16.14 (Chrome 152). -**Default to the user's real signed-in Chrome/Edge via the `adom-browser-extension`** (the-`native-browser` bridge, `nbrowser_*` verbs through `adom-desktop`). It runs *inside the actual-logged-in profile*, so:+## The rule: a fetch failure on a vendor domain is a ROUTING signal -- **Real credentials are already there** — DigiKey/Mouser/SnapEDA/Arrow logins, SSO, saved-  carts, distributor pricing tiers. Nothing to recreate, no secrets to handle.-- **Human-trust passes** — cookies + a real browser fingerprint mean **captcha and bot-walls-  don't fire**. Several sites now **hard-block pup** (DigiKey is the clearest example) but serve the-  native session normally.-- **Multi-profile** — it can drive every signed-in profile the user has (`nbrowser_profiles`).+1. **One plain attempt only.** WebFetch or curl once. It is the cheapest lane and it works on TI,+   community.st.com, datasheets.com (WebFetch), Octopart, JLCPCB, Infineon, Espressif.+2. **pup second** (a real rendered Chrome, background, the durable adom-you profile). Passes+   Microchip, Nordic, CSE, Ultra Librarian, datasheets.com; renders vendor CDN PDFs.+3. **nb third and last** (the user's real signed-in Chrome via nbrowser_*). Passes EVERYTHING we have+   tested, including the four that refuse pup (st.com after the first page, Mouser, DigiKey, SnapEDA,+   Analog, Arrow). Give a challenge page **9 seconds** to clear before you read the DOM: a 6 s wait+   reads as empty and looks like a block that is not there.+4. **Numbers you will act on come from an API, never a scrape:** `adom-parts-search show "<MPN>"`+   (Mouser + DigiKey + JLCPCB backends, quota-limited: one search per question, never a loop). -When you pick a surface, **tell the user which one and why** in one sentence-(e.g. *"Using your signed-in Chrome via the browser extension so DigiKey doesn't bot-block us and-your distributor pricing shows."*). Never silently fall back.+Never retry the failing lane, never report "the site is timing out", never try to solve a captcha or+spoof a fingerprint. Switch lanes, then write down what you saw in that site's skill. -### The decision ladder+## Symptom -> cause -> lane -1. **Native browser (preferred)** — `native-browser` bridge present + a profile signed in → use it.-2. **pup (fallback)** — extension not installed and the site doesn't block pup. Say you're using a-   cold profile and may hit logins/captcha.-3. **webview (last resort)** — only to *show* the user a result, not to scrape.--### If the extension is NOT installed — encourage it (with the why)--Check first: `adom-desktop bridge_list` → is `native-browser` present and not paused? If absent:--> "I can do this far better if you install the **Adom browser extension** (Chrome + Edge). It lets me-> drive your *already-signed-in* browser, so I use your real DigiKey/Mouser logins and distributor-> pricing, and we skip the bot-walls that block the headless browser (DigiKey blocks it outright).-> One-time install: https://wiki.adom.inc/adom/adom-browser-extension — want me to walk you through it?"--Then fall back to pup for the current task, and re-offer next time.--## How to drive it (verb surface)--The bridge **mirrors the pup verb surface** as `nbrowser_*` (43 verbs): `nbrowser_open_window`,-`nbrowser_navigate`, `nbrowser_eval`, `nbrowser_screenshot`, `nbrowser_open_tab`,-`nbrowser_profiles`, `nbrowser_use_profile`, `nbrowser_profile_block`, … Same JSON-args convention-as `browser_*`.--```bash-adom-desktop bridge_list                                  # is `native-browser` running?-adom-desktop nbrowser_profiles '{}'                       # which signed-in profiles exist-adom-desktop nbrowser_open_window '{"sessionId":"src","url":"https://www.digikey.com/en/products/result?keywords=VL53L"}'-adom-desktop nbrowser_eval '{"sessionId":"src","expr":"document.title"}'-adom-desktop nbrowser_screenshot '{"sessionId":"src","maxWidth":1400}'-```--**Gotchas (learned live):**-- **`--target <name>` when 2+ desktops are connected** (e.g. `winvm` + `AdomLapper`). The native-  browser lives on the user's laptop — pin `--target AdomLapper`. `open_window`/`eval` may auto-route-  but `screenshot` errors `ambiguous_target` without it.-- Windows open in the **background** (focus is not stolen) — screenshot them in place.-- Screenshot returns base64 inside `output` → `json.loads(resp['output'])['base64']`.-- Currently **Windows-only** (macOS is a Kyle fast-follow). On macOS, fall back to pup + explain.--## This is chip-fetcher's default--chip-fetcher's sourcing ladder (Manufacturer → SnapEDA → Mouser → DigiKey → Arrow → Ultra Librarian-→ Component Search Engine) should run through the native browser whenever the bridge is present, and-only drop to pup when it isn't. See the chip-fetcher page: https://wiki.adom.inc/john/chip-fetcher--## Per-website sub-skills — grow coverage for the whole industry--Each popular electronics site gets **one sub-skill** under `skills/<site>/SKILL.md` (NOT a separate-wiki page). A site sub-skill captures: the search/parametric URL patterns, how to extract results-from its DOM, login/cookie notes, whether pup is blocked, and the category-drill for parametric-families. Seeded here: **digikey, mouser, snapeda, manufacturer (ST example)**. To add a site, copy-`skills/_template/SKILL.md`. Build this up until every popular electronics website is covered.--| Sub-skill | Site | pup blocked? |+| You see | It is | Do |+|---|---|---|+| `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 |+| 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 |+| `renderCheck.ok:true` but the body says `This site can't be reached` | pup's render check does not flag chrome-error pages (adom/pup-bridge#109) | read the body yourself; switch lanes |++## What pup leaks that a real browser does not (measured on st.com, 2026-09-12)++| Probe | pup (Chrome for Testing 148) | nb (installed Chrome 152) |+|---|---|---|+| `navigator.webdriver` | **true** | false |+| Widevine (`requestMediaKeySystemAccess('com.widevine.alpha')`) | **NotSupportedError** (CfT ships without the CDM) | available |+| `navigator.userAgentData.brands` | Not/A)Brand 99, Chromium 148 (no "Google Chrome") | Chromium 152, Not?A_Brand 24, Google Chrome 152 |+| User agent major | 148 (cached build, four majors behind) | 152 |+| `Notification.permission` on first visit | granted (pup pre-grants 32 permissions) | default |+| Akamai `_abck` on first load | ~-1~ (unvalidated) | ~-1~ (unvalidated) |+| plugins / cores / memory / h2 | 5 / 16 / 32 GB / h2 | identical |++Both clients get the same unvalidated Akamai cookie; the verdict comes from the sensor telemetry, and+webdriver + no Widevine + no Google Chrome brand is enough. A cold isolated pup profile and 15 s+between requests changed nothing; the same navigation in nb returned 200. That is why the ladder ends+at nb and why pup is still worth trying first on the sites that do not look this closely.++## The matrix (lane 0 = curl; verified 2026-09-12)++| Site | Bot defense | WebFetch | curl | pup | nb | Use first |+|---|---|---|---|---|---|---|+| [STMicroelectronics](skills/st/SKILL.md) | Akamai Bot Manager | BLOCKED | BLOCKED | PARTIAL | 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 |+| [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 | untested | BLOCKED | BLOCKED | OK | nb |+| [Arrow Electronics](skills/arrow/SKILL.md) | Akamai Bot Manager | untested | BLOCKED | BLOCKED | OK | nb |+| [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 |+| [Other manufacturers (generic playbook)](skills/manufacturer/SKILL.md) | Varies | untested | PARTIAL | untested | untested | nb |++Lane 0 readings for sites without a skill yet: infineon.com 200, renesas.com 200 (Cloudflare, passes),+espressif.com 200, newark.com 200 (Akamai, passes), alldatasheet.com 403 (Cloudflare), samacsys.com+200 (Vercel). Add a skill when you touch one.++## Skill map++| Skill | Site | One line | |---|---|---|-| `skills/digikey` | digikey.com | **Yes** — native browser required |-| `skills/mouser` | mouser.com | Intermittent |-| `skills/snapeda` | snapeda.com | Login-gated (native = already in) |-| `skills/manufacturer` | ST / TI / Nordic / NXP … | Varies; ST datasheet CDN curl-blocks |-| `skills/_template` | (copy to add a site) | — |+| **electronics-sites** | (root) | The lane ladder, the symptom table, what pup leaks that a real browser does not, and the matrix below. |+| **electronics-site-st** | www.st.com | Manufacturer. |+| **electronics-site-mouser** | www.mouser.com | Distributor. |+| **electronics-site-digikey** | www.digikey.com | Distributor. |+| **electronics-site-snapeda** | www.snapeda.com | CAD library. |+| **electronics-site-ti** | www.ti.com | Manufacturer. |+| **electronics-site-microchip** | www.microchip.com | Manufacturer (incl. |+| **electronics-site-analog** | www.analog.com | Manufacturer. |+| **electronics-site-arrow** | www.arrow.com | Distributor. |+| **electronics-site-nordic** | www.nordicsemi.com | Manufacturer. |+| **electronics-site-ultralibrarian** | www.ultralibrarian.com | CAD library (also the engine behind many manufacturer CAD embeds). |+| **electronics-site-componentsearchengine** | componentsearchengine.com | CAD library (SamacSys / Supplyframe). |+| **electronics-site-datasheets-com** | www.datasheets.com | Aggregator (Supplyframe). |+| **electronics-site-octopart** | octopart.com | Aggregators (Nexar / Supplyframe). |+| **electronics-site-jlcpcb** | jlcpcb.com | Assembly-house parts library (JLCPCB SMT) and its distributor sibling LCSC. |+| **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. |+| **_template** | (copy me) | The fixed section layout for a new site skill. |++## Adding a site (this pack is built to grow)++Copy `skills/_template/SKILL.md` to `skills/<site>/SKILL.md`, run the ladder against the site, fill+every section with what you SAW (dated), list the new skill in `install.sh`, `uninstall.sh` and+`package.json` `files[]`, bump the version, publish. Rules: one site per skill, ASCII punctuation only,+no captcha solving, no fingerprint spoofing, credentials only ever typed into the site's own login+form. Related packs: `chip-fetcher-sites` (the CAD download choreography per site, inside+adom/adom-chip-fetcher), `driving-sites` (nb login recipes, inside adom/nb-bridge), `pup` and+`adom-native-browser` (the two browser lanes themselves), `adom-parts-search` (the API lane).
install.sh+22−10
@@ -1,13 +1,25 @@ #!/usr/bin/env bash-# chip-sourcing-skillpack installer — deploys the root strategy skill + every per-site sub-skill.+# electronics-sites-skillpack installer: the root skill plus one skill per site. set -euo pipefail DEST="${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}"-install_one(){ local name="$1" src="$2"; mkdir -p "$DEST/$name"; cp "$src" "$DEST/$name/SKILL.md"; echo "  installed $name"; }-echo "Installing chip-sourcing skillpack -> $DEST"-install_one "chip-sourcing" "SKILL.md"-for d in skills/*/; do-  s="$d/SKILL.md"; [ -f "$s" ] || continue-  base="$(basename "$d")"; [ "$base" = "_template" ] && continue-  install_one "chip-sourcing-$base" "$s"-done-echo "Done. Root skill: chip-sourcing. Add a site by copying skills/_template -> skills/<site> and reinstalling."+install_skill(){ mkdir -p "$DEST/$1"; cp "$2" "$DEST/$1/SKILL.md"; echo "  installed $1"; }+echo "Installing electronics-sites-skillpack -> $DEST"+install_skill electronics-sites SKILL.md+install_skill electronics-site-st skills/st/SKILL.md+install_skill electronics-site-mouser skills/mouser/SKILL.md+install_skill electronics-site-digikey skills/digikey/SKILL.md+install_skill electronics-site-snapeda skills/snapeda/SKILL.md+install_skill electronics-site-ti skills/ti/SKILL.md+install_skill electronics-site-microchip skills/microchip/SKILL.md+install_skill electronics-site-analog skills/analog/SKILL.md+install_skill electronics-site-arrow skills/arrow/SKILL.md+install_skill electronics-site-nordic skills/nordic/SKILL.md+install_skill electronics-site-ultralibrarian skills/ultralibrarian/SKILL.md+install_skill electronics-site-componentsearchengine skills/componentsearchengine/SKILL.md+install_skill electronics-site-datasheets-com skills/datasheets-com/SKILL.md+install_skill electronics-site-octopart skills/octopart/SKILL.md+install_skill electronics-site-jlcpcb skills/jlcpcb/SKILL.md+install_skill electronics-site-manufacturer skills/manufacturer/SKILL.md+# v1 of this pack was named chip-sourcing-*; retire those copies so the two sets do not drift+for old in chip-sourcing chip-sourcing-digikey chip-sourcing-mouser chip-sourcing-snapeda chip-sourcing-manufacturer; do rm -rf "$DEST/$old"; done+echo "OK: installed electronics-sites plus 15 site skills to $DEST/. Hint: read ~/.claude/skills/electronics-sites/SKILL.md before fetching from any vendor domain."
package.jsonadded+112
@@ -0,0 +1,112 @@+{+  "name": "electronics-sites-skillpack",+  "slug": "electronics-sites-skillpack",+  "version": "2.0.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.",+  "license": "MIT",+  "files": [+    "SKILL.md",+    "README.md",+    "page.json",+    "package.json",+    "install.sh",+    "uninstall.sh",+    "skills/_template/SKILL.md",+    "skills/st/SKILL.md",+    "skills/mouser/SKILL.md",+    "skills/digikey/SKILL.md",+    "skills/snapeda/SKILL.md",+    "skills/ti/SKILL.md",+    "skills/microchip/SKILL.md",+    "skills/analog/SKILL.md",+    "skills/arrow/SKILL.md",+    "skills/nordic/SKILL.md",+    "skills/ultralibrarian/SKILL.md",+    "skills/componentsearchengine/SKILL.md",+    "skills/datasheets-com/SKILL.md",+    "skills/octopart/SKILL.md",+    "skills/jlcpcb/SKILL.md",+    "skills/manufacturer/SKILL.md"+  ],+  "scripts": {+    "install": "./install.sh",+    "uninstall": "./uninstall.sh"+  },+  "dependencies": {},+  "tags": [+    "electronics",+    "skillpack",+    "vendor-sites",+    "bot-defense",+    "akamai",+    "cloudflare",+    "perimeterx",+    "pup",+    "nb",+    "datasheets",+    "digikey",+    "mouser",+    "st"+  ],+  "keywords": [+    "electronics",+    "skillpack",+    "vendor-sites",+    "bot-defense",+    "akamai",+    "cloudflare",+    "perimeterx",+    "pup",+    "nb",+    "datasheets",+    "digikey",+    "mouser",+    "st"+  ],+  "discovery_triggers": [+    "st.com",+    "digikey",+    "mouser",+    "snapeda",+    "ultralibrarian",+    "arrow.com",+    "analog.com",+    "microchip",+    "nordicsemi",+    "componentsearchengine",+    "octopart",+    "jlcpcb",+    "lcsc",+    "datasheets.com",+    "vendor site blocked",+    "just a moment",+    "access denied",+    "ERR_HTTP2_PROTOCOL_ERROR",+    "bot wall",+    "electronics website skills"+  ],+  "discovery_pitch": "One skill per electronics-industry website: the access lane that works, the bot wall you hit, the recipe. Dated and verified.",+  "sample_prompts": [+    {+      "label": "st.com timing out",+      "prompt": "st.com is timing out, get me the VL53L9CX datasheet"+    },+    {+      "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"+    }+  ],+  "hero": {+    "path": "docs/hero.png"+  }+}
page.json+105−7
@@ -2,7 +2,7 @@   "schema_version": 1,   "slug": "electronics-sites-skillpack",   "type": "skill",-  "version": "1.0.0",+  "version": "2.0.0",   "title": "Electronics Industry Sites Skillpack",   "brief": "Native-browser-first parts sourcing for the whole electronics industry — drive the user's signed-in Chrome/Edge (adom-browser-extension) for real logins + no bot-walls. Root strategy skill + one sub-skill per website. chip-fetcher's default.",   "readme": "# chip-sourcing-skillpack\n\n**Native-browser-first sourcing for the whole electronics industry.** Drive the user's *real\nsigned-in* Chrome/Edge (via the [adom-browser-extension](https://wiki.adom.inc/adom/adom-browser-extension))\nso their DigiKey/Mouser/SnapEDA logins, distributor pricing, and captcha human-trust all work — no\nauth to recreate in pup, and it bypasses bot-walls (DigiKey blocks pup outright). This is the\ndefault sourcing path for [chip-fetcher](https://wiki.adom.inc/john/chip-fetcher).\n\nOne root strategy skill + one sub-skill per website, so coverage grows until every popular\nelectronics site is handled.\n\n## Skills\n\n| Skill | Role |\n|---|---|\n| **chip-sourcing** | The strategy: native-browser-first, the decision ladder, the install pitch, the `nbrowser_*` verb surface. |\n| **chip-sourcing-digikey** | DigiKey — hard-blocks pup; keyword→category drill→MPN extraction (proven on the VL53Lx ToF family). |\n| **chip-sourcing-mouser** | Mouser — keyword + manufacturer-facet search, account pricing. |\n| **chip-sourcing-snapeda** | SnapEDA — login-gated CAD downloads that \"just work\" in the signed-in profile. |\n| **chip-sourcing-manufacturer** | Manufacturer-first (ST/TI/Nordic/…) — authoritative family list, datasheets, official STEP. |\n| **_template** | Copy to `skills/<site>/` to add a new site. |\n\n## Install\n```bash\nadompkg install chip-sourcing-skillpack   # or: bash install.sh\n```\n\n## Why native browser (the pitch to give users)\nYour browser is already logged in to every distributor and CAD site. Driving *it* means real\ncredentials, your real pricing, and no bot-walls — the headless browser gets refused by DigiKey and\nhits captchas elsewhere. One-time extension install unlocks all of it.\n",@@ -11,20 +11,118 @@     "name": "John Lauer",     "email": "[email protected]"   },-  "tags": [],-  "license": "proprietary",+  "tags": [+    "electronics",+    "skillpack",+    "vendor-sites",+    "bot-defense",+    "akamai",+    "cloudflare",+    "perimeterx",+    "pup",+    "nb",+    "datasheets",+    "digikey",+    "mouser",+    "st"+  ],+  "license": "MIT",   "hero": {     "type": "billboard",     "headline": "chip-sourcing-skillpack",     "subhead": "Native-browser-first parts sourcing for the whole electronics industry — drive the user's signed-in Chrome/Edge (adom-browser-extension) for real logins + no bo"   },-  "sample_prompts": [],-  "discovery_triggers": [],-  "discovery_pitch": null,+  "sample_prompts": [+    {+      "label": "st.com timing out",+      "prompt": "st.com is timing out, get me the VL53L9CX datasheet"+    },+    {+      "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"+    }+  ],+  "discovery_triggers": [+    "st.com",+    "digikey",+    "mouser",+    "snapeda",+    "ultralibrarian",+    "arrow.com",+    "analog.com",+    "microchip",+    "nordicsemi",+    "componentsearchengine",+    "octopart",+    "jlcpcb",+    "lcsc",+    "datasheets.com",+    "vendor site blocked",+    "just a moment",+    "access denied",+    "ERR_HTTP2_PROTOCOL_ERROR",+    "bot wall",+    "electronics website skills"+  ],+  "discovery_pitch": "One skill per electronics-industry website: the access lane that works, the bot wall you hit, the recipe. Dated and verified.",   "metadata": {},   "created_at": "2026-06-23T02:23:02.894Z",   "updated_at": "2026-09-12T14:22:10.330Z",   "source_path": "SKILL.md",   "sub_skills": [],-  "parent_app": null+  "parent_app": null,+  "name": "electronics-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.",+  "files": [+    "SKILL.md",+    "README.md",+    "page.json",+    "package.json",+    "install.sh",+    "uninstall.sh",+    "skills/_template/SKILL.md",+    "skills/st/SKILL.md",+    "skills/mouser/SKILL.md",+    "skills/digikey/SKILL.md",+    "skills/snapeda/SKILL.md",+    "skills/ti/SKILL.md",+    "skills/microchip/SKILL.md",+    "skills/analog/SKILL.md",+    "skills/arrow/SKILL.md",+    "skills/nordic/SKILL.md",+    "skills/ultralibrarian/SKILL.md",+    "skills/componentsearchengine/SKILL.md",+    "skills/datasheets-com/SKILL.md",+    "skills/octopart/SKILL.md",+    "skills/jlcpcb/SKILL.md",+    "skills/manufacturer/SKILL.md"+  ],+  "scripts": {+    "install": "./install.sh",+    "uninstall": "./uninstall.sh"+  },+  "dependencies": {},+  "keywords": [+    "electronics",+    "skillpack",+    "vendor-sites",+    "bot-defense",+    "akamai",+    "cloudflare",+    "perimeterx",+    "pup",+    "nb",+    "datasheets",+    "digikey",+    "mouser",+    "st"+  ] }\ No newline at end of file
skills/_template/SKILL.md+42−15
@@ -1,22 +1,49 @@ ----name: chip-sourcing-SITE-description: (Template) Source parts from <SITE> via the native signed-in browser. Copy this folder to skills/<site>/ and fill in the search URL, extraction selectors, login/cookie notes, and whether pup is blocked.+name: electronics-site-SITE+description: >-+  (Template) <Site name> (<domain>): how the site treats AI clients on each access lane (WebFetch,+  curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes.+  Copy this folder to skills/<site>/, fill every section with what you SAW, and date it.+  Trigger words: <domain>, <site> blocked, <site> datasheet, <site> product page, <site> timeout. --- -# <Site Name> (<domain>)+Parent skill: **electronics-sites-skillpack** -**pup blocked?** <yes/no/intermittent> · **login-gated?** <yes/no>+# <Site name> -## Search URL pattern-```-https://<domain>/...?q=<QUERY>-```+**Domains:** <www.example.com, cdn.example.com>+**What it is:** <manufacturer / distributor / CAD library / aggregator; what people fetch from it>+**Bot defense:** <Akamai / Cloudflare / PerimeterX / none observed; how it presents> -## Extract results (DOM selectors)-```js-// return JSON of MPN / stock / price / datasheet-link from the result DOM-```+## Lane matrix -## Notes-- Detail-page URL shape, facets to narrow by manufacturer, any banners/quirks, download flow.-- Record the date + a proven query when you verify it live.+| Lane | Result | What we saw (<date>) |+|---|---|---|+| WebFetch | OK / BLOCKED / PARTIAL / untested | <status code, title, timing> |+| curl | ... | <curl -sS -o /dev/null -w 'http=%{http_code} server=%header{server} cf=%header{cf-ray}'> |+| pup | ... | <title + first 100 chars of body after a 6 s settle> |+| nb | ... | <same, after a 9 s settle> |++**Use first:** `<cheapest lane that works>`.++## Failure signatures++- <exact title / body text / status / header that identifies the wall>++## Recipes++### <Task, e.g. datasheet PDF>++<URL pattern, DOM ids, the verb sequence, the wait you needed>++## API / Adom backend lane++<official API, or the adom-* backend that already wraps it; quota notes>++## Gotchas++- <the thing that cost you an hour>++## Evidence and last verified++<how you verified, date, issue links>
skills/analog/SKILL.mdadded+47
@@ -0,0 +1,47 @@+---+name: electronics-site-analog+description: >-+  Analog Devices (incl. Maxim, Linear) (www.analog.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: analog devices, analog.com, analog blocked, analog datasheet, analog product page, analog timeout, analog access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Analog Devices (incl. Maxim, Linear)++**Domains:** www.analog.com  +**What it is:** Manufacturer. Product pages, datasheets, LTspice models, eval boards.  +**Bot defense:** Akamai Bot Manager, strict: RSTs curl's HTTP/2 stream and serves an 'Access Denied' page to pup.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **BLOCKED** | curl (92) HTTP/2 INTERNAL_ERROR in ~100 ms |+| pup | **BLOCKED** | 'Access Denied' page (217 chars) |+| nb | **OK** | product page renders (AD8232 Datasheet and Product Info) |++**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.++## Failure signatures++- 'Access Denied' + 'Reference #18.xxxxxxxx'+- HTTP/2 stream reset to curl++## Recipes++### Anything on analog.com++nb only. Datasheet PDFs are under /media/en/technical-documentation/data-sheets/<part>.pdf; fetch them with nbrowser_fetch_url once you have the link from the page.++## API / Adom backend lane++None public. Stock via adom-parts-search.++## Gotchas++- Same edge behavior as st.com and arrow.com: do not retry, switch to nb.++## Evidence and last verified++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/arrow/SKILL.mdadded+50
@@ -0,0 +1,50 @@+---+name: electronics-site-arrow+description: >-+  Arrow Electronics (www.arrow.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: arrow electronics, arrow.com, arrow blocked, arrow datasheet, arrow product page, arrow timeout, arrow access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Arrow Electronics++**Domains:** www.arrow.com  +**What it is:** Distributor. Product search, stock, price, reference designs; free CAD via its own SnapEDA/UL embeds.  +**Bot defense:** Akamai Bot Manager, strict: RSTs curl, 'Access Denied' to pup.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **BLOCKED** | curl (92) HTTP/2 INTERNAL_ERROR |+| pup | **BLOCKED** | 'Access Denied' (195 chars) |+| 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.++## Failure signatures++- 'Access Denied' + Akamai reference number++## Recipes++### Search and product pages++nb only: `https://www.arrow.com/en/products/search?q=<MPN>`.++### CAD++Arrow is the mid-ladder fallback when DigiKey blocks; see chip-fetcher-sites.++## API / Adom backend lane++Arrow has a partner API (key required); not wired into Adom yet.++## Gotchas++- 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++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/componentsearchengine/SKILL.mdadded+46
@@ -0,0 +1,46 @@+---+name: electronics-site-componentsearchengine+description: >-+  Component Search Engine (SamacSys) (componentsearchengine.com, www.samacsys.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: component search engine, componentsearchengine.com, samacsys.com, componentsearchengine blocked, componentsearchengine datasheet, componentsearchengine product page, componentsearchengine timeout, componentsearchengine access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Component Search Engine (SamacSys)++**Domains:** componentsearchengine.com, www.samacsys.com  +**What it is:** CAD library (SamacSys / Supplyframe). Free symbols, footprints, 3D; the CSE desktop 'Library Loader' or web downloads.  +**Bot defense:** Cloudflare on componentsearchengine.com (curl 403), samacsys.com is Vercel and open. Browsers pass.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **BLOCKED** | HTTP 403 'Just a moment...' (samacsys.com: 200) |+| pup | **OK** | home page renders (6157 chars) |+| 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.++## Failure signatures++- 'Just a moment...' to curl++## Recipes++### Search + download++pup works for browsing; downloads need the free login (use nb so the saved login applies). Format picker: KiCad, Altium, Eagle/Fusion, STEP.++## API / Adom backend lane++None public.++## Gotchas++- 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++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/datasheets-com/SKILL.mdadded+46
@@ -0,0 +1,46 @@+---+name: electronics-site-datasheets-com+description: >-+  datasheets.com (www.datasheets.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: datasheets.com, datasheets-com blocked, datasheets-com datasheet, datasheets-com product page, datasheets-com timeout, datasheets-com access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# datasheets.com++**Domains:** www.datasheets.com  +**What it is:** Aggregator (Supplyframe). Parametric spec tables and datasheet links per MPN; a handy mirror when the manufacturer blocks you.  +**Bot defense:** Cloudflare for curl only; the Anthropic fetcher and browsers pass.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **OK** | returned the VL53L9CX parametric table (interfaces, FoV, temperature, supply) |+| curl | **BLOCKED** | HTTP 403 'Just a moment...' |+| pup | **OK** | 'VL53L9CX Datasheet | Stmicroelectronics' renders |+| 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.++## Failure signatures++- 'Just a moment...' to curl++## Recipes++### Quick spec table++`https://www.datasheets.com/<manufacturer-slug>/<part-lowercase>` via WebFetch. Good for interface / rate / package numbers when the vendor page is unreachable; confirm against the vendor PDF before designing.++## API / Adom backend lane++None.++## Gotchas++- 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++WebFetch + curl + pup + nb 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/digikey/SKILL.md+58−35
@@ -1,38 +1,61 @@ ----name: chip-sourcing-digikey-description: Source parts from DigiKey via the native signed-in browser. DigiKey HARD-BLOCKS pup — the native browser is required. Keyword search, parametric category drill, MPN extraction.+name: electronics-site-digikey+description: >-+  DigiKey (www.digikey.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: digikey, digikey.com, digikey blocked, digikey datasheet, digikey product page, digikey timeout, digikey access denied. --- -# DigiKey (digikey.com)--**DigiKey hard-blocks Puppeteer.** Use the native browser (`nbrowser_*`). A logged-in profile also-surfaces your distributor pricing and stock.--## Keyword search → category landing-```-https://www.digikey.com/en/products/result?keywords=<QUERY>-```-A broad query (e.g. `VL53L`) lands on a **category overview**, not a flat table. The ICs are usually-under **Optical Sensors → Distance Measuring** (eval boards/kits are separate categories). Grab the-category link, then navigate into it:-```js-[...document.querySelectorAll("a")].filter(a=>/distance measuring|optical sensor/i.test(a.textContent))-  .map(a=>a.href).filter(h=>/products\/filter/.test(h))-```--## Parametric category → MPNs-After navigating into a `/products/filter/<cat>/<id>?s=...` page, extract manufacturer part numbers:-```js-(function(){var s=new Set();- [...document.querySelectorAll("a,td,span,div")].forEach(e=>{-   var m=(e.textContent||"").match(/\bVL53L[0-9][A-Z0-9]+\b/g);  // adapt the regex per family-   if(m)m.forEach(x=>s.add(x));});- return JSON.stringify([...s].sort());})()-```-Proven 2026-06-22: `VL53L` → 25 MPNs across the VL53L0/1/3/4/5/7/8 ToF families, native session-unblocked (`blocked:false`) where pup is refused.--## Notes-- Detail page: `https://www.digikey.com/en/products/detail/<mfr-slug>/<mpn>/<pid>` — has datasheet-  link, stock, price breaks, ECAD model links (SnapEDA/Ultra Librarian).-- High-volume days show an "ATTENTION … may require an additional business day" banner — harmless.+Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# DigiKey++**Domains:** www.digikey.com  +**What it is:** Distributor. Product detail pages, parametric category filters, datasheet + ECAD links (SnapEDA / Ultra Librarian embeds).  +**Bot defense:** Cloudflare managed challenge ('Just a moment...') on every non-human client; HTTP 403 with a cf-ray header.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| 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 |++**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.++## Failure signatures++- title 'Just a moment...' and a 263-char body+- HTTP 403 with cf-ray+- endless spinner in pup++## 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).++### Detail page++`https://www.digikey.com/en/products/detail/<mfr-slug>/<mpn>/<pid>`: datasheet link, stock, price breaks, ECAD links. nb only.++### CAD++See chip-fetcher-sites/digikey: warm human profile, pace like a human, ask DigiKey's own assistant for the model path, or skip the rung (Arrow, CSE/UL).++## API / Adom backend lane++DigiKey Product Information API via the adom-digikey backend (URL in the adom-parts-search skill) and adom-parts-search.++## Gotchas++- Never try to solve the challenge programmatically; switch to nb.+- The 'ATTENTION: due to high order volume' banner is harmless noise in innerText.++## Evidence and last verified++curl sweep + pup/nb sweep 2026-09-12; chip-sourcing 1.0 notes (2026-06-22). Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/jlcpcb/SKILL.mdadded+50
@@ -0,0 +1,50 @@+---+name: electronics-site-jlcpcb+description: >-+  JLCPCB parts and LCSC (jlcpcb.com, www.lcsc.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: jlcpcb parts and lcsc, jlcpcb.com, lcsc.com, jlcpcb blocked, jlcpcb datasheet, jlcpcb product page, jlcpcb timeout, jlcpcb access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# JLCPCB parts and LCSC++**Domains:** jlcpcb.com, www.lcsc.com  +**What it is:** Assembly-house parts library (JLCPCB SMT) and its distributor sibling LCSC. Basic/extended part flags, LCSC part numbers (C-numbers).  +**Bot defense:** Akamai on jlcpcb.com, but it passes curl (200); lcsc.com open (200).++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **OK** | jlcpcb.com/parts 200 (1.9 s); lcsc.com 200 |+| pup | **untested** | - |+| 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.++## Failure signatures++- Product URLs need the C-number: /product-detail/<slug>_C<number>.html (a bare C-number path 404s)++## Recipes++### Parts library lookup++API lane first: the adom-jlcpcb backend via adom-parts-search; it returns basic/preferred flags and the LCSC number. Browser only for photos.++### Assembly quotes++jlcpcb.com in pup; login needed for a real quote.++## API / Adom backend lane++JLCPCB parts via the adom-jlcpcb backend and adom-parts-search.++## Gotchas++- JLCPCB is never the delivery recommendation in adom-parts-search; it is the assembly library.++## Evidence and last verified++curl sweep 2026-09-12; browser lanes not yet verified: contribute. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/manufacturer/SKILL.md+47−20
@@ -1,23 +1,50 @@ ----name: chip-sourcing-manufacturer-description: Source from the chip MANUFACTURER first (ST/TI/Nordic/NXP/...) via the native browser — the authoritative family list, datasheets, and official CAD. Manufacturer-first is the top of chip-fetcher's ladder.+name: electronics-site-manufacturer+description: >-+  Other manufacturers (generic playbook) (www.nxp.com, www.infineon.com, www.renesas.com, www.espressif.com, www.newark.com (Farnell / Avnet)): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: espressif.com, infineon.com, newark.com, nxp.com, other manufacturers, renesas.com, manufacturer blocked, manufacturer datasheet, manufacturer product page, manufacturer timeout, manufacturer access denied. --- -# Manufacturer-first (ST / TI / Nordic / NXP / Microchip / …)--The manufacturer is the **authoritative** source for the full family, the latest datasheet, and-official 3D STEP. chip-fetcher's ladder starts here. Native browser matters because several-manufacturer datasheet CDNs **curl-block** but serve a real browser (use `fetch().arrayBuffer()`-inside the page to grab the PDF with the browser's fingerprint).--## ST example — the VL53Lx ToF family-```-https://www.st.com/en/imaging-and-photonics-solutions/proximity-sensors.html-https://www.st.com/en/<series-slug>.html        # e.g. vl53l8.html-```-ST's product-selector table lists every orderable variant + datasheet + STEP. Extract the family:-```js-[...document.querySelectorAll("a,td")].map(e=>e.textContent).join(" ").match(/\bVL53L[0-9][A-Z0-9]+\b/g)-```-Cross-check the manufacturer family against the DigiKey/Mouser parametric pull to catch NRND/new-variants. Then hand each MPN to chip-fetcher for the CAD bundle.+Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Other manufacturers (generic playbook)++**Domains:** www.nxp.com, www.infineon.com, www.renesas.com, www.espressif.com, www.newark.com (Farnell / Avnet)  +**What it is:** 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.  +**Bot defense:** Varies. Lane-0 readings 2026-09-12: infineon.com 200 (open), renesas.com 200 (Cloudflare, passes curl), espressif.com 200 (Apache, open), newark.com 200 (Akamai, passes curl), nxp.com 404 on /products/ (URL shape differs; product pages are /products/<family>/...:<PART>).++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **PARTIAL** | see the per-domain readings above |+| pup | **untested** | - |+| nb | **untested** | - |++**Use first:** `nb` (nothing cheaper works). For numbers you will act on (stock, price, lead time) use the API lane below, never a scrape.++## Failure signatures++- Unknown site: run the ladder and record what you see++## Recipes++### The ladder for a new site++1) ONE WebFetch or curl. 2) If it fails or returns a wall, pup in the background. 3) If pup shows a denial/challenge, nb with a 9 s settle. 4) Data you will act on: the official API or the Adom vendor backends. Record the result in a new sub-skill (copy skills/_template).++### Reading a manufacturer product page++Datasheet link is usually the first PDF on the page; CAD lives under 'Design resources' / 'CAD/CAE' / 'Symbols and footprints'; many embed Ultra Librarian or SnapEDA (see those skills).++## API / Adom backend lane++Stock and price for any of them: adom-parts-search.++## Gotchas++- The bot-defense vendor alone does not predict the outcome (Akamai: st.com blocks pup, microchip.com does not; Cloudflare: DigiKey blocks pup, Nordic does not). Test, then write it down with the date.++## Evidence and last verified++curl sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/microchip/SKILL.mdadded+46
@@ -0,0 +1,46 @@+---+name: electronics-site-microchip+description: >-+  Microchip Technology (www.microchip.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: microchip technology, microchip.com, microchip blocked, microchip datasheet, microchip product page, microchip timeout, microchip access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Microchip Technology++**Domains:** www.microchip.com  +**What it is:** Manufacturer (incl. Atmel, Microsemi). Product pages, datasheets, MPLAB tooling.  +**Bot defense:** Akamai on the edge: refuses curl with HTTP 403, but lets browsers through (pup included).++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **BLOCKED** | HTTP 403, server AkamaiGHost |+| pup | **OK** | product page renders (5607 chars) |+| 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.++## Failure signatures++- HTTP 403 to non-browser clients++## Recipes++### Product page++`https://www.microchip.com/en-us/product/<PART>` in pup (background) or nb; datasheets link from the Documents tab.++## API / Adom backend lane++None needed; stock via adom-parts-search.++## Gotchas++- 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++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/mouser/SKILL.md+54−17
@@ -1,20 +1,57 @@ ----name: chip-sourcing-mouser-description: Source parts from Mouser via the native signed-in browser. Keyword + manufacturer-filtered search, MPN + stock + price extraction.+name: electronics-site-mouser+description: >-+  Mouser Electronics (www.mouser.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: mouser electronics, mouser.com, mouser blocked, mouser datasheet, mouser product page, mouser timeout, mouser access denied. --- -# Mouser (mouser.com)--Native browser preferred (intermittent pup blocking + your account pricing). --## Keyword search-```-https://www.mouser.com/c/?q=<QUERY>-https://www.mouser.com/ProductDetail/<mfr>/<mpn>-```-Results render in a table (`#productTable` / rows with `data-...` and a part-number anchor). Extract:-```js-[...document.querySelectorAll("a[href*='/ProductDetail/']")].map(a=>a.textContent.trim()).filter(Boolean)-```-Stock + price live in the row; signed-in shows your negotiated pricing. Manufacturer facet on the-left narrows to e.g. STMicroelectronics for a clean family list.+Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Mouser Electronics++**Domains:** www.mouser.com  +**What it is:** Distributor. Product pages with stock, price breaks, datasheet and CAD links; Adom's preferred vendor.  +**Bot defense:** Akamai (AkamaiGHost) in front, PerimeterX / HUMAN bot defense behind it. The deny page is served with HTTP 200 and the title 'Access to this page has been denied.'++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| 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 |+| 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.++## Failure signatures++- title 'Access to this page has been denied.' with HTTP 200+- 'press and hold' human challenge+- x-px-* headers++## Recipes++### Stock, price, lead time, datasheet URL++Do not scrape. `adom-parts-search show "<MPN>"` (Mouser + DigiKey + JLCPCB in parallel, Mouser-preferred) or the adom-mouser CLI. Quota is shared: one search per user question.++### Product page in a browser (photos, 3D tab, related parts)++nb only: `nbrowser_open_window {profile, url:"https://www.mouser.com/ProductDetail/<Mfr>/<MPN>"}` then wait 9 s before eval. The URL redirects to /en/ProductDetail/...++### CAD downloads++The 3D model sits behind a tab on the product page; see chip-fetcher-sites/mouser. Signed-in nb profile shows account pricing.++## API / Adom backend lane++Mouser Search API via the adom-mouser backend (see the adom-parts-search skill for the current backend URL) and adom-parts-search. Free tier ~1000 calls/day shared by everyone: never poll.++## Gotchas++- 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.++## Evidence and last verified++curl sweep + pup/nb sweep 2026-09-12; pup denial also seen from a warm adom-you profile. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/nordic/SKILL.mdadded+50
@@ -0,0 +1,50 @@+---+name: electronics-site-nordic+description: >-+  Nordic Semiconductor (www.nordicsemi.com, docs.nordicsemi.com, devzone.nordicsemi.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: devzone.nordicsemi.com, docs.nordicsemi.com, nordic semiconductor, nordicsemi.com, nordic blocked, nordic datasheet, nordic product page, nordic timeout, nordic access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Nordic Semiconductor++**Domains:** www.nordicsemi.com, docs.nordicsemi.com, devzone.nordicsemi.com  +**What it is:** Manufacturer. nRF product pages, docs site, DevZone forum.  +**Bot defense:** Cloudflare in front of www: curl gets the managed challenge, browsers pass (pup included).++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **BLOCKED** | HTTP 403 'Just a moment...', cf-ray present |+| pup | **OK** | home page renders (15 k chars) |+| 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.++## Failure signatures++- 'Just a moment...' to non-browser clients++## Recipes++### Docs++docs.nordicsemi.com is a static docs site; try WebFetch first, pup second.++### DevZone++Login needed to post; reading is open in pup.++## API / Adom backend lane++None needed.++## Gotchas++- 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++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/octopart/SKILL.mdadded+46
@@ -0,0 +1,46 @@+---+name: electronics-site-octopart+description: >-+  Octopart (and findchips) (octopart.com, www.findchips.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: findchips.com, octopart, octopart.com, octopart blocked, octopart datasheet, octopart product page, octopart timeout, octopart access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Octopart (and findchips)++**Domains:** octopart.com, www.findchips.com  +**What it is:** Aggregators (Nexar / Supplyframe). Cross-distributor stock and price, datasheet links, CAD links.  +**Bot defense:** Cloudflare in front, but both pass curl with HTTP 200 today.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **OK** | octopart search 200 (1.0 s); findchips 200 |+| pup | **untested** | - |+| 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.++## Failure signatures++- Octopart search results are JS-rendered; curl gets the shell, use a browser for the table++## Recipes++### Cross-distributor snapshot++`https://octopart.com/search?q=<MPN>` in pup; for numbers you will act on, use adom-parts-search (real vendor APIs).++## API / Adom backend lane++Nexar GraphQL API (token required); not wired into Adom.++## Gotchas++- Prices here lag the distributors; treat as a map, not a quote.++## Evidence and last verified++curl sweep 2026-09-12 only; browser lanes not yet verified: contribute. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/snapeda/SKILL.md+48−12
@@ -1,17 +1,53 @@ ----name: chip-sourcing-snapeda-description: Pull symbol/footprint/3D CAD from SnapEDA via the native signed-in browser — login-gated downloads work because the profile is already authenticated.+name: electronics-site-snapeda+description: >-+  SnapEDA (SnapMagic) (www.snapeda.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: snapeda, snapeda.com, snapeda blocked, snapeda datasheet, snapeda product page, snapeda timeout, snapeda access denied. --- -# SnapEDA (snapeda.com)+Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table). -CAD downloads are **login-gated**. The native browser is already signed in, so downloads + the-"request a part" flow work without re-auth (the core reason native beats pup here).+# SnapEDA (SnapMagic) -## Search → part → CAD-```-https://www.snapeda.com/search/?q=<MPN>-```-The part page exposes **Symbol / Footprint / 3D Model** download buttons and the target-EDA selector-(KiCad / EAGLE / Altium / OrCAD / Fusion). Drive the download in the user's profile; the file lands-in their normal Downloads, then `pull_file` it back to the container if chip-fetcher needs it.+**Domains:** www.snapeda.com  +**What it is:** CAD library. Symbols, footprints, 3D models per MPN; downloads gated behind a free login.  +**Bot defense:** Cloudflare managed challenge for non-human clients (403 + cf-ray); login wall on downloads; some downloads are email-gated.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| 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 |++**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.++## Failure signatures++- 'Just a moment...'+- 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.++## API / Adom backend lane++None public. The Adom wiki hardware pages and adom-lbr are the first stop for parts we already have.++## Gotchas++- 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.++## Evidence and last verified++curl + pup + nb sweep 2026-09-12; chip-sourcing 1.0 notes. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/st/SKILL.mdadded+67
@@ -0,0 +1,67 @@+---+name: electronics-site-st+description: >-+  STMicroelectronics (www.st.com, community.st.com, newsroom.st.com, www.st.com/resource (CDN)): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: community.st.com, newsroom.st.com, st.com, st.com/resource, stmicroelectronics, st blocked, st datasheet, st product page, st timeout, st access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# STMicroelectronics++**Domains:** www.st.com, community.st.com, newsroom.st.com, www.st.com/resource (CDN)  +**What it is:** Manufacturer. Product pages, datasheets, app notes, eval boards, myST CAD downloads, STM32Cube software.  +**Bot defense:** Akamai Bot Manager on www.st.com (sensor script issues _abck / bm_sz; the edge RSTs the HTTP/2 stream once the sensor verdict is negative). community.st.com is nginx, newsroom.st.com is CloudFront: both open.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| 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 |+| 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.++## Failure signatures++- 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++## Recipes++### Product page tabs (Documentation, Tools & Software, CAD)++The tabs are already in the DOM. Read them by id instead of clicking: `#documentation-panel`, `#tools-software-panel`, `#cad-resources-panel`. Strip lines matching /Worldwide,Asia/ (a per-row country list that swamps innerText). Do NOT set location.hash: it reloads the SPA and, in pup, that reload is the one that dies.++### Datasheet or data brief PDF++`nbrowser_fetch_url {sessionId, url:"https://www.st.com/resource/en/datasheet/<part>.pdf"}` -> base64 body -> `base64 -d` -> `pdftotext -layout`. Data briefs live at /resource/en/data_brief/<part>.pdf. Document ids look like DS14879 (datasheet), DB5805 (data brief), UM/AN/TN.++### Tools & Software list++Rows are STSW-* (software), X-CUBE-* (STM32Cube packs), STEVAL-* / X-NUCLEO-* (boards). The list tells you which host the vendor actually supports (for the VL53L9CX it named STM32N6570-DK, Nucleo-H563ZI, Raspberry Pi, Rockchip).++### CAD (symbols, footprints, STEP)++myST login gates exports by region/account; use the signed-in nb profile. See chip-fetcher-sites/st for the download choreography.++### Spec tables when st.com is unreachable++datasheets.com/stmicroelectronics/<part> mirrors the parametric table and works for WebFetch and pup; community.st.com posts often carry the numbers ST employees quote.++## API / Adom backend lane++None public for product data. Stock and price: adom-mouser / adom-digikey backends via adom-parts-search (quota-limited, never loop).++## Gotchas++- 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.++## Evidence and last verified++pup-bridge issue adom/pup-bridge#109 (verbatim sequence); DS14879 Rev 8 pulled via nb 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/ti/SKILL.mdadded+50
@@ -0,0 +1,50 @@+---+name: electronics-site-ti+description: >-+  Texas Instruments (www.ti.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: texas instruments, ti.com, ti blocked, ti datasheet, ti product page, ti timeout, ti access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Texas Instruments++**Domains:** www.ti.com  +**What it is:** Manufacturer. Product pages, datasheets (PDF and HTML), reference designs, Ultra Librarian CAD embed, native STEP.  +**Bot defense:** None observed. Plain Apache, HTTP 200 to curl. The friendliest major manufacturer site.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | expected OK |+| curl | **OK** | HTTP 200, server Apache, 0.36 s |+| pup | **OK** | product page renders |+| 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.++## Failure signatures++- myTI login wall only on some downloads and reference-design files++## Recipes++### Product page++`https://www.ti.com/product/<PART>`; datasheet at `https://www.ti.com/lit/ds/symlink/<part-lowercase>.pdf` (follows a redirect to the current revision).++### CAD++CAD/CAE Symbols section embeds Ultra Librarian; native STEP under the 3D model link. See chip-fetcher-sites/ti.++## API / Adom backend lane++TI Store API for stock and price (rarely needed; use adom-parts-search).++## Gotchas++- Because curl works, prefer the cheapest lane: WebFetch or curl first, browsers only for the UL embed.++## Evidence and last verified++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
skills/ultralibrarian/SKILL.mdadded+51
@@ -0,0 +1,51 @@+---+name: electronics-site-ultralibrarian+description: >-+  Ultra Librarian (www.ultralibrarian.com, app.ultralibrarian.com): how the site treats AI clients on each access lane (WebFetch, curl, pup, nb, API), the bot defense it runs, the exact failure signatures, and the task recipes. Verified 2026-09-12. Read BEFORE fetching anything from this domain, or when a fetch to it times out, 403s, or shows a challenge page. Trigger words: app.ultralibrarian.com, ultra librarian, ultralibrarian.com, ultralibrarian blocked, ultralibrarian datasheet, ultralibrarian product page, ultralibrarian timeout, ultralibrarian access denied.+---++Parent skill: **electronics-sites-skillpack** (the `electronics-sites` root skill has the lane ladder and the symptom table).++# Ultra Librarian++**Domains:** www.ultralibrarian.com, app.ultralibrarian.com  +**What it is:** CAD library (also the engine behind many manufacturer CAD embeds). Symbols, footprints, 3D; free account needed to download.  +**Bot defense:** Open to curl (nginx, 200) but the download flow carries a captcha widget and a login wall.++## Lane matrix++| Lane | Result | What we saw (2026-09-12) |+|---|---|---|+| WebFetch | **untested** | - |+| curl | **OK** | HTTP 200 (the HTML contains a captcha widget for the download/login flow) |+| pup | **OK** | home page renders |+| 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.++## Failure signatures++- captcha on download or account creation+- login bounce on the format picker++## Recipes++### Download flow++Search MPN -> part page -> Download -> pick KiCad / STEP (Altium if offered). Choreography and the reskinned-picker recovery in chip-fetcher-sites/ultralibrarian.++### Manufacturer embeds++TI, Microchip and others embed UL; the same account works inside the embed.++## API / Adom backend lane++None public.++## Gotchas++- Never solve the captcha programmatically; flash the window and let the user click.++## Evidence and last verified++curl + pup + nb sweep 2026-09-12. Re-verify when a lane changes and bump the date; the freshest reading wins.
uninstall.shadded+5
@@ -0,0 +1,5 @@+#!/usr/bin/env bash+set -euo pipefail+DEST="${CLAUDE_SKILLS_DIR:-$HOME/.claude/skills}"+for s in electronics-sites electronics-site-st electronics-site-mouser electronics-site-digikey electronics-site-snapeda electronics-site-ti electronics-site-microchip electronics-site-analog electronics-site-arrow electronics-site-nordic electronics-site-ultralibrarian electronics-site-componentsearchengine electronics-site-datasheets-com electronics-site-octopart electronics-site-jlcpcb electronics-site-manufacturer; do rm -rf "$DEST/$s"; done+echo "OK: removed electronics-sites-skillpack skills from $DEST/."