Skip to main content
skill CX Codex

jetson-set-target — Claude Code skill: switch the active Jetson board

Points the active Jetson target at a profile YAML you already have. Run it before tuning clocks, nvpmodel, the fan or memory.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add NVIDIA/skills --skill jetson-set-target -a claude-code
Open on GitHub

What jetson-set-target does

The skill touches one line, active:, inside target-platform/active_target.yml. It does not write profiles. With no *.yaml for a board on disk it stops and sends you to jetson-init-target.

First it reads the current pointer, then lists target-platform/*.yaml apart from active_target.yml, numbered in alphabetical order. The entry in use carries an (active) marker, and each line shows the devkit or custom carrier name plus its flash_config, so you can tell boards apart without opening files. You answer with a number, a bare filename or a product name. The skill then rewrites the pointer and leaves the comment header of the file as it was.

What is left to you beforehand is the directory: target-platform/ has to hold at least one profile. A pointer reading active: NA is a valid empty state, and the skill shows the list rather than refusing. Product names match by substring only, and an ambiguous pick gets a second prompt. Even a single-profile setup asks for confirmation before the switch.

What it helps with

  • move the build to a different Jetson board without hand-editing YAML
  • see which profile is active and how it compares to the rest
  • pick a target by devkit name without opening profile files
  • restore the pointer after another skill refuses with “no active target”

Example prompts for the agent

  • Switch the target profile to jetson-orin-nano-8gb.yaml
  • List the profiles in target-platform/ and let me choose one
  • Set the active board to Jetson AGX Thor T5000

How to install jetson-set-target

1Skills CLI (Vercel)

npx skills add NVIDIA/skills --skill jetson-set-target -a claude-code

2Manually: put the files in place

~/.claude/skills/jetson-set-target/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/jetson-set-target/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about jetson-set-target

How do I install jetson-set-target in Claude Code?

Run npx skills add NVIDIA/skills --skill jetson-set-target -a claude-code. The skill ends up at ~/.claude/skills/jetson-set-target/SKILL.md.

What does jetson-set-target do?

It rewrites the active: line of target-platform/active_target.yml so it names an existing profile. It never creates a profile itself.

How is it different from jetson-init-target?

jetson-init-target authors the board profile; this skill only flips the pointer between profiles that already exist. When the YAML you name is missing, it hands you over to jetson-init-target.

Source text

SKILL.md · Apache-2.0
---
name: jetson-set-target
description: >-
  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.
version: 0.0.1
license: "Apache-2.0"
metadata:
  data-classification: public
  author: "Jetson Team"
  tags:
    - target-platform
    - configuration
    - meta
  domain: meta
---

# Set Target Platform

## Overview

This skill is the **switcher** side of the target-platform contract in
[`../../context/target-platform-contract.md`](../../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.

## When to invoke

- The user asks to switch / change / activate a different target
  platform among profiles that already exist.
- A downstream skill refused with "no active target" **and**
  `target-platform/` already contains one or more profile YAMLs.
- The user names a target by filename or product, and that profile
  YAML is already on disk.

If `target-platform/` is missing, empty, or contains only
`active_target.yml`, stop and tell the user to run `jetson-init-target`
first.

## Procedure

### Survey the profiles directory

1. Read `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).
2. List `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. |

### Show the list

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:

```
Profiles in target-platform/:
   1) acme-vision-x1.yaml          — Acme Vision X1 (custom carrier on AGX Thor T5000) — acme-vision-x1.conf
   2) jetson-agx-orin-32gb.yaml    — Jetson AGX Orin 32GB                              — jetson-agx-orin-devkit.conf
   3) jetson-agx-thor-devkit.yaml  — Jetson AGX Thor T5000                             — jetson-agx-thor-devkit.conf  (active)
   4) jetson-orin-nano-8gb.yaml    — Jetson Orin Nano 8GB                              — jetson-orin-nano-devkit.conf
```

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 for selection

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.

### Update the active pointer

Edit `target-platform/active_target.yml`:

- Set `active: <chosen-filename>.yaml`.
- **Preserve** the header comment block verbatim — only modify the
  `active:` line.
- If the file does not exist (it can be missing if the user hand-set up
  `target-platform/` without the bootstrap step), create it from
  [`../../references/active_target_template.yaml`](../../references/active_target_template.yaml)
  and then set `active:`.

### Confirm

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.

## Prerequisites

- `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.

## Limitations

- Edits only the `active:` line in `active_target.yml`; never writes
  profile YAMLs.
- Refuses when no profile YAMLs exist — routes the user to
  `jetson-init-target` instead.
- Does not resolve fuzzy product names beyond simple substring match;
  ambiguous selections are re-prompted.

## Troubleshooting

- **"no profiles found" refusal** — the directory has no
  `*.yaml` other than the pointer; run `/jetson-init-target` first.
- **Pointer rewritten to a missing profile** — should not happen because
  the chosen filename is verified before writing; if seen, hand-edit
  `active_target.yml` back to a valid filename or rerun with the right
  selection.
- **Active pointer reads `NA`** — legitimate "no selection" state; pick
  any listed profile and the pointer will be set.

## Gotchas

- **No authoring here.** If the user names a target whose profile YAML
  is not on disk, refuse and route them to `jetson-init-target`. Do
  not silently fall through to authoring.
- **Don't edit `active_target.yml` to point at a missing profile.**
  Verify the chosen filename exists in `target-platform/` before
  writing.
- **Preserve `active_target.yml`'s comment block** when editing —
  only the `active:` line should change.
- **Exclude `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.
- **One-profile shortcut.** If only one profile exists, do not skip
  user confirmation — still confirm before flipping the pointer.

## References

- [`../../context/target-platform-contract.md`](../../context/target-platform-contract.md) — the contract this skill writes to.
- [`../../references/active_target_template.yaml`](../../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`](../jetson-init-target/SKILL.md) — sibling skill: author a new profile YAML.

© Jetson Team · Apache-2.0 · NVIDIA/skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set194

jetson-link-docs Writes paths to already-downloaded Jetson documents into the active target-platform profile so other skills can resolve them by name. CX Codex +1 1,100installs jetson-init-source Bootstraps the Jetson BSP source workspace: Linux_for_Tegra overlay tracker, bsp_sources tree and a Crosstool-NG cross-compile prefix. Run it after jetson-init-image. CX Codex +1 1,100installs jetson-init-image Extracts Jetson Linux and sample rootfs tarballs, executes apply_binaries.sh, and records BSP metadata in the target profile. Useful when preparing an OS image before flashing. CX Codex +1 1,100installs jetson-customize-uphy Picks a UPHY lane allocation for custom Jetson Orin and Thor carriers and writes the tokens into ODMDATA. Useful when a controller fails to enumerate after flashing. CX Codex +1 1,100installs jetson-init-target Authors a new NVIDIA Jetson target-platform profile and updates the active target pointer. Useful when configuring a devkit or custom carrier board from scratch. CX Codex +1 1,100installs jetson-derive-carrier Bootstraps custom Jetson carrier-board files and a device-tree overlay scaffold from a reference devkit. Use it after jetson-init-source. CX Codex +1 1,100installs jetson-download-bsp This skill downloads NVIDIA Jetson Linux BSP artifacts into your workspace: the BSP image, sample rootfs, public_sources, x-tools and guides. It runs during Auto Setup. CX Codex +1 1,100installs jetson-customize-usb Configures USB2 and USB3 SS ports on Jetson Orin and Thor boards via kernel DT overlays. Keeps host xHCI controller probes from failing when toggling ports. CX Codex +1 1,100installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor