bootstrap-schemaslisted
Install: claude install-skill peter-claude-vault/claude-stem
# bootstrap-schemas
The shell engine the onboarder uses to populate your config files. After the
verbal-first onboarder runs all five sections (A: identity, B: work, C: vault,
D: trust, E: confirmation), it has five `extraction-output-{A..E}.json` files
sitting in `~/.claude/onboarding/`. Each populates different fields scattered
across multiple schemas.
Doing the merge naively means partial state on failure, no audit trail of which
question populated which field, no idempotency check, no atomicity guarantee.
This engine is the deterministic finalizer: it reads the five extraction outputs,
applies the question-ID-to-schema-path map (`q-field-map.json`), writes each
populated schema instance through a tmp+rename atomic gate, validates against
the declared schema, and emits per-field plus per-run JSONL audit records.
Block and log on any failure: rollback every staged tmp file, append a
`BOOTSTRAP_FAILED` terminator to the audit log, exit non-zero. Live targets
remain untouched. Idempotent: if a target byte-matches the would-write payload,
skip the rename and audit `skip-identical`. If it differs without `--force`,
write a `<target>.new` sidecar plus a unified diff and exit 2.
Most adopters never invoke this script directly — the onboarder calls it.
## Output Contract
### Files written (atomic `tmp + rename`)
| Order | Path | Mode | Validated against |
|---|---|---|---|
| 1 | `~/.claude/schemas/plans-schema.json` | STATIC (no transform) | JSON Schema Draft-07 (ajv compil