Cross-Agent Install Smoke
Validate additive skills sync without mutating live harness installs.
Scope: Install smoke only. Do not run live apply installs unless the maintainer explicitly requests it.
Dispatch
| $ARGUMENTS | Action |
|---|---|
Empty / phase1 / dry-run |
Run phase 1 dry-run JSON assertions |
phase2 / local / smoke |
Run phase 2 temp-HOME smoke (requires INSTALL_SMOKE=1) |
all |
Run phase 1, then phase 2 when gated |
help |
Show phases, gates, and example commands |
Phase 1 — Dry-Run JSON
Run the deterministic checker from the repo root:
uv run python skills/cross-agent-install-smoke/scripts/dry_run.py
Phase 1 executes the repo skills-sync dry-run command and asserts:
- top-level keys:
ok,mode,inventory_count,include_installed,agents modeisdry-run- each agent row includes
agentplus bucket fieldsmissing,already_present,unresolved,skipped - bucket fields may be legacy string lists or compact objects
{count, sample, truncated}(Wave 1b+ default JSON) - when present, optional buckets (
projection_ensure,projection_blocked,store_missing,internal_projection,pin_blocked) use the same shapes
Pass criteria: script exits 0 and prints a JSON summary to stdout. Phase 1 is dry-run only — never --apply.
Phase 2 — Temp-HOME Smoke
Phase 2 is opt-in and mutates only a temporary home directory.
INSTALL_SMOKE=1 uv run python skills/cross-agent-install-smoke/scripts/local_smoke.py
The script:
- Refuses to run unless
INSTALL_SMOKE=1 - Creates an isolated
HOMEunder a temp directory - Runs the repo validation command against the repo
- Runs a single-harness skills-sync dry-run JSON probe
- Cleans up the temp home
Never point phase 2 at a production home directory.
Validation Contract
uv run python skills/cross-agent-install-smoke/scripts/check.py
INSTALL_SMOKE=1 uv run python skills/cross-agent-install-smoke/scripts/check.py
Completion criteria:
- Phase 1 (
dry_run.py) exits0in CI and local maintainer runs. - Phase 2 runs only when
INSTALL_SMOKE=1is set. scripts/check.pyexits0for the selected phase gates.
Critical Rules
- Default to dry-run; never apply live installs from this skill.
- Treat skills sync JSON as evidence, not authority over repo policy.
- Run phase 1 before recommending any cross-harness install reconciliation.
- Gate phase 2 behind
INSTALL_SMOKE=1and a disposable tempHOME. - Report harness-specific inventory errors without masking top-level
ok: false.