Generated banner for Pva Opgen
Generated logo for Pva Opgen

Pva Opgen

NVIDIAOfficialCreated by Venkat BalanDistributed by NVIDIA

  • Skill
  • Workflow
  • Software development
  • Apache-2.0
  • Medium risk
  • Has scripts

From the author

Generate, change, or repair a complete vectorized NVIDIA PVA operator from a validated pva-spec handoff. Deliver the contract's API, host and VPU code, independent CPU reference, sample, build integration, tests, and documentation. Verify with pva-build-test and use pva-debug within the configured attempt limit.
— the description by Venkat Balan

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

pva-opgen is a workflow skill designed to implement NVIDIA Programmable Vision Accelerator (PVA) operators. It takes a validated specification handoff and generates the necessary components, including public APIs, host code, VPU code, independent CPU references, build integration, tests, and documentation. The skill incorporates an automated verification and repair loop, utilizing pva-build-test for validation and pva-debug for iterative fixes within a defined attempt limit.

What it does

  • Validates input specifications and project requirements.
  • Generates host and VPU code, APIs, and CPU reference implementations.
  • Integrates build configurations, samples, and test suites.
  • Executes automated verification using pva-build-test.
  • Performs iterative repairs on failed implementations using pva-debug.
  • Produces a final report detailing the implementation status and deliverables.

When to use it

  • When you need to implement a new PVA operator from an approved specification.
  • When modifying or repairing an existing PVA operator implementation.
  • When you have a validated pva-spec handoff and require a complete set of project deliverables.
  • When you need to verify operator correctness against a specified test matrix.

Advantages

  • Ensures consistency by following strict specification contracts.
  • Automates the repetitive aspects of operator implementation and build wiring.
  • Provides a structured repair loop to address verification failures.
  • Maintains traceability through recorded evidence and validation reports.

Usage examples

“Generate the PVA operator implementation based on the validated handoff in my current work directory.”
The agent validates the input, generates the required host/VPU code and tests, runs the build-test suite, and provides a final opgen-report.md.
“Repair the failed PVA operator implementation using the available debug budget.”
The agent invokes pva-debug to address the identified failures, then re-runs pva-build-test to verify the fix.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/nvidia/pva-opgen/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip pva-opgen.zip -d .agents/skills

Documentation by Venkat Balan

<!-- SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->

Generate a PVA operator

Implement the approved Spec contract. Do not redefine it.

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 supplied relative paths against the invocation directory before changing directories. Set OPGEN_INPUTS to the absolute handoff path and WORK_DIR to the caller's report work directory. For a handoff at <work-directory>/configure/opgen-inputs.json, default WORK_DIR to that <work-directory>; otherwise require an explicit report work directory. Use only the validated handoff's workspace as the project root.

Inputs

Before changing source, require installed pva-build-test and, when PVA_OPERATOR_MAX_DEBUG_ATTEMPTS is greater than zero, pva-debug. Resolve them by name through the agent's skill discovery; their directories need not be adjacent. Return BLOCKED if a required skill is unavailable.

Run these skills using the agent's available skill mechanism. If no callable skill tool exists, load the named skill's SKILL.md and execute its complete workflow as the Build-Test or Debug phase. Save that phase's reports, then resume OpGen with its verdict. Reading instructions alone does not execute a phase.

Require:

  • Spec's opgen-inputs.json.

  • The recorded operator specification, test matrix, and evidence manifest.

  • A Doctor report that is ready for opgen, or accepted limitations.

  • Direct-Tegra inputs that Build-Test needs.

  • A writable report directory.

ScriptCommandInputsOutputsExit codes
finalize_opgen_inputs.pypython3 "$SKILL_ROOT/scripts/finalize_opgen_inputs.py" --check "$OPGEN_INPUTS"Spec handoff and its recorded inputs.JSON validation summary; read-only check.0: valid; 1: failed; 2: invalid command arguments.

Run this command before you inspect or change the workspace:

python3 "$SKILL_ROOT/scripts/finalize_opgen_inputs.py" \
  --check "$OPGEN_INPUTS"

Return BLOCKED if the command reports an invalid structure, unknown requirement link, unsafe path, missing evidence, changed input, stale hash or size, or mismatched count. Do not repair Spec-owned files or handoff metadata.

Use the project workspace recorded in the validated handoff.

Verify the recorded hashes before reading project evidence files. Use API, CPU-reference, test, workload, KPI, benchmark, and build files only as contracts. Do not copy CPU-reference or test code into the implementation.

Read the technical basis

Use the Doctor report recorded in the validated handoff. Require its public-reference-corpus check to be PASS. Set SDK_REFERENCES to that report's absolute sdk_reference_root. Require a readable index.md and reference-lock.json, a lock SHA-256 matching the report's sdk_reference_lock_sha256, and the reported SDK version matching this task. If these fields are absent or no longer match, return BLOCKED for a fresh Doctor report and regenerated Spec handoff. Do not edit a finalized report or fall back to an installed package or CWD path. Read the pva-opgen route in $SDK_REFERENCES/index.md. Before reading Markdown, check its SHA-256 against the lock outputs entry; return BLOCKED on a mismatch. Resolve links relative to each generated file.

Use rg to select only the programming, data-movement, build, tutorial, and API Markdown that applies. Read the relevant Orin GEN2 or Thor GEN3 guide chapters for the core, VMEM, address generation, vector operations, and programming examples.

Before use of an intrinsic or mnemonic, find its exact type and operation in the generated guide pages. Record the SDK documentation root, local Markdown path, packaged source path, source SHA-256, guide revision, generation, and section or PDF page.

Use supplied or public implementations within the user's authorized scope and their license terms.

Inspect the project

Record:

  • Public API and ownership conventions.

  • Host and device target patterns.

  • Registration, sample, test, and documentation patterns.

  • Installed SDK version and PVA generation.

  • Files that OpGen will add or change.

Do not require Git metadata or a fixed repository layout.

Design the implementation

Use the behavior and test contracts from Spec.

  1. Select an algorithm that gives the specified result.

  2. Separate parallel work from reductions and dependencies.

  3. Select the PVA dataflow and transfer plan.

  4. Select a tile and VMEM layout that fit the target generation.

  5. Define vector-tail, alignment, border, and scratch handling.

  6. Estimate compute and transfer work when the required facts exist.

  7. Record unavailable facts as limitations. Do not invent a Speed-of-Light value.

Use RasterDataFlow for suitable raster tiles. Use another documented dataflow only when the access pattern needs it.

Create the deliverables

Create or update all items that the Spec contract requires:

DeliverableRequirement
Public APIUse project naming, ownership, validation, and error conventions. Preserve asynchronous behavior.
Host codeCreate resources, load VPU code, configure dataflows, submit work, check status, synchronize as required, and release owned resources.
VPU codeUse documented device APIs and vector intrinsics. Keep the main data path vectorized. Use a correct predicated or scalar tail only where required.
CPU referencePreserve an approved independent reference. For a new operator, create independent scalar logic that implements the contract.
Build wiringAdd host, device, sample, test, and optional performance targets. Add a complete install target or deployment manifest.
SampleShow one valid lifecycle, check the result, and release resources.
TestsImplement the approved Spec test matrix without weakening expected results or tolerances.
DocumentationDocument the API, formats, shapes, parameters, arithmetic, borders, limits, build steps, and sample.

Do not reuse a VMEM buffer before its transfer or compute use is complete. Do not replace a documented vector operation with scalar work in the main data path. Record each necessary scalar region and its reason.

Do not derive an expected result from PVA output.

Verify with Build-Test

Run pva-build-test using the child-skill mechanism defined above.

Pass:

  • Caller identity OpGen, WORK_DIR, and the Debug calls used and maximum.

  • The validated Doctor report and Spec handoff.

  • The active project root.

  • The complete correctness matrix and EMU policy.

  • SKIPPED_OPTIONAL evidence when optional EMU support is unavailable.

  • L4T build, install, target, and direct-SSH inputs.

  • build-test-opgen as the report label.

  • An absolute result directory under $WORK_DIR for each Build-Test call.

Use correctness-only when the matrix has no performance case. Use correctness-and-performance when it has one or more performance cases. Pass performance targets, clock inputs, filters, and sample policy only in the second scope.

Build-Test owns all build, EMU, hardware, profiling, evidence, and verdict rules. Follow its instructions without skipping or weakening checks.

After every Build-Test call, resume OpGen and inspect its returned verdict and report. A child skill's final response does not complete OpGen. Follow the repair rules below, then write the final OpGen report before ending the run.

Repair a failed implementation

Start with zero Debug calls used and read the maximum from PVA_OPERATOR_MAX_DEBUG_ATTEMPTS. Check the budget before every Debug call; 0 means no automatic repair. The next attempt number is calls used plus one. Count each execution of the Debug workflow as one Debug call, regardless of the invocation mechanism, including one that returns without a repair.

If Build-Test returns FAILED and an attempt remains, run pva-debug using the same child-skill mechanism with the complete failure report, failing source identity, command, logs, case, expected result, tolerance, next attempt number, and maximum attempts. Pass the same WORK_DIR for Debug reports.

After Debug returns, resume OpGen. For each REPAIRED result, invoke Build-Test again on the changed source using a new result directory and the complete original matrix. Choose the next action from the returned result:

ResultOpGen action
Build-Test PASSEDWrite the final PASSED report.
Build-Test FAILED, calls used below maximumInvoke Debug, then resume OpGen.
Build-Test FAILED, zero or exhausted budgetWrite the final FAILED report with the failed stage, reason, evidence, and calls used. Do not attempt a repair.
Build-Test or Debug BLOCKEDWrite the final BLOCKED report with the exact unavailable prerequisite.
Debug NOT_REPRODUCEDWrite the final FAILED report, retaining the original failure and Debug's reproduction result.

Record one attempt entry per Debug invocation, with its result and source identity. Do not reset or discount calls used when a failure remains unchanged.

Do not invoke Debug for an external BLOCKED result. Do not invoke Doctor or Spec.

Output Format

Write $WORK_DIR/reports/opgen-report.md with the result template. Write it for every terminal outcome, including zero or exhausted debug budget, before returning the final response. Report zero calls explicitly when Debug was not invoked. If the report directory is unavailable, identify the exact path and write error in the final response.

Return one verdict:

  • PASSED: All deliverables exist, and Build-Test passed the current source.

  • FAILED: An executed implementation or verification stage produced a negative result that the bounded repair loop did not repair.

  • BLOCKED: A required input, dependency, permission, corpus, or target is unavailable.

Report the changed files, API, supported matrix, vectorization, dataflow, VMEM plan, build targets, deployment method, Build-Test result, Debug attempts, evidence paths, hashes, and limitations.

Do not claim hardware verification from EMU execution. Stop after the OpGen result.

Files

BENCHMARK.md

Skill Benchmark: pva-opgen

✅ Overall verdict: PASS — Recommended for publication

Publication Recommendation

Recommended for publication based on the completed evaluation evidence in this report.

Evaluation Metadata

  • Skill: pva-opgen

  • Validation status: passed

  • Evaluation date: 2026-10-28

  • Evaluator version: 1.6.3

  • Agents: Claude Code (aws/anthropic/bedrock-claude-opus-5-5), Codex (openai/openai/gpt-6.1-sol)

  • Tasks: 4 evaluation tasks (3 positive, 1 negative)

  • Dataset digest: sha256:b41c5ccca788300ded123f61f44afe9bb7029644a676c0c6531850e9c9d25451 (skill-evaluator-dataset-snapshot/1)

  • Attempts per task: 1

  • Environment: k8s-sandbox

  • Tier 2 evidence: required for publication

  • Tier 3 evidence: required for publication

Each task attempt ran in its own isolated sandbox pod.

Tier 1 LLM Provenance

SkillSpector provider, model, analyzer revision, and determinism evidence retained for this scan.

SkillProviderAdapterAnalyzerModelRevisionDeterminism
pva-opgennv_inferenceopenaimcp_tool_poisoningaws/anthropic/bedrock-claude-opus-5-52.13.1nondeterministic / provider_defaults
pva-opgennv_inferenceopenaisemantic_developer_intentaws/anthropic/bedrock-claude-opus-5-52.13.1nondeterministic / provider_defaults
pva-opgennv_inferenceopenaisemantic_quality_policyaws/anthropic/bedrock-claude-opus-5-52.13.1nondeterministic / provider_defaults
pva-opgennv_inferenceopenaisemantic_security_discoveryaws/anthropic/bedrock-claude-opus-5-52.13.1nondeterministic / provider_defaults
pva-opgennv_inferenceopenaimeta_analyzeraws/anthropic/bedrock-claude-opus-5-52.13.1nondeterministic / provider_defaults
  • Controls for pva-opgen: temperature=not set (source=provider_default, forwarded=no); seed=not set (source=unset, forwarded=no); reasoning_effort=not set (source=provider_default, forwarded=no)

What This Report Answers

The three-tier evaluation checks whether the skill:

  • is safe to use;

  • produces correct answers;

  • is discovered and activated when needed;

  • helps the agent complete the user's goal and expected workflow; and

  • avoids wasted skill and tool usage.

Results at a Glance

MeasureClaude Code (Baseline → Skill Uplift)Codex (Baseline → Skill Uplift)
Overall97.9% — baseline ran, but no comparable score was available; uplift unavailable96.1% — baseline ran, but no comparable score was available; uplift unavailable
Security100.0% → 100.0% (±0.0 points)100.0% → 100.0% (±0.0 points)
Correctness100.0% → 100.0% (±0.0 points)95.0% → 100.0% (+5.0 points)
Discoverability98.3% — baseline ran, but no comparable score was available; uplift unavailable85.0% — baseline ran, but no comparable score was available; uplift unavailable
Effectiveness94.4% → 100.0% (+5.6 points)94.4% → 100.0% (+5.6 points)
Efficiency91.4% — baseline ran, but no comparable score was available; uplift unavailable95.7% — baseline ran, but no comparable score was available; uplift unavailable

How to read this table: baseline is the same task attempted without the target skill. Scores are rounded to one decimal; threshold-adjacent values use additional precision so their displayed band matches the verdict. Uplift is derived from those displayed scores and shown in percentage points.

Example: 47.0% → 92.0% (+45.0 points) means the skill-assisted run scored 92.0%, 45.0 percentage points above its 47.0% no-skill baseline.

A partial dimension was calculated from only the available configured signals; review the detailed report before relying on it.

Comparison details

Shared-source comparisons use the same signals and weights on both conditions. They do not replace the full dimension scores above or change the publication verdict.

AgentDimensionBasisBaseline → With skill (uplift)Explanation
claude-codeDiscoverabilityDimension comparisonN/ADiscoverability is not applicable to the no-skill baseline; there is no installed skill to discover.
claude-codeEfficiencyToken-only comparison97.2% → 95.8% (-1.4 points)Only Token Efficiency is comparable; the full dimension scores use different evaluator sources.
codexDiscoverabilityDimension comparisonN/ADiscoverability is not applicable to the no-skill baseline; there is no installed skill to discover.
codexEfficiencyToken-only comparison91.1% → 91.4% (+0.3 points)Only Token Efficiency is comparable; the full dimension scores use different evaluator sources.

Token Usage

Actual Tier 3 execution usage is reported for every observed agent/case pair and both conditions.

AgentDataset caseWith skillWithout skillDeltaChangeCoverage
claude-codeAll cases722,332458,093+264,239+57.68%skill 4/4; base 4/4
claude-codeopgen-invalid-handoff201,293242,203-40,910-16.89%skill 1/1; base 1/1
claude-codeopgen-missing-handoff201,29571,781+129,514+180.43%skill 1/1; base 1/1
claude-codeopgen-negative35,85735,890-33-0.09%skill 1/1; base 1/1
claude-codeopgen-nonfinite-handoff283,887108,219+175,668+162.33%skill 1/1; base 1/1
codexAll cases336,539383,528-46,989-12.25%skill 4/4; base 4/4
codexopgen-invalid-handoff98,825125,672-26,847-21.36%skill 1/1; base 1/1
codexopgen-missing-handoff106,00260,830+45,172+74.26%skill 1/1; base 1/1
codexopgen-negative13,57613,459+117+0.87%skill 1/1; base 1/1
codexopgen-nonfinite-handoff118,136183,567-65,431-35.64%skill 1/1; base 1/1
ALL AGENTSDataset aggregate1,058,871841,621+217,250+25.81%skill 8/8; base 8/8

Prompt tokens include cached reads, so total tokens are prompt + completion (cached is not added twice). The Efficiency score uses (prompt - cached) + completion. Change is 100 * (with - without) / without; negative means fewer tokens. N/A comparisons include their reason in the coverage column; coverage is never estimated.

Tier Status

TierPurposeStatusEvidence
Tier 1Static validationPASSED WITH OBSERVATIONS11 validator(s); 13 finding(s)
Tier 2Semantic deduplicationPASSED2 validator(s); 0 finding(s)
Tier 3Live agent evaluationPASS2 agent(s); 4 task(s)

Findings and Observations

<details> <summary>Show detailed findings and successful checks</summary>

  • MEDIUM QUALITY/quality_correctness: Instructions don't mention 'run_script' (skills/pva-opgen/SKILL.md)

  • MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Instructions' (skills/pva-opgen/SKILL.md)

  • MEDIUM SCHEMA/body_recommended_section: Missing recommended section: '## Examples' (skills/pva-opgen/SKILL.md)

  • MEDIUM SECURITY/MCP Least Privilege (LP3): MCP Least Privilege: Without declared permissions the skill's intent is opaque and cannot be validated. (SKILL.md:1)

  • LOW QUALITY/quality_discoverability: Description very long (313 chars, recommend 50-150) (skills/pva-opgen/SKILL.md)

  • 8 additional finding(s) are available in the full evaluation artifacts.

</details>

Scoring Methodology

<details> <summary>Show dimension definitions, source signals, and thresholds</summary>

DimensionQuestionScored signals
SecurityIs it safe to use?security (100%)
CorrectnessIs the answer correct?accuracy (100%)
DiscoverabilityWas the right skill loaded when needed?skill_execution (100%)
EffectivenessDid the skill help complete the task?goal_accuracy (50%) + behavior_check (50%)
EfficiencyDid it avoid wasted tool calls and token usage?skill_efficiency (50%) + token_efficiency (50%)
  • Dimension bands: PASS at 50% or above; NEUTRAL from 40% to below 50%; FAIL below 40%.

  • Overall Tier 3 lift: PASS at +5 points or more; FAIL at -10 points or less; values between those bands are NEUTRAL.

  • Overall verdict: PASS only when every configured dimension passes for at least one supported agent. Lift is reported as diagnostic evidence and does not override this gate.

  • The 50% attempt pass threshold is a separate per-task gate; it is not the dimension pass threshold.

  • Effectiveness is the equal-weight mean of goal completion (goal_accuracy) and expected workflow adherence (behavior_check).

  • Efficiency is 50% tool-call productivity (the backward-compatible skill_efficiency wire id) and 50% token_efficiency. Positive-case skill routing is scored under Discoverability, not Efficiency; a negative case without a routing target is N/A. N/A sources are omitted, remaining weights are renormalized, and the dimension is marked partial.

Signals present in this run:

  • security (Security): unsafe operations, secret leakage, and unauthorized access.

  • skill_execution (Skill Execution): whether the expected skill was selected, decoys were avoided, and the workflow executed.

  • skill_efficiency (Tool Productivity): tool-call productivity (legacy wire id; routing is scored under Discoverability).

  • accuracy (Accuracy): final-answer correctness against the reference answer.

  • goal_accuracy (Goal Accuracy): whether the user's goal was achieved.

  • behavior_check (Behavior Check): whether the expected workflow behavior was followed.

  • token_efficiency (Token Efficiency): actual uncached prompt plus completion usage (50% of Efficiency).

</details>

Freshness

Regenerate this benchmark when the skill, evaluation dataset, target agent/model, evaluator version, environment, or scoring policy changes.

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-opgen · 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-opgen.zip