Skip to main content

Release a pack

Prepare and test an immutable pack release before consumers select it.

This guide continues the synthetic example-documentation-standard catalog created by Create a first pack and Create a new pack version. Complete those steps before running consumer commands below.

Validate the authoring directory

Run these commands from the directory that contains pack.yml:

luna pack show
luna pack list
luna pack hooks
luna pack validate

luna pack validate checks the local manifest, local selector matches, and pack-defined external Git sources. It reports every available issue without changing the manifest. Fix warnings about unused source aliases unless the source is intentionally reserved for an imminent selector.

When required metadata is missing, use the authoring commands instead of rewriting the whole manifest:

luna pack set author "Lunaris Digital Solutions <[email protected]>"
luna pack set license MIT
luna pack set version 1.1.0
luna pack validate

Exercise the release as a consumer

Create an empty fixture project beside the pack catalog. Register the catalog, then validate the exact release selected through normal discovery:

mkdir release-test
cd release-test
luna init
luna sources add local candidate ../packs
luna discover --versions 3
luna validate [email protected]
luna inspect [email protected]

Unlike luna pack validate, luna validate <pack-reference> runs from an initialized consumer project. It resolves the requested release from configured local or Git sources and validates the selected catalog entry and its source files. An exact reference can select a draft release.

Preview before writing files:

luna install [email protected] --dry-run
luna install [email protected]
luna audit

Supply every meaningful parameter combination. Include both outcomes of each conditional selector and each managed-file strategy. If the pack declares an external source, inspect the dry-run source plan and test the approval flow. If it declares scripts, test --scripts skip, then deliberately approve and run the hooks in a disposable fixture.

Test update and removal

Install the previous release in another clean fixture, point it at the catalog that also contains the candidate, and run:

luna outdated
luna update example-documentation-standard --dry-run
luna update example-documentation-standard
luna audit
luna uninstall example-documentation-standard

Confirm updates preserve user-modified files according to the declared strategies. Confirm uninstall removes unchanged output but retains changed or shared output.

Publish an immutable version

Use Semantic Versioning for consumer-visible behavior. Never replace the contents of a published version directory. Add a new version directory and keep older releases available for exact references and update tests. See Create a new pack version for a complete versioned layout.

Commit the release to a local catalog or Git repository only after both validation commands and the fixture lifecycle pass.