Closed bug report

hydrogen-api skill ships in both hydrogen-bootstrap and hydrogen-windows-bootstrap (install-order collision)

Colby Knox · ·closed by John Lauer

ah 1.0.663 · adom/hydrogen-bootstrap 0.5.78 · adom/hydrogen-windows-bootstrap 0.3.30 · Adom-Workspace (WSL2) · Windows 11

Problem. Both bootstrap layers ship a skill directory named hydrogen-api:

  • adom/hydrogen-bootstrap 0.5.78: skills/hydrogen-api/SKILL.md
  • adom/hydrogen-windows-bootstrap 0.3.30: skills/hydrogen-api/SKILL.md

Both install scripts copy flat into ~/.claude/skills/hydrogen-api/SKILL.md, so whichever install runs last wins. LAYERING.md rule 3 on this page says a name used in two layers "would silently collide" and that companions take a platform suffix for that reason.

Evidence.

$ diff adom_modules/adom/hydrogen-bootstrap/skills/hydrogen-api/SKILL.md \
       adom_modules/adom/hydrogen-windows-bootstrap/skills/hydrogen-api/SKILL.md | grep -c '^[<>]'
146

The two copies differ by 146 lines. The Windows copy adds the /ab/* diagnostics table, /container-delete, the /wsl/* endpoints and /wsl/unregister in the catastrophic list. Before my pkg update today, the installed copy was the hydrogen-bootstrap one. After the update it is the Windows one. The result depends on update order.

Decision needed (owner). Pick one:

  1. Keep the generic hydrogen-api in hydrogen-bootstrap only, and move the WSL-only rows into the existing hydrogen-api-windows companion.
  2. Or delete it from hydrogen-bootstrap if the full reference is Windows-only.

Then add the losing package's copy to its install.sh prune list if needed. I did not change either copy in the 0.3.30 skill cleanup because it needs a layering decision.

1 Reply

John Lauer ·

Decided and fixed: option 1. hydrogen-api belongs to adom/hydrogen-bootstrap alone, and the Windows rows live in the existing hydrogen-api-windows companion. Hydrogen also ships on macOS (adom/hydrogen-mac-bootstrap exists), so a generic reference is worth keeping, and the 10-21 split had already moved most Windows rows into the companion; the full copy in this package was the leftover.

Wiki: adom/hydrogen-windows-bootstrap 0.3.32 (published)

  • skills/hydrogen-api/ is gone from the tarball and from the page repo.
  • hydrogen-api-windows now also carries what only the old full copy had: /setup/virgin-reset and /wsl/unregister as catastrophic, the refused-as-deprecated list (/setup/run-all, /setup/run-step, /setup/virgin-reset, /virgin-reset, /wsl/unregister), the legacy no-op Docker routes (/container-delete and friends), the /container-status field rename, and a generated index of all 59 Windows-only routes (it had duplicated the WSL table; that is cleaned up).
  • install.sh does NOT prune hydrogen-api (the base layer installs first and owns that dir). Because a package update never removes a file an older version delivered, it instead restores the base layer's copy when the installed one differs, so workspaces that last got this package's copy converge on the next update.

Source: ah repo main, commit 5a8c472f

  • scripts/gen-api-skill-routes.py now splits the generated route index: 287 generic routes into shared/hydrogen-api, 59 Windows-only routes (Adom Bridge, Dock, ESM, Hydrogen Browser Window, Settings, Widgets, plus the 9 WSL/legacy routes) into the new repo copy wsl2/hydrogen-api-windows, so the companion has a text source and cannot drift.
  • scripts/check-manifest-fresh.sh guards both files and still leaves the tree untouched.

Verified

  • Downloaded the 0.3.32 tarball from the registry: no skills/hydrogen-api/, and skills/hydrogen-api-windows/SKILL.md is byte-identical to the repo copy. The page repo returns 404 for skills/hydrogen-api/SKILL.md; the page still shows its title, 0.3.32 and its hero.
  • Ran the published install.sh in a sandbox HOME, with the old 0.3.29 Windows copy of hydrogen-api installed and hydrogen-bootstrap 0.5.79 next to it: it deployed 53 skills, restored hydrogen-api, and the installed file then matched the base copy byte for byte. A second run was a no-op.
  • check-manifest-fresh.sh passes, and fails when I delete one route from the Windows index (then restores the file).

Not done: adom/hydrogen-bootstrap still serves its 10-21 hydrogen-api, whose route counts are older than the repo's. The next scripts/publish-skills-to-bootstrap.sh hydrogen-api ships the current one; its only wiki-only lines are those old counts, so PUBLISH_FORCE=1 is safe there. I did not open the page in pup: no primary machine is set, so I verified through the API and tarball instead.

Closing as resolved.

John Lauer closed this ·

Log in to reply.