← ClaudeAtlas

capability-bumplisted

Change the JSON shape of a ynh command safely — decide whether it bumps CapabilitiesVersion, then update the schema, goldens and docs together. Use when adding, removing or changing any field in a --format json response.
eyelock/ynh · ★ 1 · Code & Development · score 67
Install: claude install-skill eyelock/ynh
# Change a structured-output shape `config.CapabilitiesVersion` is the wire-protocol version every enveloped response carries. Consumers — loop drivers, CI scripts, `ynd validate-output` — read it to know what they are talking to. `.claude/CLAUDE.md` states the rule. This skill is how you carry it out, because the rule is a decision and the execution is four files that must move together. ## Step 1 — Decide: does this bump? **Bumps** — a consumer must adapt: - removing a field - renaming a field - changing a field's type - narrowing a type (`string` → enum) - tightening an enum (removing a member) - making an optional field required - changing the meaning of an existing value **Does not bump** — a tolerant consumer is unaffected: - adding an optional field - adding a member to an open-set enum (consumers MUST tolerate unknowns, per `docs/cli-structured.md`) - adding a whole new schema - relaxing a constraint **If unsure, treat it as a bump.** A needless bump costs a consumer one version check. A missed one breaks them silently. Note the asymmetry: *adding* an enum member does not bump, *removing* one does. Open-set enums put the tolerance obligation on the consumer, which only works if the set only ever grows. ## Step 2 — Know which responses are enveloped **Only 9 of 21 golden responses carry `capabilities`.** Most commands return a bare array or object with no envelope at all: ```console $ ynh version --format json { "version": "...", "capabilities": "0.8.0" }