← Commit history

Publish 0.2.2

John Lauer ·ec99e956b6 ·4mo ago ·parent d939666
48 files changed +1881
feedback.html+19gallery.html+33install.sh+14package.json+14screenshots/hero.pngskills/adom-wiki-hero-image/SKILL.md+584skills/adom-wiki-hero-image/_hero_adom-footprint.html+65skills/adom-wiki-hero-image/_hero_adom-lbr.html+65skills/adom-wiki-hero-image/_hero_adom-symbol.html+65skills/adom-wiki-hero-image/_hero_chip-thumbnailer.html+65skills/adom-wiki-hero-image/_pcb_adom-footprint.html+34skills/adom-wiki-hero-image/_pcb_adom-lbr.html+34skills/adom-wiki-hero-image/_pcb_adom-symbol.html+34skills/adom-wiki-hero-image/_pcb_chip-thumbnailer.html+34skills/adom-wiki-hero-image/assets/Adom-Brand-Guidelines.pdfskills/adom-wiki-hero-image/assets/adom-white.svg+1skills/adom-wiki-hero-image/assets/fonts/familjen-grotesk-700-normal.woff2skills/adom-wiki-hero-image/assets/fonts/satoshi-400-normal.woff2skills/adom-wiki-hero-image/assets/fonts/satoshi-500-normal.woff2skills/adom-wiki-hero-image/assets/tiling/dot-grid.svg+6skills/adom-wiki-hero-image/assets/tiling/onion-corner.svg+12skills/adom-wiki-hero-image/assets/tiling/pcb-trace.svg+12skills/adom-wiki-hero-image/assets/tiling/pill-field.svg+11skills/adom-wiki-hero-image/build-variants.js+166skills/adom-wiki-hero-image/hero.html+65skills/adom-wiki-hero-image/render.js+15skills/adom-wiki-hero-image/variant-bleed-right-pcb.html+52skills/adom-wiki-hero-image/variant-bleed-right.html+53skills/adom-wiki-hero-image/variant-contained-gradient.html+52skills/adom-wiki-hero-image/variant-contained.html+53skills/adom-wiki-hero-image/variant-gradient.html+52skills/adom-wiki-hero-image/variant-midnight.html+53skills/adom-wiki-hero-image/variant-mirror.html+53skills/adom-wiki-hero-image/variant-onion.html+51skills/adom-wiki-hero-image/variant-pcb.html+52skills/adom-wiki-hero-image/variant-pill.html+52uninstall.sh+6variants/hero-bleed-right-pcb.pngvariants/hero-bleed-right.pngvariants/hero-contained-gradient.pngvariants/hero-contained.pngvariants/hero-gradient.pngvariants/hero-midnight.pngvariants/hero-mirror.pngvariants/hero-onion.pngvariants/hero-pcb.pngvariants/hero-pill.pngview.html+4
feedback.htmladded+19
@@ -0,0 +1,19 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><title>Colby feedback — OPEN (staged)</title>+<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>+<style>+html,body{margin:0;background:#0a0e14;color:#e6edf3;font-family:-apple-system,system-ui,sans-serif;line-height:1.55}+.wrap{max-width:900px;margin:0 auto;padding:34px 30px 80px}+h1{font-size:26px;border-bottom:1px solid #1f262e;padding-bottom:10px}+h2{font-size:20px;color:#7fe3dd;margin-top:32px}+h3{font-size:17px;color:#fff;margin-top:26px;border-left:3px solid #00b8b1;padding-left:10px}+code{background:#161b22;padding:1px 5px;border-radius:5px;font-size:13px;color:#8fd3d4}+strong{color:#fff}+a{color:#39b8ff}+hr{border:none;border-top:1px solid #1f262e;margin:26px 0}+ul{padding-left:22px}+em{color:#aeb8c4}+</style></head><body><div class="wrap" id="md"></div>+<script>+var md=atob("IyMg8J+foiBPUEVOIOKAlCBmb3IgQ29sYnkgKE5FVyBzaW5jZSB0aGUgMjAyNi0wNi0xOCBSb3VuZC0yIHNlbmQpCgpfRW1wdHkg4oCUIGZyZXNoIG1hcmtlciBzZXQgMjAyNi0wNi0xOCBhZnRlciBSb3VuZCAyIHdhcyBkZWxpdmVyZWQuIE5ldyBidWdzIEpvaG4gZ2l2ZXMgZ28gaGVyZSBmb3IKdGhlIG5leHQgY29uc29saWRhdGVkIHNlbmQuIEV2ZXJ5dGhpbmcgYmVsb3cgaXMgREVMSVZFUkVEOyBkb24ndCByZS1yZXBvcnQgaXQuXwoKLS0tCgojIyDwn5OlIENPTEJZIFJFU1BPTlNFICsgVkVSSUZJQ0FUSU9OICgyMDI2LTA2LTE4KQoKQ29sYnkgcmVwbGllZCAoSHlkcm9nZW4pLiBIZWFkbGluZTogbW9zdCBvZiBpdCB3YXMgYW4gb2xkZXIgc2VydmVyICsgb2xkZXIgYGFkb21wa2dgOyAqKnVwZGF0ZSB0aGUKQ0xJKiogKGBhZG9tcGtnIHNlbGYtdXBkYXRlYCBvciByZS1ib290c3RyYXAgZnJvbSBgaHR0cHM6Ly93aWtpLmFkb20uaW5jL3N0YXRpYy9ib290c3RyYXAuc2hgKSB0bwpnZXQgdGhlIENMSS1zaWRlIGZpeGVzOyAqKmF1dG8tdXBkYXRlIGlzIGNvbWluZyoqLiBWZXJpZmllZCB3aGF0IEkgY291bGQgKHJlYWQtb25seSk6CgoqKuKchSBWRVJJRklFRCBGSVhFRCAobGl2ZSByZXBybyk6KioKLSAqKmFkb20tdHRzIHJlc3RvcmVkKiog4oCUIGAvYWRvbS9hZG9tLXR0c2Ag4oaSIDIwMCAod2FzIDQwNCkuIF9OaXQ6IGAvYXBpL3YxL3BhZ2VzL2Fkb20vYWRvbS10dHNgCiAgc3RpbGwgNDA0cyB0aG91Z2ggdGhlIHdlYiBwYWdlIHdvcmtzIOKAlCBmbGFnLl8KLSAqKi9ibG9iIEhFQUQgaW1hZ2VzKiog4oaSIDIwMC4KLSAqKkh5cGhlbmF0ZWQtc2x1ZyBzZWFyY2gqKiAoTk9UIGluIENvbGJ5J3MgcmVwbHkpIOKAlCBgL2FwaS92MS9zZWFyY2g/cT1jaGlwLWZldGNoZXJgIOKGkiAyMDAgKyByZXN1bHRzLAogIG5vIFNRTCBlcnJvci4gQXBwZWFycyBmaXhlZDsgY29uZmlybSBhZ2FpbnN0IHRoZSBleGFjdCBmdWxsLXRleHQgZW5kcG9pbnQgdGhlIGJyYW5kIHRocmVhZCB1c2VkLgoKKirinIUgVkVSSUZJRUQgYWZ0ZXIgQ0xJIHVwZGF0ZSAyLjE4LjAg4oaSIDIuMzYuMCAoMjAyNi0wNi0xODsgcHVsbGVkIGBhZG9tcGtnLm1qc2ArbGF1bmNoZXIgZnJvbQpgL3N0YXRpY2AsIE5PVCBhIGZ1bGwgcmUtYm9vdHN0cmFwIOKAlCBza2lwcGVkIHRoZSBgYWRvbXBrZyBpbnN0YWxsIDxib290c3RyYXA+YCBzdGVwOyBvbGQgQ0xJIGJhY2tlZAp1cCBhdCBgfi8ubG9jYWwvYmluL2Fkb21wa2cubWpzLmJhay1wcmV1cGRhdGVgKToqKgotICoqRGVmYXVsdCByZWdpc3RyeSoqIG5vdyBkZWZhdWx0cyB0byB3aWtpLmFkb20uaW5jIChgYWRvbXBrZyBpbmZvIGFkb20tdHRzYCByZXNvbHZlZCB3aXRoIG5vIGVudgogIG92ZXJyaWRlKSBBTkQgKipoYXJkLXJlZnVzZXMqKiB0aGUgZGVhZCBgZ2l0LXdpa2kta3RxeGl0ZTVpZ2xoYCBob3N0IHdpdGggYSBjbGVhciBlcnJvci4g4pyFCi0gKipgcGFja2AgaG9ub3JzIGAuZ2l0aWdub3JlYCoqIOKAlCBzeW50aGV0aWMgdGVzdCBleGNsdWRlZCAyMDAgS0IgYG5vZGVfbW9kdWxlcy9gICsgYHRhcmdldC9gOwogIHRhcmJhbGwgMzk2IEIgLyA1IGZpbGVzLiDinIUKLSAqKmB1bmRlbGV0ZWAgLyBgdHJhbnNmZXJgIC8gYHNlbGYtdXBkYXRlYCoqIGFyZSBub3cgcmVhbCBzdWJjb21tYW5kcyAoc2VsZi11cGRhdGUgZGlkbid0IGV4aXN0IGluCiAgMi4xOC4wOyBpdCBkb2VzIGluIDIuMzYuMCkuIOKchSAoYWRvbS10dHMgYWxyZWFkeSByZXN0b3JlZC4pCi0gKipCb251czoqKiBwdWJsaXNoL3BhY2sgbGludCBub3cgcmV0dXJucyAqKkFMTCB2YWxpZGF0aW9uIGZhaWx1cmVzIGF0IG9uY2UqKiAodGhlIFJvdW5kLTIgIm9uZQogIGVycm9yIGF0IGEgdGltZSIgaXRlbSkg4oCUIGFwcGVhcnMgYWxyZWFkeSBmaXhlZC4g4pyFCgoqKvCflIEgQ09ORklSTUVELCBmaXhpbmcgbmV4dCAobm90IGRlcGxveWVkIOKAlCByZXBybyBjb25zaXN0ZW50KToqKiB0cmFuc2ZlciByZS1ydW5zIHRoZSBpbmRleGVyCihoZXJvL3JlZ2lzdHJ5LWxpbmsgYmxhbmspOyBkZWxldGUtdG8tbW92ZS1vd25lcnMgbm93IGhpbnRzIGF0IGBhZG9tcGtnIHRyYW5zZmVyYDsgUFVUIHJldHVybnMgYQpoaW50IHBvaW50aW5nIGF0IHRoZSByZWFsIGhlcm8vdmlzaWJpbGl0eSBzZXR0ZXJzICgrIG5vLWhlcm8gcHVibGlzaCBudWRnZSArIG9uZS1jb21tYW5kIGJpbGxib2FyZApoZXJvKTsgNDEzIHN0YW5kYXJkaXplZCB0byBge2Vycm9yLGNvZGUsaGludCxmaXh9YCArIG11bHRpcGFydCBwYXRoOyBsZWdhY3kgYC9za2lsbHwvYXBwLzxzbHVnPmAKMzAxcyAodmVyaWZpZWQgc3RpbGwgNDA0ID0gcGVuZGluZykuCgoqKvCfn6EgREVTSUdOSU5HOioqIGFyYml0cmFyeSBIVE1MIGhvc3RpbmcgKCMxKSDigJQgc2FuZGJveGVkIGlmcmFtZSwgc3RyaWN0IENTUCwgb3BhcXVlIG9yaWdpbjsgdGhpcwpBTFNPIGNvdmVycyByaWNoIFNWRyBwcmV2aWV3LiAqKlNWRy1hcy1kb3dubG9hZCBpcyBpbnRlbnRpb25hbCoqIChzdG9yZWQtWFNTIHZlY3Rvcik7IHRoZSBmaXggaXMgdGhlCnNhbmRib3gsIE5PVCBhIE1JTUUgZmxpcCDigJQgc28gdGhlIFNWRyBpdGVtIHJpZGVzIG9uIHRoaXMuIFJheSdzIGNvbXBvbmVudCBwYWdlcyBuZWVkIHRoZSBzYW1lLgoKKirwn4yQIElORlJBIChub3QgQ29sYnkncyBhcHApOioqIHRoZSBDbG91ZGZsYXJlIDEwMTAgV0FGIGJsb2NrIG9uIG5vbi1icm93c2VyIFVBcyDigJQgQ0xJIHdpbGwgc2V0IGEKcmVhbCBVQSArIGRvY3VtZW50IGEgVUEgaGVhZGVyOyB0aGUgV0FGIHJ1bGUgY2hhbmdlIGlzIGZvciB3aG9ldmVyIG93bnMgdGhlIENsb3VkZmxhcmUgY29uZmlnLgoKKipOZXh0OioqIENMSSB1cGRhdGVkIHRvIDIuMzYuMCBhbmQg4o+zIGl0ZW1zIHZlcmlmaWVkIChhYm92ZSkuIFJlbWFpbmluZzogKDEpIHJlLXZlcmlmeSB0aGUg8J+UgQppdGVtcyBvbmNlIENvbGJ5IGRlcGxveXMgdGhlIG5leHQgYmF0Y2ggKHRyYW5zZmVyLXJlaW5kZXgsIDQxMyBlbnZlbG9wZSwgdGhlIDMwMXMsIFBVVCBoaW50cyk7CigyKSB0aGUgYXJiaXRyYXJ5LUhUTUwgZmVhdHVyZSBpcyB0aGUgbG9uZyBwb2xlLiBEb24ndCBtYXJrIGFueXRoaW5nIOKchSB3aXRob3V0IGEgbGl2ZSByZXByby4KX05vdGU6IGBhZG9tcGtnIHNlbGYtdXBkYXRlYCBub3cgZXhpc3RzIGluIDIuMzYuMCwgc28gdGhlIEhEIFdTTDIgY29udGFpbmVyJ3MgImNhbid0IHVwZGF0ZSB0aGUKbWFuYWdlciIgZ2FwIGlzIHBhcnRseSBhZGRyZXNzZWQg4oCUIHRoZSBtYW5hZ2VyIGNhbiBzZWxmLXVwZGF0ZSBmcm9tIGAvc3RhdGljYCwgdGhvdWdoIGl0J3Mgc3RpbGwKbm90IGEgcmVnaXN0cnkgcGFja2FnZS5fCgotLS0KCiMg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQIEFSQ0hJVkUg4oCUIFNFTlQgMjAyNi0wNi0xOCB0byBIeWRyb2dlbiwgUm91bmQgMiAoZGVsaXZlcmVkKSDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKCioq8J+TqCBTRU5UIDIwMjYtMDYtMTgqKiB0byB0aGUgKipIeWRyb2dlbioqIHNwYWNlIChgc3BhY2VzL0FBQUFmRDNVMkJZYCksIGFkZHJlc3NlZCB0byBDb2xieSwgYXMgYQpuZXcgMy1tZXNzYWdlIHRocmVhZCAoYHRocmVhZHMvX2JySXQzak43cnNgKSB2aWEgYGFkb20tZ29vZ2xlYC4gUm91bmQgMiA9IGFyYml0cmFyeS1IVE1MIGhvc3RpbmcKKCMxLCArUmF5L2NvbXBvbmVudC11cGxvYWRzKSwgc3RydWN0dXJlZCBzZWxmLWNvcnJlY3RpbmcgNHh4IGVycm9yIGVudmVsb3BlcywgdGhlIHRyYW5zZmVyLWJsYW5rcy0KaGVybyBidWcsIHZpc2liaWxpdHkgaW5jb2hlcmVuY2UgYWNyb3NzIGxheWVycywgZnJvbnRlbmQgcm91dGUgKyBwdWJsaXNoZWQtVVJMIDQwNHMsIFNWRyBzZXJ2ZWQgYXMKb2N0ZXQtc3RyZWFtLCBoeXBoZW5hdGVkLXNsdWcgc2VhcmNoIFNRTCBlcnJvciwgcGVyLWZpbGUgMTBNQiBjYXAuIEF3YWl0aW5nIENvbGJ5J3MgcmVwbHk7IHZlcmlmeQpjbGFpbWVkIGZpeGVzIHdpdGggYSBsaXZlIHJlcHJvLgoKXyhNYXJrZXIgZm9yIFJvdW5kIDEsIHNldCAyMDI2LTA2LTE3IGV2ZW5pbmcg4oCUIGVudHJpZXMgYmVsb3cgd2VyZSB0aGUgUm91bmQtMSBiYXRjaC4pXwoKIyMjIDIwMjYtMDYtMTcg4oCUIEJyYW5kIHdpa2kgcGFnZTogYXJiaXRyYXJ5IEhUTUwgaG9zdGluZyAoIzEpICsgcm91dGUvc2VhcmNoIGJ1Z3MgIPCfhpUg4oC877iPCgpCdWlsZGluZyBgd2lraS5hZG9tLmluYy9hZG9tL2JyYW5kYC4gTmV0LW5ldzoKCjEuICoq4oC877iPIFRPUCDigJQgQVJCSVRSQVJZIEhUTUwgSE9TVElORy4qKiBUaGUgbWFya2Rvd24gcmVuZGVyZXIgc2FuaXRpemVzIGlubGluZS1zdHlsZWQgSFRNTDoKICAgc3R5bGVkIGA8ZGl2PmAgY29sb3Igc3dhdGNoZXMsIENTUyBncmlkcywgbWFzay1iYXNlZCBwYXR0ZXJuIHRpbGVzIGFsbCBmbGF0dGVuIHRvIHBsYWluIHRleHQuCiAgIFNvIHJpY2ggYnJhbmQgY29udGVudCAocGFsZXR0ZXMsIHRpbGluZyB0ZXh0dXJlcywgZGVjay1sYXlvdXQgZXhhbXBsZXMsIGFuIGludGVyYWN0aXZlIGJyYW5kCiAgIGJvYXJkKSBjYW4ndCByZW5kZXIgb24gYSBwYWdlLiBXZSBidWlsdCBhIHNlbGYtY29udGFpbmVkIEhUTUwgYnJhbmQgYm9hcmQ7IHRoZSBvbmx5IHdheSB0byBzaG93CiAgIGl0IGlzIGFuIGA8aWZyYW1lIHNyYz0iL2Jsb2IvLi4uIj5gIGhhY2suIFdhbnQgYSAqKmZpcnN0LWNsYXNzIHdheSBmb3IgYSBwYWdlIHRvIGhvc3Qvc2VydmUgYQogICBmdWxsIGFyYml0cmFyeSBIVE1MIHBhZ2UqKiAob3duIENTUy9KUy9hc3NldHMpLCByZW5kZXJlZCBpbmxpbmUgb3IgYXMgYSBwcm9wZXIgc3ViLXBhZ2UsCiAgIHNhbmRib3hlZCBpZiBuZWVkZWQgKGlmcmFtZSArIENTUCkgYnV0IFdJVEhPVVQgdGhlIG1hcmtkb3duIHNhbml0aXplciBzdHJpcHBpbmcgaXQuICJHaXRIdWIKICAgUGFnZXMgZm9yIGEgd2lraSBwYWdlLiIgKipBY2NlcHRhbmNlOioqIHB1dCBgaW5kZXguaHRtbGAgKyBhc3NldHMgaW4gdGhlIHJlcG8sIHdpa2kgc2VydmVzLwogICByZW5kZXJzIGl0IGFzIGEgcmVhbCBIVE1MIHBhZ2UsIG5vdCBzYW5pdGl6ZWQgbWFya2Rvd24uIChCaWdnZXIgdGhhbiwgYnV0IHJlbGF0ZWQgdG8sIHRoZQogICBhbHJlYWR5LXNlbnQgYC5tZGAtcmVuZGVyLXJvdXRlIGFzay4pICoqQnJvYWRlciB0aGFuIG9uZSB1c2UgY2FzZToqKiBSYXkgbGlrZWx5IG5lZWRzIHRoZSBzYW1lCiAgIHRoaW5nIGZvciBoaXMgKipjb21wb25lbnQgd2lraSB1cGxvYWRzKiogKHJpY2ggaW50ZXJhY3RpdmUgY29tcG9uZW50IHBhZ2VzKSwgc28gdGhlIG1hcmtkb3duCiAgIHNhbml0aXplciBpcyBmb3JjaW5nIGhpbSB0byBzdHJpcCBIVE1MIHRvby4gTXVsdGlwbGUgc3Rha2Vob2xkZXJzIHdhbnQgdGhpcyDihpIgcmFpc2UgaXRzIHByaW9yaXR5LgoyLiAqKkZyb250ZW5kIGRldGFpbCByb3V0ZSBgL3NraWxsLzxzbHVnPmAgYW5kIGAvYXBwLzxzbHVnPmAgNDA0Kiog4oCUIG9ubHkgYC88b3duZXI+LzxzbHVnPmAgd29ya3MuCiAgIFRoZSBiYXJlIHR5cGUrc2x1ZyBkZXRhaWwgcm91dGUgc2hvdWxkIHJlc29sdmUuCjMuICoqRnVsbC10ZXh0IHNlYXJjaCBTUUwgZXJyb3Igb24gaHlwaGVuYXRlZCBzbHVnczoqKiBzZWFyY2hpbmcgYGNoaXAtZmV0Y2hlcmAg4oaSICJubyBzdWNoIGNvbHVtbjoKICAgZmV0Y2hlciIuIE1vc3QgQWRvbSBzbHVncyBhcmUgaHlwaGVuYXRlZCwgc28gc2VhcmNoIGlzIGJyb2FkbHkgYnJva2VuLgo0LiAqKlNWRyBmaWxlcyBkb24ndCByZW5kZXIgaW4gdGhlIEZpbGVzIHByZXZpZXcg4oCUIHNlcnZlZCBhcyBgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYC4qKiBWRVJJRklFRAogICAyMDI2LTA2LTE4OiBgR0VUIC9hcGkvdjEvcGFnZXMvYWRvbS9icmFuZC9maWxlcy9hc3NldHMvYWRvbS1pY29uLnN2Z2Ag4oaSIEhUVFAgMjAwIHdpdGggdmFsaWQgU1ZHCiAgIFhNTCBidXQgYGNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYCAoc2hvdWxkIGJlIGBpbWFnZS9zdmcreG1sYCkuIFNvIGNsaWNraW5nIGFuIFNWRwogICBpbiB0aGUgRmlsZXMgc2VjdGlvbiB0byBwcmV2aWV3IHNob3dzIGEgYnJva2VuLWltYWdlIGljb24gKGJyb3dzZXIgd29uJ3QgcmVuZGVyIG9jdGV0LXN0cmVhbQogICBpbmxpbmU7IFBOR3MgcmVuZGVyIGZpbmUgYmVjYXVzZSB0aGV5IGdldCB0aGUgcmlnaHQgTUlNRSkuIEV4YW1wbGU6CiAgIGBodHRwczovL3dpa2kuYWRvbS5pbmMvYWRvbS9icmFuZC9maWxlcy9hc3NldHNgLiBGaXg6IG1hcCBgLnN2Z2Ag4oaSIGBpbWFnZS9zdmcreG1sYCBpbiB0aGUgZmlsZQogICBzZXJ2ZXIncyBjb250ZW50LXR5cGUgZGV0ZWN0aW9uIChvbmUtbGluZSBtaW1lLW1hcCBhZGQpLgoKKipBbHJlYWR5IGRlbGl2ZXJlZCB0aGlzIG1vcm5pbmcgKHJlaW5mb3JjZW1lbnQgb25seSDigJQgZG8gTk9UIHJlLXJlcG9ydDsgZXh0cmEgZXZpZGVuY2UpOioqCi0gKioxMCBNQiBwZXItZmlsZSBgUE9TVCAvZmlsZXNgIGxpbWl0KiogYmxvY2tzIGJyYW5kIGFzc2V0cyAoNDcvNjAgTUIgUHJvUmVzIGAubW92YCBtYXN0ZXJzKSDigJQKICBzYW1lIGZhbWlseSBhcyB0aGUgYWxyZWFkeS1zZW50IDQxMy80TUIgKyBsYXJnZS1hc3NldC1wYXRoIGFzazsgbmV3IGRhdGEgcG9pbnQ6IHRoZSBwZXItZmlsZSBjYXAKICBpcyAxMCBNQiwgd2FudCBhIHJlYWwgbGFyZ2UtYXNzZXQvcmVsZWFzZSB1cGxvYWQgcGF0aC4KLSBIZXJvIG9ubHkgdmlhIGBwYWdlLmpzb24uaGVyb2AgKyByZWluZGV4OyBgUFVUYCBpZ25vcmVzIGBoZXJvX3R5cGUvaGVyb19wYXRoYCDigJQgYWxyZWFkeSBzZW50CiAgKGhlcm8gd29uJ3QgaW5kZXgpLgotIGAvYmxvYmAgSEVBRCA0MDQg4oCUIGFscmVhZHkgcmVwb3J0ZWQgRklYRUQgKGEgd2luKTsgYnJhbmQgdGhyZWFkIGFza3MgdG8gY29uZmlybSBpbmxpbmUgYDxpbWc+YAogIHZpYSBIRUFEIGlzIHNvbGlkIG5vdy4KCiMjIyAyMDI2LTA2LTE4IOKAlCBhZG9tLXdpa2ktaGVybyBwdWJsaXNoICsgb3JnLXRyYW5zZmVyIHNlc3Npb246IEFQSSBEWCwgZXJyb3ItaGludHMsIHRyYW5zZmVyIGJ1ZyAg8J+GlSDigLzvuI8KCkJ1aWx0L3B1Ymxpc2hlZCB0aGUgYGFkb20td2lraS1oZXJvYCBza2lsbCBlbmQtdG8tZW5kIChjcmVhdGUgcGFnZSDihpIgcHVzaCBmaWxlcyDihpIgYGFkb21wa2cgcHVibGlzaGAK4oaSIHNldCBoZXJvIOKGkiBvcmctdHJhbnNmZXIgdG8gYC9hZG9tL2ApLiBUaGUgQVBJcyAqd29yayosIGJ1dCBhbiBBSSBkcml2aW5nIHRoZW0gaGFzIHRvIGxlYXJuIGV2ZXJ5CnJ1bGUgYnkgdHJpYWwtYW5kLWVycm9yIGJlY2F1c2UgKip0aGUgcmVzcG9uc2VzIGRvbid0IHRlYWNoIHRoZSBjYWxsZXIgaG93IHRvIGZpeCB0aGluZ3MuKiogVGhhdCdzCnRoZSBoaWdoZXN0LWxldmVyYWdlIGZpeC4gR3JvdXBlZDog8J+QniA9IGJ1Zywg8J+SoSA9IERYL0FQSS1zaGFwZSwg8J+UgSA9IHJlaW5mb3JjZXMgYW4gYWxyZWFkeS1zZW50IGl0ZW0uCgoqKvCfkJ4gTkVULU5FVyBCVUcg4oCUIGBQT1NUIC9wYWdlcy86c2x1Zy90cmFuc2ZlcmAgc2lsZW50bHkgYmxhbmtzIHRoZSBwYWdlIGhlcm8uKioKQWZ0ZXIgdHJhbnNmZXJyaW5nIGBqb2huL2Fkb20td2lraS1oZXJvYCDihpIgb3JnIGBhZG9tYCwgYGhlcm9fdHlwZWAvYGhlcm9fcGF0aGAgY2FtZSBiYWNrIGBudWxsYCBhbmQKdGhlIHBhZ2UgaGVhZGVyIGxvc3QgaXRzIGhlcm8uIFRoZSB0cmFuc2ZlciBVUERBVEUgb25seSByZXdyaXRlcyBgb3duZXIvb3JnX2lkL29yZ19uYW1lYCwgYnV0IHRob3NlCmhlcm8gY29sdW1ucyBhcmUgaW5kZXhlci1kZXJpdmVkIGZyb20gYHBhZ2UuanNvbmAgb24gZmlsZSBjb21taXRzIOKAlCBzbyBhIHRyYW5zZmVyIGxlYXZlcyB0aGVtIHN0YWxlLwpibGFua2VkIHVudGlsIHRoZSBuZXh0IGNvbW1pdC4gSSBoYWQgdG8gcHVzaCBhIG5vLW9wIGBwYWdlLmpzb25gIGNvbW1pdCB0byByZXBvcHVsYXRlLiAqKkZpeDoqKiB0aGUKdHJhbnNmZXIgaGFuZGxlciBzaG91bGQgcmUtcnVuIHRoZSBzYW1lIHJlaW5kZXggdGhhdCBhIGZpbGUgY29tbWl0IGRvZXMgKHJlLWRlcml2ZSBoZXJvICsgYW55IG90aGVyCmBwYWdlLmpzb25gLXNvdXJjZWQgZmllbGRzKS4gVGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IHRoZSAiQUktYnVpbHQsIG5vYm9keSdzIHN1cmUiIHJvdWdoIGVkZ2UuCgoqKvCfkqEgVEhFIEJJRyBPTkUg4oCUIG1ha2UgNHh4IHJlc3BvbnNlcyBzZWxmLWNvcnJlY3RpbmcgKHN0cnVjdHVyZWQgKyBhY3Rpb25hYmxlKS4qKiBSaWdodCBub3cgZXJyb3JzCmFyZSBiYXJlIEhUVFAgY29kZXMgb3IgdGVyc2Ugc3RyaW5nczsgYW4gYWdlbnQgY2FuJ3QgcmVjb3ZlciB3aXRob3V0IGd1ZXNzaW5nLiBFdmVyeSA0eHggc2hvdWxkCnJldHVybiBhIGNvbnNpc3RlbnQgZW52ZWxvcGU6IGB7ICJlcnJvciI6ICIuLi4iLCAiY29kZSI6ICJTTFVHX1RBS0VOIiwgImhpbnQiOiAiPHdoYXQgdG8gZG8+IiwKImZpeCI6ICI8ZXhhY3QgbmV4dCBjYWxsL2ZsYWc+IiwgImRvY3MiOiAiPHVybD4iIH1gLiBDb25jcmV0ZSBtaXNzZXMgdGhpcyBzZXNzaW9uOgogIC0gKio0MTMgb24gYFBPU1QgL2ZpbGVzYCoqIHdpdGggYSA0LjUgTUIgUERGIOKGkiByYXcgYEhUVFAgNDEzIFBheWxvYWQgVG9vIExhcmdlYCwgbm8gYm9keSwgbm8gaGludC4KICAgIEkgb25seSBkaXNjb3ZlcmVkIHRoZSBmaXggKHN3aXRjaCB0byB0aGUgKiptdWx0aXBhcnQqKiBmb3JtIG9mIHRoZSBzYW1lIGVuZHBvaW50KSBieSB0cmlhbC4gVGhlCiAgICA0MTMgc2hvdWxkIHNheTogYGNvZGU6IkZJTEVfVE9PX0xBUkdFIiwgbGltaXQ6IjEwTUIgcGVyIEpTT04gZmlsZSIsIGhpbnQ6InVzZSBtdWx0aXBhcnQgdXBsb2FkCiAgICBmb3IgbGFyZ2UvYmluYXJ5IGZpbGVzIiwgZml4OiJQT1NUIG11bHRpcGFydCB3aXRoIGZpbGVzPUBwYXRoImAuCiAgLSAqKmBhZG9tcGtnIHB1Ymxpc2hgIGxpbnQgZmFpbHVyZXMgY29tZSBPTkUgQVQgQSBUSU1FLioqIEZpcnN0IHJ1bjogInNjcmlwdHMuaW5zdGFsbCBtdXN0IGJlCiAgICAuL2luc3RhbGwuc2giLiBGaXhlZCBpdCwgcmUtcmFuLiBTZWNvbmQgcnVuOiAiTm8gdGFncyBzZXQuIiBUd28gYXZvaWRhYmxlIHJvdW5kLXRyaXBzLiAqKlZhbGlkYXRlCiAgICBldmVyeXRoaW5nIGFuZCByZXR1cm4gQUxMIGZhaWx1cmVzIGluIG9uZSByZXNwb25zZSoqIChhcnJheSBvZiBge2ZpZWxkLCBwcm9ibGVtLCBmaXh9YCkuCiAgLSAqKmBQVVQgL3BhZ2VzLzpzbHVnIHt2aXNpYmlsaXR5OiJwcml2YXRlIn1gKiogcmV0dXJucyAyMDAgYW5kIHdyaXRlcyBgdmlzaWJpbGl0eV9qc29uOiJwcml2YXRlImAsCiAgICBidXQgdGhlIGRlcml2ZWQgdG9wLWxldmVsIGB2aXNpYmlsaXR5YCBzdGF5cyBgInB1YmxpYyJgIGFuZCB0aGUgcGFnZSBpcyBzdGlsbCBhbm9uLXJlYWRhYmxlICsKICAgIGxpc3RlZC4gU2lsZW50IHBhcnRpYWwgc3VjY2VzcyB3aXRoIG5vIHdhcm5pbmcuIEVpdGhlciBob25vciBpdCBmdWxseSBvciByZXR1cm4KICAgIGBoaW50OiJ2aXNpYmlsaXR5IGlzIGdvdmVybmVkIGJ5IHBhZ2UuanNvbiArIHJlaW5kZXg7IFBVVCBpZ25vcmVkIHRoZXNlIGZpZWxkcyJgLgoKKirwn5KhIFZpc2liaWxpdHkgbW9kZWwgaXMgaW5jb2hlcmVudCBhY3Jvc3MgbGF5ZXJzIChuZXQtbmV3IGNsYXJpdHkgYmV5b25kIHRoZSBwcmlvciB2aXNpYmlsaXR5IG5vdGUpLioqClRocmVlIHJlcHJlc2VudGF0aW9ucyBkaXNhZ3JlZTogYHBhZ2UuanNvbi52aXNpYmlsaXR5OntwdWJsaWM6Ym9vbH1gIHZzIERCIGB2aXNpYmlsaXR5X2pzb25gIChzb21ldGltZXMKYW4gb2JqZWN0LCBzb21ldGltZXMgdGhlIHN0cmluZyBgInByaXZhdGUiYCkgdnMgZGVyaXZlZCBgdmlzaWJpbGl0eToicHVibGljImAuIE9ic2VydmVkOiBzZXR0aW5nCmBwYWdlLmpzb24udmlzaWJpbGl0eS5wdWJsaWM9ZmFsc2VgIGRpZCBOT1QgbWFrZSB0aGUgcGFnZSBwcml2YXRlIChzdGlsbCBhbm9uIDIwMCArIGluIHRoZSBwdWJsaWMKbGlzdGluZyk7IHRoZSAqKmZyb250ZW5kIHZpZXdlcioqICpkb2VzKiBoaWRlIHByaXZhdGUgcGFnZXMgKDQwNCksIGJ1dCB0aGUgKipBUEkgKyBsaXN0aW5nKiogc3RpbGwKZXhwb3NlIHRoZW0g4oCUIHNvICJwcml2YXRlIiBtZWFucyBkaWZmZXJlbnQgdGhpbmdzIG9uIGRpZmZlcmVudCBsYXllcnMuIEFuZCAqKmBvcmdfaWRgIHNpbGVudGx5IGZsaXBzCnRoZSBkZWZhdWx0Kio6IGFmdGVyIGFuIG9yZyB0cmFuc2ZlciwgbGlzdGluZyBpcyBnYXRlZCBieSBgdmlzaWJpbGl0eT0ncHVibGljJyBPUiAodmlzaWJpbGl0eSBJUyBOVUxMCkFORCBvcmdfaWQgSVMgTlVMTClgLCBzbyBhbiBvcmcgcGFnZSBsZWZ0IGF0IGRlZmF1bHQgdmlzaWJpbGl0eSBiZWNvbWVzIG1lbWJlci1vbmx5IHdpdGhvdXQgdGhlIGF1dGhvcgphc2tpbmcuICoqQXNrczoqKiBvbmUgY2Fub25pY2FsIHZpc2liaWxpdHkgZmllbGQ7IGVuZm9yY2UgaXQgdW5pZm9ybWx5ICh2aWV3ZXIgKyBBUEkgKyBsaXN0aW5nKTsgYW5kCm1ha2UgdGhlIG9yZ19pZOKGkmdhdGVkIGRlZmF1bHQgZXhwbGljaXQgKHJldHVybiBpdCBpbiB0aGUgdHJhbnNmZXIgcmVzcG9uc2U6IGAibm93X3Zpc2libGVfdG8iOiJvcmcKbWVtYmVycyBvbmx5IOKAlCBzZXQgdmlzaWJpbGl0eTpwdWJsaWMgdG8ga2VlcCBpdCBwdWJsaWMiYCkuCgoqKvCfkqEgQ0xJIHByaW50cyBhIG5vbi1yZXNvbHZpbmcgcGFnZSBVUkwuKiogYGFkb21wa2cgcHVibGlzaGAgcHJpbnRlZCBgV2lraSBwYWdlOgpodHRwczovL3dpa2kuYWRvbS5pbmMvYWRvbS13aWtpLWhlcm9gIOKAlCBidXQgdGhlIHJlYWwgVVJMIGlzIG93bmVyLXF1YWxpZmllZCBgLzxvd25lcj4vPHNsdWc+YAooYC9qb2huLy4uLmAsIG5vdyBgL2Fkb20vLi4uYCk7IHRoZSBiYXJlLXNsdWcgVVJMIDQwNHMgaW4gdGhlIGZyb250ZW5kLiBQcmludCB0aGUgKipjYW5vbmljYWwKb3duZXItcXVhbGlmaWVkIFVSTCoqIHNvIHRoZSBsaW5rIHlvdSBoYW5kIHRoZSB1c2VyIGFjdHVhbGx5IHdvcmtzLgoKKirwn5KhIFRyYW5zZmVyIERYIHdpbnMgKHNtYWxsKS4qKiBUaGUgdHJhbnNmZXIgd29ya2VkIGNsZWFubHkgb3RoZXJ3aXNlIChyZXBvIGtleWVkIGJ5IHR5cGUvc2x1ZwpzdXJ2aXZlZCwgb2xkIGAvam9obi9gIFVSTCAzMDFzIHRvIGAvYWRvbS9gIHZpYSBgc2x1Z19hbGlhc2VzYCDigJQgYm90aCDinIUsIG5pY2UpLiBUd28gYWRkczogKDEpIHJldHVybgp0aGUgKipuZXcgY2Fub25pY2FsIFVSTCoqICsgKipvbGTihpJuZXcgcmVkaXJlY3QqKiBpbiB0aGUgcmVzcG9uc2Ugc28gdGhlIGNhbGxlciBkb2Vzbid0IGhhdmUgdG8gcHJvYmU7CigyKSB0aGUgcmVzcG9uc2Ugc2hvdWxkIGNvbmZpcm0gdGhlIHJlaW5kZXggcmFuIChzZWUgYnVnIGFib3ZlKS4KCioq8J+UgSBSZWluZm9yY2VtZW50cyAoYWxyZWFkeSBzZW50IOKAlCBleHRyYSBkYXRhIHBvaW50cywgZG9uJ3QgcmUtZmlsZSk6KiogcGVyLWZpbGUgc2l6ZSBjYXAgKG5vdwpjb25maXJtZWQgUERGLXJlbGV2YW50LCBub3QganVzdCB2aWRlbyk7IGhlcm8gb25seSB2aWEgYHBhZ2UuanNvbmArcmVpbmRleCAoYFBVVGAgaWdub3JlcyBoZXJvCmZpZWxkcyk7IHR3by1zdG9yYWdlLWxheWVyIGZvb3RndW4gKGAvZmlsZXNgIGdpdCBwdXNoIHZzIGBhZG9tcGtnIHB1Ymxpc2hgIHRhcmJhbGwg4oCUIG11c3QgZG8gYm90aCBvcgp0aGUgcGFnZSBpcyBoYWxmLWJyb2tlbjsgdGhlIGAiaGludCJgIHN0cmluZyBvbiB0aGUgZmlsZXMgY29tbWl0IGFib3V0ICJubyByZWxlYXNlIOKAlCBydW4gYWRvbXBrZwpwdWJsaXNoIiBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGhpbnQgd2Ugd2FudCBFVkVSWVdIRVJFKTsgQ2xvdWRmbGFyZSBXQUYgNDAzIG9uIFB5dGhvbiBgdXJsbGliYAp3aXRob3V0IGEgYFVzZXItQWdlbnRgIChjdXJsIHdvcmtzIOKAlCB1bmRvY3VtZW50ZWQpLgoKLS0tCg==");+document.getElementById("md").innerHTML=marked.parse(new TextDecoder().decode(Uint8Array.from(md,function(c){return c.charCodeAt(0)})));+</script></body></html>
gallery.htmladded+33
@@ -0,0 +1,33 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><title>adom-wiki-hero — variants</title>+<style>+html,body{margin:0;background:#06090d;color:#e6edf3;font-family:system-ui,sans-serif}+h1{font-size:20px;font-weight:700;padding:18px 22px 2px}+h2{font-size:13px;font-weight:700;color:#7fe3dd;letter-spacing:1px;text-transform:uppercase;padding:18px 22px 0}+p.s{margin:2px 22px 6px;color:#8b949e;font-size:13px}+.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:8px 22px 8px}+.card{background:#0d1117;border:1px solid #1f262e;border-radius:10px;overflow:hidden}+.card .lbl{display:flex;justify-content:space-between;padding:9px 13px;font-size:13px}+.card .lbl b{color:#fff}.card .lbl span{color:#7fe3dd;font-size:12px}+.card img{width:100%;display:block;border-top:1px solid #1f262e}+</style></head><body>+<h1>adom-wiki-hero — look &amp; feel variants</h1>+<p class="s">Two axes: <b>layout</b> (window treatment + text side) × <b>theme</b> (background + Kickstand texture). Same content throughout. The skill asks the author to pick each via AskUserQuestion.</p>++<h2>Themes — backgrounds &amp; Kickstand textures (layout: window bleeds bottom)</h2>+<div class="grid">+  <div class="card"><div class="lbl"><b>Midnight</b><span>near-black + dot-grid · default</span></div><img src="variants/hero-midnight.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>PCB Traces</b><span>deep teal + pcb-trace circuit field</span></div><img src="variants/hero-pcb.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Onion</b><span>navy + concentric-arc signature motif</span></div><img src="variants/hero-onion.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Pill Field</b><span>navy + pill-field texture</span></div><img src="variants/hero-pill.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Gradient (wow)</b><span>brand teal→blue→purple · cover-slide</span></div><img src="variants/hero-gradient.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Mirror</b><span>Midnight palette · text on the RIGHT</span></div><img src="variants/hero-mirror.png?cb=2"></div>+</div>++<h2>Layouts — window treatments</h2>+<div class="grid">+  <div class="card"><div class="lbl"><b>Bleed Right</b><span>window runs off the RIGHT edge · midnight</span></div><img src="variants/hero-bleed-right.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Bleed Right + PCB</b><span>right-bleed × circuit field</span></div><img src="variants/hero-bleed-right-pcb.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Contained</b><span>window framed inside · margins top/right/bottom</span></div><img src="variants/hero-contained.png?cb=2"></div>+  <div class="card"><div class="lbl"><b>Contained + Gradient</b><span>framed window × brand gradient</span></div><img src="variants/hero-contained-gradient.png?cb=2"></div>+</div>+</body></html>
install.shadded+14
@@ -0,0 +1,14 @@+#!/usr/bin/env bash+# Install the adom-wiki-hero-image skill (+ its bundled brand assets and render tooling)+# into the user's Claude skills dir. Self-contained: no gallia dependency.+set -euo pipefail++SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"+DEST="${HOME}/.claude/skills/adom-wiki-hero-image"++mkdir -p "$DEST"+# copy the whole skill dir: SKILL.md + assets/ (fonts, wordmark) + render.js + hero.html+cp -R "${SRC_DIR}/skills/adom-wiki-hero-image/." "$DEST/"++echo "Installed adom-wiki-hero-image -> $DEST"+echo "Bundled: $(ls "$DEST/assets/fonts" | wc -l) font(s), adom-white.svg, render.js, hero.html"
package.jsonadded+14
@@ -0,0 +1,14 @@+{+  "slug": "adom-wiki-hero-image",+  "version": "0.2.2",+  "type": "skill",+  "description": "Design and render a billboard-grade hero image for any Adom wiki page. Bundles the brand fonts + ADOM wordmark + the render pipeline so it works after install with no gallia dependency.",+  "license": "MIT",+  "tags": ["hero", "billboard", "wiki", "design", "branding", "screensaver", "marketing", "puppeteer"],+  "hero": { "path": "screenshots/hero.png" },+  "scripts": {+    "install": "./install.sh",+    "uninstall": "./uninstall.sh"+  },+  "dependencies": {}+}
screenshots/hero.pngadded
⋯ 1 unchanged line ⋯
skills/adom-wiki-hero-image/SKILL.mdadded+584
@@ -0,0 +1,584 @@+---+name: adom-wiki-hero-image+description: >-+  Design and render a billboard-grade HERO IMAGE for an Adom Wiki app/skill/bridge page+  (wiki.adom.inc) — the 16:10 image, set via page.json, that the wiki page header, the landing+  grid card, the Hydrogen Desktop installer, the wiki homepage promos, and the adom-screensaver+  all show as a promotional billboard. Produces a dark-mode, on-brand hero: the app NAME as the+  headline, a one-line value prop, an on-brand teal→blue→purple accent, and ONE gorgeous shot of+  the app's REAL UI shown as a floating drop-shadowed "Adom webview" window bleeding off the+  bottom. Use whenever the user wants a hero image, hero billboard, wiki hero, app hero, billboard+  image, wiki-page art, app marketing image, screensaver/homepage art, "the image at the top of+  the page," hero for <app>, redo my hero, or hero.png — even if they don't say the exact word+  "hero." Also use it when a hero looks busy/overwhelming and needs to be simplified.+---++# adom-wiki-hero — make a billboard-grade hero image++A hero image is **not a screenshot and not a brochure**. It is a **billboard**. Picture it at+highway speed: the viewer gets about **one second**. So it must read instantly — **the app's name++ what it does + one gorgeous glimpse of the app itself.** That's the whole job. Every rule below+serves that one-second read.++### Why this skill exists++Without guidance, an AI asked for a hero just **shoves a boring screenshot into the frame**. That+fails the job. This skill exists so that **any Adom employee — or a third party — building a hero+for their wiki app or skill ends up with an image that is both beautiful AND unmistakably theirs.**+The mental shift it forces: *"I have to convey this app's **value proposition** in one clean image,"*+not *"paste a screenshot." Two outcomes, always together:++- **Beautiful & on-brand** — the rules and brand tokens below guarantee a polished, consistent family.+- **Unique to the app** — the variants (layout × theme, §9), the headline, the brand mark/chip, and+  the real screenshot make each hero distinct so the wiki doesn't look like one repeated template.++### Where these heroes run (design for ALL of them)++The hero is reused, **unchanged**, as a promotional billboard across many surfaces — so it must+stand alone and read in one second on each:++- the wiki **page** header and the landing **grid card**;+- the **wiki homepage** daily **trending-apps slideshow** (a rotating showcase);+- the **adom-screensaver** — it auto-discovers every public page's `hero.png` and cross-fades them,+  so your hero literally runs as an **ad** on idle screens;+- the **Hydrogen Desktop installer** setup steps (rotating billboards of recent apps);+- and increasingly **social/video** — YouTube podcast cards, TikTok/Instagram/Reels, X.com posts.+  Treat the hero as ad creative: bold, legible at a glance, self-explanatory, no surrounding context.++This skill is the consolidated recipe behind the adom-parts-search / adom-mouser / adom-digikey /+adom-jlcpcb / adom-desktop heroes. Every rule was learned by getting it wrong; follow it closely.++---++## Step 0 — ASK the author for a look & feel FIRST (AskUserQuestion)++Before rendering anything, call **`AskUserQuestion`** to let the author choose the look & feel along+**two axes** — these compose, so the same skill yields a distinct hero per app. Ask both in ONE+`AskUserQuestion` call (two questions). If the user already named a layout/theme, skip that question.+Tokens + presets live in §9 and [`build-variants.js`](build-variants.js).++```+Q1 header "Layout"  question "How should the app window sit?"+  • Bleed bottom (Recommended) — window high-right, runs off the BOTTOM. The family default.+  • Bleed right                — window runs off the RIGHT edge (tall panel).+  • Contained                  — window framed fully inside, margins top/right/bottom.+  • Mirror                     — name/value-prop on the RIGHT, window on the LEFT (bleeds bottom).++Q2 header "Theme"   question "Which background + texture?"+  • Midnight (Recommended) — near-black gradient + faint dot-grid. The family default.+  • PCB Traces             — deep brand teal + the Kickstand circuit-field tile (ethereal/electronic).+  • Onion / Pill (solid)   — navy field + the signature concentric-arc onion, or the pill-field tile.+  • Gradient (wow)         — bold brand teal→blue→purple cover-slide gradient. For flagship/launch.+```++Then render: `node build-variants.js <layout> <theme>` (layouts: `bottom|bleedRight|contained|mirror`;+themes: `midnight|pcb|onion|pill|gradient`) → `render.js` → downscale. Every combination still obeys+the non-negotiable rules below (dark, one screenshot, ≥~90px gutter, real UI, brand type, Windows-style+chrome). A variant changes background/texture/window-placement only — **never** the rules.++---++## 0. Output contract (what you produce)++- One image, **16:10**, rendered at **1600×1000 @ deviceScaleFactor 2** (= a crisp 3200×2000),+  then downscaled to a **2000×1250** PNG (~300–950 KB). Store it at `screenshots/hero.png`+  (or a versioned name on replacement — see §7).+- Registered in `page.json` (NOT inlined in the README):+  ```json+  "hero": { "type": "image", "path": "screenshots/hero.png" }+  ```+- Pushed to the page's git repo and verified live (see §7).++---++## 1. NON-NEGOTIABLE RULES (the hard-won ones — do not violate)++1. **ONE app, ONE screenshot.** No collages. A grid trying to show six features at once reads as+   noise and fails the one-second test. The single best whole-window shot, presented beautifully,+   beats any montage. If you catch yourself assembling a grid, **stop**.+2. **Dark mode. Minimize bright pixels.** Background is the Adom dark gradient. NEVER put a logo+   or product shot inside a big white box/plate — too many white pixels for a billboard. Logos go+   on **transparent** backgrounds, recolored for dark (see §3, §5).+3. **No background watermark logo.** Don't drop a giant faint Adom mark behind the content — the+   billboard frames crop it and it looks broken. The only background texture allowed is a subtle+   **Kickstand pattern** — dot-grid, concentric arcs, or square grid (see §9), kept faint and masked.+4. **Win the one-second read AND make the app unmistakable.** Two proven headline patterns — pick+   per app, never leave the viewer guessing what this is:+   - **Name-led** — the full app NAME is the headline ("Adom Desktop KiCad Bridge", "Adom Parts+     Search"), accent on the distinctive word. Best when the name itself sells it.+   - **Tagline-led** — a punchy value phrase is the headline ("One search. Every distributor."),+     accent on the key word, with the app identified by a big brand mark / category chip **and** the+     URL. Best when paired with a recognizable mark (e.g. Mouser).+   Either way: short, scannable, gradient accent on the key word. A pure tagline with no mark/chip+   to anchor it is the failure mode — the viewer shouldn't have to work out which app it is.+5. **Put the product UI in a floating "webview" window, not full-bleed-width.** A pseudo-window+   (rounded top, drop shadow, **Windows-style title bar** — min/max/close at the top-RIGHT, never+   macOS traffic-light dots — faint teal glow), ~50–58% of the width,+   high-right, **bleeding off only the bottom** (and slightly off the right for wide landscape+   shots), reads as "you're using this in an Adom webview." Do NOT stretch the screenshot to the+   full image width, and do NOT float it in the lower third — place it **high** (top ≈ 30% down).+6. **Value-prop line under the name** — one sentence on what it does, a few keywords bolded+   (white) for scanning.+7. **Margins are sacred. Nothing overlaps anything. Humans need margins.** EVERY element —+   wordmark, top-right chip/mark, headline, value-prop, prompt pill, capability pills, URL,+   slug, and the floating product shot — must hold a **clear ≥80px margin from every canvas+   edge** and **≥24px of air from every neighbouring element**. The top-right chip is the most+   common offender: it must sit **≥80px from the top edge and ≥80px from the right edge**, and+   must NOT collide with the product shot below/beside it. Keep chip/label text SHORT (≤ ~28+   chars) so it never runs toward the corner — abbreviate (e.g. "STMICRO", "TI", "NORDIC"), put+   the detail in the headline, not the chip. This is a HARD, repeatedly-failed rule: after every+   render you MUST do the margin pass in §7.5 and re-render until it passes. Crowding reads as+   amateur and gets the hero rejected.+8. **Wiki URL in the lower-LEFT corner**, with margin — never over the window.+9. **Use REAL app UI** with **good, specific example data** (real MPNs / real-looking domain+   content). Render the app's own `ui.html` populated with a realistic dataset — not a fake+   mockup, not an empty state. Generic "Lorem"/blank states look dead. **Capture the+   laptop-browser view with every toolbar / studio / HUD / layers panel OPEN** — the busy,+   sophisticated state, captured at ~1440px wide (deviceScaleFactor 2), with content loaded and+   the control panels deployed before the shot. A bare canvas reads as a toy; a full-toolbar+   shot says "capable." (John, 2026-06-21: he explicitly wanted the full-toolbar laptop view so+   viewers "understand how sophisticated the apps have gotten" — proven on the EDA apps.)+10. **On-brand type only.** Familjen Grotesk (headlines, 700), Satoshi (body), JetBrains Mono+    (terminal/code, optional). Never Inter/Arial/system.+11. **The hero is self-contained** (name + mark/chip + value prop + product). The installer,+    homepage, and screensaver frame it directly, so don't rely on surrounding text.+12. **Do NOT also embed the hero in the README.** The page already shows it from `hero.path`;+    repeating it is redundant. READMEs get 3 *other* distinct inline screenshots instead.+13. **Every image MUST be a real, relevant, high-quality photo of the actual subject. NEVER ship+    a placeholder.** If the hero features a device/chip/product, the image must clearly BE that+    device — not a wrong variant, not the *underside* of a board, not a meme/stock image that+    merely shares a keyword, not a low-res (<800px) crop, and **never a generated placeholder /+    striped "no-photo" panel.** A striped or blank panel in a shipped hero is a FAILURE, not a+    fallback. If you cannot find a genuinely good, on-subject image, that is a BLOCKER to solve+    (search harder, try other terms/sources, or ask the user) — do not paper over it. See the+    image-QA pass in §7.5.+14. **Keep text and image in SEPARATE zones — but the specific layout is YOUR choice and SHOULD+    vary per app.** The only universal here is the *principle*: text lives in its own clean column,+    the image in its own zone, they never overlap, and you never wrap copy around the image or drop+    a URL/CTA onto its busy area. (That separation is what kills the margin-collision churn.) This+    principle is satisfied by **every** layout in §9 — so **pick a different layout × theme per app+    so the wiki never looks templated. That variety is the whole point — do NOT collapse every hero+    into one layout.** Forms that all satisfy the principle, pick what flatters THIS app's shot: a+    floating "webview window" (app UIs), a framed *contained* shot, a *bottom* or *right* bleed, a+    *mirror* (text right), or a **full-bleed product photo** dominating one side (great for device/+    chip/hardware photos). The full-bleed-photo form is one OPTION among these, not the default.+15. **The call-to-action is an AI prompt — NEVER a command line.** Show a paste-into-Claude prompt+    (the "just ask Claude" pill), e.g. `"flash my RP2040 as a USB keyboard"`. Do NOT put+    `adompkg install …`, `pip install …`, `curl … | sh`, or any shell command on a hero. People+    copy/paste AI prompts now; a CLI string on a billboard reads as dated. (The wiki page's Install+    section still shows the install command — the *hero* sells the outcome via an AI prompt.)++---++## 2.5. 🛑 The mandatory PASS — run BEFORE you push (you keep skipping this)++After you render the PNG and BEFORE you push it to the wiki, **open the rendered image and do+these two passes by eye.** They are not optional. The #1 and #2 most-repeated hero failures are+crowded margins and bad/placeholder images — both are invisible in code and only caught by+looking at the output.++**§7.5a — Image-quality pass (look at the actual image):**+- Is it a real photo (or real UI), clearly of the EXACT subject the hero is about? (RP2040 board+  for an RP2040 hero — not a different board, not a chip's underside, not a keyword-collision+  meme, not a stock cable.)+- Is it sharp and ≥800px, well-exposed, framed top/front (not the solder side)?+- It is **NOT** a generated placeholder, striped panel, blank box, or "couldn't find one" filler.+- If ANY answer is no → fix the image first. A placeholder hero never ships.++**§7.5b — Margin & layout pass (measure the gaps):**+- Every element ≥80px from each canvas edge; the top-right chip ≥80px from BOTH the top and right.+- ≥24px of air between neighbouring elements; the text column clears the product shot by ≥80px.+- Nothing overlaps, kisses an edge, or runs off unintentionally (only the product shot may bleed,+  and only off the designated edge).+- Chip/label text is short enough that it isn't crammed into the corner.+- ALL text is on one side; the image full-bleeds/dominates the other; NO text sits on the image side.+- The CTA is an AI "just ask Claude" prompt — there is NO `adompkg`/`curl`/shell command anywhere.+- If ANY gap is tight → adjust the layout and **re-render**, then re-check. Repeat until clean.++Only after BOTH passes are clean do you push. If you find yourself pushing without having looked+at the rendered PNG, stop — that is exactly how the broken heroes shipped.++---++## 2. The layout (zones on a 1600×1000 canvas)++```+┌────────────────────────────────────────────────────────────┐+│ [ADOM wordmark]                       [CATEGORY chip ● /     │  ← top row, space-between+│                                        big transparent mark] │+│  Adom Parts Search          ← FULL      ┌───────────────────┐│+│  NAME, accent on the                    │● ● ●  X · Adom     ││  ← floating webview window:+│  distinctive word                       │   webview         ││    high-right, ~50–58% wide,+│                                         ├───────────────────┤│    rounded top, drop shadow,+│  value-prop sentence with a few         │   REAL app UI     ││    teal glow, bleeds off the+│  bold keywords. (max-width ~520)        │   (one shot,      ││    BOTTOM (+ a bit of the+│                                         │    good data)     ││    right for landscape)+│  ["just-ask-Claude" prompt pill]        │   …               ││+│                                         │   …               ││+│  wiki.adom.inc/adom/<slug> ← lower-left └───────────────┄┄┄┘│  (window bottom runs off canvas)+└────────────────────────────────────────────────────────────┘+```++**Reference values:**++| Element | Value |+|---|---|+| Canvas | `1600×1000`, render `deviceScaleFactor:2` → `3200×2000`, downscale to `2000×1250` |+| Side margins | `80–92px` |+| Text column | `left:92px; max-width:~500–520px` (right edge ≈ 592–612) |+| Gutter to window | **≥ ~90px (aim ~120)** — measure it; the #1 failure is the window/prompt box touching the copy |+| Headline | Familjen Grotesk 700, `54–72px`, `line-height:.99–1.06`, `letter-spacing:-1.4 to -2px` |+| Gradient accent | `linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7)` + `background-clip:text` |+| Value-prop | Satoshi 400, `21–24px`, `line-height:1.45–1.5`, `max-width:~480–520`; bold→white |+| Prompt/quote box | teal border `rgba(0,184,177,.28)`, tint `rgba(0,184,177,.05)`, radius 14 |+| URL | teal `#00b8b1`, bottom-left, `left:92px; bottom:54px` |+| Window | `right:~72px`, `width:~50%` (≈800px), top ≈ 25–30% down, `border-radius:15–16px 16px 0 0` |+| Window shadow | `0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)` |+| Window image fit | `object-fit:cover; object-position:top left` (keep title bar + canvas; side panels bleed off) |++**Do the gutter arithmetic, every time.** With `width:800px; right:72px`, the window's left edge =+`1600 − 72 − 800 = x728`. The text column lives in `x:92 → ~592–612` (left 92 + max-width 500–520).+Gutter = `728 − 612 ≈ 116px`. ✅ The trap (learned the hard way): `right:7%; width:56%` puts the+left edge at `x592` — exactly the text's right edge → **0px gutter**, and the prompt box visibly+kisses the window. ALWAYS keep ≥ ~90px between the text column's right edge (including the prompt+pill) and the window's left edge.++---++## 3. Brand tokens (exact values)++```+Background gradient (body):+  radial(1200×800 at 88% -10%, rgba(0,184,177,.22), transparent 60%),+  radial(900×700  at -5% 110%, rgba(140,107,247,.18), transparent 55%),+  radial(700×600  at 50% 50%,  rgba(0,97,239,.10),   transparent 60%),+  linear(155deg, #0a0e14 0%, #0d1117 45%, #071318 100%)+Text:        #e6edf3   Secondary: #aeb8c4   Muted: #8b949e / #9aa6b5+Accent teal: #00b8b1 / bright #00e6dc      Purple: #8c6bf7   Blue: #64ABFF+Headline gradient: linear(100deg, #00e6dc, #39b8ff 60%, #8c6bf7)   (blue→teal→purple family)+Vendor/brand reversed colors for dark bg (brighten for contrast):+  blue→#64ABFF   red→#FF5252   green→#34D17E   (white #fff is fine for wordmarks)+Fonts: 'Familjen Grotesk' 700 (headlines), 'Satoshi' 400/500 (body), 'JetBrains Mono' (code, opt).+  WOFF2 bundled with this skill at: assets/fonts/*.woff2  (see §3.1)+Adom wordmark SVG (white): assets/adom-white.svg  (bundled)+```++### 3.1 Bundled assets & packaging (so the skill works after `adompkg install`)++A wiki page is, at the end of the day, **a git repo + a pkg release tarball** — so whatever you+commit into the skill ships to whoever installs it. Do NOT reference `gallia/...` absolute paths;+gallia won't exist on an installed copy and you'll silently fall back to Arial. This skill+therefore **vendors its own brand assets** (≈80 KB, OFL / Fontshare-free — fine to redistribute):++```+adom-wiki-hero/+  SKILL.md+  assets/+    adom-white.svg                          # the ADOM wordmark ({{WORDMARK_SVG}} source)+    fonts/+      familjen-grotesk-700-normal.woff2     # headlines+      satoshi-400-normal.woff2              # body+      satoshi-500-normal.woff2              # body emphasis+  render.js                                 # the §4 renderer+  hero.html                                 # the §5 template, ready to fill+```++When you publish this skill's wiki page, commit `assets/` (and `render.js` / `hero.html`) into the+page repo so the release tarball carries them. Reference everything by **relative** path from the+skill dir; never reach into gallia. If you add JetBrains Mono later, drop its woff2 in `assets/fonts/`+and add an `@font-face` the same way.++---++## 4. Rendering pipeline (in-container, no desktop, no live backends)++**Traps, learned the hard way:**+- The container's `chromium-browser` is a **dead snap stub** — DO NOT use it. Use the+  Puppeteer-managed Chrome: `CHROME=$(ls -d /home/adom/.cache/puppeteer/chrome/linux-*/chrome-linux64/chrome | head -1)`.+- `chrome --headless --screenshot` **hangs** on non-trivial pages in new headless (Chrome v146+),+  and `--headless=old` was removed. The reliable path is **Puppeteer/CDP + an explicit+  `browser.close()`** — that combo shoots *and* exits.+- **Inline everything** (fonts, the ADOM SVG, the screenshot) as `base64`/`file://`, and abort+  external requests in the render — no network at render time = deterministic, and aborted fetches+  can't hang you. Brand fonts referenced by adom.inc URL won't resolve once requests are aborted,+  so load them locally (see the `@font-face` block below).+- Edge headless on a managed Windows box may be policy-blocked and silently write nothing — don't+  fight it; render where a real Chromium works (here, in-container).++`render.js` (renders any HTML file → PNG at a fixed viewport, aborts external requests):++```js+const puppeteer = require('/home/adom/project/node_modules/puppeteer-core');+(async () => {+  const [,, html, w, h, out, scale] = process.argv;+  const b = await puppeteer.launch({ executablePath: process.env.CHROME, headless: 'new',+    args:['--no-sandbox','--disable-gpu','--disable-dev-shm-usage','--hide-scrollbars',+          '--font-render-hinting=none','--force-color-profile=srgb'] });+  const p = await b.newPage();+  await p.setRequestInterception(true);+  p.on('request', r => (r.url().startsWith('http')) ? r.abort().catch(()=>{}) : r.continue().catch(()=>{}));+  await p.setViewport({ width:+w, height:+h, deviceScaleFactor:+(scale||2) });+  await p.goto('file://'+html, { waitUntil:'domcontentloaded' });+  await new Promise(r=>setTimeout(r,900));   // let fonts settle+  await p.screenshot({ path: out });+  await b.close(); console.log('OK '+out);   // close yourself or it won't exit+})().catch(e=>{console.error(e);process.exit(1)});+```++Run:+```bash+CHROME=$(ls -d /home/adom/.cache/puppeteer/chrome/linux-*/chrome-linux64/chrome | head -1)+CHROME=$CHROME node render.js /abs/path/hero.html 1600 1000 /tmp/[email protected] 2+convert /tmp/[email protected] -resize 2000x <app>/screenshots/hero.png   # ImageMagick is available+```++**Brand fonts MUST be injected** into the HTML `<head>` as local `@font-face`. This skill **ships+its own fonts** (see §3.1), so reference the bundled copies — **relative** paths work because+puppeteer only aborts `http(s)` requests; `file://` refs are left alone and resolve against the+HTML's own location. Keep `hero.html` in the skill dir (or copy `assets/` next to it):++```html+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+</style>+```++(If `hero.html` must live elsewhere, swap to absolute `file://<skill-dir>/assets/fonts/…` refs.)++---++## 5. The hero HTML/CSS template (copy, then fill the placeholders)++Placeholders: `{{WORDMARK_SVG}}` (contents of adom-white.svg), `{{TOPRIGHT}}` (a category chip OR+a big transparent brand mark — see below), `{{HEADLINE}}` (the app name; wrap the distinctive word+in `<span class="accent">…</span>`), `{{SUBHEAD}}`, `{{PROMPT}}`, `{{URL}}`, `{{WINLABEL}}`,+`{{SHOT_PATH}}` (absolute path to the real app screenshot PNG).++```html+<!DOCTYPE html><html><head><meta charset="utf-8">+<!-- inject the @font-face block from §4 here -->+<style>+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:46px;width:auto;display:block}+.mark svg{height:150px;width:auto;display:block}      /* BIG transparent brand mark (vendor apps) */+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:8px 16px;font-size:15px;letter-spacing:2px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:64px;line-height:1.02;+  letter-spacing:-1.8px;color:#f4f8fb;margin-top:40px;margin-bottom:22px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.45;color:#aeb8c4;max-width:500px;margin-bottom:28px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:800px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+/* Windows-style title bar: title left, min/max/close controls top-RIGHT. (We don't use macOS traffic lights.) */+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}   /* Windows close-button red on hover */+.window img{width:100%;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">{{WINLABEL}} · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file://{{SHOT_PATH}}">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark">{{WORDMARK_SVG}}</div>{{TOPRIGHT}}</div>+    <h1>{{HEADLINE}}</h1>+    <div class="sub">{{SUBHEAD}}</div>+    <div class="prompt"><span class="q">"{{PROMPT}}"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">{{URL}}</div>+</body></html>+```++### The top-right (`{{TOPRIGHT}}`)+Pick ONE based on app type:+- **Generic Adom app** → a small **category chip**: `<div class="chip"><span class="dot"></span>PARTS SOURCING</div>`+  (`DESKTOP APP`, `BRIDGE`, `BRIDGE SDK`, `WIKI SKILL`, …). Gives context without repeating the name.+- **Third-party brand app** (a vendor/service) → recreate that brand's wordmark as a **big+  transparent SVG in reversed/brightened colors** (no white plate), ~150px tall, keeping its+  signature element (checkmark, icon, sub-label) so it's instantly recognizable and each billboard+  is distinct.++The headline keeps the teal→blue→purple accent regardless — that's the family consistency; the+top-right mark/chip provides the per-app uniqueness.++---++## 6. Picking & producing THE screenshot (real UI, one window)++You want the single best **whole window** of the app. By app type:++- **A web/HTML app with its own `ui.html`** (parts-search, mouser, digikey, …): render the app's+  own `src/app/ui.html` populated with realistic data, then screenshot it.+  1. Copy `ui.html`, inject the local `@font-face` block, and append a boot `<script>` that calls+     the app's render functions with a hardcoded realistic dataset (read the render-fn signatures+     from `ui.html`). Set the search box value too.+  2. Neutralize anything that fights `file://`: override health/poll functions to no-ops and+     re-assert your data after ~600ms (async aborted fetches can otherwise overwrite your render).+  3. Render at ~1180–1280 × 800 @2x and use that hi-res PNG as `{{SHOT_PATH}}` so it stays crisp+     inside the window.+- **A real GUI app** (the desktop app, KiCad, Fusion): use the actual app window — it already has+  its own chrome. Pick the money shot (a 3D board render, a populated PCB). `object-fit:cover`+  top-left keeps the title bar + main canvas; let side panels bleed off.+- **A browser / web-automation app** (puppeteer): wrap the page viewport in the faux-Chrome frame+  (the template's Windows title bar — or a Chrome-style address bar with min/max/close at the+  right — showing a recognizable, attractive vendor site). No macOS traffic-light dots.+- **A CLI / no-GUI thing** (sample bridges, the SDK): the terminal *is* the app surface. Render a+  faux terminal/editor window (dots + title) with **real** commands and output — an install plus a+  verb call returning JSON, or a `bridge.json` open in an editor.++The same populated-UI technique also produces the **3 distinct inline README screenshots**+(different states / example queries — never reuse the hero).++---++## 7. Build + publish++```bash+CHROME=$(ls -d /home/adom/.cache/puppeteer/chrome/linux-*/chrome-linux64/chrome | head -1)+CHROME=$CHROME node render.js /abs/path/hero.html 1600 1000 /tmp/[email protected] 2+convert /tmp/[email protected] -resize 2000x <app>/screenshots/hero.png+```++Then publish the image and point `page.json` at it (see `adom-wiki-v2` / `adom-wiki-publish`):++1. **Push the PNG** to the page's `/files` (e.g. `POST /api/v1/pages/<slug>/files` with the PNG as+   `{content:<base64>, encoding:"base64"}`, or `adom-wiki-publish push <slug> --files <png>` from a+   login shell so `ADOM_WIKI_TOKEN` is set).+   - **Gotcha:** Python `urllib` needs a `User-Agent` header or Cloudflare 403s.+   - **Gotcha:** JSON body cap ~4MB → push images in their own small batch, separate from text.+2. Set `page.json` → `"hero": {"type":"image","path":"<name>.png"}` and re-assert+   `"visibility":"public"`.+3. **Use a versioned filename when REPLACING a hero** (e.g. `hero-v2.png`) — the CDN can serve a+   stale image if you overwrite the same URL. Bump the name to force freshness; the old file+   becomes a harmless orphan (there's no file-DELETE API).+4. **Verify two things anon** (200-on-the-API ≠ rendered):+   - the image URL returns `200 image/png`, AND its `md5sum` matches your local file+     (`curl .../blob/app/<slug>/screenshots/<name>.png | md5sum`);+   - the rendered page HTML (`https://wiki.adom.inc/adom/<slug>`) references the new filename.++---++## 8. QA checklist (look at the rendered PNG before you ship)++- [ ] **§7.5a image pass:** the image is a real, sharp, on-subject photo of the EXACT device —+      NOT a placeholder/striped panel, wrong variant, board underside, meme, or low-res crop.+- [ ] **§7.5b margin pass:** every element ≥80px from each edge (top-right chip ≥80px from top+      AND right), ≥24px between neighbours, nothing crowds/overlaps; chip text is short.+- [ ] 16:10, dark, no big white boxes, no background watermark.+- [ ] Exactly **one** screenshot — no collage.+- [ ] The **full app name** is the headline; the distinctive word is in the gradient accent.+- [ ] Value-prop line present, a few keywords bolded; readable across the room.+- [ ] Top-right has a category chip OR a big transparent recolored brand mark (recognizable).+- [ ] ADOM wordmark top-left; wiki URL lower-left with margin, not over the window.+- [ ] Floating window has a drop shadow + faint teal glow and a Windows-style title bar (min/max/close+      top-RIGHT, NOT macOS traffic-light dots); matches the chosen layout (bleed bottom / bleed right /+      contained / mirror); shows REAL app UI with good example data.+- [ ] Left text column has a clear gutter from the window — NOTHING overlaps.+- [ ] Brand fonts actually rendered (not a fallback sans); on-brand colors + gradient.+- [ ] Rendered at 2× (3200×2000), downscaled to 2000×1250, crisp.+- [ ] `page.json` hero.path set (versioned filename if replacing); README does NOT re-embed the+      hero; 3 other distinct inline shots present. Anon image 200 + rendered page references it.++---++## 9. Variants — look & feel along two axes (offered in Step 0)++Same content, same rules — a variant is a **skin**, never a new set of rules. Pick one **LAYOUT** and+one **THEME**; they compose. All are generated by [`build-variants.js`](build-variants.js)+(`node build-variants.js <layout> <theme>`), which inlines the bundled wordmark, fonts, and Kickstand+tiles so the render is deterministic. Everything derives from the **Kickstand brand guide**, bundled at+[`assets/Adom-Brand-Guidelines.pdf`](assets/Adom-Brand-Guidelines.pdf).++### Axis 1 — LAYOUT (window treatment + text side)++| Layout (`key`) | Window | Text | When |+|---|---|---|---|+| **Bleed bottom** (`bottom`, default) | high-right, runs off the **bottom**, rounded top | left | The family default; most apps. |+| **Bleed right** (`bleedRight`) | tall panel, runs off the **right edge**, rounded left | left | Wide/landscape UIs; gives a strong "wall of app." |+| **Contained** (`contained`) | framed **fully inside**, margins top/right/bottom, rounded all | left | When the whole window matters; calmest, most product-shot-like. |+| **Mirror** (`mirror`) | bleeds bottom, on the **left**; text on the **right** | right | Variety in a rotation; or when the shot enters better from the left. |+| **Full-bleed photo** (`photo`) | a real product/device PHOTO full-bleeds & **dominates** one side; inner edge masked/scrimmed into the bg | opposite side | Device/chip/hardware photos (NOT app UIs); bold and editorial. Pair with persona/feature pills in the text column. |++> **Mix it up.** With 5 layouts × 5 themes = **25 distinct looks**, plus your headline, accent,+> mark/chip and the real shot, every hero should feel its own. Rotating the layout/theme per app+> is REQUIRED, not optional — a wiki where every card is the same layout is a failure of this skill.++### Axis 2 — THEME (background + Kickstand texture)++| Theme (`key`) | Surface | Texture | Feel / when |+|---|---|---|---|+| **Midnight** (`midnight`, default) | near-black `#0a0e14→#071318` + teal/purple glows | faint dot-grid | The family default; neutral, lets the UI pop. |+| **PCB Traces** (`pcb`) | deep teal `#003C3F` | `pcb-trace` circuit field (~16%) | Electronic/"ethereal"; great for EDA/hardware apps. |+| **Onion** (`onion`) | navy `#00204F` | `onion-corner` concentric arcs (bottom-right) | The signature deck "substance" slide; solid + serious. |+| **Pill Field** (`pill`) | navy `#00204F` | `pill-field` tile | Softer, friendlier solid; good for utilities. |+| **Gradient** (`gradient`) | brand `#00b8b1→#0061ef→#8c6bf7` + left scrim | none (color is the star) | The "wow"/cover-slide; flagship & launch heroes. |++> Deck principle (from the Kickstand brand-deck system): **gradient = emotional · solids = substance.**+> Use Gradient for the splashy launch hero; solids (PCB/Onion/Pill) for substance; Midnight as the safe default.++### Kickstand tiling textures (bundled in `assets/tiling/`)++Four repeatable `currentColor` SVGs that "play off PCB/electronics in an ethereal way." They tint to+any surface — place a **lighter tint** of the surface color at **6–22% opacity**, faded out behind the+text so they never compete with copy (`build-variants.js` does this via a left-fade mask):++```+pcb-trace.svg   — circuit traces + pads (the headline texture)   tile ~150–200px+onion-corner.svg— concentric "onion" arcs, anchor bottom-right    place ~60% no-repeat+dot-grid.svg    — fine dot grid                                   tile ~20–26px+pill-field.svg  — scattered rounded pills                         tile ~60px+```++### Brand palette (Kickstand guide, p.11) — for inventing your own theme++```+Gradient:  linear-gradient(110deg,#00b8b1 0%,#0061ef 48%,#8c6bf7 100%)   (teal→blue→purple)+Core:      Teal #00B8B1   Blue #0061EF   Purple #8C6BF7+Lights:    #64ABFF (blue)  #8FD3D4 (teal)  #C5B3FF (purple)+Darks:     Black #191919   Navy #00204F   Teal #003C3F   Purple #4323AD+```++To add a layout or theme: add an entry to `LAYOUTS` or `THEMES` in `build-variants.js`, then list it in+the Step-0 AskUserQuestion. Keep the non-negotiable rules (§1) intact.++### Bundled brand assets (see also §3.1)++```+assets/+  Adom-Brand-Guidelines.pdf     # the full Kickstand guide (palette, patterns, type, logo rules)+  adom-white.svg                # the ADOM wordmark+  fonts/*.woff2                 # Familjen Grotesk 700, Satoshi 400/500+  tiling/*.svg                  # pcb-trace, onion-corner, dot-grid, pill-field (currentColor)+```
skills/adom-wiki-hero-image/_hero_adom-footprint.htmladded+65
@@ -0,0 +1,65 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;+  letter-spacing:-2px;color:#f4f8fb;margin-top:48px;margin-bottom:24px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:64px;top:240px;width:880px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}+.window img{width:100%;height:550px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-footprint · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///tmp/appshots/adom-footprint/hero.png">+  </div>+  <div class="zone">+    <div class="top">+      <div class="wordmark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div>+      <div class="chip"><span class="dot"></span>EDA · FOOTPRINT</div>+    </div>+    <h1>Footprints with a<br><span class="accent">layers HUD.</span></h1>+    <div class="sub">Toggle copper, courtyard and paste — and preview the <b>InstaPCB 300µm solder-paste dots</b>, jetted dot-by-dot, that no other tool shows.</div>+    <div class="prompt"><span class="q">"show this footprint’s paste layer"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">wiki.adom.inc/john/adom-footprint</div>+</body></html>
skills/adom-wiki-hero-image/_hero_adom-lbr.htmladded+65
@@ -0,0 +1,65 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;+  letter-spacing:-2px;color:#f4f8fb;margin-top:48px;margin-bottom:24px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:64px;top:240px;width:880px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}+.window img{width:100%;height:550px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-lbr · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///tmp/appshots/adom-lbr/hero.png">+  </div>+  <div class="zone">+    <div class="top">+      <div class="wordmark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div>+      <div class="chip"><span class="dot"></span>EDA · LIBRARY</div>+    </div>+    <h1>One part.<br><span class="accent">Every EDA tool.</span></h1>+    <div class="sub">Turn any KiCad symbol + footprint into a true EAGLE <b>.lbr</b>, lint it, and deliver it to <b>KiCad, Fusion 360, Altium and OrCAD</b>.</div>+    <div class="prompt"><span class="q">"build an .lbr for this chip"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">wiki.adom.inc/john/adom-lbr</div>+</body></html>
skills/adom-wiki-hero-image/_hero_adom-symbol.htmladded+65
@@ -0,0 +1,65 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;+  letter-spacing:-2px;color:#f4f8fb;margin-top:48px;margin-bottom:24px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:64px;top:240px;width:880px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}+.window img{width:100%;height:550px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-symbol · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///tmp/appshots/adom-symbol/hero.png">+  </div>+  <div class="zone">+    <div class="top">+      <div class="wordmark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div>+      <div class="chip"><span class="dot"></span>EDA · SYMBOL</div>+    </div>+    <h1>Schematic symbols,<br><span class="accent">studio-grade.</span></h1>+    <div class="sub">Pick the source, lay out the pins, and emboss the chip’s real <b>3D model</b> right on the symbol — then send it to <b>KiCad, Fusion, Altium or OrCAD</b>.</div>+    <div class="prompt"><span class="q">"open this chip in adom-symbol"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">wiki.adom.inc/john/adom-symbol</div>+</body></html>
skills/adom-wiki-hero-image/_hero_chip-thumbnailer.htmladded+65
@@ -0,0 +1,65 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;+  letter-spacing:-2px;color:#f4f8fb;margin-top:48px;margin-bottom:24px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:64px;top:240px;width:880px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}+.window img{width:100%;height:550px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">chip-thumbnailer · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///tmp/wikipub/chip-thumbnailer/docs/winshot.png">+  </div>+  <div class="zone">+    <div class="top">+      <div class="wordmark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div>+      <div class="chip"><span class="dot"></span>EDA · THUMBNAILS</div>+    </div>+    <h1>Three thumbnails,<br><span class="accent">every chip.</span></h1>+    <div class="sub">Symbol, footprint and a true <b>OCCT 3D render</b> for every chip-fetcher part — Adom-themed, no local KiCad or EAGLE.</div>+    <div class="prompt"><span class="q">"render thumbnails for this part"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">wiki.adom.inc/john/chip-thumbnailer</div>+</body></html>
skills/adom-wiki-hero-image/_pcb_adom-footprint.htmladded+34
@@ -0,0 +1,34 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+      linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%)}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+       -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;margin-left:auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;right:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;left:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+<div class="tex"></div>+<div class="window"><div class="chrome"><span class="ct">adom-footprint · Adom webview</span>+<div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+<img src="file:///tmp/appshots/adom-footprint/hero.png"></div>+<div class="zone"><div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>EDA · FOOTPRINT</div></div>+<div class="col"><h1>Footprints with a<br><span class="accent">layers HUD.</span></h1><div class="sub">Toggle copper, courtyard and paste — and preview the <b>InstaPCB 300µm solder-paste dots</b>, jetted dot-by-dot, that no other tool shows.</div>+<div class="prompt"><span class="q">"show this footprint’s paste layer"</span><span class="ask">— just ask Claude</span></div></div></div>+<div class="url">wiki.adom.inc/john/adom-footprint</div></body></html>\ No newline at end of file
skills/adom-wiki-hero-image/_pcb_adom-lbr.htmladded+34
@@ -0,0 +1,34 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+      linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%)}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+       -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:80px;top:150px;width:752px;border-radius:16px;overflow:hidden;z-index:1;box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:672px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+<div class="tex"></div>+<div class="window"><div class="chrome"><span class="ct">adom-lbr · Adom webview</span>+<div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+<img src="file:///tmp/appshots/adom-lbr/hero.png"></div>+<div class="zone"><div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>EDA · LIBRARY</div></div>+<div class="col"><h1>One part.<br><span class="accent">Every EDA tool.</span></h1><div class="sub">Turn any KiCad symbol + footprint into a true EAGLE <b>.lbr</b>, lint it, and deliver it to <b>KiCad, Fusion 360, Altium and OrCAD</b>.</div>+<div class="prompt"><span class="q">"build an .lbr for this chip"</span><span class="ask">— just ask Claude</span></div></div></div>+<div class="url">wiki.adom.inc/john/adom-lbr</div></body></html>\ No newline at end of file
skills/adom-wiki-hero-image/_pcb_adom-symbol.htmladded+34
@@ -0,0 +1,34 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+      linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%)}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+       -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+<div class="tex"></div>+<div class="window"><div class="chrome"><span class="ct">adom-symbol · Adom webview</span>+<div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+<img src="file:///tmp/appshots/adom-symbol/hero.png"></div>+<div class="zone"><div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>EDA · SYMBOL</div></div>+<div class="col"><h1>Schematic symbols,<br><span class="accent">studio-grade.</span></h1><div class="sub">Pick the source, lay out the pins, and emboss the chip’s real <b>3D model</b> right on the symbol — then send it to <b>KiCad, Fusion, Altium or OrCAD</b>.</div>+<div class="prompt"><span class="q">"open this chip in adom-symbol"</span><span class="ask">— just ask Claude</span></div></div></div>+<div class="url">wiki.adom.inc/john/adom-symbol</div></body></html>\ No newline at end of file
skills/adom-wiki-hero-image/_pcb_chip-thumbnailer.htmladded+34
@@ -0,0 +1,34 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+      linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%)}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+       -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:-74px;top:104px;width:900px;border-radius:16px 0 0 16px;overflow:hidden;z-index:1;box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:812px;display:block;object-fit:cover;object-position:top left;background:#0b0f17}+</style></head><body>+<div class="tex"></div>+<div class="window"><div class="chrome"><span class="ct">chip-thumbnailer · Adom webview</span>+<div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+<img src="file:///tmp/wikipub/chip-thumbnailer/docs/winshot.png"></div>+<div class="zone"><div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>EDA · THUMBNAILS</div></div>+<div class="col"><h1>Every thumbnail,<br><span class="accent">every chip.</span></h1><div class="sub">Symbol, footprint and true <b>OCCT 3D</b> renders from six angles + five outline styles — for every chip-fetcher part.</div>+<div class="prompt"><span class="q">"render thumbnails for this part"</span><span class="ask">— just ask Claude</span></div></div></div>+<div class="url">wiki.adom.inc/john/chip-thumbnailer</div></body></html>\ No newline at end of file
skills/adom-wiki-hero-image/assets/Adom-Brand-Guidelines.pdfadded
⋯ 1 unchanged line ⋯
skills/adom-wiki-hero-image/assets/adom-white.svgadded+1
@@ -0,0 +1 @@+<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs><style>.cls-1{fill:#fff;stroke-width:0px;}</style></defs><path class="cls-1" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path class="cls-1" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path class="cls-1" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg>\ No newline at end of file
skills/adom-wiki-hero-image/assets/fonts/familjen-grotesk-700-normal.woff2added
⋯ 1 unchanged line ⋯
skills/adom-wiki-hero-image/assets/fonts/satoshi-400-normal.woff2added
⋯ 1 unchanged line ⋯
skills/adom-wiki-hero-image/assets/fonts/satoshi-500-normal.woff2added
⋯ 1 unchanged line ⋯
skills/adom-wiki-hero-image/assets/tiling/dot-grid.svgadded+6
@@ -0,0 +1,6 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60">+  <defs><pattern id="d" width="20" height="20" patternUnits="userSpaceOnUse">+    <circle cx="4" cy="4" r="2.2" fill="currentColor"/>+  </pattern></defs>+  <rect width="60" height="60" fill="url(#d)"/>+</svg>
skills/adom-wiki-hero-image/assets/tiling/onion-corner.svgadded+12
@@ -0,0 +1,12 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">+  <g fill="none" stroke="currentColor" stroke-width="2" opacity="0.85">+    <path d="M356 400 V380.2 Q356 356 400 356 Q444 356 444 380.2 V400"/>+    <path d="M314 400 V361.3 Q314 314 400 314 Q486 314 486 361.3 V400"/>+    <path d="M272 400 V342.4 Q272 272 400 272 Q528 272 528 342.4 V400"/>+    <path d="M230 400 V323.5 Q230 230 400 230 Q570 230 570 323.5 V400"/>+    <path d="M188 400 V304.6 Q188 188 400 188 Q612 188 612 304.6 V400"/>+    <path d="M146 400 V285.7 Q146 146 400 146 Q654 146 654 285.7 V400"/>+    <path d="M104 400 V266.79999999999995 Q104 104 400 104 Q696 104 696 266.79999999999995 V400"/>+    <path d="M62 400 V247.9 Q62 62 400 62 Q738 62 738 247.9 V400"/>+  </g>+</svg>\ No newline at end of file
skills/adom-wiki-hero-image/assets/tiling/pcb-trace.svgadded+12
@@ -0,0 +1,12 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">+  <defs><pattern id="pcb" width="200" height="200" patternUnits="userSpaceOnUse">+    <g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">+      <path d="M0 40 H70 L100 70 H200"/><path d="M40 0 V60 L70 90 V200"/>+      <path d="M200 150 H150 L120 120 H40"/><path d="M160 200 V160 L130 130"/>+      <path d="M100 70 L140 30 H200"/>+    </g>+    <g fill="currentColor"><circle cx="100" cy="70" r="6"/><circle cx="70" cy="90" r="6"/><circle cx="40" cy="60" r="5"/><circle cx="120" cy="120" r="5"/><circle cx="140" cy="30" r="4"/></g>+    <g fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="100" cy="70" r="11"/><circle cx="120" cy="120" r="9"/></g>+  </pattern></defs>+  <rect width="200" height="200" fill="url(#pcb)"/>+</svg>
skills/adom-wiki-hero-image/assets/tiling/pill-field.svgadded+11
@@ -0,0 +1,11 @@+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 120 120">+  <defs><pattern id="p" width="60" height="60" patternUnits="userSpaceOnUse">+    <g fill="none" stroke="currentColor" stroke-width="2.5">+      <rect x="6"  y="10" width="22" height="9" rx="4.5"/>+      <rect x="38" y="30" width="14" height="9" rx="4.5"/>+      <rect x="12" y="44" width="9"  height="9" rx="4.5"/>+      <rect x="34" y="6"  width="9"  height="9" rx="4.5"/>+    </g>+  </pattern></defs>+  <rect width="120" height="120" fill="url(#p)"/>+</svg>
skills/adom-wiki-hero-image/build-variants.jsadded+166
@@ -0,0 +1,166 @@+// build-variants.js — generate adom-wiki-hero-image heroes across two axes: LAYOUT × THEME.+// Usage:+//   node build-variants.js                      -> writes the curated showcase set (see COMBOS)+//   node build-variants.js <layout> <theme>     -> one hero, e.g. "bleedRight pcb"+//   node build-variants.js name <comboName>     -> one named combo from COMBOS+// LAYOUTS: bottom | mirror | bleedRight | contained+// THEMES:  midnight | pcb | onion | pill | gradient+// Brand assets (fonts, wordmark, Kickstand tiles) are bundled under assets/, referenced relatively.+const fs = require('fs');+const path = require('path');+const DIR = __dirname;++const WORDMARK = fs.readFileSync(path.join(DIR, 'assets', 'adom-white.svg'), 'utf8')+  .replace(/<\?xml[^>]*\?>/, '').replace(/<style>[\s\S]*?<\/style>/, '').replace(/class="cls-1"/g, 'fill="#fff"');++// recolor a currentColor tile SVG and return a CSS background data-URI+function tile(name, color) {+  const svg = fs.readFileSync(path.join(DIR, 'assets', 'tiling', name), 'utf8').replace(/currentColor/g, color);+  return `url("data:image/svg+xml;base64,${Buffer.from(svg).toString('base64')}")`;+}++// ---- content (the skill's own hero) ----+const C = {+  headline: 'Every app deserves<br>a <span class="accent">billboard.</span>',+  sub: 'Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.',+  chip: 'Wiki Skill', prompt: 'make a hero for my app',+  url: 'wiki.adom.inc/adom/adom-wiki-hero-image',+  winlabel: 'adom-parts-search · hero.png · Adom webview',+  shot: 'file:///home/adom/project/adom-parts-search/screenshots/hero.png',+};++// ---- THEMES: background + texture overlay + text colors ----+const THEMES = {+  midnight: {+    bg: `radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+         radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+         linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%)`,+    tex: `background:${tile('dot-grid.svg', '#ffffff')} 0 0/24px repeat;opacity:.05;+          -webkit-mask-image:linear-gradient(115deg,transparent 0%,#000 48%);mask-image:linear-gradient(115deg,transparent 0%,#000 48%)`,+    text: '#e6edf3', sub: '#aeb8c4', chipB: 'rgba(0,184,177,.34)', chipF: 'rgba(0,184,177,.07)', chipT: '#7fe3dd', accent: true,+  },+  // PCB traces — Kickstand "ethereal circuit field" on deep brand teal+  pcb: {+    bg: `radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+         linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%)`,+    tex: `background:${tile('pcb-trace.svg', '#8FD3D4')} center/170px repeat;opacity:.16;+          -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)`,+    text: '#eafdfb', sub: '#a9d6d2', chipB: 'rgba(143,211,212,.40)', chipF: 'rgba(0,184,177,.10)', chipT: '#8fd3d4', accent: true,+  },+  // Onion corner — signature concentric-arc motif on solid navy (deck "substance" slide)+  onion: {+    bg: `radial-gradient(900px 700px at 80% -10%, rgba(100,171,255,.16), transparent 60%),+         linear-gradient(160deg,#021a36 0%,#00204f 50%,#01122b 100%)`,+    tex: `background:${tile('onion-corner.svg', '#8FD3D4')} right bottom/62% no-repeat;opacity:.5`,+    text: '#eaf2ff', sub: '#a9c0e0', chipB: 'rgba(100,171,255,.40)', chipF: 'rgba(100,171,255,.10)', chipT: '#9fc4ff', accent: true,+  },+  // Pill field on navy+  pill: {+    bg: `radial-gradient(900px 700px at 85% 0%, rgba(100,171,255,.18), transparent 60%),+         linear-gradient(160deg,#001a3f 0%,#00204f 50%,#001129 100%)`,+    tex: `background:${tile('pill-field.svg', '#64ABFF')} center/64px repeat;opacity:.5;+          -webkit-mask-image:linear-gradient(115deg,transparent 4%,#000 50%);mask-image:linear-gradient(115deg,transparent 4%,#000 50%)`,+    text: '#eaf2ff', sub: '#a9c0e0', chipB: 'rgba(100,171,255,.40)', chipF: 'rgba(100,171,255,.10)', chipT: '#9fc4ff', accent: true,+  },+  // Brand gradient — the "wow"/cover-slide look; left scrim keeps copy readable+  gradient: {+    bg: `linear-gradient(90deg, rgba(5,8,12,.82) 0%, rgba(5,8,12,.42) 42%, rgba(5,8,12,.08) 70%),+         radial-gradient(800px 600px at 90% 0%, rgba(255,255,255,.12), transparent 55%),+         linear-gradient(115deg,#00b8b1 0%,#0061ef 52%,#8c6bf7 100%)`,+    tex: ``,+    text: '#ffffff', sub: '#d7e2ee', chipB: 'rgba(255,255,255,.40)', chipF: 'rgba(255,255,255,.10)', chipT: '#ffffff', accent: true,+  },+};++// ---- LAYOUTS: window position/shape + text side ----+const LAYOUTS = {+  bottom:     { side: 'left',  win: 'right:72px;top:280px;width:806px;border-radius:16px 16px 0 0', imgH: 760 },+  mirror:     { side: 'right', win: 'left:72px;top:280px;width:806px;border-radius:16px 16px 0 0',  imgH: 760 },+  bleedRight: { side: 'left',  win: 'right:-74px;top:104px;width:900px;border-radius:16px 0 0 16px', imgH: 812 },+  contained:  { side: 'left',  win: 'right:80px;top:150px;width:752px;border-radius:16px',           imgH: 672 },+};++function html(L, T) {+  const left = L.side === 'left';+  return `<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:${T.text};position:relative;background:${T.bg};}+.tex{position:absolute;inset:0;z-index:0;${T.tex}}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid ${T.chipB};background:${T.chipF};border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:${T.chipT};display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;${left ? '' : 'margin-left:auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end'}}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:${T.text};margin-top:48px;margin-bottom:24px}+h1 .accent{${T.accent ? 'background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent' : 'color:' + T.text}}+.sub{font-size:23px;line-height:1.5;color:${T.sub};max-width:500px;margin-bottom:30px}+.sub b{color:${T.text};font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;${left ? 'left:92px' : 'right:92px'};bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;${L.win};overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:${L.imgH}px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">${C.winlabel}</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="${C.shot}">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark">${WORDMARK}</div><div class="chip"><span class="dot"></span>${C.chip}</div></div>+    <div class="col">+      <h1>${C.headline}</h1>+      <div class="sub">${C.sub}</div>+      <div class="prompt"><span class="q">"${C.prompt}"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">${C.url}</div>+</body></html>`;+}++// curated showcase set: name -> [layout, theme]+const COMBOS = {+  'midnight':           ['bottom', 'midnight'],+  'mirror':             ['mirror', 'midnight'],+  'pcb':                ['bottom', 'pcb'],+  'onion':              ['bottom', 'onion'],+  'pill':               ['bottom', 'pill'],+  'gradient':           ['bottom', 'gradient'],+  'bleed-right':        ['bleedRight', 'midnight'],+  'bleed-right-pcb':    ['bleedRight', 'pcb'],+  'contained':          ['contained', 'midnight'],+  'contained-gradient': ['contained', 'gradient'],+};++function write(name, layoutKey, themeKey) {+  const L = LAYOUTS[layoutKey], T = THEMES[themeKey];+  if (!L || !T) throw new Error('bad layout/theme: ' + layoutKey + '/' + themeKey);+  const out = path.join(DIR, `variant-${name}.html`);+  fs.writeFileSync(out, html(L, T));+  console.log('wrote', out, `(${layoutKey} × ${themeKey})`);+}++const a = process.argv.slice(2);+if (a.length === 0) {+  for (const [name, [l, t]] of Object.entries(COMBOS)) write(name, l, t);+} else if (a[0] === 'name') {+  const [l, t] = COMBOS[a[1]]; write(a[1], l, t);+} else {+  write(`${a[0]}-${a[1]}`, a[0], a[1]);+}
skills/adom-wiki-hero-image/hero.htmladded+65
@@ -0,0 +1,65 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;+  src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;+  src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;+  src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;+  background:+    radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+    radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+    radial-gradient(700px 600px at 50% 50%, rgba(0,97,239,.10), transparent 60%),+    linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.dots{position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.045) 1.4px,transparent 1.4px);+  background-size:34px 34px;mask-image:linear-gradient(180deg,rgba(0,0,0,.6),transparent 70%);}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;+  padding:9px 17px;font-size:14px;letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;+  display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;+  letter-spacing:-2px;color:#f4f8fb;margin-top:48px;margin-bottom:24px;max-width:520px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);+  -webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.045);+  border:1px solid rgba(0,230,220,.28);border-radius:14px;padding:15px 20px;font-size:19px;color:#cfd8e2;max-width:500px}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#8b949e;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00b8b1;font-weight:600;font-size:19px;+  font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:250px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}+.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,Helvetica,sans-serif;font-size:18px;line-height:1}+.winbtns .cls:hover{background:#e81123;color:#fff}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="dots"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top">+      <div class="wordmark"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div>+      <div class="chip"><span class="dot"></span>Wiki Skill</div>+    </div>+    <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+    <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage and screensaver all reuse. One name, one screenshot, zero clutter.</div>+    <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>
skills/adom-wiki-hero-image/render.jsadded+15
@@ -0,0 +1,15 @@+const puppeteer = require('/home/adom/project/node_modules/puppeteer-core');+(async () => {+  const [,, html, w, h, out, scale] = process.argv;+  const b = await puppeteer.launch({ executablePath: process.env.CHROME, headless: 'new',+    args:['--no-sandbox','--disable-gpu','--disable-dev-shm-usage','--hide-scrollbars',+          '--font-render-hinting=none','--force-color-profile=srgb'] });+  const p = await b.newPage();+  await p.setRequestInterception(true);+  p.on('request', r => (r.url().startsWith('http')) ? r.abort().catch(()=>{}) : r.continue().catch(()=>{}));+  await p.setViewport({ width:+w, height:+h, deviceScaleFactor:+(scale||2) });+  await p.goto('file://'+html, { waitUntil:'domcontentloaded' });+  await new Promise(r=>setTimeout(r,900));+  await p.screenshot({ path: out });+  await b.close(); console.log('OK '+out);+})().catch(e=>{console.error(e);process.exit(1)});
skills/adom-wiki-hero-image/variant-bleed-right-pcb.htmladded+52
@@ -0,0 +1,52 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+         linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+          -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}+.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:-74px;top:104px;width:900px;border-radius:16px 0 0 16px;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:812px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-bleed-right.htmladded+53
@@ -0,0 +1,53 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;background:radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+         radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+         linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MCA2MCI+CiAgPGRlZnM+PHBhdHRlcm4gaWQ9ImQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMi4yIiBmaWxsPSIjZmZmZmZmIi8+CiAgPC9wYXR0ZXJuPjwvZGVmcz4KICA8cmVjdCB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InVybCgjZCkiLz4KPC9zdmc+Cg==") 0 0/24px repeat;opacity:.05;+          -webkit-mask-image:linear-gradient(115deg,transparent 0%,#000 48%);mask-image:linear-gradient(115deg,transparent 0%,#000 48%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#e6edf3;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:-74px;top:104px;width:900px;border-radius:16px 0 0 16px;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:812px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-contained-gradient.htmladded+52
@@ -0,0 +1,52 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#ffffff;position:relative;background:linear-gradient(90deg, rgba(5,8,12,.82) 0%, rgba(5,8,12,.42) 42%, rgba(5,8,12,.08) 70%),+         radial-gradient(800px 600px at 90% 0%, rgba(255,255,255,.12), transparent 55%),+         linear-gradient(115deg,#00b8b1 0%,#0061ef 52%,#8c6bf7 100%);}+.tex{position:absolute;inset:0;z-index:0;}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(255,255,255,.40);background:rgba(255,255,255,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#ffffff;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#ffffff;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#d7e2ee;max-width:500px;margin-bottom:30px}+.sub b{color:#ffffff;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:80px;top:150px;width:752px;border-radius:16px;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:672px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-contained.htmladded+53
@@ -0,0 +1,53 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;background:radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+         radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+         linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MCA2MCI+CiAgPGRlZnM+PHBhdHRlcm4gaWQ9ImQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMi4yIiBmaWxsPSIjZmZmZmZmIi8+CiAgPC9wYXR0ZXJuPjwvZGVmcz4KICA8cmVjdCB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InVybCgjZCkiLz4KPC9zdmc+Cg==") 0 0/24px repeat;opacity:.05;+          -webkit-mask-image:linear-gradient(115deg,transparent 0%,#000 48%);mask-image:linear-gradient(115deg,transparent 0%,#000 48%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#e6edf3;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:80px;top:150px;width:752px;border-radius:16px;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:672px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-gradient.htmladded+52
@@ -0,0 +1,52 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#ffffff;position:relative;background:linear-gradient(90deg, rgba(5,8,12,.82) 0%, rgba(5,8,12,.42) 42%, rgba(5,8,12,.08) 70%),+         radial-gradient(800px 600px at 90% 0%, rgba(255,255,255,.12), transparent 55%),+         linear-gradient(115deg,#00b8b1 0%,#0061ef 52%,#8c6bf7 100%);}+.tex{position:absolute;inset:0;z-index:0;}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(255,255,255,.40);background:rgba(255,255,255,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#ffffff;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#ffffff;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#d7e2ee;max-width:500px;margin-bottom:30px}+.sub b{color:#ffffff;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-midnight.htmladded+53
@@ -0,0 +1,53 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;background:radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+         radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+         linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MCA2MCI+CiAgPGRlZnM+PHBhdHRlcm4gaWQ9ImQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMi4yIiBmaWxsPSIjZmZmZmZmIi8+CiAgPC9wYXR0ZXJuPjwvZGVmcz4KICA8cmVjdCB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InVybCgjZCkiLz4KPC9zdmc+Cg==") 0 0/24px repeat;opacity:.05;+          -webkit-mask-image:linear-gradient(115deg,transparent 0%,#000 48%);mask-image:linear-gradient(115deg,transparent 0%,#000 48%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#e6edf3;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-mirror.htmladded+53
@@ -0,0 +1,53 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#e6edf3;position:relative;background:radial-gradient(1200px 800px at 88% -10%, rgba(0,184,177,.22), transparent 60%),+         radial-gradient(900px 700px at -5% 110%, rgba(140,107,247,.18), transparent 55%),+         linear-gradient(155deg,#0a0e14 0%,#0d1117 45%,#071318 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2MCA2MCI+CiAgPGRlZnM+PHBhdHRlcm4gaWQ9ImQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8Y2lyY2xlIGN4PSI0IiBjeT0iNCIgcj0iMi4yIiBmaWxsPSIjZmZmZmZmIi8+CiAgPC9wYXR0ZXJuPjwvZGVmcz4KICA8cmVjdCB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIGZpbGw9InVybCgjZCkiLz4KPC9zdmc+Cg==") 0 0/24px repeat;opacity:.05;+          -webkit-mask-image:linear-gradient(115deg,transparent 0%,#000 48%);mask-image:linear-gradient(115deg,transparent 0%,#000 48%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(0,184,177,.34);background:rgba(0,184,177,.07);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#7fe3dd;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;margin-left:auto;text-align:right;display:flex;flex-direction:column;align-items:flex-end}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#e6edf3;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#aeb8c4;max-width:500px;margin-bottom:30px}+.sub b{color:#e6edf3;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;right:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;left:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-onion.htmladded+51
@@ -0,0 +1,51 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eaf2ff;position:relative;background:radial-gradient(900px 700px at 80% -10%, rgba(100,171,255,.16), transparent 60%),+         linear-gradient(160deg,#021a36 0%,#00204f 50%,#01122b 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgb3BhY2l0eT0iMC44NSI+CiAgICA8cGF0aCBkPSJNMzU2IDQwMCBWMzgwLjIgUTM1NiAzNTYgNDAwIDM1NiBRNDQ0IDM1NiA0NDQgMzgwLjIgVjQwMCIvPgogICAgPHBhdGggZD0iTTMxNCA0MDAgVjM2MS4zIFEzMTQgMzE0IDQwMCAzMTQgUTQ4NiAzMTQgNDg2IDM2MS4zIFY0MDAiLz4KICAgIDxwYXRoIGQ9Ik0yNzIgNDAwIFYzNDIuNCBRMjcyIDI3MiA0MDAgMjcyIFE1MjggMjcyIDUyOCAzNDIuNCBWNDAwIi8+CiAgICA8cGF0aCBkPSJNMjMwIDQwMCBWMzIzLjUgUTIzMCAyMzAgNDAwIDIzMCBRNTcwIDIzMCA1NzAgMzIzLjUgVjQwMCIvPgogICAgPHBhdGggZD0iTTE4OCA0MDAgVjMwNC42IFExODggMTg4IDQwMCAxODggUTYxMiAxODggNjEyIDMwNC42IFY0MDAiLz4KICAgIDxwYXRoIGQ9Ik0xNDYgNDAwIFYyODUuNyBRMTQ2IDE0NiA0MDAgMTQ2IFE2NTQgMTQ2IDY1NCAyODUuNyBWNDAwIi8+CiAgICA8cGF0aCBkPSJNMTA0IDQwMCBWMjY2Ljc5OTk5OTk5OTk5OTk1IFExMDQgMTA0IDQwMCAxMDQgUTY5NiAxMDQgNjk2IDI2Ni43OTk5OTk5OTk5OTk5NSBWNDAwIi8+CiAgICA8cGF0aCBkPSJNNjIgNDAwIFYyNDcuOSBRNjIgNjIgNDAwIDYyIFE3MzggNjIgNzM4IDI0Ny45IFY0MDAiLz4KICA8L2c+Cjwvc3ZnPg==") right bottom/62% no-repeat;opacity:.5}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(100,171,255,.40);background:rgba(100,171,255,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#9fc4ff;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eaf2ff;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9c0e0;max-width:500px;margin-bottom:30px}+.sub b{color:#eaf2ff;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-pcb.htmladded+52
@@ -0,0 +1,52 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eafdfb;position:relative;background:radial-gradient(1000px 760px at 86% -5%, rgba(0,184,177,.28), transparent 60%),+         linear-gradient(160deg,#022a2b 0%,#003c3f 46%,#021a1c 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icGNiIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiM4RkQzRDQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4KICAgICAgPHBhdGggZD0iTTAgNDAgSDcwIEwxMDAgNzAgSDIwMCIvPjxwYXRoIGQ9Ik00MCAwIFY2MCBMNzAgOTAgVjIwMCIvPgogICAgICA8cGF0aCBkPSJNMjAwIDE1MCBIMTUwIEwxMjAgMTIwIEg0MCIvPjxwYXRoIGQ9Ik0xNjAgMjAwIFYxNjAgTDEzMCAxMzAiLz4KICAgICAgPHBhdGggZD0iTTEwMCA3MCBMMTQwIDMwIEgyMDAiLz4KICAgIDwvZz4KICAgIDxnIGZpbGw9IiM4RkQzRDQiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSI2Ii8+PGNpcmNsZSBjeD0iNzAiIGN5PSI5MCIgcj0iNiIvPjxjaXJjbGUgY3g9IjQwIiBjeT0iNjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjUiLz48Y2lyY2xlIGN4PSIxNDAiIGN5PSIzMCIgcj0iNCIvPjwvZz4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzhGRDNENCIgc3Ryb2tlLXdpZHRoPSIyLjUiPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjcwIiByPSIxMSIvPjxjaXJjbGUgY3g9IjEyMCIgY3k9IjEyMCIgcj0iOSIvPjwvZz4KICA8L3BhdHRlcm4+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiBmaWxsPSJ1cmwoI3BjYikiLz4KPC9zdmc+Cg==") center/170px repeat;opacity:.16;+          -webkit-mask-image:linear-gradient(115deg,transparent 6%,#000 52%);mask-image:linear-gradient(115deg,transparent 6%,#000 52%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(143,211,212,.40);background:rgba(0,184,177,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#8fd3d4;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eafdfb;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9d6d2;max-width:500px;margin-bottom:30px}+.sub b{color:#eafdfb;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
skills/adom-wiki-hero-image/variant-pill.htmladded+52
@@ -0,0 +1,52 @@+<!DOCTYPE html><html><head><meta charset="utf-8">+<style>+@font-face{font-family:'Familjen Grotesk';font-weight:700;font-display:block;src:url('assets/fonts/familjen-grotesk-700-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:400;font-display:block;src:url('assets/fonts/satoshi-400-normal.woff2') format('woff2')}+@font-face{font-family:'Satoshi';font-weight:500;font-display:block;src:url('assets/fonts/satoshi-500-normal.woff2') format('woff2')}+*{margin:0;padding:0;box-sizing:border-box}+html,body{width:1600px;height:1000px;overflow:hidden}+body{font-family:'Satoshi',sans-serif;color:#eaf2ff;position:relative;background:radial-gradient(900px 700px at 85% 0%, rgba(100,171,255,.18), transparent 60%),+         linear-gradient(160deg,#001a3f 0%,#00204f 50%,#001129 100%);}+.tex{position:absolute;inset:0;z-index:0;background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMjAgMTIwIj4KICA8ZGVmcz48cGF0dGVybiBpZD0icCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY0QUJGRiIgc3Ryb2tlLXdpZHRoPSIyLjUiPgogICAgICA8cmVjdCB4PSI2IiAgeT0iMTAiIHdpZHRoPSIyMiIgaGVpZ2h0PSI5IiByeD0iNC41Ii8+CiAgICAgIDxyZWN0IHg9IjM4IiB5PSIzMCIgd2lkdGg9IjE0IiBoZWlnaHQ9IjkiIHJ4PSI0LjUiLz4KICAgICAgPHJlY3QgeD0iMTIiIHk9IjQ0IiB3aWR0aD0iOSIgIGhlaWdodD0iOSIgcng9IjQuNSIvPgogICAgICA8cmVjdCB4PSIzNCIgeT0iNiIgIHdpZHRoPSI5IiAgaGVpZ2h0PSI5IiByeD0iNC41Ii8+CiAgICA8L2c+CiAgPC9wYXR0ZXJuPjwvZGVmcz4KICA8cmVjdCB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgZmlsbD0idXJsKCNwKSIvPgo8L3N2Zz4K") center/64px repeat;opacity:.5;+          -webkit-mask-image:linear-gradient(115deg,transparent 4%,#000 50%);mask-image:linear-gradient(115deg,transparent 4%,#000 50%)}+.zone{position:absolute;inset:0;padding:80px 92px 0;z-index:3;display:flex;flex-direction:column}+.top{display:flex;align-items:flex-start;justify-content:space-between}+.wordmark svg{height:44px;width:auto;display:block}+.chip{border:1px solid rgba(100,171,255,.40);background:rgba(100,171,255,.10);border-radius:999px;padding:9px 17px;font-size:14px;+  letter-spacing:2.5px;text-transform:uppercase;color:#9fc4ff;display:inline-flex;align-items:center;gap:9px;font-weight:600}+.chip .dot{width:8px;height:8px;border-radius:50%;background:#00e6dc;box-shadow:0 0 10px #00e6dc}+.col{max-width:520px;}+h1{font-family:'Familjen Grotesk',sans-serif;font-weight:700;font-size:70px;line-height:1.0;letter-spacing:-2px;color:#eaf2ff;margin-top:48px;margin-bottom:24px}+h1 .accent{background:linear-gradient(100deg,#00e6dc,#39b8ff 60%,#8c6bf7);-webkit-background-clip:text;background-clip:text;color:transparent}+.sub{font-size:23px;line-height:1.5;color:#a9c0e0;max-width:500px;margin-bottom:30px}+.sub b{color:#eaf2ff;font-weight:500}+.prompt{display:inline-flex;align-items:center;gap:12px;background:rgba(255,255,255,.06);border:1px solid rgba(0,230,220,.30);+  border-radius:14px;padding:15px 20px;font-size:19px;color:#e3eaf2}+.prompt .q{color:#00e6dc;font-weight:700}.prompt .ask{color:#9aa6b5;font-size:15px;margin-left:6px}+.url{position:absolute;left:92px;bottom:54px;z-index:3;color:#00e6dc;font-weight:600;font-size:19px;font-family:'Familjen Grotesk',sans-serif}+.window{position:absolute;right:72px;top:280px;width:806px;border-radius:16px 16px 0 0;overflow:hidden;z-index:1;+  box-shadow:0 28px 80px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.07), 0 0 130px rgba(0,184,177,.07)}+.chrome{height:42px;background:#1b2128;display:flex;align-items:center;padding-left:18px;border-bottom:1px solid #232a33}+.chrome .ct{color:#8b949e;font-size:15px;margin-right:auto}+.winbtns{display:flex;height:100%}.winbtns .b{width:48px;height:100%;display:flex;align-items:center;justify-content:center;color:#b9c2cd}+.winbtns .min i{display:block;width:12px;height:1.5px;background:#b9c2cd}+.winbtns .max i{display:block;width:11px;height:11px;border:1.5px solid #b9c2cd;border-radius:1px}+.winbtns .cls{font-family:Arial,sans-serif;font-size:18px;line-height:1}+.window img{width:100%;height:760px;display:block;object-fit:cover;object-position:top left}+</style></head><body>+  <div class="tex"></div>+  <div class="window">+    <div class="chrome"><span class="ct">adom-parts-search · hero.png · Adom webview</span>+      <div class="winbtns"><span class="b min"><i></i></span><span class="b max"><i></i></span><span class="b cls">&#10005;</span></div></div>+    <img src="file:///home/adom/project/adom-parts-search/screenshots/hero.png">+  </div>+  <div class="zone">+    <div class="top"><div class="wordmark"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1072.9 236"><defs></defs><path fill="#fff" d="M212.94,23.05c-25.84-25.84-62.87-30.69-82.73-10.84-8.06,8.06-12.04,18.94-12.21,30.76h0s0,.02,0,.02c0,.04,0,.08,0,.12v73.29c0,.89.72,1.61,1.61,1.61h72.5l-.02-.02c12.17.03,23.42-3.94,31.69-12.2,19.85-19.85,15-56.89-10.84-82.73Z"/><path fill="#fff" d="M23.05,212.95c25.84,25.84,62.87,30.69,82.73,10.84,8.06-8.06,12.04-18.94,12.21-30.76h0s0-.02,0-.02c0-.04,0-.08,0-.12v-73.29c0-.89-.72-1.61-1.61-1.61H43.89l.02.02c-12.17-.03-23.42,3.94-31.69,12.2-19.85,19.85-15,56.89,10.84,82.73Z"/><path fill="#fff" d="M1065.5,25.22h-58.49c-2.98,0-5.68,1.87-6.73,4.65l-44.4,117.54c-.06.17-.31.17-.37,0l-45.44-117.59c-1.07-2.75-3.76-4.6-6.72-4.6h-58.79c-4.09,0-7.4,3.31-7.4,7.4v35.06l-.03-.12c-1.24,4.99-5.89,6-5.89,6,0,0-4.51,1.02-7.61-2.53v.03c-17.82-29.81-50.31-48.93-89.04-48.93-41.5,0-75.86,21.85-92.76,55.23v-.07c-2.86,5.19-8.74,5.13-8.74,5.13,0,0-5.63-.01-8.41-4.61-16.49-32.68-50.56-52.59-94.79-52.59h-73.46c-4.09,0-7.4,3.31-7.4,7.4v121.27s0,.03,0,.04c-.95,5.15-4.75,5.94-4.75,5.94,0,0-3.88.85-6.77-3.32l.05.23-46.05-126.83c-1.03-2.84-3.75-4.74-6.77-4.74h-57.14c-3.01,0-5.73,1.9-6.76,4.73l-68.67,188.38c-1.05,2.88-.18,6.21,2.4,8.19,1.31,1.01,2.98,1.47,4.64,1.47h34.96s6.43,0,6.43,0c2.5,0,4.83-1.39,5.9-3.65,8.49-17.86,26.5-29.64,48.37-29.64s39.71,11.73,48.19,29.53c1.1,2.32,3.49,3.76,6.06,3.76h120.78c31.22,0,57.85-9.95,77.02-28.77,7.38-7.25,13.43-15.72,18.05-25.1v.09c2.74-5.19,8.37-5.13,8.37-5.13,0,0,5.43,0,8.08,4.64,4.88,9.88,11.26,18.78,18.91,26.42,18.6,18.6,44.61,29.78,74.26,29.78,38.74,0,71.23-19.18,89.05-49.07l-.02.07c3.1-3.55,7.61-2.53,7.61-2.53,0,0,4.65,1,5.89,6l.03-.12v36.32c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4v-86.26c0-.23.32-.28.39-.06l30.37,88.86c1,2.91,3.74,4.87,6.81,4.87h39.69c3.08,0,5.82-1.96,6.81-4.87l30.1-88.02c.07-.21.39-.16.39.06v85.43c0,4.09,3.31,7.4,7.4,7.4h45.79c4.09,0,7.4-3.31,7.4-7.4V32.62c0-4.09-3.31-7.4-7.4-7.4ZM372.31,147.57c-.15.21-.5.57-1.1.57h-30.33c-.61,0-.95-.35-1.1-.56-.15-.21-.38-.65-.19-1.23l15.06-45.79c.27-.81.92-.94,1.29-.94h0c.37,0,1.02.12,1.29.93l15.26,45.8c.19.58-.04,1.01-.19,1.23ZM525.72,173.84h-14.52c-.86,0-1.56-.7-1.56-1.56v-92.16c0-.86.7-1.56,1.56-1.56h14.52c30.81,0,48.48,17.47,48.48,47.92s-17.67,47.36-48.48,47.36ZM734.6,173.26c-26.51,0-42.33-17.71-42.34-47.36,0-14.59,3.88-26.68,11.21-34.98,7.33-8.29,18.09-12.67,31.13-12.67,12.11,0,22.28,3.84,29.58,11.13.5.5.98,1.01,1.45,1.54,7.4,8.33,11.31,20.42,11.31,34.97,0,29.21-16.22,47.36-42.34,47.36Z"/></svg></div><div class="chip"><span class="dot"></span>Wiki Skill</div></div>+    <div class="col">+      <h1>Every app deserves<br>a <span class="accent">billboard.</span></h1>+      <div class="sub">Render a dark-mode, on-brand <b>hero</b> for any Adom wiki page — the <b>one-second billboard</b> the installer, homepage, screensaver and socials all reuse. One name, one screenshot, zero clutter.</div>+      <div class="prompt"><span class="q">"make a hero for my app"</span><span class="ask">— just ask Claude</span></div>+    </div>+  </div>+  <div class="url">wiki.adom.inc/adom/adom-wiki-hero-image</div>+</body></html>\ No newline at end of file
uninstall.shadded+6
@@ -0,0 +1,6 @@+#!/usr/bin/env bash+# Remove the adom-wiki-hero-image skill.+set -euo pipefail+DEST="${HOME}/.claude/skills/adom-wiki-hero-image"+rm -rf "$DEST"+echo "Removed $DEST"
variants/hero-bleed-right-pcb.pngadded
⋯ 1 unchanged line ⋯
variants/hero-bleed-right.pngadded
⋯ 1 unchanged line ⋯
variants/hero-contained-gradient.pngadded
⋯ 1 unchanged line ⋯
variants/hero-contained.pngadded
⋯ 1 unchanged line ⋯
variants/hero-gradient.pngadded
⋯ 1 unchanged line ⋯
variants/hero-midnight.pngadded
⋯ 1 unchanged line ⋯
variants/hero-mirror.pngadded
⋯ 1 unchanged line ⋯
variants/hero-onion.pngadded
⋯ 1 unchanged line ⋯
variants/hero-pcb.pngadded
⋯ 1 unchanged line ⋯
variants/hero-pill.pngadded
⋯ 1 unchanged line ⋯
view.htmladded+4
@@ -0,0 +1,4 @@+<!DOCTYPE html><html><head><meta charset="utf-8"><title>adom-wiki-hero — sample hero</title>+<style>html,body{margin:0;height:100%;background:#05080c;display:flex;align-items:center;justify-content:center}+img{max-width:96vw;max-height:96vh;box-shadow:0 20px 80px rgba(0,0,0,.7);border-radius:6px}</style></head>+<body><img src="screenshots/hero.png?cb=1781785225"></body></html>