app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
← Commit history
Add desktop artifact and Bridge workflow skills, release delivery guidance, and narrated PCB demo
14 files changed
+119−8
README.md+4−2adom_codex.py+1−1dashboard/index.html+1−1docs/ASTRA-KICAD.md+16docs/BOOTSTRAP.md+8install.py+1−1package.json+1−1skills/codex-adom-bridge-workflows/SKILL.md+27skills/codex-adom-desktop-artifacts/SKILL.md+28skills/codex-adom-routing-video/SKILL.md+4skills/codex-adom-skill-distribution/SKILL.md+24skills/codex-adom/SKILL.md+3−1tests/test_install.py+1−1videos/04-public-adom-solenoid-full-routing-narrated.mp4README.md+4−2@@ -44,12 +44,14 @@ The public Teazzers comparison shows the reference, a stripped copy, independent ## Public Adom board: full routing comparison -<video controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing.mp4" style="width:100%;max-width:1100px"></video>+<video controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing-narrated.mp4" style="width:100%;max-width:1100px"></video> -[Download the full comparison](https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing.mp4). The public [Teazzers Solenoid Driver RP2040 v1.1](https://wiki.adom.inc/adom/teazzers-solenoid-driver-rp2040-v1-1) has 94 footprints and five output channels. The video tours the original human layout, removes all 484 segments and 58 vias from a copy, verifies zero remaining traces/vias, and shows Astra's independently calculated routing appearing through live KiCad IPC edits.+[Watch or download the narrated full comparison](https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing-narrated.mp4). The public [Teazzers Solenoid Driver RP2040 v1.1](https://wiki.adom.inc/adom/teazzers-solenoid-driver-rp2040-v1-1) has 94 footprints and five output channels. The video tours the original human layout, removes all 484 segments and 58 vias from a copy, verifies zero remaining traces/vias, and shows Astra's independently calculated routing appearing through live KiCad IPC edits. Astra runs in Adom Hydrogen and writes a custom geometry/A* planner. It reads the retained placement, pads, netlist and zone outlines; checks candidate paths against copper, pads, holes and board edges; and uses back copper and vias where needed. No Freerouting or other external autorouter is used, and the original trace geometry is not used to generate the replacement paths. Planning and iterative native DRC happened before this recorded execution. The tour and result play at normal speed; route creation plays at 3x, with the validation wait omitted. The final saved live board contains **1,463 segments and 33 vias, with zero unconnected items** after native KiCad zone refill and DRC. Four pre-existing errors remain: two courtyard overlaps, one zone intersection and one starved thermal. There are no new clearance or crossing errors. The human reference reports three open items and 27 errors under the same KiCad checks; the stripped starting copy reports 118 open items and five errors. This demonstrates connectivity routing on this board. Current capacity, USB signal integrity and production electrical qualification remain engineering review tasks. `kicad_routing_state` supplies the live revision and verifies copper counts. `kicad_remove_route` removes the original copper in one native Undo transaction. Then 132 `kicad_route_net` calls create the independently calculated segments and vias, guarded by `expectedRevision`. These calls use `validate:false` because the whole candidate was already checked; the actual saved live board is checked again using `kicad-cli pcb drc --refill-zones` through Adom Bridge `run_script`. `desktop_record_window_start` / `desktop_record_window_stop` capture one continuous KiCad-window take. The edited film is derived from that take, with caption timing and an edit manifest retained.++The narrated edition uses Adom TTS’s synthetic Andrew voice. The [caption-only edition](https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing.mp4) remains available.
adom_codex.py+1−1@@ -3,7 +3,7 @@ import argparse,json,os,platform,shutil,subprocess,sys,time,urllib.request,urlli from pathlib import Path from http.server import SimpleHTTPRequestHandler,ThreadingHTTPServer ROOT=Path(__file__).resolve().parent-VERSION='0.1.2'+VERSION='0.1.3' def context(): ch=Path(os.environ.get('CODEX_HOME',Path.home()/'.codex')) return {'app':'adom/codex','version':VERSION,'container':{'system':platform.system(),'kernel':platform.release(),'hostname':platform.node(),'cwd':os.getcwd()},'tools':{n:shutil.which(n) for n in ['codex','adom-wiki','adom-cli','adom-bridge']},'instructionsInstalled':(ch/'skills/codex-adom/SKILL.md').exists(),'hostTarget':'Not inferred; select and verify through Adom Bridge','hydrogenControlConfigured':(Path.home()/'.adom/hydrogen-control-url').exists()}
dashboard/index.html+1−1@@ -1,6 +1,6 @@ <!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Codex in Hydrogen</title><link rel="icon" href="/dashboard/icon.svg"><style> :root{color-scheme:dark;--bg:#0d1117;--card:#161b22;--text:#e6edf3;--muted:#8b949e;--line:#30363d;--teal:#00b8b1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px 'Familjen Grotesk',system-ui,sans-serif}header{height:44px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;padding:0 16px}header img{width:18px;height:18px}header strong{font-size:15px}header span{color:var(--muted);font-size:13px}.spacer{flex:1}button,a{touch-action:manipulation}button{background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 12px;cursor:pointer}button:hover,button:focus-visible{border-color:var(--teal)}main{margin:auto;padding:16px}h1{font-size:30px;margin:0 0 8px}h2{font-size:19px}p{line-height:1.6;color:var(--muted)}a{color:var(--teal)}.pills{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.pill{border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:12px}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.card{padding:22px;background:var(--card);border:1px solid var(--line);border-radius:12px}.card button{margin-right:8px}video{width:100%;max-height:70vh;background:#000}dialog{width:min(1100px,95vw);background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:12px}dialog::backdrop{background:#0008}pre{white-space:pre-wrap;word-break:break-word}.close{float:right}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--card);padding:12px;border:1px solid var(--teal);border-radius:8px;display:none}@media(max-width:720px){.grid{grid-template-columns:1fr}header span{display:none}main{padding:16px}}-</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration 0.1.0">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex/render/docs/BOOTSTRAP.md" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Next: human reference versus algorithmic routing on copies of Adom toolboards. Baseline findings and planning limits will be reported with each run.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/ASTRA-KICAD.md" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/DESKTOP-BRIDGE.md" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Live KiCad routing</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script>+</style><header><img src="/dashboard/icon.svg" alt=""><strong title="Codex integration 0.1.3">Codex</strong><span>Engineering in Hydrogen</span><div class="spacer"></div><span id="machine">Container</span><button id="help" title="Show or hide starter prompts" aria-label="Starter prompts">?</button><button id="settings" title="Integration details" aria-label="Integration details"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="m10 2 4 0 1 3 3 2 3 0 1 4-2 2-1 3 1 3-4 2-2-2-3-1-3 1-2-4 2-2 1-3-1-3 4-2z"/><circle cx="12" cy="12" r="3"/></svg></button></header><main><div id="newbie"></div><div class="pills" id="status"><span class="pill">Checking local integration</span></div><h1>Turn a prompt into working engineering.</h1><p>Orient Codex in your Adom workspace, then drive real tools through Adom Bridge.</p><div class="grid"><section class="card"><h2>Workspace setup</h2><p>The package installs an ecosystem entry point, a focused skill and a context command. Your existing instructions and credentials stay yours.</p><button id="inspect">Inspect this workspace</button><a href="https://wiki.adom.inc/adom/codex/render/docs/BOOTSTRAP.md" target="_blank">Setup guide</a></section><section class="card"><h2>Astra routes live in KiCad</h2><p>Watch traces, layer-changing vias and branched nets appear in the real editor. The captions explain the calculation and the measured results.</p><button data-demo="01-astra-live-routing-3x.mp4">6-net demo · 23 sec</button><button data-demo="02-astra-crossbar-24-3x.mp4">24-net demo · 31 sec</button></section><section class="card"><h2>Real-board comparisons</h2><p>Watch a public Adom board go from the human reference to zero traces and independently calculated routing, with narrated explanations and measured KiCad results.</p><button data-demo="04-public-adom-solenoid-full-routing-narrated.mp4">Public board · narrated · 82 sec</button><a href="https://wiki.adom.inc/adom/codex/render/docs/ASTRA-KICAD.md" target="_blank">Read the engineering log</a></section><section class="card"><h2>Codex Desktop</h2><p>Planned: verified desktop installation and a Bridge connection between Hydrogen and Codex Desktop. Desktop controls are not installed by this version.</p><a href="https://wiki.adom.inc/adom/codex/render/docs/DESKTOP-BRIDGE.md" target="_blank">Integration roadmap</a></section></div></main><dialog id="player"><button class="close" id="close-video" title="Close video">Close</button><h2>Live KiCad routing</h2><video id="video" controls playsinline></video></dialog><dialog id="details"><button class="close" id="close-details">Close</button><h2>Local integration</h2><pre id="context"></pre></dialog><div id="toast" role="status"></div><script src="/dashboard/vendor/newbie-panel.js"></script><script> const $=s=>document.querySelector(s);function toast(s){$('#toast').textContent=s;$('#toast').style.display='block';setTimeout(()=>$('#toast').style.display='none',4000)} function play(file){$('#video').src='/videos/'+file;$('#player').showModal();$('#video').play().catch(()=>toast('Press Play to start the video.'))} const panel=AdomNewbiePanel.mount({mount:'#newbie',app:'codex',appName:'Codex',slug:'codex',toggleButton:'#help',demo:{label:'Watch the routing demo',meta:'24 nets, 31 seconds',onPlay:()=>play('02-astra-crossbar-24-3x.mp4')},phrases:['Codex, inspect this workspace','Codex, inspect my KiCad board','Codex, show the routing demo']});
docs/ASTRA-KICAD.md+16@@ -66,3 +66,19 @@ Astra runs in Adom Hydrogen and writes a custom geometry/A* planner. It reads th The final saved live board contains **1,463 segments and 33 vias, with zero unconnected items** after native KiCad zone refill and DRC. Four pre-existing errors remain: two courtyard overlaps, one zone intersection and one starved thermal. There are no new clearance or crossing errors. The human reference reports three open items and 27 errors under the same KiCad checks; the stripped starting copy reports 118 open items and five errors. This demonstrates connectivity routing on this board. Current capacity, USB signal integrity and production electrical qualification remain engineering review tasks. `kicad_routing_state` supplies the live revision and verifies copper counts. `kicad_remove_route` removes the original copper in one native Undo transaction. Then 132 `kicad_route_net` calls create the independently calculated segments and vias, guarded by `expectedRevision`. These calls use `validate:false` because the whole candidate was already checked; the actual saved live board is checked again using `kicad-cli pcb drc --refill-zones` through Adom Bridge `run_script`. `desktop_record_window_start` / `desktop_record_window_stop` capture one continuous KiCad-window take. The edited film is derived from that take, with caption timing and an edit manifest retained.++## Narrated full comparison++<video controls playsinline preload="metadata" src="https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing-narrated.mp4" style="width:100%;max-width:1100px"></video>++[Watch or download the narrated version](https://wiki.adom.inc/api/pages/adom/codex/files/videos/04-public-adom-solenoid-full-routing-narrated.mp4). Adom TTS supplies the synthetic Andrew voice, timed to the tour, removal, independent routing and measured result. Captions remain visible; the silent edition above is also available.++### Narration transcript++This is Astra, working through Adom Hydrogen and Adom Bridge. We start with a public Adom solenoid driver: ninety-four footprints and five output channels. Here is the original human routing, from the power converter and output stages to the controller and USB interface.++Now, every original trace and via is removed from a copy. Placement and copper zone outlines stay in place.++The new paths were calculated beforehand using a custom geometry and A-star planner, without an external autorouter. It checks pads, copper, holes, and board edges, then chooses front or back copper and places vias where needed. You are watching those paths being created live in KiCad, at three times speed. The routing state verb supplies the board revision. Route net commits each batch through Adom Bridge, rejecting stale revisions.++The saved result has fourteen hundred sixty-three segments and thirty-three vias. Native KiCad checks report zero unconnected items. Four pre-existing rule errors remain. Electrical review is still required.
docs/BOOTSTRAP.md+8@@ -13,3 +13,11 @@ Codex reads global instructions at startup; restart the conversation to load a n The operational guidance teaches the container/host boundary, live target and verb discovery, background UIA/IPC control, safe revision-checked PCB edits, development pin preservation, and delivery of recordings onto the user's actual machine. Existing Adom app skills remain the source for each tool's detailed behavior. Run `adom-codex context` to inspect the local integration. Use the selected Bridge relay's live discovery to establish host connectivity before desktop actions.++## Skills shipped in version 0.1.3++The package installs seven focused skills. `codex-adom` is the entry point; desktop-artifacts maps requests like “play it” to the host player; bridge-workflows helps discover the right verb; operation-results handles errors and asynchronous responses; skill-distribution distinguishes wiki source, release tarball, installed files and loaded threads; showcase handles screenshots; routing-video handles recording and editing. They reuse existing Adom Bridge and app skills.++The managed global instruction block explicitly points file/video requests to desktop-artifacts. This makes the entry point useful even when a running session has an older skill catalog. Existing sessions must read changed files explicitly; a fresh session is still needed to test automatic startup discovery.++Audit finding: wiki source was two commits ahead of the old 0.1.2 package. Source publication alone was leaving installers behind. Release checks now include all seven installed skills, managed-instruction preservation, and tarball contents.
install.py+1−1@@ -19,7 +19,7 @@ path=codex_home/'AGENTS.md';old=path.read_text() if path.exists() else '' a='<!-- adom/codex:begin -->';b='<!-- adom/codex:end -->' block=f'''{a} ## Adom ecosystem entry point-For Adom work, run `adom-codex context` and read `{skill}/SKILL.md` before choosing tools. Recheck dynamic target and board state on resume. Use existing Adom skills for task-specific guidance. Preserve user configuration, foreground preferences, and pinned development bridges.+For Adom work, run `adom-codex context` and read `{skill}/SKILL.md` before choosing tools. Recheck dynamic target and board state on resume. For opening videos/files/folders, follow codex-adom-desktop-artifacts; for choosing verbs and background controls, follow codex-adom-bridge-workflows. Use existing Adom skills for task-specific guidance. Preserve user configuration, foreground preferences, and pinned development bridges. {b}''' if (a in old)!=(b in old) or old.count(a)>1 or old.count(b)>1:raise RuntimeError('Malformed managed block; preserving AGENTS.md for review') if a in old:
package.json+1−1@@ -4,7 +4,7 @@ "type": "app", "title": "Codex", "brief": "Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.",- "version": "0.1.2",+ "version": "0.1.3", "description": "Adom ecosystem setup and a Hydrogen dashboard for Codex. Installs a managed instruction entry point and context helper, mounts the shared newbie panel, and presents verified Astra KiCad routing demonstrations. Codex Desktop bridge is planned.", "org": "adom", "needs_sudo": false,
skills/codex-adom-bridge-workflows/SKILL.mdadded+27@@ -0,0 +1,27 @@+---+name: codex-adom-bridge-workflows+description: Choose the appropriate Adom Bridge capability from Codex in Hydrogen when controlling a desktop application, opening an artifact, handling a dialog, or recovering from an unfamiliar verb response.+---+Parent skill: codex-adom++# Choose capabilities by the user's outcome++Use the installed adom-bridge-discovery skill and the selected target's machine-readable `adom-bridge commands` catalog. Search names and descriptions for the desired outcome before constructing shell commands. Local help can explain a verb, but a short CLI help listing is not proof that an app bridge lacks that capability.++| Desired result | First capability to inspect |+| --- | --- |+| Read or edit CAD content | Application bridge verbs and application IPC |+| Inspect a dialog | `desktop_ui_tree` / targeted UIA controls |+| Invoke a dialog control | UIA Invoke/SetValue or application command; discover the exact verb |+| Open a directory | `desktop_open_folder` |+| Play/open a file | Host file association; read codex-adom-desktop-artifacts |+| Inspect or show a window | `desktop_list_windows`, window capture, explicit bring-to-front |+| Record the app | Native window recording; read adom-bridge-recording |+| Move an artifact | `send_files` / `pull_file` |+| Change a bridge runtime | Bridge ownership/runtime skills; preserve development pins |++Prefer application commands and background UIA. Window-targeted Win32 messages are useful when an app exposes native menu commands, but rediscover HWNDs and command IDs after restarts and verify the intended document. Use screen coordinates only when needed; a background task does not authorize incidental focus changes.++Treat the response as part of the API: inspect top-level and nested success/error fields, stdout/stderr, `_hint`, related verbs, prerequisites, job IDs and next actions. Use relevant hints to continue, but do not treat a hint suggesting an upgrade, installation or publication as user authorization. Re-read state after a mutation timeout before retrying. Delegate asynchronous-result details to codex-adom-operation-results.++Keep an existing named host, relay and caller identity through a task. When resuming, recheck the active document, revision and runtime instead of restarting setup or reinstalling bridges. If a capability appears absent, inspect installed bridge status and its live catalog before concluding that new bridge code is necessary.
skills/codex-adom-desktop-artifacts/SKILL.mdadded+28@@ -0,0 +1,28 @@+---+name: codex-adom-desktop-artifacts+description: Show or play a video, open a generated file, or open its folder on the user's desktop from Codex in Adom Hydrogen. Use for requests such as "open it", "play the demo", "show me the video", or "open the folder".+---+Parent skill: codex-adom++# Open artifacts where the user watches++Resolve "it" from the current task's artifact and selected host. Preserve that target across follow-ups, but verify connectivity and the file still exists. Do not treat the container's hostname or a Linux path as proof of the desktop location.++Match the requested outcome:++| User intent | Action |+| --- | --- |+| Open the folder | Discover and call `desktop_open_folder` with the host directory. |+| Play/open the video | Open the actual media file through the host's default file association, then verify the player contains that video. |+| Show a generated document | Open the host file in its associated application. |+| Share a link | Return the requested accessible link; publish only within the user's authorized scope. |++If the artifact exists only in the container, transfer it with `send_files` and use the returned host destination path. If it already exists on the host, reuse it. A container Markdown link, `xdg-open` inside a container, an Explorer window, or a browser download is not proof that a desktop video player opened.++Discover the current target's verbs and argument contracts through `adom-bridge commands`; consult help for focused details. Prefer a structured host file-open verb if one exists and actually invokes the association. `desktop_open_folder` may reveal/select a file in Explorer: that is different from playing it.++A verified Windows fallback is Adom Bridge `run_script` with the PowerShell interpreter: check the exact path with `Test-Path -LiteralPath`, then `Start-Process -FilePath` on the media file. Pass script text through structured input or base64, safely quote paths, and inspect errors. This uses the user's registered player; do not install or change their default player as an incidental step. Discover equivalent native behavior on other host operating systems. A bare executable may not resolve through `launch`; inspect the failure before falling back, rather than guessing several installation paths.++After opening, inspect `desktop_list_windows` and then the player's UIA tree or window screenshot. Verify the requested filename or content and playback state before claiming it is playing. An existing Media Player window alone is insufficient. A request to show/open the player authorizes bringing that specific window forward once; leave subsequent focus control with the user.++Read codex-adom-operation-results when a call returns approval, job, timeout or partial-success hints. Do not announce completion for a queued operation.
skills/codex-adom-routing-video/SKILL.md+4@@ -41,3 +41,7 @@ Use pull_file to bring the host recording into the container for editing. Use se Record the reference tour, complete trace/via removal, zero-copper state and replacement route commits in one take when demonstrating independent rerouting. Replay only the final accepted candidate geometry; historical planning logs can contain discarded routes. Verify live counts and native DRC on the actual saved replay. Window-recorder encoded duration can differ from wall-clock call timing. Treat logs as approximate edit guides: inspect frames at every cut, especially the final additions, and retain all route commits. A global time scale alone can cut off the last vias. Keep the raw take and document manually verified cut boundaries.++## Spoken narration++For voiceover requests, read the installed adom-tts skill and use `adom-tts say` for the audio files. Time narration to visible actions; use its default approved voice unless the user chooses another. Keep speech at a natural pace, normalize loudness and check peaks and audio/video duration. Preserve the silent captioned version. Clearly explain precomputed planning, live edits, playback speed and measured limits. Open the finished narrated video through codex-adom-desktop-artifacts when the user wants to watch it.
skills/codex-adom-skill-distribution/SKILL.mdadded+24@@ -0,0 +1,24 @@+---+name: codex-adom-skill-distribution+description: Publish, install, audit or share Codex ecosystem skills through the adom/codex wiki package; diagnose why another Codex thread does not know a newly documented workflow.+---+Parent skill: codex-adom++# Deliver skills, not just source pages++Keep four states separate:++1. Wiki source commit: readers can browse new skill files.+2. Published package version and signed tarball: installers receive this content.+3. Installed files in the effective Codex home (`CODEX_HOME` when set, otherwise `~/.codex`).+4. Instructions and skill catalog loaded by a particular running conversation.++`adom-wiki pkg info adom/codex --json` reports versions, dist-tags and whether source is ahead of the release. A repo push alone does not update the tarball. A local direct copy can fix this thread's files while leaving everyone else's install stale.++When authorized to distribute an update, edit the package-owned skill sources, bump the package version, pack and inspect the tarball, and test the installer with an isolated home. Check managed AGENTS.md preservation/idempotence and that every bundled skill is installed. Publish through the wiki CLI, verify the resulting version, then update the intended installation. Preserve other skills and user instructions. Include runtime media in the tarball when the dashboard relies on local media paths, or deliberately use published URLs.++The package's managed AGENTS.md entry point should route common user intents to focused skills. Put triggers such as "play the video" in skill descriptions, not only deep in an unrelated document. Prefer a few concrete workflow skills that point to maintained Bridge/app skills over a duplicated catalog of hundreds of verbs.++Users sharing the container can share installed files without sharing a conversation's already-loaded instructions. For an existing thread, give it the exact installed skill path and ask it to read it when the user has authorized contacting that thread. A fresh session is the acceptance check for automatic catalog discovery; do not claim a file copy retroactively updated every running thread.++Record reusable corrections in package-owned skills and their relevant workflow documentation. Keep session-specific HWNDs, private board names, user paths and temporary relay addresses in task evidence, not general examples shipped to every user.
skills/codex-adom/SKILL.md+3−1@@ -25,8 +25,10 @@ An explicit path planner is not automatically a general autorouter. Label copied ## Focused follow-ups -For host video playback, approvals and job results, read `../codex-adom-operation-results/SKILL.md`. For Hydrogen screenshots and hero exports, read `../codex-adom-showcase/SKILL.md`.+For "open it", "play/show the video", or "open the folder", read `../codex-adom-desktop-artifacts/SKILL.md` and complete the action on the selected desktop. For choosing Bridge capabilities or handling dialogs, read `../codex-adom-bridge-workflows/SKILL.md`. For approvals and job results, read `../codex-adom-operation-results/SKILL.md`. For Hydrogen screenshots and hero exports, read `../codex-adom-showcase/SKILL.md`. Wiki source publication, installed skill files, and instructions already loaded in a running AI thread are separate states. Verify all three when sharing a new skill. For an existing thread, provide the explicit skill path and ask it to read it; do not assume package installation retroactively changes its context. For recording, trimming, accelerating and captioning CAD routing demos, read `../codex-adom-routing-video/SKILL.md`.++For package updates or another thread missing a skill, read `../codex-adom-skill-distribution/SKILL.md`.
tests/test_install.py+1−1@@ -7,7 +7,7 @@ class Install(unittest.TestCase): home=Path(d);c=home/'.codex';c.mkdir();p=c/'AGENTS.md';p.write_text('Keep my custom instruction.\n');auth=c/'auth.json';auth.write_text('unchanged-fixture') def install():subprocess.run(['python3',str(ROOT/'install.py'),'--home',str(home)],check=True,capture_output=True) install();first=p.read_bytes();install();self.assertEqual(first,p.read_bytes());self.assertIn('Keep my custom instruction.',p.read_text());self.assertEqual(p.read_text().count('<!-- adom/codex:begin -->'),1);self.assertEqual(auth.read_text(),'unchanged-fixture');self.assertTrue((home/'.local/bin/adom-codex').exists())- for name in ['codex-adom','codex-adom-showcase','codex-adom-operation-results']:self.assertTrue((c/'skills'/name/'SKILL.md').is_file(),name)+ for name in ['codex-adom','codex-adom-showcase','codex-adom-operation-results','codex-adom-routing-video','codex-adom-desktop-artifacts','codex-adom-bridge-workflows','codex-adom-skill-distribution']:self.assertTrue((c/'skills'/name/'SKILL.md').is_file(),name) def test_malformed_block_is_not_overwritten(self): with tempfile.TemporaryDirectory() as d: p=Path(d)/'.codex/AGENTS.md';p.parent.mkdir();p.write_text('<!-- adom/codex:begin -->\nuser text');before=p.read_bytes()
videos/04-public-adom-solenoid-full-routing-narrated.mp4added⋯ 1 unchanged line ⋯