npx skills add ...
npx skills add nvidia/skills --skill jetson-set-target
Switch the active Jetson target-platform pointer to an existing profile YAML. Use before customize/build/flash to change target; not for authoring profiles — use jetson-init-target instead.
npx skills add nvidia/skills --skill jetson-set-target
This skill is the switcher side of the target-platform contract in
../../context/target-platform-contract.md. It only
edits target-platform/active_target.yml; it never authors a new
profile YAML. To author a new profile, use the sibling skill
jetson-init-target.
Single output: target-platform/active_target.yml updated to point at
the user's chosen existing profile.
target-platform/ already contains one or more profile YAMLs.If target-platform/ is missing, empty, or contains only
active_target.yml, stop and tell the user to run jetson-init-target
first.
target-platform/active_target.yml (treat a missing file as
active: NA for the purposes of this skill — the file will be
created in the "Update the active pointer" step if needed, preserving the template header).target-platform/*.yaml, excluding active_target.yml
itself.| Situation | Action |
|---|---|
| No profile YAMLs exist | Refuse. Tell the user to run jetson-init-target to author one. |
| Exactly one profile, already active | Tell the user it is already active; no change needed. Stop. |
| Exactly one profile, not active | Confirm with the user, then jump to the "Update the active pointer" step with that profile selected. |
| Multiple profiles | Proceed to the "Show the list" step. |
Print the profiles in alphabetical order, numbered. Mark the current
active selection with (active) so the user knows what they're
switching from. For each profile, parse its YAML and show a one-line
summary so the user can identify it without opening files: the
reference_devkit.name (or custom_carrier.name if present) plus the
flash_config.
Sample shape:
If a profile YAML fails to parse or is missing the expected fields,
show the bare filename with a (unparseable — fix or remove) marker
and skip to the next; do not refuse the whole skill over one bad file.
Prompt:
Pick a number, the bare filename, the product name (substring match), or
cancel.
Resolve to a single profile filename. If the user picks the currently active profile, tell them so and stop without rewriting the pointer. If ambiguous, list candidates and ask again.
Edit target-platform/active_target.yml:
active: <chosen-filename>.yaml.active: line.target-platform/ without the bootstrap step), create it from
../../references/active_target_template.yaml
and then set active:.Print a summary: the previous active value, the new active value, the
chosen profile's reference_devkit.name (and custom_carrier.name if
present), and a reminder that downstream skills (jetson-customize-clocks,
jetson-customize-nvpmodel, jetson-customize-fan,
jetson-optimize-memory) will now resolve to this target.
If a downstream skill triggered this run, tell the user to re-issue their original request; do not silently re-trigger it.
target-platform/ exists and contains at least one *.yaml profile
(excluding active_target.yml).target-platform/active_target.yml is present, or the template at
../../references/active_target_template.yaml is available so this
skill can recreate the pointer.active: line in active_target.yml; never writes
profile YAMLs.jetson-init-target instead.*.yaml other than the pointer; run /jetson-init-target first.active_target.yml back to a valid filename or rerun with the right
selection.NA — legitimate "no selection" state; pick
any listed profile and the pointer will be set.jetson-init-target. Do
not silently fall through to authoring.active_target.yml to point at a missing profile.
Verify the chosen filename exists in target-platform/ before
writing.active_target.yml's comment block when editing —
only the active: line should change.active_target.yml from the profile list. It lives in
the same directory but is the pointer, not a profile.active: NA is the legitimate "no selection" state. Treat it
the same as a fresh pointer — don't refuse, just show the list and
let the user pick.../../context/target-platform-contract.md — the contract this skill writes to.../../references/active_target_template.yaml — schema starter for the active-target pointer (used to recreate it if the file is missing).../jetson-init-target/SKILL.md — sibling skill: author a new profile YAML.