holohub-module-lifecycle

Scaffold, test, package, and verify reusable Holoscan Modules through the HoloHub CLI.

3.2k|370|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/NVIDIA/skills --skill holohub-module-lifecycle
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: holohub-module-lifecycle
Source: https://github.com/NVIDIA/skills/tree/main/skills/holohub-module-lifecycle
Command: npx skills add https://github.com/NVIDIA/skills --skill holohub-module-lifecycle

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Building a reusable Holoscan Module involves many error-prone steps: choosing a layout, keeping naming identities consistent, scaffolding from templates, testing at honest scope, packaging DEB/WHEEL artifacts, and proving a clean consumer can actually install them. This Skill guides an AI agent through that entire producer-to-consumer lifecycle with the ./holohub CLI, enforcing preview-before-action safety and evidence-based verification.

Core Features & Use Cases

  • Module Scaffolding: Create external self-contained holoscan-<name> repositories from modules/template or in-tree descriptors under modules/, with consistent module, operator, and package identities.
  • Consumer & Packaging Proof: Declare immutable dependencies, iterate with mounted-source overrides or editable installs, build DEB/WHEEL packages, and validate each artifact in a clean artifact-only consumer.
  • Safe Command Discipline: Preview every mutating ./holohub command with --dryrun, preserve checkout state, and route failures to the appropriate debug skill instead of guessing.
  • Use Case: Ask your agent to create a Python Holoscan Module with one reusable operator, a finite demo, tests, and Debian and wheel packaging confirmed installable by a clean consumer.

Quick Start

Ask your agent to scaffold a new Python Holoscan Module from the HoloHub template, build and test it, then package it as a wheel and Debian package with clean-consumer proof.

Frequently Asked Questions about holohub-module-lifecycle

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I create a reusable Holoscan Module with HoloHub?

Use ./holohub setup --scripts template with a dry run first, obtain authorization, then run a fully specified non-interactive ./holohub create command with modules/template, an existing parent directory, explicit language, and complete context. Preview the create command with --dryrun before the real run.

How do I package a Holoscan Module as a Debian package or wheel?

Run ./holohub package <module> with --pkg-generator DEB,WHEEL, previewing first with --dryrun --verbose. Then inspect the wheel metadata and deb control contents, and install each format in a clean artifact-only consumer to prove import and a finite smoke check.

Should I use an external module repository or an in-tree descriptor?

Use an external holoscan-<name> repository generated from modules/template for independent releases. Use an in-tree descriptor under modules/ when the module is maintained and tested together with the HoloHub monorepo.

How do I test a local uncommitted module against my HoloHub app?

Use the HOLOSCAN_CLI_LOCAL_<SANITIZED_MODULE_NAME> override with the module source mounted into the project container via run-container --add-volume. Because the override is not forwarded automatically, nest an inner ./holohub run --local command inside the outer container launch.

When should I not use the module lifecycle workflow?

Route ordinary applications without a reusable module API to holohub-app-lifecycle, and route a concrete failing ./holohub command to holohub-debug-build-run. The module lifecycle covers producer, consumer, and packaging work only.

Why does ./holohub test not scope to a single module?

Current HoloHub test drivers do not scope test <module> to one module. Test each declared operator and demo app individually, or in a small generated repository combine repository-wide tests with focused pytest or CTest targets.