opción
HogarHogar Skill Documentación jetson-generate-kb

jetson-generate-kb

NVIDIA/skills NVIDIA/skills

Genera un archivo Markdown de base de conocimientos para cada destino recorriendo la raíz del BSP y el árbol de código fuente, y documentando la disposición de las imágenes, la estructura del árbol de código fuente y las referencias a los documentos.

...Expandir todo
23
Tiempo actualizado 23 de septiembre de 2026

Generar una base de conocimientos de destino

Descripción general

Esta habilidad genera una referencia en Markdown por perfil en target-platform/.md (en el mismo nivel que el archivo YAML del perfil). Agrupa tres elementos en un único archivo para que una futura sesión de Claude —o el usuario— pueda ver la estructura del destino activo sin tener que volver a recorrer el sistema de archivos:

  1. Estructura de la imagen BSP: directorios de nivel superior bajo bsp_image.root_path, presencia de subárboles canónicos (rootfs/, bootloader/, source/, …) y las variantes de nvpmodel que coinciden con el SKU del módulo activo.
  2. Estructura del árbol de código fuente: subárboles de nivel superior bajo source.root_path (kernel-jammy-src/, hardware/nvidia/, nvidia-oot/, etc.) y los archivos devicetree que coinciden con la familia de chips.
  3. Documentos: las documents.* referencias registradas en el perfil, con comprobaciones de la existencia de la ruta local y descripciones de una línea.

La base de conocimientos (KB) es una instantánea, con fecha en su encabezado. Vuelve a ejecutar esta habilidad cada vez que cambien los datos subyacentes; está diseñada intencionadamente para poder volver a ejecutarse y sobrescribe la KB anterior en cada ejecución.

Cuándo invocarla

  • Después de que jetson-init-image prepara el BSP para un perfil recién creado .
  • Tras volver a extraer un archivo BSP o aplicar parches en bsp_image.root_path.
  • Después de actualizar el árbol de código fuente en source.root_path.
  • Después de editar bsp_image.* o documents.* en el YAML del perfil.
  • Cuando una habilidad posterior pregunta «¿dónde está X en este BSP?» y prefieres consultar la base de conocimientos en lugar de volver a recorrer el árbol.

Procedimiento

Resolver el objetivo activo

Resuelve el perfil activo según el contrato en ../../context/target-platform-contract.md; almacenarlo en caché en memoria — el resto de la habilidad solo consume este perfil. Registrar (el nombre del archivo sin extensiones .yaml) como raíz del nombre del archivo de salida de la base de conocimientos.

Validar las entradas

Campo ¿Es obligatorio para la base de conocimientos? Si falta
bsp_image.root_path sí Rechazar. Una KB sin raíz BSP que analizar no es más que una reformulación de YAML; indica al usuario que ejecute jetson-init-image o que edite manualmente el perfil.
source.root_path no Omite la sección del árbol de fuentes; anota «source_root no registrado» en la base de conocimientos.
documents.* no Muestra una tabla «Documentos» vacía con la nota «no hay documentos registrados».

Si bsp_image.root_path está activada pero el directorio no existe en el disco, recházalo con un mensaje claro: no crees una estructura para una ruta que no existe.

Detección de BSP (en bsp_image.root_path)

Ejecuta únicamente las siguientes operaciones de bajo coste — sin exploraciones recursivas, sin lecturas del contenido de archivos más allá de los listados de directorios:

  1. ls -1 de bsp_image.root_path (un nivel de profundidad). Anota qué directorios están presentes.
  2. Para cada subárbol canónico que aparece a continuación, marca si está presente o ausente: rootfs/, bootloader/, kernel/, source/, tools/, nv_tegra/.
  3. Comprueba si el flash_config exista en /. Anota su ruta o (missing).
  4. filtra rootfs/etc/nvpmodel/ y filtra los nombres de archivo que coincidan con nvpmodel__*.conf. Anota cada coincidencia. Utiliza el identificador del módulo en minúsculas (p. ej., p3767) y la cadena «sku» entre comillas de YAML (p. ej., 0001).

Detección del árbol de origen (en source.root_path)

Omite este paso por completo si source.root_path está NA o falta. De lo contrario, ejecuta solo:

  1. ls -1 de source.root_path (un nivel de profundidad).
  2. Para cada subárbol canónico que aparece a continuación, marca si está presente o ausente: kernel-jammy-src/, hardware/nvidia/, nvidia-oot/, nvgpu/, nvethernetrm/, nvdisplay/, hwpm/, kernel-devicetree/.
  3. Si kernel-devicetree/generic-dts/dts/ existe, enumera los nombres de archivo que coincidan tegra* donde es el prefijo numérico de la familia de chips (véase el mapa de familias de chips más abajo). Registra hasta 30 coincidencias; si hay más, registra el recuento y una nota que indique «se muestran las primeras 30».

Mapa de familias de chips (utilizado en los pasos «Detección de BSP» y «Detección del árbol de fuentes»)

Derivar de module.id:

module.id Familia de chips prefijo
p3701, p3767 T234 — Orin 234
p3834 T264 — Thor 264

Si module.id no aparece en esta tabla, registra el chip como unknown (module.id=) y omite el filtro del árbol de dispositivos con prefijo de chip .

Los documentos pasan

Para cada campo de documents.* del perfil cargado:

  1. Clasifica el valor como URL (comienza por http://, https://, o ftp://) o ruta local (cualquier otra cosa).
  2. Para las URL: regístralas tal cual. No recuperes la URL; la generación de la base de conocimientos debe realizarse sin conexión. (Una habilidad futura podría permitir la indexación profunda.)
  3. Para las rutas locales: comprueba os.path.exists. Anota la ruta; si no existe en el disco, añade (missing).

La descripción de una línea para cada campo proviene del marcador de ../../references/platform_template.yaml — elimina el envoltura y utiliza el texto interior.

Si el perfil no tiene documents: bloque, muestra la sección con una única línea: _No documents recorded — run jetson-link-docs or hand-edit the profile to add references._

Mostrar y escribir la base de conocimientos

Mostrar el Markdown utilizando la estructura que se indica a continuación. Utilizar la fecha de hoy (AAAA-MM-DD) en el encabezado. Sobrescribir siempre cualquier archivo KB existente en el destino; no pedir confirmación antes de sobrescribir; se prevé que la tarea se ejecute varias veces.

Destino: target-platform/.md.

Estructura generada

# Target knowledge base — 

> Generated  from `` (BSP version ``).
> Re-run `jetson-generate-kb` after extracting a new BSP, applying
> patches, or editing profile fields. This file is a regenerated
> snapshot — do not hand-edit.

## Profile facts

- **Reference devkit:** ``
- **Module:** `-` (``)
- **Reference carrier:** `-`
- **Custom carrier:** `` (`-`)  _← omit this row if Case 1_
- **Active flash conf:** ``
- **BSP path:** ``
- **BSP version:** ``
- **Source root:** ``  _← or "_not recorded_" if NA_

## BSP image layout

Top-level directories under ``:

| Directory | Present | Purpose |
|---|---|---|
| `rootfs/`     | ✓ / ✗ | userspace rootfs (nvpmodel, nvfan, systemd units, etc.) |
| `bootloader/` | ✓ / ✗ | firmware blobs, BCT, MB1/MB2 dts |
| `kernel/`     | ✓ / ✗ | prebuilt kernel + modules |
| `source/`     | ✓ / ✗ | BSP source tree (kernel, OOT drivers, DT) |
| `tools/`      | ✓ / ✗ | flashing helpers, jetson-io, kernel_flash |
| `nv_tegra/`   | ✓ / ✗ | nvidia firmware tarballs, kernel-supplements |

Active flash conf ``: present at
`/` _or_ `(missing — verify before flashing)`.

### nvpmodel files matching the active SKU

Filtered from `rootfs/etc/nvpmodel/` by `nvpmodel__*.conf`:

- ``

The active variant at boot is selected by `nvpower.sh` from
`/proc/device-tree/compatible` plus super / safety state — see
`jetson-customize-nvpmodel` for the resolution rules.

## Source tree layout

(omit this whole section if `source.root_path` is `NA`/missing)

Top-level subtrees under ``:

| Subtree | Present | Purpose |
|---|---|---|
| `kernel-jammy-src/`   | ✓ / ✗ | mainline 5.x kernel sources |
| `hardware/nvidia/`    | ✓ / ✗ | NVIDIA platform DTs (per chip family) |
| `nvidia-oot/`         | ✓ / ✗ | NVIDIA out-of-tree kernel modules |
| `nvgpu/`              | ✓ / ✗ | GPU driver |
| `nvethernetrm/`       | ✓ / ✗ | ethernet driver |
| `nvdisplay/`          | ✓ / ✗ | display driver |
| `hwpm/`               | ✓ / ✗ | hardware performance monitor |
| `kernel-devicetree/`  | ✓ / ✗ | devicetree sources |

### Devicetree files for chip family ``

(omit if `kernel-devicetree/generic-dts/dts/` is absent)

Files matching `tegra*` under `kernel-devicetree/generic-dts/dts/`:

- ``

## Documents

| Field | Reference |
|---|---|
| Documents root folder                    | ``                    _or_ _not recorded_ |
| BSP / Jetson Linux developer guide       | ``         _or_ _not recorded_ |
| Tegra SoC Technical Reference Manual     | ``         _or_ _not recorded_ |
| Jetson module data sheet                 | ``           _or_ _not recorded_ |
| Jetson module design guide (PDG)         | ``         _or_ _not recorded_ |
| Jetson module thermal design guide (TDG) | `` _or_ _not recorded_ |
| Jetson module schematic                  | ``            _or_ _not recorded_ |
| Reference carrier board specification    | ``          _or_ _not recorded_ |
| Reference carrier schematic              | ``           _or_ _not recorded_ |
| Custom carrier schematic                 | ``    _or_ _not recorded / N/A (no custom carrier)_ |
| Reference-devkit pinmux spreadsheet      | ``       _or_ _not recorded_ |
| Custom-carrier pinmux spreadsheet        | ``   _or_ _not recorded / N/A (no custom carrier)_ |

(Local paths are tagged ` (missing)` if absent on disk. URLs are
recorded verbatim and not fetched. If `doc_root` is set, also tag
` (missing)` on it if the directory itself is gone — that signals
auto-mapping in `jetson-link-docs` won't work on a re-run.)

## How to refresh this file

Re-run `jetson-generate-kb` whenever any of the following changes:

- the BSP at `` is re-extracted, patched, or upgraded,
- the source tree at `` changes,
- the active profile's `bsp_image.*` or `documents.*` fields are edited.

This file is overwritten on every run. Do not hand-edit it — edit the
source data (profile YAML or the BSP tree) and re-run instead.

Confirmar

Imprimir un breve resumen:

  • Ruta de salida: target-platform/.md.
  • Recuento de directorios de nivel superior BSP y qué subárboles canónicos estaban presentes o ausentes.
  • Recuento de coincidencias de nvpmodel para la SKU activa.
  • Sección del árbol de origen: renderizada u omitida (y por qué).
  • Documentos: recuento de campos registrados, recuento de rutas locales marcadas (missing).

Si una habilidad posterior ha desencadenado esta ejecución, indica al usuario que vuelva a enviar su solicitud original.

Aspectos a tener en cuenta

  • La base de conocimientos es una instantánea, no una vista en tiempo real. La fecha del encabezado es la que prevalece: si no coincide con la de hoy, es posible que el BSP, la fuente o los documentos hayan cambiado en el fondo. Vuelve a ejecutar la consulta cuando sea necesario.
  • Siempre se sobrescribe. No aparece ningún aviso antes de sobrescribir la base de conocimientos anterior en target-platform/.md. Esto es intencionado: la posibilidad de volver a ejecutar la tarea es precisamente el objetivo. Indica al usuario que no edite manualmente el archivo; que edite el perfil YAML o el BSP y lo vuelva a generar.
  • Se rechaza en bsp_image.root_path = NA. Un perfil sin ruta BSP produce una KB sin contenido. No escribas uno; en su lugar, remite al usuario al YAML del perfil para que lo rellene.
  • No se recuperan URL. Las URL de los documentos se registran tal cual. La indexación profunda (HTTP HEAD, análisis de PDF) queda fuera del alcance de la v0.1.
  • No se realizan escaneos recursivos. El descubrimiento tiene una profundidad de un nivel por directorio, con como máximo un patrón glob específico (nvpmodel + devicetree). Nunca se recorre todo el BSP: es enorme y lento.
  • Limitar los listados de devicetree a 30 entradas para que la base de conocimientos siga siendo legible. Mostrar «primeras 30 de N» cuando se trunque.
  • No se debe invocar automáticamente desde las habilidades de configuración. La configuración puede sugerir la ejecución de esta habilidad en su resumen, pero el usuario debe dar su consentimiento. La ejecución automática oculta el paso de E/S y sorprende a los usuarios cuyas rutas BSP/doc estén incompletas.
  • Riesgo de colisión de nombres de archivo. La base de conocimientos se encuentra target-platform/.md junto a .yaml. No se deben leer .md archivos en la lógica de listado de perfiles de jetson-set-target (ya se filtra a *.yaml, pero compruébalo antes de añadir nuevos tipos de archivo).
  • El mapa de familias de chips es breve. Si se añade en el futuro un SKU de módulo que no figure en el mapa, se omite el paso del filtro del árbol de dispositivos; la base de conocimientos lo indicará chip: unknown en lugar de inventarse un prefijo. Actualiza la tabla de familias de chips de esta habilidad cuando se incorpore un nuevo chip.

Requisitos previos

  • Perfil de destino activo resuelto según ../../context/target-platform-contract.md.
  • bsp_image: lo registrado por /jetson-init-image; este es el único árbol en disco necesario. Si source.root_path falta, genera la KB sin la sección del árbol de origen.
  • Opcional: /jetson-init-source ya resuelto source: cuando el usuario desea que se incluya la detección del árbol de fuentes.
  • Opcional, pero recomendado: /jetson-link-docs ya se ha escrito el documents: bloque.

Limitaciones

  • Solo lectura de los árboles de BSP y de código fuente; nunca edita el perfil YAML ni reescribe los archivos fuente.
  • La enumeración de archivos Devicetree depende de la tabla de familias de chips incluida en esta habilidad; un SKU de módulo desconocido se almacena en la base de conocimientos como chip: unknown en lugar de un prefijo inventado.
  • La estructura de los nombres de archivo está fijada en target-platform/.md para que permanezca junto al YAML del perfil; si se cambia el nombre del YAML, el enlace deja de ser válido.

Solución de problemas

  • bsp_image.root_path no encontrado: vuelve a ejecutar /jetson-init-image para que se extraiga el BSP y se registre la ruta antes de regenerar la base de conocimientos.
  • El recorrido por el árbol de origen selecciona subárboles incorrectos — source.root_path la sobrescritura está desactualizada; vuelve a ejecutar /jetson-init-source o corrige el campo de perfil.
  • documents: Falta un bloque en la KB — /jetson-link-docs nunca se ejecutó; el KB recurre a «ningún documento vinculado» en lugar de adivinar rutas.
  • Sección «devicetree» incompleta o vacía — la tabla de familias de chips no cubre el SoC activo; actualiza la tabla y vuelve a ejecutarlo.

Referencias

  • ../../context/target-platform-contract.md — contrato de orden de lectura que sigue esta habilidad.
  • ../../context/bsp-customization-workflow.md — Origen de la lista canónica de subárboles de BSP/fuentes.
  • ../../references/platform_template.yaml — Fuente de las descripciones de una línea del campo «documentos».
  • ../jetson-init-target/SKILL.md — Habilidad hermana que crea la identidad de destino activa.
  • ../jetson-init-image/SKILL.md — Habilidad hermana que crea los metadatos de la imagen BSP que esta habilidad analiza.
  • ../jetson-set-target/SKILL.md — Habilidad hermana que invierte el puntero activo que resuelve esta habilidad.
Ver en GitHub
---
name: jetson-generate-kb
description: Generates a per-target knowledge-base markdown file by walking the BSP root and source tree, documenting image layout, source tree structure, and document references.
license: Apache-2.0
---

# Generate Target Knowledge Base

## Overview

This skill produces a **per-profile** markdown reference at
`target-platform/<profile-stem>.md` (sibling to the profile YAML). It
bundles three things into one file so a future Claude session — or the
user — can see the shape of the active target without re-walking the
filesystem:

1. **BSP image layout** — top-level directories under
   `bsp_image.root_path`, presence of canonical subtrees (`rootfs/`,
   `bootloader/`, `source/`, …), and the nvpmodel variants matching
   the active module SKU.
2. **Source tree layout** — top-level subtrees under
   `source.root_path` (`kernel-jammy-src/`, `hardware/nvidia/`,
   `nvidia-oot/`, etc.) and devicetree files matching the chip family.
3. **Documents** — the `documents.*` references recorded in the
   profile, with local-path existence checks and one-line descriptions.

The KB is a **snapshot**, dated in its header. Re-run this skill
whenever the underlying data changes — it is intentionally
re-runnable and overwrites the previous KB on each run.

## When to invoke

- After `jetson-init-image` prepares the BSP for a freshly authored
  profile.
- After re-extracting a BSP archive or applying patches under
  `bsp_image.root_path`.
- After updating the source tree at `source.root_path`.
- After editing `bsp_image.*` or `documents.*` in the profile YAML.
- When a downstream skill asks "where is X in this BSP?" and you'd
  rather check the KB than re-walk the tree.

## Procedure

### Resolve the active target

Resolve the active profile per the contract in
[`../../context/target-platform-contract.md`](../../context/target-platform-contract.md);
cache it in memory — the rest of the skill consumes only this
profile. Record `<profile-stem>` (the bare filename minus `.yaml`)
as the KB output filename stem.

### Validate inputs

| Field | Required for KB? | If missing |
|---|---|---|
| `bsp_image.root_path` | **yes** | Refuse. A KB with no BSP root to scan is just a YAML restatement; tell the user to run `jetson-init-image` or hand-edit the profile. |
| `source.root_path` | no | Skip the source-tree section; note "source_root not recorded" in the KB. |
| `documents.*` | no | Render an empty Documents table with a "no documents recorded" note. |

If `bsp_image.root_path` is set but the directory does not exist on disk,
refuse with a clear message — do not fabricate a layout for a path
that isn't there.

### BSP discovery (under `bsp_image.root_path`)

Run **only** the following cheap operations — no recursive scans, no
file content reads beyond directory listings:

1. `ls -1` of `bsp_image.root_path` (one level deep). Record which
   directories are present.
2. For each canonical subtree below, mark present/absent:
   `rootfs/`, `bootloader/`, `kernel/`, `source/`, `tools/`,
   `nv_tegra/`.
3. Verify the active `flash_config` file exists at
   `<bsp_image.root_path>/<flash_config>`. Record its path or
   `(missing)`.
4. List `rootfs/etc/nvpmodel/` and filter to filenames matching
   `nvpmodel_<module.id>_<module.sku>*.conf`. Record each match.
   Use the lower-case module id (e.g. `p3767`) and the YAML-quoted
   sku string (e.g. `0001`).

### Source tree discovery (under `source.root_path`)

Skip this step entirely if `source.root_path` is `NA` or missing.
Otherwise, run only:

1. `ls -1` of `source.root_path` (one level deep).
2. For each canonical subtree below, mark present/absent:
   `kernel-jammy-src/`, `hardware/nvidia/`, `nvidia-oot/`, `nvgpu/`,
   `nvethernetrm/`, `nvdisplay/`, `hwpm/`, `kernel-devicetree/`.
3. If `kernel-devicetree/generic-dts/dts/` exists, list filenames
   matching `tegra<chip>*` where `<chip>` is the chip-family numeric
   prefix (see chip-family map below). Record up to 30 hits; if more,
   record the count and a "showing first 30" note.

#### Chip-family map (used in the "BSP discovery" and "Source tree discovery" steps)

Derive `<chip>` from `module.id`:

| `module.id` | Chip family | `<chip>` prefix |
|---|---|---|
| `p3701`, `p3767` | T234 — Orin | `234` |
| `p3834` | T264 — Thor | `264` |

If `module.id` is not in this table, record the chip as
`unknown (module.id=<value>)` and skip the chip-prefixed devicetree
filter.

### Documents pass

For each field in `documents.*` from the loaded profile:

1. Classify the value as **URL** (starts with `http://`, `https://`,
   or `ftp://`) or **local path** (anything else).
2. For URLs: record verbatim. **Do not fetch the URL** — KB
   generation must remain offline. (A future skill can promote to deep
   indexing.)
3. For local paths: check `os.path.exists`. Record the path; if
   missing on disk, append ` (missing)`.

The one-line description for each field comes from the marker in
[`../../references/platform_template.yaml`](../../references/platform_template.yaml)
— strip the `<OPTIONAL: …>` wrapper and use the inner text.

If the profile has no `documents:` block, render the section with a
single line: `_No documents recorded — run `jetson-link-docs`
or hand-edit the profile to add references._`

### Render and write the KB

Render the markdown using the structure below. Use today's date
(YYYY-MM-DD) in the header. Always overwrite any existing KB file at
the destination — do not prompt before overwriting; re-runs are the
intended use.

Destination: `target-platform/<profile-stem>.md`.

#### Rendered structure

```markdown
# Target knowledge base — <profile-stem>

> Generated <YYYY-MM-DD> from `<bsp_image.root_path>` (BSP version `<bsp_image.version>`).
> Re-run `jetson-generate-kb` after extracting a new BSP, applying
> patches, or editing profile fields. This file is a regenerated
> snapshot — do not hand-edit.

## Profile facts

- **Reference devkit:** `<reference_devkit.name>`
- **Module:** `<module.id>-<module.sku>` (`<chip family label>`)
- **Reference carrier:** `<carrier.id>-<carrier.sku>`
- **Custom carrier:** `<custom_carrier.name>` (`<custom_carrier.id>-<custom_carrier.sku>`)  _← omit this row if Case 1_
- **Active flash conf:** `<flash_config>`
- **BSP path:** `<bsp_image.root_path>`
- **BSP version:** `<bsp_image.version>`
- **Source root:** `<source.root_path>`  _← or "_not recorded_" if NA_

## BSP image layout

Top-level directories under `<bsp_image.root_path>`:

| Directory | Present | Purpose |
|---|---|---|
| `rootfs/`     | ✓ / ✗ | userspace rootfs (nvpmodel, nvfan, systemd units, etc.) |
| `bootloader/` | ✓ / ✗ | firmware blobs, BCT, MB1/MB2 dts |
| `kernel/`     | ✓ / ✗ | prebuilt kernel + modules |
| `source/`     | ✓ / ✗ | BSP source tree (kernel, OOT drivers, DT) |
| `tools/`      | ✓ / ✗ | flashing helpers, jetson-io, kernel_flash |
| `nv_tegra/`   | ✓ / ✗ | nvidia firmware tarballs, kernel-supplements |

Active flash conf `<flash_config>`: present at
`<bsp_image.root_path>/<flash_config>` _or_ `(missing — verify before flashing)`.

### nvpmodel files matching the active SKU

Filtered from `rootfs/etc/nvpmodel/` by `nvpmodel_<module.id>_<module.sku>*.conf`:

- `<each match, one per line>`

The active variant at boot is selected by `nvpower.sh` from
`/proc/device-tree/compatible` plus super / safety state — see
`jetson-customize-nvpmodel` for the resolution rules.

## Source tree layout

(omit this whole section if `source.root_path` is `NA`/missing)

Top-level subtrees under `<source.root_path>`:

| Subtree | Present | Purpose |
|---|---|---|
| `kernel-jammy-src/`   | ✓ / ✗ | mainline 5.x kernel sources |
| `hardware/nvidia/`    | ✓ / ✗ | NVIDIA platform DTs (per chip family) |
| `nvidia-oot/`         | ✓ / ✗ | NVIDIA out-of-tree kernel modules |
| `nvgpu/`              | ✓ / ✗ | GPU driver |
| `nvethernetrm/`       | ✓ / ✗ | ethernet driver |
| `nvdisplay/`          | ✓ / ✗ | display driver |
| `hwpm/`               | ✓ / ✗ | hardware performance monitor |
| `kernel-devicetree/`  | ✓ / ✗ | devicetree sources |

### Devicetree files for chip family `<chip>`

(omit if `kernel-devicetree/generic-dts/dts/` is absent)

Files matching `tegra<chip>*` under `kernel-devicetree/generic-dts/dts/`:

- `<each match, one per line — cap at 30, then a "first 30 of N" note>`

## Documents

| Field | Reference |
|---|---|
| Documents root folder                    | `<doc_root>`                    _or_ _not recorded_ |
| BSP / Jetson Linux developer guide       | `<bsp_developer_guide>`         _or_ _not recorded_ |
| Tegra SoC Technical Reference Manual     | `<soc_tech_ref_manual>`         _or_ _not recorded_ |
| Jetson module data sheet                 | `<module_data_sheet>`           _or_ _not recorded_ |
| Jetson module design guide (PDG)         | `<module_design_guide>`         _or_ _not recorded_ |
| Jetson module thermal design guide (TDG) | `<module_thermal_design_guide>` _or_ _not recorded_ |
| Jetson module schematic                  | `<module_schematic>`            _or_ _not recorded_ |
| Reference carrier board specification    | `<carrier_board_spec>`          _or_ _not recorded_ |
| Reference carrier schematic              | `<carrier_schematic>`           _or_ _not recorded_ |
| Custom carrier schematic                 | `<custom_carrier_schematic>`    _or_ _not recorded / N/A (no custom carrier)_ |
| Reference-devkit pinmux spreadsheet      | `<ref_devkit_pinmux_xls>`       _or_ _not recorded_ |
| Custom-carrier pinmux spreadsheet        | `<custom_carrier_pinmux_xls>`   _or_ _not recorded / N/A (no custom carrier)_ |

(Local paths are tagged ` (missing)` if absent on disk. URLs are
recorded verbatim and not fetched. If `doc_root` is set, also tag
` (missing)` on it if the directory itself is gone — that signals
auto-mapping in `jetson-link-docs` won't work on a re-run.)

## How to refresh this file

Re-run `jetson-generate-kb` whenever any of the following changes:

- the BSP at `<bsp_image.root_path>` is re-extracted, patched, or upgraded,
- the source tree at `<source.root_path>` changes,
- the active profile's `bsp_image.*` or `documents.*` fields are edited.

This file is overwritten on every run. Do not hand-edit it — edit the
source data (profile YAML or the BSP tree) and re-run instead.
```

### Confirm

Print a short summary:

- Output path: `target-platform/<profile-stem>.md`.
- BSP top-level directory count and which canonical subtrees were
  present / absent.
- nvpmodel match count for the active SKU.
- Source-tree section: rendered or skipped (and why).
- Documents: count of recorded fields, count of local paths flagged
  `(missing)`.

If a downstream skill triggered this run, tell the user to re-issue
their original request.

## Gotchas

- **The KB is a snapshot, not a live view.** The dated header is
  authoritative — if it doesn't match today, the BSP/source/docs may
  have changed underneath. Re-run on demand.
- **Always overwrites.** No prompt before clobbering the previous KB
  at `target-platform/<profile-stem>.md`. This is intentional —
  re-runnability is the whole point. Tell the user not to hand-edit
  the file; edit profile YAML or the BSP and regenerate.
- **Refuses on `bsp_image.root_path = NA`.** A profile with no BSP path
  produces a content-free KB. Do not write one — instead, point the
  user at the profile YAML to fill in.
- **No URL fetching.** Document URLs are recorded verbatim. Promoting
  to deep indexing (HTTP HEAD, PDF parsing) is out of scope for v0.1.
- **No recursive scans.** Discovery is one level deep per directory,
  with at most one targeted glob (nvpmodel + devicetree). Never walk
  the entire BSP — it's huge and slow.
- **Cap devicetree listings at 30 entries** to keep the KB readable.
  Show "first 30 of N" when truncating.
- **Don't auto-invoke from setup skills.** Setup may suggest running
  this skill in its summary, but the user opts in. Auto-running hides
  the I/O step and surprises users whose BSP/doc paths are incomplete.
- **Filename collision risk.** The KB sits at
  `target-platform/<stem>.md` next to `<stem>.yaml`. Don't accidentally
  read `.md` files in the profile-listing logic of
  `jetson-set-target` (it already filters to `*.yaml`, but check
  before adding new file types).
- **Chip-family map is short.** If a future module SKU is added that
  isn't in the map, the devicetree filter step is skipped — the KB
  will note `chip: unknown` rather than fabricate a `<chip>` prefix.
  Update this skill's chip-family table when a new chip lands.

## Prerequisites

- Active target profile resolved per
  `../../context/target-platform-contract.md`.
- `bsp_image:` recorded by `/jetson-init-image`; this is the only
  required on-disk tree. If `source.root_path` is missing, render the KB
  without the source-tree section.
- Optional: `/jetson-init-source` already resolved `source:` when the
  user wants source-tree discovery included.
- Optional but recommended: `/jetson-link-docs` already wrote the
  `documents:` block.

## Limitations

- Read-only against the BSP and source trees; never edits the profile
  YAML or rewrites source files.
- Devicetree-file enumeration depends on the chip-family table inside
  this skill; an unknown module SKU lands in the KB as `chip: unknown`
  rather than a fabricated prefix.
- Filename layout is fixed at `target-platform/<stem>.md` to stay next
  to the profile YAML; renaming the YAML invalidates the link.

## Troubleshooting

- **`bsp_image.root_path` not found** — re-run `/jetson-init-image` so
  the BSP is extracted and the path is recorded before regenerating
  the KB.
- **Source tree walk picks up wrong subtrees** — `source.root_path`
  override is stale; rerun `/jetson-init-source` or correct the
  profile field.
- **`documents:` block missing from the KB** — `/jetson-link-docs` was
  never run; the KB falls back to "no documents bound" rather than
  guessing paths.
- **Devicetree section short / empty** — chip-family table doesn't
  cover the active SoC; update the table and rerun.

## References

- [`../../context/target-platform-contract.md`](../../context/target-platform-contract.md) — read-order contract this skill follows.
- [`../../context/bsp-customization-workflow.md`](../../context/bsp-customization-workflow.md) — origin of the canonical BSP/source subtree list.
- [`../../references/platform_template.yaml`](../../references/platform_template.yaml) — source of the documents-field one-line descriptions.
- [`../jetson-init-target/SKILL.md`](../jetson-init-target/SKILL.md) — sibling skill that authors the active target identity.
- [`../jetson-init-image/SKILL.md`](../jetson-init-image/SKILL.md) — sibling skill that authors the BSP image metadata this skill scans.
- [`../jetson-set-target/SKILL.md`](../jetson-set-target/SKILL.md) — sibling skill that flips the active pointer this skill resolves.

Todos los archivos

5 archivos
SKILL.md 14.9k
Ver

Instalar jetson-generate-kb

Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.

Descargar ZIP

Clona el repositorio y copia los archivos de la habilidad a tu proyecto.

git clone https://github.com/NVIDIA/skills/tree/main/skills/jetson-generate-kb # Copy SKILL.md to your .claude/skills/ directory

Copiar Copiar
Configuración rápida: Copia la carpeta de la habilidad en .claude/skills/ Claude detectará y utilizará automáticamente la habilidad
Repositorio NVIDIA/skills

Habilidades relacionadas

tc-tracker
Tiempo actualizado 27 de agosto de 2026
nuxthub
Tiempo actualizado 23 de agosto de 2026
golang-dependency-injection
Tiempo actualizado 29 de junio de 2026
altimate-data-engineering-skills
Tiempo actualizado 23 de agosto de 2026
OR