Pva Doctor
NVIDIAOfficialCreated by Venkat BalanDistributed by NVIDIA
- Skill
- Review and audit
- Software development
- Apache-2.0
- Medium risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
pva-doctor is a diagnostic tool that assesses whether a host environment is correctly configured for NVIDIA PVA development. It performs read-only checks against requested capabilities—such as spec, opgen, build-test, or debug—by verifying SDK documentation references, compiler availability, and project integrity. It does not install or modify software, instead providing a report with a verdict of READY, READY_WITH_LIMITATIONS, or NOT_READY, along with actionable recommendations for remediation.
What it does
- Verifies SDK documentation and reference integrity using a local materializer.
- Checks host system prerequisites, including Python versions and required build tools.
- Probes for functional L4T compilers (NVVPU or ASIP/Chess) when compilation is required.
- Validates project source access and build file readability.
- Evaluates target connectivity and BSP compatibility for hardware-based tasks.
- Generates a comprehensive diagnostic report detailing pass/fail results and limitations.
When to use it
- Before initiating PVA specification, operation generation, build-test cycles, or debugging.
- When troubleshooting environment-related failures in a PVA development workflow.
- To confirm that a new host or workspace meets all requirements for a specific PVA SDK version.
- To verify that required LFS assets and compiler backends are correctly configured.
Advantages
- Provides a clear, objective verdict on environment readiness.
- Performs non-destructive, read-only checks to ensure system state remains unchanged.
- Identifies specific missing components or configuration gaps for targeted remediation.
- Standardizes environment validation across different development machines.
Usage examples
- “Run pva-doctor for a build-test task using PVA SDK version 2.0.”
- The agent verifies the SDK installation, checks for required build tools and L4T compilers, validates project source access, and reports whether the environment is READY for build-test.
- “Check if my environment is ready for opgen with GEN3 PVA.”
- The agent inspects the host for opgen-specific requirements, including debug attempt limits and target access, and provides a status report.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/pva-doctor/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip pva-doctor.zip -d .agents/skills
Documentation by Venkat Balan
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
Check a PVA development environment
Check only the capabilities that the user requests. Record other capabilities as notes. Do not let them lower the verdict.
Do not install software. Do not change host or target settings. Do not print a license value, credential, token, or private key.
Get the inputs
Resolve these inputs:
Requested capabilities: one or more of
spec,opgen,build-test, ordebug.PVA SDK root and requested version; record the installed version separately. An absent installation is a check failure, not a missing user input.
PVA generation:
GEN2,GEN3, or both.Project type: PVA SDK application or PVA Solutions source.
Project path and version, when a project is in scope.
EMU policy:
optionalby default, orrequiredwhen the user requires it.Work directory (
WORK_DIR). Default to./pva-operator/.Optional features, such as CUDA or NvSci interoperability.
For direct target work, also resolve the target address, user, port, known-hosts file, and PVA generation. An expected BSP release is optional. Do not guess a credential, user, proxy, or transport.
Use this scope table:
| Capability | Required checks |
|---|---|
spec | References, SDK identity, project read access, and Python. |
opgen | References, writable project, build tools, L4T compiler, target access, and PVA_OPERATOR_MAX_DEBUG_ATTEMPTS. |
build-test | References, build tools, L4T compiler, transfer tools, and target access. |
debug | References and only the tools, source access, and target access needed for the supplied failure. |
Resolve paths
SKILL_ROOT is the absolute directory containing this skill's SKILL.md,
after resolving symlinks. Bundled files are relative to that directory. Resolve
user-supplied relative paths, including WORK_DIR and PVA_SDK_ROOT, against
the invocation directory before changing directories.
Set SDK_REFERENCES to $WORK_DIR/references/sdk. Keep generated references
outside installed skill directories and the SDK documentation tree, including
through symlinks. Reject an overlapping destination before creating directories.
Verify the local references
First inspect the selected SDK root and packaged documentation. If the SDK is
absent, record required sdk-installation and public-reference-corpus checks
as FAIL, with the inspected path and requested version. If the SDK exists
but required documentation is missing, record public-reference-corpus as
FAIL and identify the missing files. Do not run materialization, read a
nonexistent generated index, or invent an installed version or lock hash.
Continue independent host, project, and target checks within the requested
scope. Skip probes that need the missing SDK or documentation and explain why
they were not performed. Write the report even when setup is incomplete.
Return NOT_READY and recommend that the user invoke pva-setup for the
missing installation components; do not invoke Setup or install anything.
An absent optional emulator remains neutral.
Doctor only checks SDK references. Do not create, replace, or repair the corpus,
even when reference writes are authorized. If references are missing, outdated,
or damaged, record the exact path and verification failure, return NOT_READY,
and recommend that the user run pva-setup for the same SDK and work directory,
then rerun Doctor. Setup runs the materializer; a cache failure alone does not
require reinstalling the SDK. Do not give manual sync commands as the next action.
Record this required check as public-reference-corpus in the Doctor report.
Set it to PASS only after verify succeeds for the selected SDK below;
record a failed verification or a missing required source as FAIL. Use
LIMITATION only when sources exist but verification was not performed.
Check python3 --version first; the materializer requires Python 3.9 or newer.
A missing prerequisite is FAIL. verify needs no PDF converter; mark the
pdftotext check NOT_REQUESTED in Doctor.
Require:
$SKILL_ROOT/scripts/materialize_sdk_references.py$SKILL_ROOT/references/sdk-doc-sources.json$PVA_SDK_ROOT/share/doc/VERSIONThe packaged SDK HTML files and the Orin and Thor Programmer's Guide PDFs.
If $SDK_REFERENCES/ or its lock is absent, record public-reference-corpus
as FAIL and leave the missing paths absent. Otherwise run this read-only check:
python3 "$SKILL_ROOT/scripts/materialize_sdk_references.py" verify \
--manifest "$SKILL_ROOT/references/sdk-doc-sources.json" \
--sdk-doc-root "$PVA_SDK_ROOT/share/doc" \
--output-dir "$SDK_REFERENCES"Record the absolute sdk_reference_root and the SHA-256 of
$SDK_REFERENCES/reference-lock.json as sdk_reference_lock_sha256 in the
report, together with the selected SDK version and verification command/result.
Record a hash only after successful verification. Consumers use these report
fields; they do not infer a corpus location from their installation or CWD.
After successful verification, read the pva-doctor route in
$SDK_REFERENCES/index.md. Resolve links from each generated
Markdown file relative to that file. Use only the local Markdown that applies
to this check.
Use these check results
PASS: A direct check proves the capability.LIMITATION: A required operation is not proved, but no check failed.FAIL: A required item is absent, incompatible, or unusable.NOT_AVAILABLE: An optional capability is unavailable.NOT_REQUESTED: The check is outside the requested scope.
Record whether each check is required, plus its command, result, evidence, and
remediation. Required checks use PASS, LIMITATION, or FAIL.
NOT_AVAILABLE and NOT_REQUESTED are only for non-required checks and do not
lower the verdict. Redact all secrets.
Check the host and SDK
For the requested scope:
Record the host operating system and architecture.
Check the matching SDK release notes. If they are unavailable, record a
LIMITATIONand continue direct probes.Check each required executable with
command -vand its version command.Read the CMake requirement from the selected SDK's Build System and Installation documentation. Check additional minimums only for requested features, such as CUDA interoperability; record the local citation.
For L4T, discover compiler names and paths from the selected SDK toolchain and its Installation documentation. Probe those executables, including a user-supplied toolchain when configured.
Check
ssh,scp, andtaronly for direct target work.Check
sha256sumorshasum -a 256for evidence manifests.Require
PVA_OPERATOR_MAX_DEBUG_ATTEMPTSonly foropgen. This environment variable caps Debug invocations after failed Build-Test runs;0disables automatic repair. Require a non-negative integer and use the inherited value. Do not load an arbitrary.envfile.Confirm the SDK root is readable. Discover the files needed for the requested capability from its package metadata, CMake configuration, and matching SDK documentation instead of requiring a fixed subdirectory list.
Check required packages with package metadata when it is available. Do not construct a package name from a version.
Create a temporary CMake project outside the SDK. Put
find_package(pva-sdk REQUIRED)beforeproject(...)when using the SDK's toolchains: the SDK's Build System / CMake Scripts section requires this order to select the toolchain before CMake enables languages. With an explicit custom toolchain, follow the selected SDK's documented setup. Configure with the requested SDK root; confirm the selected package and path.Remove the temporary project.
Do not accept a directory as proof that an executable works.
If an SDK requirement cannot be established, record a required LIMITATION
and the available probe evidence instead of guessing a version or layout.
Check the project
When PVA Solutions is selected, use the supplied project path or
$WORK_DIR/source. Record a required pva-solutions-source check. Verify that
the directory and its documented build files are present and readable, and
check any requested version using local metadata. Record the absolute path,
version, and repository URL and commit when Git metadata is available.
Accept a supplied source archive or another checkout; do not require a specific
remote URL or a private repository layout.
A missing or incomplete required source tree, or a confirmed version mismatch,
is FAIL. If its identity or requested version cannot be verified, record
LIMITATION. Continue these checks even when the SDK is missing. Recommend
pva-setup, which defaults to https://github.com/nvidia/pva-solutions.git;
do not clone, fetch, or restore files in Doctor. For a standalone SDK
application, mark pva-solutions-source as non-required NOT_REQUESTED.
When a project is in scope:
Verify its supplied version from local build or package metadata.
Confirm that required build files are readable.
Prove write access with a temporary file only for
opgenordebug. Remove the file.Read local minimum and default SDK settings. Use a configure or build probe to prove compatibility.
Check CUDA, NvSci, DLInference, Git, or Git LFS only when the requested work needs them. Git metadata is optional for an extracted source archive.
When compilation is requested, record
project-lfs-assets-<mode>for each build mode, such asl4toremu. Identify needed LFS assets from local build rules and LFS metadata, including required submodules. Check that each working file exists, is readable, and is not an unresolved LFS pointer (first lineversion https://git-lfs.github.com/spec/v1). An installed LFS tool or a cached object alone does not prove the working file is present. Apply the file check to extracted source archives too.
Record the mode, required status, affected paths, evidence, and remediation.
Missing assets for a required mode are FAIL. Missing optional EMU assets
are NOT_AVAILABLE, with EMU status UNAVAILABLE; required L4T checks
continue. Record NOT_REQUESTED when a mode needs no LFS assets. If the needed
asset set cannot be established, record a required LIMITATION, or optional
EMU NOT_AVAILABLE with status UNPROVED, and explain the evidence gap.
This asset check reads files only; it does not build, link, run, or fetch assets.
Do not require a private repository layout.
Check target compilation
Run this check only when the requested scope needs an L4T build.
Discover NVVPU and ASIP/Chess automatically. Do not ask the user to select a backend.
For NVVPU:
Check installed package metadata or equivalent SDK files.
Check the CMake toolchain and compiler executable.
Do not accept their presence as final proof.
For ASIP/Chess:
Resolve the ASIP Programmer from the CMake option, environment, or documented default.
Check the release for the selected PVA generation.
Check its executable tools.
Check
LM_LICENSE_FILEorSNPSLMD_LICENSE_FILE. Do not print either value.For a license file, check that it is readable. For a server, report only that a server specification exists.
When build probes are permitted, use a supplied project or SDK sample:
Try NVVPU first when its required files are present.
Configure L4T for the requested generation in a new build directory.
Build one VPU target in the foreground.
If NVVPU does not succeed, try ASIP/Chess in a separate build directory.
Record the backend, executable, compiler model, command, and exit code.
Remove each temporary build directory.
Use these rules:
A successful NVVPU build proves compiler readiness. Set ASIP and Synopsys license checks to
NOT_REQUESTED.A successful ASIP/Chess build proves compiler and license readiness. Report NVVPU as an unused optional backend.
Fail the compiler check only when neither backend can complete the probe.
If no probe is permitted, report a required
LIMITATION. Do not returnREADYfrom files or environment values alone.
Check optional EMU support
Check that the selected SDK documents and provides PVA_BUILD_MODE=EMU for
host emulation. Do not substitute another host execution tool. Keep EMU
settings separate from the NVVPU or ASIP/Chess compiler used for L4T builds.
Before reporting EMU support as available, configure, build, and run a small supplied EMU target in a temporary build directory outside the SDK. Record the proved build mode, SDK selection, generation, compiler and other configure options, plus the exact commands, exit codes, and logs in the report. Build-Test reuses these settings with fresh project and build paths. Remove the temporary build directory after saving the evidence.
For a supplied project whose EMU build needs LFS assets, EMU status
AVAILABLE also requires its project-lfs-assets-<mode> check to pass. A
successful SDK sample does not override missing or unproved project assets.
When EMU support is optional, report missing support as NOT_AVAILABLE.
Continue all required L4T checks.
When EMU support is required, report a missing dependency or failed probe as
FAIL. If no probe is permitted, record LIMITATION and EMU status UNPROVED;
do not claim a working backend from package presence alone.
Do not report EMU execution as hardware verification.
Check a direct Tegra
Run this check only when the requested capability needs hardware access.
Read the installed BSP release over SSH and check compatibility with the selected SDK. Check an expected BSP release only when the user supplies one. Record the installed release, compatibility source, and result.
Use key or SSH-agent authentication in batch mode. Use the supplied
known-hosts file. Check the Arm64 architecture, BSP, cuPVA runtime version and
safety variant, required libraries, and permissions for the requested commands.
Use the supplied account without elevation where possible. Check administrative
permissions only for a requested operation that needs them, such as clock
configuration or privileged deployment. Accept a user-approved command-scoped
noninteractive method or an already prepared target; do not require unrestricted
passwordless sudo. Probe the specific permission without changing target state.
Do not install packages or change target permissions. For a required operation,
record a demonstrated permission denial as FAIL, or an unproved permission as
LIMITATION, with the exact operation. Mark unneeded privileged operations
NOT_REQUESTED. An unavailable optional target capability is NOT_AVAILABLE.
Decide and report
READY: Every required check isPASS. When L4T compilation is required, either NVVPU or ASIP/Chess passed the target build probe.READY_WITH_LIMITATIONS: No required check isFAIL, and at least one isLIMITATION.NOT_READY: At least one required check isFAIL.
Only checks marked required determine the verdict. Missing optional EMU
support (NOT_AVAILABLE) and out-of-scope checks (NOT_REQUESTED) are neutral.
A required capability must not be relabeled optional to avoid a failed check.
Write $WORK_DIR/reports/doctor-report.md with
the report template.
Return:
Verdict: READY | READY_WITH_LIMITATIONS | NOT_READY
Requested capabilities: <list>
Required mode: L4T
EMU policy: <optional | required>
PVA generation: <generation>
Target compiler: <NVVPU | ASIP/Chess | none>
Failed checks: <count and names>
Limitations: <count and names>
Report: <absolute path>
Next action: <one action or none>For each product fact, cite the SDK documentation root, local Markdown path, packaged source path, source SHA-256, version, and section or PDF page.
Files
- ATTRIBUTION.mdAdded by AutoGineer928 B
- BENCHMARK.md10.0 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- README.md7.6 KiB
- SKILL.md16.1 KiB
- agents/openai.yaml349 B
- assets/doctor-report-template.md3.6 KiB
- config/skillspector-baseline.yaml400 B
- evals/EVAL.md1.4 KiB
- evals/config.yml167 B
- evals/evals.json6.4 KiB
- evals/files/overlap/sdk/share/doc/VERSION11 B
- references/reference-maintenance.md5.7 KiB
- references/sdk-doc-sources.json4.9 KiB
- scripts/materialize_sdk_references.pyScript46.1 KiB
- skill-card.md4.9 KiB
- skill.oms.sig6.8 KiB
README.md
<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
PVA development skills
Agent skills for creating, changing, or repairing NVIDIA PVA operators in your PVA SDK application or PVA Solutions source tree. They turn requirements into code, verify it on Tegra hardware, and repair failures within a debug budget.
Skills
| Skill | Purpose |
|---|---|
| Doctor | Check the SDK, toolchain, project, target, and SDK references. |
| Setup | Install missing SDK, NVVPU, and L4T runtime components, then rerun Doctor. |
| Spec | Define operator behavior, correctness tests, and the OpGen handoff. |
| OpGen | Generate and integrate the operator, then invoke Build-Test and Debug. |
| Build-Test | Build, verify correctness on hardware, and measure requested performance cases. |
| Debug | Diagnose and repair a reproduced failure. |
Prerequisites
An authenticated coding agent with local skill support and shell/file access. See agent support below.
A development host running regular x86-64 Ubuntu supported by the requested SDK.
An Arm64 Jetson board running compatible Jetson Linux (L4T), with working key-based SSH and a trusted host key.
A matching SDK installation guide (file or URL), access to its installer, and administrative permissions for required installation steps.
A writable project: your PVA SDK application or a PVA Solutions source package or checkout. This is where OpGen adds or changes code. Install Git LFS if the project uses it.
When PVA Solutions is selected, Setup uses
NVIDIA/PVA-Solutions by default and
clones into the supplied project path, or $WORK_DIR/source when omitted.
It reuses an existing source tree and accepts another repository or archive.
Doctor checks the selected source and reports missing required files.
Run the agent and build tools on the development host. PVA_BUILD_MODE=L4T
cross-compiles there for execution on the board. PVA_BUILD_MODE=EMU builds
for emulation on the development host.
Setup installs or reuses the SDK, NVVPU, required build and reference tools, and board runtime. EMU is optional. Setup calls Doctor before making changes and again afterward; no existing Doctor report is required. Setup reads the installer URL from the guide. Supply a separate installer path or URL only when the guide does not provide one. The guide and installer must match the requested SDK release. Setup reads the board's installed BSP and checks SDK compatibility. Supply an expected BSP release only when you want to require a specific release.
Set up a workspace
Copy all six PVA skill folders from the public
NVIDIA skills catalog
into $HOME/pva-sdk-skills. Keep each folder's scripts, references, and assets.
The resulting layout is $HOME/pva-sdk-skills/pva-setup/SKILL.md, and the
same layout for the other five skills.
git clone --depth 1 https://github.com/NVIDIA/skills.git "$HOME/nvidia-skills"
mkdir -p "$HOME/pva-sdk-skills"
for pva_skill in pva-setup pva-doctor pva-spec pva-opgen pva-build-test pva-debug; do
cp -R "$HOME/nvidia-skills/skills/$pva_skill" "$HOME/pva-sdk-skills/"
doneUse a separate workspace for each operator task. Replace the project path below with your writable PVA SDK application or PVA Solutions source directory.
mkdir -p "$HOME/operator_test/my_operator"
cd "$HOME/operator_test/my_operator"
ln -s "/absolute/path/to/your/project" source
pva_skill_dir=.claude/skills # For Codex, use .agents/skills
mkdir -p "$pva_skill_dir"
for pva_skill in "$HOME/pva-sdk-skills"/pva-*; do
ln -s "$pva_skill" "$pva_skill_dir/"
doneReload skills or restart the agent session after creating the links.
source/ points to the project OpGen will modify; the surrounding workspace
holds your inputs, generated configuration, and reports. Each skill carries its
required scripts and templates. Install all six for the full workflow;
OpGen invokes Build-Test and Debug by their installed skill names.
Generated SDK references belong in references/sdk/ in this workspace.
Doctor records their verified absolute location in its report.
Agent support
Claude Code: Used for the recorded operator runs and the commands below.
Codex: Supports local skills in
.agents/skills, invoked with$pva-specor another skill name. These skills includeagents/openai.yamlmetadata. OpGen uses the agent's available skill mechanism for Build-Test and Debug. Without a callable skill tool, it loads the child skill'sSKILL.mdand executes its full workflow before resuming OpGen with the reports and verdict.
Run Setup → Doctor → Spec → OpGen
Create requirements.md in the workspace: operator name/path, task mode (new,
change, or repair), required behavior, supported inputs, API, and performance
requirements. For an existing operator, include relevant source and test paths.
Run these headless Claude Code commands one at a time from the development host's workspace. Replace the guide and board settings below. Setup resolves the SDK release, installer, package names, and installation paths from the guide and package metadata. Package paths are not fixed in the skill. You can provide an explicit SDK release or path override when needed.
export PVA_OPERATOR_MAX_DEBUG_ATTEMPTS=3
# 1. Setup: check and prepare the host and board
claude -p "Run pva-setup for spec, opgen, and build-test.
Installation guide: http://docs.nvidia.com/pva/sdk/installation.html.
Target: user@<board-IP>; PVA generation: <generation for your board>.
Project: $PWD/source; work directory: $PWD."
# 2. Doctor: verify readiness after Setup
claude -p "Run pva-doctor for spec, opgen, and build-test using
$PWD/reports/pva-setup-report.md.
Project: $PWD/source; work directory: $PWD."
# 3. Spec: run after Doctor is ready
# Spec runs its finalizer to create and validate configure/opgen-inputs.json.
claude -p "Invoke pva-spec through the Skill tool using
$PWD/requirements.md and $PWD/reports/doctor-report.md.
Project: $PWD/source; work directory: $PWD."
# 4. OpGen: run after Spec returns CONFIGURED
claude -p "Invoke pva-opgen through the Skill tool using $PWD/configure/opgen-inputs.json."Doctor writes $WORK_DIR/reports/doctor-report.md automatically. The examples
use $PWD as the work directory so Spec and OpGen can use the resulting files.
OpGen runs Build-Test and invokes Debug as needed. Read the final result in
reports/opgen-report.md.
See reference maintenance for SDK-reference regeneration and upgrades.
Maintaining the helpers
Spec owns finalize_opgen_inputs.py. OpGen ships an identical copy so handoff validation works when the skills are installed separately. After changing the Spec helper, update the OpGen copy too. Generated SDK references and operator reports belong in the operator workspace.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Venkat Balan
- Publisher
- NVIDIA (Official)
- Distributed by
- NVIDIA
- Source
- NVIDIA/skills · skills/pva-doctor · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Venkat Balan or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download pva-doctor.zip