Host Adapters - alexherrero/crickets GitHub Wiki
One authored primitive, two hosts โ how each kind lands on Claude Code and Antigravity, and where a host can't follow.
crickets targets two hosts โ Claude Code and Antigravity โ from one source. A primitive declares supported_hosts, and the generator emits a host-shaped artifact for each โ the same kind, placed and packaged the way that host expects. Where a host can't honor a primitive, the gap is named rather than hidden.
The generator mirrors the source layout into dist/<host>/plugins/<group>/, and each kind lands at a host-specific path inside that plugin. The host's own plugin manager installs the whole plugin โ nothing is copied into .claude/ or the project tree.
| Kind | Claude Code | Antigravity |
|---|---|---|
skill / agent / command
|
same in-plugin path on both hosts | same |
hook |
hooks/hooks.json + hooks/<name>/
|
root hooks.json + hooks/<name>/; runs observe-only |
snippet |
dropped โ no instruction-file surface | rules/<name>.md |
The two hosts agree on most paths and split in a few places: the plugin manifest (.claude-plugin/plugin.json vs a root plugin.json), the hook manifest location, and the marketplace pointer. Two splits change what you can rely on โ Claude Code drops snippets (it has no instruction-file surface), and Antigravity runs hooks observe-only (it ignores exit codes and never reads stdout), so a hook that vetoes or injects is Claude-only-effective. The marketplace pointer differs in content as well as location: Claude Code's carries a top-level renames map (fed by each group's renamed_from: โ Manifest Schema) so a stale install resolves a renamed plugin natively instead of hitting plugin-not-found; Antigravity's has no equivalent field, a named skip covered by the host-agnostic reconcile_plugins.py fallback rather than left silent.
- Build & distribution โ the pipeline that runs the emit. Host adapters define where each kind lands; build & distribution puts it there.
-
Customization model โ the inputs the adapter switches on. Each primitive's
supported_hosts+kinddecide which hosts receive it and what artifact it becomes.
- Antigravity authoring gaps. Hooks, scheduled tasks, and multi-agent orchestration have no file-based authoring path, so a primitive can emit without being effective โ each gap is tracked with its re-address trigger in the limitations register.
Detail:
- Per-host paths โ the destination table per primitive ร host.
- Compatibility โ which kinds and hooks are effective on each host.
- Antigravity limitations โ the host-gap register.
Architecture ยท Reference ยท Home