← Commit history

Hero: Windows title bar + app-name kicker + ≥90px gutter (conform to adom-wiki-hero-image); README: skillpack mandatory sections

John Lauer ·7fd99dc09b ·4mo ago ·parent 310a9b3
2 files changed +73−80
README.md+73−80
@@ -1,118 +1,111 @@ # Adom Parts Search -**One search box. Mouser, DigiKey and JLCPCB at once. The best buy, chosen for you.**+**One search box. Mouser, DigiKey and JLCPCB at once — with the fastest, cheapest pick chosen for you.** +Sourcing a part used to mean three browser tabs, three logins, three different ways of saying "in+stock," and a mental spreadsheet to figure out who actually gets it to your bench fastest. Adom+Parts Search collapses that into one query: type a part — or just ask Claude — and it fires three+parallel searches, normalizes the answers, and names the single best place to buy. -Sourcing a part used to mean three browser tabs, three logins, three different ways of saying-"in stock," and a mental spreadsheet to figure out who actually gets it to your bench fastest.-Adom Parts Search collapses that into a single query. Type a part — or just ask Claude — and it-fires **three parallel searches**, normalizes the answers into one comparable shape, and tells you-who to order from and why.--It's a single Rust binary with two faces: a **CLI** for scripting and BOMs, and a first-class-**Hydrogen webview** for browsing side-by-side with real product photos.+## Install  ```bash adompkg install adom-parts-search-adom-parts-search show "STM32F103RBT6" ``` -## Everything, from one interface+## Quick start -No more tab-juggling. One keyword goes to Mouser, DigiKey and JLCPCB simultaneously; the results-land in three aligned columns so you can compare manufacturer, package, price, stock and lead time-at a glance. A recommendation banner sits on top and names the single best place to buy.+```bash+# Browse — opens/refreshes the Parts Search Hydrogen tab + prints results+adom-parts-search show "STM32F103RBT6" -![Three-column comparison for an STM32F103RBT6 — Mouser, DigiKey and JLCPCB side by side with product photos, and a recommendation banner naming Mouser the winner](/blob/app/adom-parts-search/screenshots/compare-grid.png)+# Script — JSON only, no webview+adom-parts-search search "LM555" | jq '.recommendation' -The recommendation is **Mouser-preferred for a concrete reason**: a 40-minute drone hop from-Mouser's Mansfield, TX warehouse to our Fort Worth facility means near-zero shipping and same-hour-parts. When Mouser has it in stock without a long lead, Mouser wins.+# Keep the app tab alive without a query+adom-parts-search app+``` -## A recommendation that actually reasons+## Screenshots -The winner isn't always Mouser — and the banner tells you when it flips. If Mouser is out of-stock, sitting on a 280-day lead, or the part is NRND, the policy steps aside and points you at-whoever can actually ship today.+### Three distributors, one comparable view+One keyword goes to Mouser, DigiKey and JLCPCB simultaneously; results land in three aligned+columns with product photos, and a recommendation banner names the winner. -![The same search for an iCE40 FPGA where Mouser is out of stock with a 280-day lead, so DigiKey wins the recommendation and its column is highlighted](/blob/app/adom-parts-search/screenshots/policy-switch.png)+![Three-column comparison for an STM32F103RBT6 — Mouser, DigiKey and JLCPCB side by side with product photos, recommendation banner naming Mouser the winner](/blob/app/adom-parts-search/screenshots/compare-grid.png) -- **Mouser wins** when it's in stock with no long-lead penalty — drone delivery + \$0 shipping.-- **DigiKey wins** when Mouser is out, long-lead, or NRND and DigiKey can ship now.-- **JLCPCB** rides along as an assembly-library column — great for "is this a Basic part?" but it-  doesn't compete on the buy-now recommendation (different workflow).+### A recommendation that actually reasons+The winner isn't always Mouser. When Mouser is out of stock, long-lead, or NRND, the policy steps+aside and points you at whoever can ship today. -## Built for scripts and BOMs too+![Search for an iCE40 FPGA where Mouser is out of stock with a 280-day lead, so DigiKey wins and its column is highlighted](/blob/app/adom-parts-search/screenshots/policy-switch.png) -The webview is for browsing; the CLI is for everything else. `search` returns clean JSON for-piping into `jq`, BOM tooling, or another Claude step. `show` drives the webview *and* prints the-full per-vendor breakdown to your terminal.+### Built for scripts and BOMs+`search` returns clean JSON for `jq`, BOM tooling, or another Claude step. -![Terminal showing adom-parts-search search piped to jq to extract the recommendation, then a show command opening the Parts Search tab](/blob/app/adom-parts-search/screenshots/cli.png)+![Terminal showing adom-parts-search search piped to jq for the recommendation, then a show command opening the Parts Search tab](/blob/app/adom-parts-search/screenshots/cli.png) -```bash-# Browse — opens/refreshes the Parts Search Hydrogen tab + prints results-adom-parts-search show "ESP32-S3-WROOM-1U-N4R2" --limit 8 --in-stock-only+## Dependencies -# Script — JSON only, no webview-adom-parts-search search "LM555" | jq '.recommendation'+| Dependency | Required? | Why |+|---|---|---|+| `adom-mouser` (service-mouser) | Recommended | Mouser column + the Mouser-preferred recommendation |+| `adom-digikey` (service-digikey) | Recommended | DigiKey column + the fallback when Mouser can't ship |+| `adom-jlcpcb` (service-jlcpcb) | Optional | JLCPCB assembly-library column | -# Keep the app tab alive without a query-adom-parts-search app-```+Client-only — it owns no API keys and runs no service of its own; it federates the three vendor+backends and renders. At least one backend must be reachable; missing ones show a friendly error+and the recommendation reasons around them. -## Install+## Features -```bash-adompkg install adom-parts-search-```+- **One interface, three distributors** — parallel queries, side-by-side product photos.+- **Mouser-preferred routing** — 40-min drone delivery from Mansfield, TX to our Fort Worth+  facility + ~$0 shipping is why Mouser wins when it's in stock.+- **A recommendation that flips** — DigiKey wins on Mouser out-of-stock / long-lead / NRND.+- **Two faces** — a Hydrogen webview for browsing, a JSON CLI for scripting and BOMs.+- **Graceful degradation** — a rate-limited or down backend never fails the whole search. -That's it — `adompkg` pulls the binary and registers the skill so Claude can drive it. The `show`-subcommand auto-starts the local app server on first call and opens the **Parts Search** Hydrogen-tab; later calls reuse the same server and re-render in place.+## Talk to the AI -## How it works+Sourcing / comparison:+- "source an STM32F103RBT6"+- "where can I get an ESP32-S3-WROOM cheapest and fastest"+- "compare Mouser, DigiKey and JLCPCB for an LM555"+- "check stock for a USB-C receptacle across distributors" -Adom Parts Search is **client-only** — it owns no API keys and runs no service of its own. It-coordinates the three existing vendor backends, each of which handles its own auth, caching, quota-and watchdog:+BOM:+- "price this BOM across distributors"+- "which of these parts is cheapest to assemble at JLCPCB" -```-   adom-parts-search show "…"-        │  (3 parallel HTTPS queries)-        ├──▶ service-mouser    (adom-mouser serve)-        ├──▶ service-digikey   (adom-digikey serve)-        └──▶ service-jlcpcb    (adom-jlcpcb serve)-```+## Skills -It aggregates the three responses, applies the Mouser-preferred recommendation, and renders. If a-backend is rate-limited or down, its column shows a friendly error and the recommendation reasons-around it instead of failing the whole search.+| Skill | Purpose |+|---|---|+| `adom-parts-search` | When/how Claude drives the app — `show` vs `search`, MPN extraction, part-family corrections |+| `adom-parts-search-build` | Release workflow (build, publish to the wiki) | -## See also+## CLI reference -- [`adom-mouser`](/adom/adom-mouser) · [`adom-digikey`](/adom/adom-digikey) · [`adom-jlcpcb`](/adom/adom-jlcpcb) — the single-vendor tools this app federates.+| Command | What it does |+|---|---|+| `adom-parts-search show "<q>"` | Open/refresh the Parts Search tab + print full per-vendor results |+| `adom-parts-search search "<q>"` | JSON only (no webview) — pipe to `jq` |+| `adom-parts-search app` | Keep the app tab running without a query |+| `--limit N` / `--in-stock-only` | Cap hits per vendor / hide zero-stock |  ## Open source — make it yours, then give it back -This app is **open source under the MIT license**. Fork it, rewrite it, rename it, bend it to your-own workflow — and when you've made it better, **send your changes back to the Adom Wiki so the-whole community benefits**. Every wiki page is a git repo with a package registry on top, so-contributing back is first-class — improvements that land here ship to every Adom user who installs-the app.--```bash-adompkg install adom-parts-search      # install it-#   …edit the source to taste…-adompkg publish             # publish your own fork, or-#   open a pull request against this page so the change lands for everyone-```+This app is **open source under the MIT license**. Fork it, rewrite it, bend it to your workflow —+and when you've made it better, send your changes back to the Adom Wiki so the whole community+benefits. Every wiki page is a git repo with a package registry on top, so `adompkg publish` your+own fork, or open a pull request against this page. -> **One caveat — the search backend is an Adom service.** The actual lookups run against-> Adom's hosted Mouser, DigiKey and JLCPCB backends, which use **Adom's vendor API credentials and counts against Adom's quota**. That-> hosted backend is an Adom service and is **subject to change** — rate limits, endpoints, and-> availability can move at any time. Everything client-side (the CLI, the webview, the rendering-> and recommendation logic) is yours to fork and republish; the cloud API quota is not.+> **One caveat — the search backend is an Adom service.** The actual lookups run against Adom's+> hosted Mouser, DigiKey and JLCPCB backends, which use Adom's vendor API credentials and count+> against Adom's quota. That hosted backend is an Adom service and is **subject to change** — rate+> limits, endpoints, and availability can move at any time. Everything client-side is yours to fork+> and republish; the cloud API quota is not.  ## License 
screenshots/hero.png
⋯ 1 unchanged line ⋯