jetson-generate-kb
NVIDIA/skills
Erstellt für jedes Ziel eine Markdown-Datei als Wissensdatenbank, indem der BSP-Stamm und der Quellcode-Baum durchlaufen werden und dabei das Bildlayout, die Struktur des Quellcode-Baums sowie Dokumentverweise dokumentiert werden.
...Alle erweiternZiel-Wissensdatenbank erstellen
Übersicht
Diese Funktion erstellt eine profilbezogene Markdown-Referenz unter
target-platform/ (als Geschwisterelement der Profil-YAML-Datei). Sie
bündelt drei Elemente in einer Datei, sodass eine zukünftige Claude-Sitzung – oder der
Benutzer – die Struktur des aktiven Ziels erkennen kann, ohne das
Dateisystem erneut durchlaufen zu müssen:
- BSP-Image-Layout – Verzeichnisse der obersten Ebene unter
bsp_image.root_path, das Vorhandensein kanonischer Unterbäume (rootfs/,bootloader/,source/, …) sowie die nvpmodel-Varianten, die der aktiven Modul-SKU entsprechen. - Layout des Quellbaums – Unterverzeichnisse auf oberster Ebene unter
source.root_path(kernel-jammy-src/,hardware/nvidia/,nvidia-oot/, usw.) sowie Device-Tree-Dateien, die zur Chip-Familie passen. - Dokumente – die
documents.*im Profil erfassten Referenzen mit Überprüfungen auf das Vorhandensein lokaler Pfade und einzeiligen Beschreibungen.
Die Wissensdatenbank ist eine Momentaufnahme, deren Datum im Header angegeben ist. Führen Sie diese Funktion jedes Mal erneut aus, wenn sich die zugrunde liegenden Daten ändern – sie ist absichtlich wiederholbar und überschreibt bei jedem Durchlauf die vorherige Wissensdatenbank.
Wann ist der Skill aufzurufen?
- Nachdem
jetson-init-imagebereitet das BSP für ein neu erstelltes Profil vor. - Nach dem erneuten Extrahieren eines BSP-Archivs oder dem Anwenden von Patches unter
bsp_image.root_path. - Nach der Aktualisierung des Quellbaums unter
source.root_path. - Nach der Bearbeitung
bsp_image.*oderdocuments.*in der YAML-Datei des Profils. - Wenn ein nachgelagertes Skill fragt: „Wo befindet sich X in diesem BSP?“, und Sie lieber die Wissensdatenbank konsultieren möchten, anstatt den Baum erneut zu durchlaufen.
Vorgehensweise
Das aktive Ziel auflösen
Lösen Sie das aktive Profil gemäß dem Vertrag in
../../context/target-platform-contract.md;
speichere es im Arbeitsspeicher – der Rest des Skills verwendet ausschließlich dieses
Profil. Speichere (den reinen Dateinamen ohne .yaml)
als Stamm des KB-Ausgabedateinamens auf.
Eingaben validieren
| Feld | Für die Wissensbasis erforderlich? | Falls fehlend |
|---|---|---|
bsp_image.root_path |
ja | Ablehnen. Ein KB ohne zu scannenden BSP-Stamm ist lediglich eine YAML-Wiederholung; weisen Sie den Benutzer an, jetson-init-image oder das Profil manuell zu bearbeiten. |
source.root_path |
nein | Den Abschnitt „source-tree“ überspringen; im KB vermerken: „source_root nicht erfasst“. |
documents.* |
nein | Eine leere „Documents“-Tabelle mit dem Hinweis „Keine Dokumente erfasst“ anzeigen. |
Wenn bsp_image.root_path gesetzt ist, das Verzeichnis auf der Festplatte jedoch nicht existiert,
verweigern Sie den Vorgang mit einer eindeutigen Meldung – erstellen Sie kein Layout für einen Pfad,
der nicht vorhanden ist.
BSP-Erkennung (unter bsp_image.root_path)
Führe nur die folgenden ressourcenschonenden Operationen aus – keine rekursiven Durchsuchungen, kein Lesen von Dateiinhalten über Verzeichnisauflistungen hinaus:
ls -1vonbsp_image.root_path(eine Ebene tief). Notiere, welche Verzeichnisse vorhanden sind.- Markiere für jeden der folgenden kanonischen Teilbäume „vorhanden“ oder „nicht vorhanden“:
rootfs/,bootloader/,kernel/,source/,tools/,nv_tegra/. - Überprüfen Sie, ob die aktive
flash_configDatei unter. Notieren Sie den Pfad oder die/ (missing). - Liste
rootfs/etc/nvpmodel/und filtere nach Dateinamen, die mitnvpmodel_. Notieren Sie jede Übereinstimmung. Verwenden Sie die Modul-ID in Kleinbuchstaben (z. B._ *.conf p3767) und die in YAML-Anführungszeichen gesetzte SKU-Zeichenkette (z. B.0001).
Erkennung des Quellbaums (unter source.root_path)
Überspringen Sie diesen Schritt vollständig, wenn source.root_path entfällt NA oder fehlt.
Andernfalls führen Sie nur Folgendes aus:
ls -1vonsource.root_path(eine Ebene tief).- Markiere für jeden der folgenden kanonischen Teilbäume „vorhanden“ oder „fehlt“:
kernel-jammy-src/,hardware/nvidia/,nvidia-oot/,nvgpu/,nvethernetrm/,nvdisplay/,hwpm/,kernel-devicetree/. - Falls
kernel-devicetree/generic-dts/dts/vorhanden ist, listen Sie Dateinamen auf, dietegrawobei* das numerische Präfix der Chip-Familie ist (siehe Chip-Familien-Zuordnung unten). Erfassen Sie bis zu 30 Treffer; bei mehr als 30 erfassen Sie die Anzahl und vermerken Sie „die ersten 30 werden angezeigt“.
Chip-Familien-Zuordnung (verwendet in den Schritten „BSP-Ermittlung“ und „Quellbaum-Ermittlung“)
Leiten Sie aus module.id:
module.id |
Chip-Familie | Präfix |
|---|---|---|
p3701, p3767 |
T234 — Orin | 234 |
p3834 |
T264 — Thor | 264 |
Falls module.id nicht in dieser Tabelle enthalten ist, vermerke den Chip als
unknown (module.id= und überspringen Sie den Devicetree-Filter mit dem Chip-Präfix
.
Dokumente durchlaufen
Für jedes Feld in documents.* aus dem geladenen Profil:
- Klassifizieren Sie den Wert als URL (beginnt mit
http://,https://, oderftp://) oder als lokalen Pfad (alles andere). - Bei URLs: wortgetreu erfassen. Die URL nicht abrufen – die KB- Generierung muss offline bleiben. (Ein zukünftiger Skill kann eine tiefgehende Indizierung ermöglichen.)
- Bei lokalen Pfaden: Überprüfen Sie
os.path.exists. Den Pfad aufzeichnen; falls auf der Festplatte nicht vorhanden, anhängen(missing).
Die einzeilige Beschreibung für jedes Feld stammt aus dem Marker in
../../references/platform_template.yaml
– entfernen Sie den Umschluss und verwende den inneren Text.
Wenn das Profil keinen documents: Block enthält, den Abschnitt mit einer
einzigen Zeile darstellen: _No documents recorded — run jetson-link-docs or hand-edit the profile to add references._
Darstellen und Speichern der KB
Rendern Sie das Markdown anhand der folgenden Struktur. Verwenden Sie das heutige Datum (JJJJ-MM-TT) in der Kopfzeile. Überschreiben Sie stets alle vorhandenen KB-Dateien am Zielort – fragen Sie vor dem Überschreiben nicht nach; wiederholte Ausführungen sind beabsichtigt.
Ziel: target-platform/.
Gerenderte Struktur
# 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.
Bestätigen
Kurze Zusammenfassung ausgeben:
- Ausgabepfad:
target-platform/..md - Anzahl der Verzeichnisse auf oberster BSP-Ebene und welche kanonischen Teilbäume vorhanden bzw. nicht vorhanden waren.
- Anzahl der Übereinstimmungen mit dem nvpmodel für die aktive SKU.
- Abschnitt „Quellbaum“: gerendert oder übersprungen (und warum).
- Dokumente: Anzahl der erfassten Felder, Anzahl der markierten lokalen Pfade
(missing).
Falls ein nachgelagerter Skill diesen Durchlauf ausgelöst hat, den Nutzer auffordern, seine ursprüngliche Anfrage erneut zu stellen.
Zu beachtende Punkte
- Die Wissensdatenbank ist eine Momentaufnahme, keine Live-Ansicht. Der datierte Header ist maßgeblich – wenn er nicht mit dem heutigen Datum übereinstimmt, haben sich die BSP, die Quelle oder die Dokumente möglicherweise im Hintergrund geändert. Bei Bedarf erneut ausführen.
- Es wird immer überschrieben. Es erfolgt keine Abfrage, bevor die vorherige Wissensdatenbank
an
target-platform/. Dies ist beabsichtigt – die Wiederholbarkeit ist der springende Punkt. Weisen Sie den Benutzer an, die Datei nicht manuell zu bearbeiten; bearbeiten Sie stattdessen das YAML-Profil oder die BSP und generieren Sie sie neu..md - Weigert sich bei
bsp_image.root_path = NA. Ein Profil ohne BSP-Pfad erzeugt eine KB ohne Inhalt. Erstellen Sie kein solches Profil – weisen Sie den Benutzer stattdessen auf die YAML-Datei des Profils hin, die er ausfüllen muss. - Kein Abrufen von URLs. Dokument-URLs werden wörtlich übernommen. Die Erweiterung auf eine tiefgehende Indizierung (HTTP HEAD, PDF-Parsing) liegt außerhalb des Umfangs von v0.1.
- Keine rekursiven Scans. Die Erkennung erfolgt pro Verzeichnis auf einer Ebene, mit höchstens einem gezielten Glob (nvpmodel + devicetree). Durchlaufen Sie niemals die gesamte BSP – sie ist riesig und langsam.
- Begrenze Devicetree-Auflistungen auf 30 Einträge, um die Wissensdatenbank übersichtlich zu halten. Zeige „die ersten 30 von N“ an, wenn Einträge gekürzt werden.
- Nicht automatisch über Setup-Skills aufrufen. Das Setup schlägt möglicherweise in seiner Zusammenfassung vor, diesen Skill auszuführen, aber der Benutzer muss zustimmen. Die automatische Ausführung verbirgt den E/A-Schritt und überrascht Benutzer, deren BSP-/Dokumentenpfade unvollständig sind.
- Risiko von Dateinamenkonflikten. Die Wissensdatenbank befindet sich
target-platform/neben.md . Lesen Sie nicht versehentlich Dateien.yaml .mdDateien in der Profil-Auflistungslogik vonjetson-set-target(es wird bereits nach*.yaml, aber überprüfen Sie dies , bevor Sie neue Dateitypen hinzufügen). - Die Chip-Familien-Zuordnung ist unvollständig. Wenn eine zukünftige Modul-SKU hinzugefügt wird, die
nicht in der Zuordnung enthalten ist, wird der Devicetree-Filterschritt übersprungen – im KB
wird darauf hingewiesen
chip: unknownanstatt einPräfix zu erfinden. Aktualisiere die Chip-Familien-Tabelle dieser Skill, wenn ein neuer Chip eingeführt wird.
Voraussetzungen
- Aktives Zielprofil, aufgelöst gemäß
../../context/target-platform-contract.md. bsp_image:aufgezeichnet von/jetson-init-image; dies ist der einzige erforderliche Baum auf der Festplatte. Fallssource.root_pathfehlt, rendere das KB ohne den Abschnitt „source-tree“.- Optional:
/jetson-init-sourcebereits aufgelöstsource:, wenn der Benutzer die Erkennung des Quellbaums wünscht. - Optional, aber empfohlen:
/jetson-link-docshat dendocuments:Block bereits geschrieben.
Einschränkungen
- Nur-Lese-Zugriff auf das BSP und die Quellcode-Bäume; das Profil YAML wird niemals bearbeitet und Quelldateien werden nicht überschrieben.
- Die Aufzählung der Devicetree-Dateien hängt von der Chip-Familien-Tabelle innerhalb
dieser Skill ab; eine unbekannte Modul-SKU landet in der Wissensdatenbank als
chip: unknownanstelle eines erfundenen Präfixes. - Das Dateinamensschema ist fest auf
target-platform/so festgelegt, dass es direkt neben der Profil-YAML-Datei bleibt; eine Umbenennung der YAML-Datei macht den Link ungültig..md
Fehlerbehebung
bsp_image.root_pathnicht gefunden – erneut ausführen/jetson-init-imagedamit das BSP extrahiert und der Pfad gespeichert wird, bevor die KB neu generiert wird.- Beim Durchlaufen des Quellbaums werden falsche Teilbäume erfasst –
source.root_pathdie Überschreibung ist veraltet; erneut ausführen/jetson-init-sourceoder korrigieren Sie das Profilfeld. documents:Block fehlt in der KB –/jetson-link-docswurde nie ausgeführt; die KB greift auf „keine Dokumente verknüpft“ zurück, anstatt Pfade zu erraten.- Der Abschnitt „Devicetree“ ist zu kurz / leer — die Chip-Familien-Tabelle deckt den aktiven SoC nicht ab; aktualisiere die Tabelle und führe den Vorgang erneut aus.
Referenzen
../../context/target-platform-contract.md– Lese-Reihenfolge-Vereinbarung, an die sich diese Funktion hält.../../context/bsp-customization-workflow.md— Herkunft der kanonischen BSP-/Quell-Unterbaumliste.../../references/platform_template.yaml— Quelle der einzeiligen Beschreibungen im Feld „documents“.../jetson-init-target/SKILL.md— Geschwister-Skill, der die aktive Zielidentität erstellt.../jetson-init-image/SKILL.md— Geschwister-Skill, der die BSP-Bildmetadaten erstellt, die dieser Skill scannt.../jetson-set-target/SKILL.md— Geschwister-Skill, der den aktiven Zeiger umschaltet, den diese Skill auflöst.
---
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.
Alle Dateien
5 Dateienjetson-generate-kb installieren
Laden Sie die Skill-Dateien herunter und entpacken Sie sie in Ihr Verzeichnis „.claude/skills/“.
ZIP herunterladenKlonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.
git clone https://github.com/NVIDIA/skills/tree/main/skills/jetson-generate-kb # Copy SKILL.md to your .claude/skills/ directory
Kopieren





Heim
