wave-sharedlisted
Install: claude install-skill formtrieb/flotilla
# wave-shared
The shared substrate the **execution** skills (`wave-start`, `wave-reviewer`, `wave-close`) read via a sibling-path file read. It carries no judgment and is **never model-invoked** (`disable-model-invocation: true`) — siblings reach for it explicitly, as a file beside their own base directory rather than through the Skill tool. It owns the three things those skills must agree on byte-for-byte:
1. **The canonical agent-boundary JSON schemas** — `WORKER_REPORT_SCHEMA` and `REVIEWER_VERDICT_SCHEMA`, inlined verbatim below. A skill cannot `import` a TS const, so the Workflow driver pastes these literals into `agent({ schema })`. They are **copies** of `tools/wave/src/worker-report-schema.ts` / `reviewer-verdict-schema.ts` and the drift-guard spec (`tools/wave/src/skill-schema-drift.spec.ts`) deep-equals them to the exported consts on every run — if you edit a literal here, the spec fails until the source const matches.
2. **The auth-preflight convention** — `detect-host` → verify, before any tracker write.
3. **The deterministic routing chain** — `route-verdict` / `route-outcome` → `issue-store transition` → spine write, with one **atomic spine write per state flip**.
The CLI invocation detail (exact flags, exit codes, the `{{wave-cli}}` resolution) lives in [reference/routing-mechanics.md](reference/routing-mechanics.md).
## Sibling-path loads (the cross-skill composition finding)
`wave-shared` is never model-invoked — `disable-model-invocation: true` removes