← Commit history
SKILL.md+2
@@ -128,3 +128,5 @@ MPN markings, cached chip thumbnails and central symbol outlines, read `wiki-component`. Reuse the component-owned cache and display it with the shared `adom-chip-thumbnail` Markdown widget. Package release, installed skill files and instructions already loaded in an AI conversation are separate states.++For component LOD/LDO caches, zoom-driven detail, heavy board scenes or GPU/memory freezes, read `wiki-component-lod`. It covers both asset generation and runtime qualification.
install.sh+1
@@ -31,6 +31,7 @@ install_skill wiki-readme-slideshow skills/wiki-readme-slideshow/SKILL.md install_skill wiki-visibility     skills/wiki-visibility/SKILL.md install_skill wiki-repo-styles    skills/wiki-repo-styles/SKILL.md install_skill wiki-component      skills/wiki-component/SKILL.md+install_skill wiki-component-lod  skills/wiki-component-lod/SKILL.md install_skill wiki-family         skills/wiki-family/SKILL.md install_skill wiki-skillpack      skills/wiki-skillpack/SKILL.md install_skill wiki-hero           skills/wiki-hero/SKILL.md
package.json+12−3
@@ -1,7 +1,7 @@ {   "slug": "adom-wiki-skillpack",   "title": "Adom Wiki Skill Pack",-  "version": "0.8.6",+  "version": "0.8.7",   "type": "skill",   "hero": {     "path": "screenshots/hero.png"@@ -63,7 +63,12 @@     "component cache widget",     "KiCad PCM project library",     "wiki-hosted PCM repository",-    "complete KiCad component library"+    "complete KiCad component library",+    "component LOD caches",+    "component LDO detail levels",+    "coarse-first board viewer",+    "3D board GPU memory freeze",+    "reviewed chip artwork in assembled board"   ],   "dependencies": {     "adom/adom-wiki-hero-image": "^0.2.2",@@ -99,7 +104,11 @@     "skills/wiki-readme-slideshow/SKILL.md",     "skills/wiki-sub-readme/SKILL.md",     "skills/wiki-subreadme/SKILL.md",-    "skills/wiki-hero-studio/SKILL.md"+    "skills/wiki-hero-studio/SKILL.md",+    "skills/wiki-component-lod/SKILL.md",+    "skills/wiki-component-lod/references/generation.md",+    "skills/wiki-component-lod/references/verification.md",+    "skills/wiki-component-lod/references/runtime.md"   ],   "scripts": {     "install": "./install.sh",
page.json+7−2
@@ -99,7 +99,12 @@     "component cache widget",     "KiCad PCM project library",     "wiki-hosted PCM repository",-    "complete KiCad component library"+    "complete KiCad component library",+    "component LOD caches",+    "component LDO detail levels",+    "coarse-first board viewer",+    "3D board GPU memory freeze",+    "reviewed chip artwork in assembled board"   ],   "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).",   "sample_prompts": [@@ -116,7 +121,7 @@       "prompt": "Before I create this wiki page, check whether the thing already has a home."     }   ],-  "version": "0.8.6",+  "version": "0.8.7",   "description": "The Adom Wiki Skill Pack \u2014 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.",   "dependencies": {     "adom/adom-wiki-hero-image": "^0.2.2",
skills/wiki-component-lod/SKILL.mdadded+19
@@ -0,0 +1,19 @@+---+name: wiki-component-lod+description: "Create and reuse high, medium, low and super-low component GLB detail caches; stream reviewed wiki component artwork into Babylon board, scaffold and digital-twin views without exhausting GPU memory. Covers LOD (also called LDO), zoom-driven detail, cached laser-etch fidelity, draw-call budgets and freeze prevention."+---+# Component detail caches and resource-aware assembly++Use this skill when a component page publishes multiple detail levels, a board/scaffold viewer consumes them, or a user reports a slow/frozen 3D view. Read `wiki-component` for page ownership, manufacturer provenance and reviewed markings. Reuse the existing component repo and cache; do not create a repo for each detail level.++The reviewed component appearance is an asset contract. Its virtual MPN, chosen marking surface, manufacturer logo, pin-1 information, material colors and footprint coordinate frame must carry through to the assembled board and digital twin. Replacing that with an unmarked STEP tessellation silently loses reviewed work. Keep the original manufacturer STEP unchanged for physical CAD and retain the reviewed GLB as the presentation authority.++Publish four levels: **high, medium, low, super-low**. High preserves the reviewed geometry and markings; compatible primitive batching is allowed with geometric/material equivalence checks. Lower levels are measured derivatives of that source, reviewed at their intended display sizes. Coarse detail must not become an invented generic package or erase the distinguishing silhouette, terminals or optical openings. All levels share units, pivot, handedness and Z-up footprint pose. No per-level recentering or automatic rotation.++Read the focused guidance needed for the work:++- [Generation and cache contract](references/generation.md): sources, hashes, immutable reviewed art, simplification, provenance and component-owned manifests.+- [Viewer loading and memory](references/runtime.md): coarse-first fetch, Babylon LOD selection, hysteresis, instancing, eviction, idle/hidden rendering and AI hints.+- [Verification and incident handling](references/verification.md): visual parity, actual draw calls and GPU resources, repeated zoom tests, recording, performance regressions and safe recovery.++These are requirements and review procedures, not a claim that every Adom viewer already implements streaming LOD. Check the actual app version and runtime capabilities. A generated four-file set is not a tested LOD viewer; a single successful zoom is not proof of bounded memory.
skills/wiki-component-lod/references/generation.mdadded+13
@@ -0,0 +1,13 @@+# Generation and cache contract++1. Resolve the exact component wiki record and its current reviewed GLB/thumbnail manifest. Verify content hashes. Record the manufacturer STEP hash, reviewed GLB hash, artwork cache key, MPN, marking placement, coordinate transform, generator version and options. Reuse matching cached output before regenerating it. A changed marking pose invalidates all affected derivatives, including symbol chip outlines.+2. Preserve the original source files. Generate under the same component repo, for example `lod/high.glb`, `lod/medium.glb`, `lod/low.glb`, `lod/super-low.glb`, with one manifest. Do not rewrite another author's preexisting component pages if the user excluded them.+3. Count primitives and decoded data before optimizing. A GLB with 79 mesh definitions can contain almost 12,000 primitives and create a corresponding number of Babylon render meshes. Small archive size is not evidence of cheap rendering. Batch only compatible triangle primitives/materials; preserve part identities, transforms, optical features, signal-label semantics and animation joints. Compare indexed positions/normals and material assignment before/after lossless batching. Handle normalized/quantized accessors correctly.+4. Generate lower levels with an error-bounded simplifier and measured output counts. Ratios are targets, not results: topology and error limits may prevent reduction. Weld compatible split vertices first when needed. Do not aggressively simplify text outlines, pin-1 indicators or optical interfaces without a specific visual review. Preserve their high-detail sources and restore full fidelity before they become readable on screen. If protected detail dominates the low-level budget, split it into an independently streamed detail layer instead of pretending the budget passed.+5. Maintain exact units, physical pivot and source-to-footprint pose for every level. Frame the hero around the asset; never recenter the asset to improve a screenshot. Preserve the same material colors. Record annotations (virtual MPN, pad outlines, signal labels) separately from manufacturer geometry so assemblies can control helper overlays without losing the actual chip markings.+6. Each manifest level records its relative path, SHA-256, compressed bytes, decoded attribute/index bytes, triangles, primitive instances/draw-call estimate, bounds, approximation/error settings and review status. Include generator versions, source hashes, source-to-display matrix, up axis, marking metadata and known exceptions. Use immutable content-addressed versions for consumers. No login tokens in published URLs or manifests.+7. The high asset must support close inspection of the exact MPN in its reviewed location. Coarse variants must be checked for silhouette, underside/terminal shape, package seating, optical opening shape and pin-1 ambiguity. Do not publish a numerical simplification result as visually approved.++The native board substrate, copper, vias and silkscreen also need budgets. Component LOD alone does not fix thousands of board-surface primitives. Keep native manufacturing geometry intact; generate separate presentation derivatives.++Primary references: [glTF Transform simplification](https://gltf-transform.dev/modules/functions/functions/simplify), [meshoptimizer](https://github.com/zeux/meshoptimizer).
skills/wiki-component-lod/references/runtime.mdadded+19
@@ -0,0 +1,19 @@+# Viewer loading and memory++Fetch the component LOD manifest first and load super-low by default. Fetch higher detail only when projected component size justifies it. Keep the coarse model visible while a higher level loads; ignore/cancel stale requests if the camera moves away. Avoid loading all high levels and merely hiding them: that still retains CPU/GPU memory and can freeze the user's shared desktop.++Use Babylon's native LOD mechanism where compatible with the model structure; a multi-node component with markings and terminals must change detail as one coherent unit. Screen coverage is usually a better signal than world distance because package size, camera FOV, viewport size and scaffold scale vary. Keep consistent transforms across levels. Test the chosen Babylon version, including instancing and node hierarchy limitations.++Add hysteresis and a short settle period so a component near a threshold does not repeatedly swap or download. Share downloaded geometry/materials by asset hash across identical MPN instances while retaining per-instance component reference, hover, LED state and joint transforms. Do not let joining geometry destroy those identities. Use bounded concurrent requests and retain explicit ownership/refcounts for shared resources.++Selection, residency and rendering are separate controls:++- Native LOD decides what draws.+- An asset cache decides what is downloaded/decoded and resident. Evict inactive expensive levels by a documented budget/LRU policy. Dispose unused GPU buffers, textures, materials and asset containers only when no instance needs them. Keep the super-low fallback available. Removing a mesh from the view is not proof that memory was freed.+- A render scheduler draws only when there is motion, interaction, changing telemetry or an invalidated view. Stop hidden/offscreen views and idle render loops. Cap active frame rate appropriately for a CAD work surface, and resume on pointer/camera changes, resizing or real animation. Pause background recording/rendering when the user reports slowdown.++Choose explicit startup, resident-memory, triangle, draw-call, texture and concurrent-load budgets for the actual deployment. Report limits and observations to the AI. Do not label an estimate as measured GPU memory. Include loaded level per reference, in-flight requests, cache hits, resident asset counts/bytes, evictions, scene mesh/primitive counts, frame timing and render-paused state in a read-only diagnostic endpoint. Budget refusal should explain what to reduce or regenerate; never silently drop expected chips or hide lost markings as a performance fix.++Runtime/source version, generated assets, installed package and painted UI are separate evidence. Do not claim streaming/eviction works merely because `addLODLevel` was called.++Primary reference: [Babylon LOD](https://doc.babylonjs.com/features/featuresDeepDive/mesh/LOD/).
skills/wiki-component-lod/references/verification.mdadded+17
@@ -0,0 +1,17 @@+# Verification, recording and recovery++Before opening a large assembly on the user's desktop, inspect the actual GLB primitives and decoded sizes. Test expensive generation and the initial scene in an isolated process with explicit limits. After a reported freeze, do not reopen the same unbounded scene to obtain a screenshot or repeat the demonstration.++Required evidence for a complete LOD implementation:++- All four levels exist, hashes match their source manifest, and units, axes, pivots and footprint transforms agree. Missing/stale cache files produce actionable diagnostics.+- Close-up high detail matches the reviewed component page: exact virtual MPN and placement, manufacturer markings, colors, terminal geometry and relevant pin-1 indicator. The same comparison is made in the assembled board. Shared symbol thumbnails remain derived from the reviewed art.+- Coarse silhouettes and critical features remain recognizable. Zoom transitions do not jump, flip or visibly change component placement. Orthographic/perspective, large/small packages, viewport resizing and scaffold-wide views are covered.+- Cold start fetches coarse assets only. Repeated near/far zoom cycles demonstrate lazy detail fetch, hysteresis, reuse across identical parts, canceled stale requests and eventual eviction. Network logs and resource counters prove the behavior. Bound memory after repeated cycles, including reload/dispose and switching boards; one FPS sample is insufficient.+- Hover/select identifies the same physical reference in 2D and 3D at every LOD. LED/material states, moving joints and digital-twin controls survive swaps. A static electronics test does not qualify motion-state swapping.+- Hidden/idle views stop rendering. Active frame times, draw calls and decoded/resident resource budgets meet the deployment target. Frame drops or budget exhaustion trigger diagnostics and reduced detail, not disappearing components.+- Full-scene native CAD parity, model seating and fabrication checks remain separate from presentation LOD qualification.++Recording is a separate resource user. Verify the actual recorder target, engine, frame progression and saved file. Hardware/GPU acceleration can help capture but cannot repair excessive scene draw calls or retained meshes. Stop this thread's recording and pause its renderer when the user reports slowdown; do not disturb other threads or take OS foreground. Record purposeful inspection motion after the resource checks pass. Keep per-take metadata so wrong-target, stalled or failed checks are excluded from product footage and retained only when useful for an explicitly chosen engineering edit.++For incidents, preserve evidence (versions, returned source, primitive counts, frame timing and logs), duplicate-check and file on the owning viewer/bridge/wiki project. Distinguish observations from suspected causes: a high static mesh count is not proof of a leak. Recheck a live process or recording handle before restarting. Source fixes, generated caches, published skills, installed skills and running AI context must each be verified separately.
skills/wiki-component/SKILL.md+5
@@ -598,3 +598,8 @@ An installation claim requires checking the desktop's registered symbol and foot Original Adom-authored component content defaults to open source. Manufacturer/upstream asset terms remain attached and cannot be relicensed by a combined package.  Official reference: https://dev-docs.kicad.org/en/addons/index.html+++## Board appearance, component LOD and freeze prevention++The assembled board must inherit the reviewed component wiki GLB, including virtual MPN placement and manufacturer markings. A raw STEP export does not include those enhancements automatically. For high/medium/low/super-low caches, coarse-first Babylon loading, bounded memory, eviction, idle rendering and full-scene performance checks, read `../wiki-component-lod/SKILL.md`. Generating detail files is distinct from qualifying an actual streaming viewer.
uninstall.sh+1−1
@@ -6,7 +6,7 @@ else   DESTINATIONS=("$HOME/.claude/skills" "${CODEX_HOME:-$HOME/.codex}/skills") fi for DEST in "${DESTINATIONS[@]}"; do-  for name in adom-wiki-skillpack wiki-anatomy wiki-api wiki-publish-safely wiki-readme wiki-readme-html wiki-readme-slideshow wiki-visibility wiki-repo-styles wiki-component wiki-family wiki-skillpack wiki-hero wiki-breadcrumbs wiki-forking wiki-discovery wiki-scoring wiki-bloat wiki-sub-readme wiki-subreadme wiki-hero-studio; do+  for name in adom-wiki-skillpack wiki-anatomy wiki-api wiki-publish-safely wiki-readme wiki-readme-html wiki-readme-slideshow wiki-visibility wiki-repo-styles wiki-component wiki-component-lod wiki-family wiki-skillpack wiki-hero wiki-breadcrumbs wiki-forking wiki-discovery wiki-scoring wiki-bloat wiki-sub-readme wiki-subreadme wiki-hero-studio; do     rm -rf -- "$DEST/$name"   done done