Skip to content
Development
Skill

/jetson-link-docs

Bind pre-downloaded Jetson reference docs (developer guide, design guide, pinmux, schematics) into the active profile documents block. Use after staging docs on disk; not for downloading.

From plugin
nvidia-skills
2.8k200 skills3 agents
Install
$ npx -y skills add NVIDIA/skills --skill jetson-link-docs --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/jetson-link-docs

Context preview

The summary Claude sees to decide when to auto-load this skill.

Bind pre-downloaded Jetson reference docs (developer guide, design guide, pinmux, schematics) into the active profile documents block. Use after staging docs on disk; not for downloading.

SKILL.md

jetson-link-docs.SKILL.md
name: jetson-link-docs
description: >-
  Bind pre-downloaded Jetson reference docs (developer guide, design
  guide, pinmux, schematics) into the active profile documents
  block. Use after staging docs on disk; not for downloading.
version: 0.0.1
license: "Apache-2.0"
metadata:
  data-classification: public
  author: "Jetson Team"
  tags:
    - target-platform
    - documents
    - setup
  domain: meta

jetson-link-docs

Overview

This skill **writes** the `documents:` block of the active Jetson / IGX target-platform profile YAML so downstream skills (`/jetson-generate-kb`, `/jetson-customize-pinmux`, camera / pcie / uphy, etc.) can resolve doc paths by name. It walks the user through every document slot in the profile schema, tries to auto-bind each slot to a file under `<documents.root_path>/` via case-insensitive glob matching, and writes the resulting paths back into the active profile.

Scope is **registering pointers only** — this skill does **not** fetch or download. The files must already exist on disk under `<documents.root_path>/`.

When to invoke

  • After `/jetson-init-target` finishes and the user has documents

on disk to register.

  • The user wants to add, change, or remove document references on an

existing profile.

  • A downstream skill (e.g. `jetson-generate-kb`) reports "no documents

recorded" and the user wants to fix that.

Procedure

Resolve the active target

Resolve the active profile + `<workspace>` per the contract in [`../../context/target-platform-contract.md`](../../context/target-platform-contract.md). Cache the loaded profile in memory — this skill mutates it in the "Write the `documents:` block back to the profile" step.

Load the document-slot schema

Load [`../../references/platform_template.yaml`](../../references/platform_template.yaml). Parse the `documents:` block. Each per-document field is marked `<OPTIONAL: description>`. Use the marker description as prompt text verbatim. Match markers with the regex `^<(REQUIRED|OPTIONAL|DERIVED):\s*(.*)>$` after YAML parsing strips surrounding quotes.

Skip `custom_carrier_schematic` and `custom_carrier_pinmux_xls` entirely when the active profile has no `custom_carrier:` block — both are meaningless without one. This filter applies through the "Scan and auto-match" and "Manual prompts for unmatched fields" steps.

Resolve `documents.root_path`

Default: `<workspace>/Documents`. If the profile already records `documents.root_path`, use it. Otherwise, if `<workspace>/Documents/` exists, use it (the field is **omitted** from the written profile — downstream skills fall back to the workspace default). If neither is available, prompt the user for an absolute path, or accept Enter / `cancel` to skip the auto-scan. A user-provided path that doesn't exist is treated as skipped (warn, don't refuse — the field is OPTIONAL); manual prompts in the "Manual prompts for unmatched fields" step still run.

Resolve the product token

Read the **Product Token** column from [`../../references/bsp-platforms-catalogue.md`](../../references/bsp-platforms-catalogue.md) for the row matching `reference_devkit.name`. The token is a case-insensitive glob fragment (e.g. `*orin*nano*`, `*agx*thor*`) consumed by the fallback patterns in the "Scan and auto-match" step.

If `reference_devkit.name` has no row in the catalogue, log a warning and proceed without a product-token fallback — the "Scan and auto-match" step still works with strictly SKU-keyed matching.

For custom carriers, derive `<custom-token>` from `custom_carrier.name` using this recipe: lowercase, replace each space with `*`, wrap in `*` on both ends. E.g. "Acme Vision X1" → `*acme*vision*x1*`.

Scan and auto-match

Skip this step entirely if `documents.root_path` did not resolve in the "Resolve `documents.root_path`" step (no scan target → no auto-suggest; fall through to manual prompts in the "Manual prompts for unmatched fields" step).

Scan the directory once (one level deep) and try to auto-match each remaining `<OPTIONAL:…>` field using the case-insensitive globs below. Use the lower-case `module.id` / `carrier.id` / `custom_carrier.id` strings from the profile in the SKU column.

| Field | SKU glob (primary) | Product-token glob (fallback) | |---|---|---| | `bsp_developer_guide` | `*developer*guide*.pdf`, `*BSP*guide*.pdf` | _(no fallback — pattern is product-agnostic)_ | | `soc_tech_ref_manual` | `*TRM*.pdf`, `*tech*ref*manual*.pdf` | _(no fallback — same)_ | | `module_data_sheet` | `*<module.id>*data*sheet*.pdf`, `*<module.id>*datasheet*.pdf` | `<token>data*sheet*.pdf`, `<token>datasheet*.pdf` | | `module_design_guide` | `*<module.id>*design*guide*.pdf`, `*<module.id>*PDG*.pdf` | `<token>design*guide*.pdf`, `<token>PDG*.pdf` | | `module_thermal_design_guide` | `*<module.id>*thermal*.pdf` (covers "Thermal Design Guide" / "TDG") | `<token>thermal*.pdf` | | `module_schematic` | `*<module.id>*schem*.pdf` | `<token>schem*.pdf` | | `carrier_board_spec` | `*<carrier.id>*board*spec*.pdf`, `*<carrier.id>*spec*.pdf` | `<token>carrier*spec*.pdf` | | `carrier_schematic` | `*<carrier.id>*schem*.pdf` | `<token>carrier*schem*.pdf` | | `custom_carrier_schematic` | `*<custom_carrier.id>*schem*.pdf` (only if custom carrier) | `<custom-token>schem*.pdf` (only if custom carrier) | | `ref_devkit_pinmux_xls` | `*<carrier.id>*pinmux*.xls*` (matches `.xls`, `.xlsx`, `.xlsm`) | `<token>pinmux*.xls*` | | `custom_carrier_pinmux_xls` | `*<custom_carrier.id>*pinmux*.xls*` (only if custom carrier) | `<custom-token>pinmux*.xls*` (only if custom carrier) |

`<token>` is the catalogue-resolved product token; `<custom-token>` is derived from `custom_carrier.name` per the "Resolve the product token" step. Tokens already include leading/trailing `*`, so the table does not repeat them.

Match policy per field

For each field that has auto-match results:

  • Take the **union** of hits acr
Read more
Ships withnvidia-skills

Official, NVIDIA-verified Agent Skills for Claude Code, Codex, and other coding agents.

Get the whole plugin