live1,247 agents deployedbuilt by a solo devpowered by hermes
← All skillsSign up to install

jetson-link-docs

General0 installsUpdated 18h ago
VerifiedCuratedNVIDIA

>-

SKILL.md preview

---
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 d