← Commit history

Publish 0.8.50

Colby Knox ·e4fbbdb63e ·3d ago ·parent 6e125b4
3 files changed +41−19
package.json+2−2
@@ -1,7 +1,7 @@ {   "slug": "adom-wiki-skillpack",   "title": "Adom Wiki Skill Pack",-  "version": "0.8.49",+  "version": "0.8.50",   "type": "skill",   "hero": {     "path": "screenshots/hero.png"@@ -161,4 +161,4 @@     }   ],   "discovery_pitch": "Anything touching wiki.adom.inc: publishing, page archetypes, readmes, heroes, discovery, and the wiki-bloat rule (find where a thing already lives before creating any page)."-}\ No newline at end of file+}
page.json+1−1
@@ -201,7 +201,7 @@       "prompt": "Before I create this wiki page, check whether the thing already has a home."     }   ],-  "version": "0.8.49",+  "version": "0.8.50",   "description": "The Adom Wiki Skill Pack : one main skill plus the focused sub-skills that teach the AI to publish to wiki.adom.inc without breaking pages, name the wiki repo archetypes (Page, Skillpack, Family), and publish rich component pages (chips, molecules, boards). The wiki is six tools in one: git, package manager, releases, discussions, pull requests, and discovery. One package manager install drops the whole set onto your container. Includes reviewed Z-up component artwork, surface-selected MPN marking, reusable thumbnail caches and component-page widgets. Includes canonical video widgets, synchronized captions and chapters, and voiceover pacing checks.",   "dependencies": {     "adom/adom-wiki-hero-image": "^0.2.2",
skills/wiki-component/SKILL.md+38−16
@@ -24,11 +24,11 @@ Parent skill: **adom-wiki-skillpack**  ## EasyEDA logo: remove it during creation (always) -3D models that come from EasyEDA / LCSC (easyeda2kicad, LCSC `C` numbers, EasyEDA `.obj`, JLC libraries), and any board STEP/GLB that places those models, often carry an embossed **"LCEDA / EasyEDA" logo**: usually on a package side wall (seen on WS2812B-2020 and X0408FVS-100F-LPV01), sometimes on a chip top (seen on RP2350A and ADS1220), and sometimes the same colour as the body so it is easy to miss. It must not ship in anything we create or publish.+3D models that come from EasyEDA / LCSC (easyeda2kicad, LCSC `C` numbers, EasyEDA `.obj`, JLC libraries), and any board STEP/GLB that places those models, often carry an embossed **"LCEDA / EasyEDA" logo**: usually on a package side wall (seen on WS2812B-2020 and X0408FVS-100F-LPV01), sometimes on a chip top (seen on RP2350A and ADS1220), and sometimes the same color as the body so it is easy to miss. It must not ship in anything we create or publish.  - **Check every EasyEDA-sourced part** before it is used or published: look at close-up renders of all four side walls and the top, not just the top view, and scan the STEP for the logo (clusters of tiny, very thin glyph faces or zero-thickness glyph solids).-- **Strip it from the part model** (remove the glyph faces/solids and close the face they sat on), keeping the body, pads, size and colours unchanged. Then build the footprint, board STEP and GLBs from the cleaned part, so every derived file is clean.-- **Verify**: rescan clean, the part's bounding box and colours unchanged, and a before/after render.+- **Strip it from the part model** (remove the glyph faces/solids and close the face they sat on), keeping the body, pads, size and colors unchanged. Then build the footprint, board STEP and GLBs from the cleaned part, so every derived file is clean.+- **Verify**: rescan clean, the part's bounding box and colors unchanged, and a before/after render. - Real manufacturer markings (the maker's logo, MPN or date code etched on the part) are not EasyEDA logos; keep those.  ## Write for every user of the component@@ -593,7 +593,7 @@ solids in `provenance/<file>.step.json`. Ship the helper geometry as its own var than deleting it: readers want to toggle it.  **Mark the MPN on a side wall when the top carries features.** Optical windows, a grille, a-marking pad: a lasered name across the top ruins the 3D view and the symbol thumbnail. A light-grey+marking pad: a lasered name across the top ruins the 3D view and the symbol thumbnail. A light-gray inlay body on the wall that faces the iso camera (the +Y wall in Adom Z-up) survives STEP -> GLB and reads in chip-thumbnailer's un-named outline; bake that outline with `adom-symbol create ... --outline-svg <MPN>-3d-outline-heavy.svg --outline-name none` so the part@@ -635,8 +635,8 @@ the same name; nobody redraws them per tool. (4) The hero GLB: the vias as 65 %- copper barrels through a pretend 1.6 mm board, group `Adom.HeatsinkVias`, declared as layer `vias` ("Heatsink vias (1.6 mm board)") so the viewer's Layers panel toggles them; hero_step.py reads the through-hole pads straight off the footprint. Manufacturer FoV geometry can be a keep-out zone, not a cone: ST's VL53L8CX "exclusion-cone" is a 3 mm square frustum (the local FoV) welded to four metre-long keep-out planes-in one zero-thickness shell, so a hero built from it shows a metre of cone next to a 6 mm+cone" is a 3 mm square frustum (the local FoV) welded to four meter-long keep-out planes+in one zero-thickness shell, so a hero built from it shows a meter of cone next to a 6 mm chip and every thumbnail frames the chip as a dot. Measure the FoV solids' bounding box against the body before you keep them (tof-8x8-sensors/tools/vendor_step.py `--fov-clip 3` keeps the faces within 3 mm of the apex and drops the keep-out planes; booleans return@@ -705,24 +705,46 @@ copper, dimension arrows show the 0.40 mm pad gap, and a text panel cites the da Heroes carry a faint translucent copper fill built from the footprint's own pads (shape, size, rotation), in its own "Copper pads" layer, so a reader sees the copper area and its true edge and can see the part through it from underneath. The teal dashed pad outlines sit just OUTSIDE the copper: each pad's dashed ring is scaled-about the pad centre so its inner edge lands on the copper edge. Move rings as a whole (an affine scale per+about the pad center so its inner edge lands on the copper edge. Move rings as a whole (an affine scale per pad); shifting vertices one by one twists the dashes at corners. Pads follow the datasheet: plain rectangles when the maker draws rectangles (no added corner rounding), the IPC/KiCad rounded rectangle only when the datasheet has no land pattern and IPC is the stated fallback. -## Datasheet-built 3D models: prove them by overlay+## 3D models when the maker publishes none: KiCad's first, then the datasheet -When the maker publishes no 3D model (a reseller's model was drawn from the same datasheet anyway), build it-from the datasheet and redistribute it, but it must be exact:+When the maker publishes no redistributable 3D model, take the first of these that fits (John, adom/adom-wiki-skillpack#4):++1. **KiCad's library model, as it is,** when every printed dimension is inside the datasheet's min to max (or within+   **0.05 mm** of the typical value where only a typical is printed) and its leads are realistic: radiused gull-wing+   bends, not square folds. Bend shape counts; a micron-level miss does not. Never drop a KiCad model over a few+   microns of foot length (a 6 um miss on stm32g431cbt6 was traded for square folds that "just look fake").+2. **Otherwise regenerate it with KiCad's own package generator** (the CadQuery scripts, kicad-packages3D-generator,+   now inside gitlab.com/kicad/libraries/kicad-footprint-generator) at the datasheet's values, so the bends stay+   KiCad's. Tune the generator's flat-foot length until the foot measured at the 0.25 mm gauge plane equals the+   datasheet's L.+3. **Hand-build only** what neither covers, and never trade a realistic model for a square-fold one.++Measure L the same way every time and write the method and both numbers (KiCad library model vs regenerated) into+`provenance/3d-model.json`: a section through one lead's center line, cut at z = 0.25 mm; L runs from the lead tip to+where the lead's lower outer surface crosses that plane (JEDEC). Reference implementation, on adom/stm32g431cbt6,+adom/opa2365aidr, adom/ap2112k-3-3trg1, adom/tmc2226-sa-t and adom/as5047p-atsm under+`provenance/tools/kicad-generator/`: `kgen.py` runs KiCad's `make_gw` on datasheet values and tunes the gauge-plane+foot, `measure.py` measures L, `materials.py` gives the GLB matte-tin leads and an epoxy body (step2glb leaves+metallic and roughness unset, so every part otherwise renders as rough metal), `lod.mjs` / `assets.sh` build the+four LODs, and `kicad-generator-A2_b.patch` extends the generator for packages whose datasheet prints the parting+line off center.++A model built or regenerated from the datasheet (2 and 3) must be exact, and proven:  - Printed dimensions as printed; undimensioned features measured off the drawing at a known px/mm (calibrate   on the printed edges, check that every printed dimension measures true); odd shapes traced from the drawing. - Prove it: render orthographic views at the drawing's scale and blend them over the datasheet views (top,   bottom, side). Publish the overlay image as evidence and log it in the page's verification log.-- Colours from the maker's product photo when there is one; mark the part number where the maker or the+- Colors from the maker's product photo when there is one; mark the part number where the maker or the   reviewer says (side walls for LEDs, dark marks on light bodies when a light mark would not read). - Keep the builder and its data in `provenance/tools/`, the previous model in `provenance/`, and say in the-  README that the model is AI-generated from the datasheet.+  README that the model is AI-generated from the datasheet (or regenerated with KiCad's generator at the+  datasheet's values).  ## Component widgets live in the adom org @@ -764,12 +786,12 @@ in page.json:  Rules (an LED page is not done without them): - **Two models, one per state, each with its own STEP and GLB.** Off = the plain model: the lens as built, unlit-  (clear, white or the tinted epoxy the part really has). On = the coloured model: the lens in the emitted colour+  (clear, white or the tinted epoxy the part really has). On = the colored model: the lens in the emitted color   (hue from the datasheet's dominant wavelength). The on model differs from the off model ONLY in the lens   materials: viewers find the glowing parts by that difference, so the terminals and the body must be identical. - **Check, never trust a slot name:** `model_3d_plain` once pointed at a green GLB. Open both GLBs and confirm off-  is unlit and on is coloured before you write the file.-- **`look`** says how a viewer lights the on state (emissive strength, glow colour, a small point light). **`when`**+  is unlit and on is colored before you write the file.+- **`look`** says how a viewer lights the on state (emissive strength, glow color, a small point light). **`when`**   is the rule a simulator uses (forward current window) plus a sentence for people. **`electrical`** carries Vf,   If max and the dominant wavelength with datasheet pages; the simulator computes (rail - Vf) / R from it and   warns when an LED runs dim (under about 2 mA).@@ -820,7 +842,7 @@ A datasheet drawing is not the part. After the overlay proof, put the model besi   have front and back shots. Perspective-correct an angled photo with a homography on the four package corners   before measuring (check a known dimension, such as the stripe width, comes out true). - Typical omissions: lead-frame stubs on the side walls, a white top where the drawing shows terminal metal,-  the real die size and position, the polarity mark's colour, a maker logo on the underside. Locate LED dies by+  the real die size and position, the polarity mark's color, a maker logo on the underside. Locate LED dies by   their bond wires (a round single-wire die is usually the red, vertical die). - Trace a logo from the maker's own logo file, not from a blurry photo; place and scale it from the photo. - Say in the README which features came from which photo, and what a photo cannot show (a stub's height from a