app
Gallia Bundle
UnreviewedAdom platform bundle for Hydrogen Desktop. Built by adom-inc/gallia-hd-bundle from upstream adom-inc/gallia — strips legacy-container cleanup, drops bootstrap.sh, ships 117 skills + cleaned-down insta
{
"schema_version": 1,
"type": "app",
"slug": "gallia-bundle",
"title": "Gallia Bundle",
"brief": "Adom platform bundle for Hydrogen Desktop. Built by adom-inc/gallia-hd-bundle from upstream adom-inc/gallia — strips legacy-container cleanup, drops bootstrap.sh, ships 117 skills + cleaned-down insta",
"version": "1.0.0",
"tags": [],
"license": "MIT",
"sample_prompts": [
{
"label": "Install gallia",
"prompt": "Install gallia onto this container"
},
{
"label": "Update gallia",
"prompt": "Update my gallia install from the wiki"
},
{
"label": "What's in gallia",
"prompt": "What skills are in the gallia bundle?"
},
{
"label": "What does install.mjs do",
"prompt": "Walk me through what gallia install.mjs installs"
},
{
"label": "Rebuild bundle",
"prompt": "How do I rebuild the HD gallia bundle?"
}
],
"install": {
"binary_name": "gallia-bundle",
"install_dir": "",
"install_hint": "",
"version_cmd": ""
},
"readme": "## What Hydrogen Desktop runs\n\n```bash\ncurl -fsSL https://wiki-ufypy5dpx93o.adom.cloud/static/apps/gallia-bundle/gallia-bundle.tar.gz \\\n -o /tmp/gallia-bundle.tar.gz\ntar xzf /tmp/gallia-bundle.tar.gz -C ~/\ncd ~/gallia && npm install --no-audit --no-fund\nnode ~/gallia/install.mjs --project ~/project\n```\n\nThis bundle is **trimmed for fresh Hydrogen Desktop containers** — all the legacy-container uninstall logic in `install.mjs` has been stripped (no old MCP servers to remove, no retired `kel`/`adom-rc`/`skill-pilot`/`ds-queue`/conduit/AV residue to scrub). The full installer with cleanup lives in [adom-inc/gallia](https://github.com/adom-inc/gallia) for cloud containers.\n\n`bootstrap.sh` is **not** in this bundle either — Hydrogen Desktop handles its own Claude-Code-extension install, VS Code settings, auth, and pre-reqs.\n\n## What `install.mjs` actually installs\n\nAll work is done in a single pass with a `/tmp/gallia-install.pid` mutex (prevents concurrent runs that race on `~/.claude/skills/`).\n\n| § | Step | What it does |\n|---|------|--------------|\n| 0 | PATH | Adds `~/.local/bin` and `~/.claude/bin` to `~/.bashrc` |\n| 1 | Skills | Copies all SKILL.mds into `~/.claude/skills/adom/guides/<skill>.md` under a single `adom` umbrella skill (so only `/adom` appears in the slash-command list); skills with `user-invocable: true` also get a standalone `~/.claude/skills/<skill>/SKILL.md` so they get their own slash command. **Also prunes orphan guides** — if a skill was previously deployed but no longer exists in source (e.g. retired skills), its `guides/<skill>.md` is deleted so the umbrella `adom` skill stops referencing it |\n| 1a / 1b6 | Codex sync | Mirrors `~/.claude/skills/*` into `~/.codex/skills/` |\n| 1b | adom-cli | Downloads `adom-cli` from GitHub Releases (fallback: wiki), installs to `/usr/local/bin/adom-cli`, runs `adom-cli skills install` |\n| 1b2 | adom-wiki | Downloads `adom-wiki` from GitHub Releases (fallback: wiki), installs binary + SKILL.md, seeds the wiki CLI token from `/var/run/adom/api-key` |\n| 1b3 | adom-vscode | Downloads `adom-vscode` from GitHub Releases (fallback: wiki), disables the built-in `github-authentication` VS Code extension (and the `github.gitAuthentication` / `git.autofetch` settings), runs `adom-vscode install` to deploy the VSIX + SKILL.md + bash completions + screenshot bridge |\n| 1c | Tier A apps | Downloads + installs these binaries from the wiki: `adom-mouser`, `adom-digikey`, `adom-jlcpcb`, `adom-parts-search`, `adom-gchat`. Each binary's own `install` subcommand deploys its SKILL.md + bash completions |\n| 1d | Default agents | Reads `default-agents.json`, fetches each agent's `skill_source` from the wiki API, writes to `~/.claude/agents/<slug>.md` |\n| 1b4 | Wiki catalog | Runs `hooks/refresh-wiki-catalog.mjs` to pull the auto-discovery catalog snippet |\n| 1c | MEMORY.md | Injects the managed block from `memory-rules.md` (between `<!-- ADOM-BEGIN -->` markers) into `~/.claude/projects/<encoded-projectRoot>/memory/MEMORY.md` |\n| 2 | Claude Code settings | Writes `~/.claude/settings.json` — merges `permissions.allow`/`ask`, pins `model: claude-opus-4-7[1m]`, marks `trustedDirectories`, registers `hooks/check-updates.sh` as a `UserPromptSubmit` hook, sets `hooks/statusline.sh` as the statusline. Also updates `~/.claude.json` onboarding flags and forces `python.interpreter.infoVisibility: never` in code-server settings |\n| 3 | Identity cache | Calls `adom-cli carbon user get` + `carbon containers current` + `carbon user orgs`, writes safe identifiers (user name, display name, repo name, org names — **never** slug/hostname) to `~/.config/adom-identity.json` |\n| 5 | Shared services | Prints info banner: `service-kicad`, JLCPCB, and Mouser run on shared service containers — nothing local needed. Honors `KICAD_SERVICE_API` override |\n| 7 | Project dirs | Creates `<projectRoot>/project-content/screenshots` and `.../schematics` (sudo + chown fallback on EACCES) |\n| 8 | Background services | Runs `services/adom-start.sh` (which discovers any `services/*/service.json` whose `service` tag matches `$GALLIA_SERVICE`, default `local`); runs each matching `services/*/setup.sh`; patches `/usr/local/bin/code-server-entrypoint.sh` to re-run `adom-start.sh` on reboot; installs a `*/2 * * * *` cron calling `services/adom-watchdog.sh` **only on service containers** (where `/etc/environment` sets `GALLIA_SERVICE` to something other than `local`) |\n| 10 | Summary | Prints \"Open Claude Code and try your first prompt!\" |\n| extra | Org bootstraps | For each org in the cached identity that has a customer entry in `CUSTOMER_BOOTSTRAPS` (currently only `ntx-embedded`), clones or wiki-downloads the customer repo to `~/<org>/` and runs its `install.sh` |\n| extra | Hash stamp | Writes `sha256(install.mjs)` to `~/.adom/last-install-hash` so `hooks/check-updates.sh` can detect upstream changes |\n\n**Not installed by this bundle:** MCP servers (none — they were all retired); `bootstrap.sh` (HD handles bootstrap itself); `kel`, `adom-rc`, `skill-pilot`, `ds-queue` (all retired). On a fresh HD container, the installer logs are linear and clean — every line is a positive \"✓ installed X\", no scrubs or removals.\n\n## Skill inventory (117)\n\nSkills below are deployed as guides under the single `adom` umbrella; ones marked `user-invocable: true` in their frontmatter also get their own slash command.\n\n### Adom platform — core\n`adom`, `adom-api`, `adom-app-header`, `adom-app-model`, `adom-auth`, `adom-cli-design`, `adom-cloud`, `adom-footprint`, `adom-inventory`, `adom-layouts`, `adom-lbr`, `adom-panels`, `adom-pin-mapping`, `adom-plan`, `adom-port-hints`, `adom-publish`, `adom-repo-management`, `adom-schematics`, `adom-screenshot`, `adom-security`, `adom-symbol`, `adom-tts`, `adom-ui-linter`, `adom-update`, `adom-viewer`, `adom-workspace-control`\n\n### Adom Desktop bridge\n`adom-desktop`, `adom-desktop-bridge-author`, `adom-desktop-demo`, `adom-desktop-direct-api`, `adom-desktop-discovery`, `desktop-setup`, `desktop-ssh`, `ssh-connection`, `remote-bootstrap`, `oauth`\n\n### Wiki + sharing\n`adom-wiki`, `adom-wiki-v2`, `wiki-backup`, `wiki-first-lookup`, `wiki-split`, `app-creator`, `readme-creator`, `library-creator`, `tool-publisher`, `skill-catalog`, `skill-creator`, `standalone-service`\n\n### KiCad, PCB, electrical engineering\n`service-kicad`, `service-kicad-admin`, `kicad-donut-pad`, `kicad-to-markdown`, `kicad-to-molecule`, `pcb-design`, `footprint-creator`, `schematic-creator`, `altium-pcblib`, `gerber-viewer`, `fp3d-viewer`, `pin1-indicator`, `electrical-engineering`, `solder-jet-sizer`, `solder-jetting`, `up-axis-conventions`\n\n### Fusion 360\n`fusion-360`, `fusion-export-for-hydrogen`, `fusion-update-libraries`\n\n### 3D models + viewers\n`3d-component-creator`, `3d-viewer-design`, `basic-3d-viewer`, `instrument-viewer`, `measure-tool-design`, `mosfet-visualizer`, `molecule-breakout-board-creator`, `board-creator`\n\n### tscircuit\n`adom-tscircuit-skill`, `board-building-pipeline`, `instapcb`\n\n### Parts search + sourcing\n`adom-parts-search`, `digikey`\n\n### Chipsmith\n`adom-chipsmith`, `adom-chipsmith-build`\n\n### Datasheets\n`datasheet-parser`, `datasheet-parser-interactive`, `process-datasheets`\n\n### Test instruments\n`pyvisa-testscript`, `red-pitaya`\n\n### Process, demos, ops\n`brand`, `bug-filing`, `container-bootstrap`, `debug`, `definitions`, `demo-recording`, `tour`, `tts-pronunciation`, `use-cases`\n\n### Other tools + references\n`curium`, `neon-mirror`, `pup`, `pup-vs-webview`, `claude-api`, `claude-code-1m-context`, `ai-hints-in-clis`, `relay-hint-pattern`, `avatar`, `movie-maker`, `carbon-preferences`, `human-ui-patterns`\n\n## Differences from the upstream gallia repo\n\n| Item | Upstream `adom-inc/gallia` | This HD bundle |\n|------|----------------------------|-----------------|\n| `bootstrap.sh` | present (legacy cloud-container bootstrap) | **removed** — HD does its own bootstrap |\n| `install.mjs` `oldSkillDirs` cleanup loop | present | **removed** |\n| `install.mjs` nested-adom-skill cleanup | present | **removed** |\n| `install.mjs` `~/.claude/commands/` scrub | present | **removed** |\n| `install.mjs` §1b3 broken-extension removal | present | **removed** |\n| `install.mjs` §1b5 ds-queue retirement | present | **removed** |\n| `install.mjs` §3 + §4 MCP cleanup | present | **removed** — no MCP servers anywhere |\n| `install.mjs` §4b gchat / `kel` legacy cleanup | present | **removed** |\n| `install.mjs` §4c desktop-conduit / AV retirement | present | **removed** |\n| `install.mjs` §4d2 jst / neon-mirror / piper-tts retirement | present | **removed** |\n| `install.mjs` §4d skill-pilot retirement | present | **removed** |\n| `install.mjs` §4e adom-rc retirement | present | **removed** |\n| `install.mjs` §8 legacy `check-kicad-update.sh` cron scrub + stale-watchdog else-branch | present | **removed** |\n\n`install.mjs` shrinks from **1434 → 976 lines** (-32%). The bundle tarball ships at **4.9 MB** (641 files) vs ~16 MB stale.\n\n## Bundle contents\n\n```\ngallia/\n├── install.mjs # cleaned installer (no legacy uninstall code)\n├── package.json # npm deps for installer + MCP servers\n├── default-agents.json # which agents to install from the wiki\n├── memory-rules.md # global memory hygiene rules\n├── PORT-REGISTRY.md # platform port allocations\n├── skills/ # 117 SKILL.md packages\n├── services/ # service skeletons (kicad-cli, ds-extract, oauth-gateway)\n├── hooks/ # statusline.sh, check-updates.sh, refresh-wiki-catalog.mjs\n├── scripts/ # bootstrap-guest, publish-to-wiki, claude-auth, etc.\n├── dns/, jst/ # MCP servers (source — not auto-registered by installer)\n├── symbol-creator/ # KiCad/EAGLE symbol creator MCP server + UI\n├── footprint-creator/ # KiCad footprint creator MCP server + UI\n├── youtube/ # YouTube OAuth + API tooling\n├── brand/, docs/, plans/, demo/\n└── .claude/ # per-project Claude Code config baseline\n```\n\n## Source + build process\n\n- **Skill source:** [adom-inc/gallia](https://github.com/adom-inc/gallia). This bundle never touches that repo — it snapshots `HEAD`, applies HD-specific transforms in a sandbox, ships.\n- **Build pipeline:** [adom-inc/gallia-hd-bundle](https://github.com/adom-inc/gallia-hd-bundle) is the HD layer. It owns the build script, the strip policy (`strip-install-mjs.py`, 12 exact-match excisions, fails loud on any upstream drift), and a `.gallia-pin` recording which gallia commit each bundle was built from.\n\nRebuild flow:\n\n```bash\ncd ~/project/gallia && git pull\ncd ~/project/gallia-hd-bundle && bash build.sh\ngit add .gallia-pin && git commit -m \"Build bundle from gallia $(cat .gallia-pin | cut -c1-7)\" && git push\n```\n\nEvery build uploads two assets to this page: `gallia-bundle.tar.gz` and `bundle-meta.json`. The meta sidecar pins the exact gallia commit, build timestamp, tarball SHA256, skill count, and the strip list applied — so for any deployed bundle you can answer \"which gallia SHA was this built from?\" with a single `curl`:\n\n```bash\ncurl -s https://wiki-ufypy5dpx93o.adom.cloud/static/apps/gallia-bundle/bundle-meta.json | jq .\n```\n\nThe page's asset upload history (visible via `adom-wiki page log app/gallia-bundle`) is the canonical build log.\n\n",
"author": {
"id": "695820315b5f1e4db2fcf602",
"name": "Kyle Bergstedt",
"email": "[email protected]"
},
"visibility": {
"public": true
},
"hero": null,
"discovery_triggers": [],
"discovery_pitch": null,
"metadata": {},
"created_at": "2026-05-28T05:28:36.345Z",
"updated_at": "2026-05-28T05:28:36.345Z",
"skills": []
}