Skip to main content
LunaPack for engineering foundations

Start new projects without recreating the setup.

LunaPack uses the Luna CLI to install reusable, versioned packs so your team can start with its standards instead of copying another repository.

Problem
Setup drifts
Answer
Versioned packs
Start
Preview and update
new project, shared setupready to use
$ luna init
Created lunapack.yml
$ luna sources add github lunapack lunarisdigitalsolutions/lunapack
source connected packs available
$ luna install dotnet-project
Preview before changing the project with --dry-run.

Every project starts differently. It should not.

Technical leads know the routine: copy a starter repository, repair its pipeline, repeat security settings, and explain the project shape again. The cost compounds as each copy begins to drift.

01

Templates drift

Copied repositories lose their connection to the setup that created them.

02

Setup repeats

Pipelines, security configuration, and docs get rebuilt for every project.

03

Teams slow down

New contributors spend time finding the right starting point.

Pack to CLI to project.

A pack contains reusable project setup. LunaPack applies it. The project keeps the selected version so changes stay intentional.

Pack

A versioned folder holds the setup your team wants to reuse.

CLI

LunaPack discovers, previews, installs, and updates that pack.

Project

The project records what it requested and what LunaPack resolved.

LunaPack connects the setup between your tools.

Package managers, workflow reuse, IaC modules, and project templates each solve a focused problem. LunaPack assembles the broader project foundation around them, then keeps its managed files versioned and updateable.

Not a package manager

NuGet, npm, pip, Cargo, and similar tools resolve libraries for an application. LunaPack delivers the project foundation around those libraries: configuration, tooling, documentation, and other managed files, with a version your project can update.

More than workflow reuse

GitHub Actions can call actions and reusable workflows from other repositories, while Azure Pipelines can load templates from another Git repository. LunaPack complements those mechanisms by versioning and applying the broader project foundation around them, with previewable updates across managed files.

Around IaC modules

Terraform and Bicep modules can live in central registries and be consumed by deployments. LunaPack solves the surrounding project setup instead: main files, linting, formatting, CI, documentation, and repository conventions, versioned and updated together.

More than a template

Project templates and generators create a starting snapshot. LunaPack keeps the foundation connected to a versioned source, so teams can inspect and apply updates after project creation.

Use a pack in four small steps.

01

Choose a pack

Use a local folder or Git source that already has the setup you need.

02

Initialize a project

Create LunaPack state, discover a release, then preview an install.

03

Customize it

Pass parameters and choose a project-relative destination when needed.

04

Receive updates

Check what is outdated, review the plan, then apply the update.

Get a useful project foundation in minutes.

Install the LunaPack release, put the executable on your path, then initialize a project and preview the pack you want.

Remove --dry-run when the preview is ready to apply.

shell
luna init
luna sources add github lunapack lunarisdigitalsolutions/lunapack
luna discover
luna install dotnet-project --dry-run

# Apply after reviewing the plan
luna install dotnet-project
luna outdated
luna update dotnet-project --dry-run

Start with foundations for your stack.

The catalog includes repository basics, team standards, and CI checks alongside stack-specific packs. Pick one or compose several as your project needs them.

Repository basics

Use gitignore-general and license-mit to establish clean, portable repository defaults.

Team standards

Use clean-code-guidelines, C# guidance, and ADR templates to share engineering practices.

Pull request quality

Use Commitlint and GitHub Actions packs to make review checks repeatable.

.NET foundations

Use the .NET packs for shared build, SDK, package, and formatting policy when your project is .NET.

Browse packs

Update foundations without starting over.

Copied templates stop evolving the moment they land in a repository. LunaPack keeps source versions and managed-file digests, so you can inspect available updates, preview changes, and apply them intentionally.

Review before applying

Run luna outdated, then use luna update --dry-run to inspect the complete plan before files change.

Choose how content combines

Packs can copy with overwrite, fail, skip, or backup behavior, or merge line sets, marker-bounded sections, and JSON content.

Turn your team's setup into a source.

A pack is a versioned folder with a pack.yml file and the content it manages. Start locally, test it in a throwaway project, then publish it to Git when it is ready.

Create a first pack
shell

luna sources add local my-packs .

mkdir my-pack && cd my-pack
luna pack init

luna validate my-pack

Make the good start the default start.

  • Start new projects without rebuilding the same setup.
  • Give every repository the standards your team already chose.
  • Update shared foundations instead of copying new templates.
  • Make onboarding a repeatable command, not a repository hunt.

Use it, discuss it, improve it.

Pick a pack. Start the next project well.

Browse documentation

Free and open source, backed by practical expertise.

Lunaris Digital Solutions is the company behind LunaPack and supports creation of the CLI and its packs. LunaPack will remain free and open source. Consulting and training are available for teams adopting or authoring packs.

Work with Lunaris