Nuvyn CLI 1.2.0: Spec-Driven .NET MAUI, From a New App or One You Already Have Nuvyntra Labs released Nuvyn CLI 1.2.0, a standalone .NET 10 global tool that scaffolds spec-driven .NET MAUI applications through `nuvyn init` for new projects and `nuvyn adopt` for existing ones. The tool writes a constitution, specification, plan, tasks, and analysis into the repository so coding agents build against a checked-in spec rather than a chat thread, and it locks the MAUI and Lumina stack while leaving individual plugins and NuvyntraLabs.UIKit independently installable. It is MIT licensed and distributed on nuget.org as NuvyntraLabs.Nuvyn.Cli. A coding agent will happily build a .NET MAUI app from a chat thread. The next session often builds a different one. Nuvyn is the CLI that keeps that work on one stack and one written spec. Version 1.2.0 is on nuget.org as the global tool NuvyntraLabs.Nuvyn.Cli . The command is nuvyn . This post is the walkthrough: what the tool is, how to install it, how to start a new app, how to attach it to an app you already have, and the slash commands the agent runs after that. Nuvyn is a standalone PackAsTool CLI for .NET 10 . It depends on System.CommandLine and Spectre.Console . It is MIT licensed. It does two jobs: nuvyn init nuvyn adopt The product domain is yours: clinic, field, bank, civic, retail, or anything else. The skills stay domain-agnostic. On a new host they lock only the MAUI and Lumina stack. Individual plugins and NuvyntraLabs.UIKit stay installable on their own. You do not need Nuvyn to use one package. | Package | NuvyntraLabs.Nuvyn.Cli https://www.nuget.org/packages/NuvyntraLabs.Nuvyn.Cli 1.2.0 | | Command | nuvyn | | Source | github.com/nuvyntralabs/Nuvyn https://github.com/nuvyntralabs/Nuvyn | | Docs | nuvyntralabs.github.io/toolkits/nuvyn/ https://nuvyntralabs.github.io/toolkits/nuvyn/ | | Guide | Install, init, adopt, slash workflow https://nuvyntralabs.github.io/toolkits/nuvyn/guide/ | Install it as a global dotnet tool . Do not add NuvyntraLabs.Nuvyn.Cli as a PackageReference in an app. Spec-driven development treats a checked-in specification as the source of truth. Code follows that spec. A chat thread is a prompt log: it disappears, it contradicts itself, and a teammate cannot review it. Nuvyn writes the artifacts into the repo: | Artifact | Role | |---|---| | Constitution | Standing principles: stack, platforms, privacy | | Specification | This increment: users, journeys, edge cases | | Plan | Smallest package set and one screen recipe per screen | | Tasks | Dependency-ordered work T001 P US1 | | Analysis | Consistency check before production code | That matters more once an agent writes the code. The same prompt can pick a different MVVM library on a different day. Long chats drop acceptance rules that were never written down. Agents add a login page, a second UI kit, or persistence nobody asked for, because a finished-looking app is an easy completion. Nuvyn narrows that search space. Constitution locks the stack. Specify writes the product. Plan names packages and screens. Analysis fails the loop before implement invents a second architecture. GitHub Spec Kit specify init remains the usual choice when the stack is open. Nuvyn is the door when the host should be Nuvyntra, or when an existing MAUI app should grow through the same slash chain. | Requirement | Why | |---|---| | .NET 10 SDK | The CLI is net10.0 . Hosts target net10.0-android , net10.0-ios , net10.0-maccatalyst , and net10.0-windows10.0.19041.0 | | MAUI workload | So the host can build and run | | A coding agent | Cursor, GitHub Copilot, Claude Code, Gemini CLI, Codex, Windsurf, or any other Spec Kit agent | | nuget.org | init adds the default Nuvyntra packages at the latest stable versions | Nuvyn targets those four platforms. It is the wrong tool for Tizen, Flutter, React Native, WPF, WinUI, Avalonia, or Uno. dotnet tool install -g NuvyntraLabs.Nuvyn.Cli --source https://api.nuget.org/v3/index.json nuvyn version nuvyn version prints NuvyntraLabs.Nuvyn.Cli 1.2.0 . Already installed? Update the tool only. Existing apps keep the packages they already reference: dotnet tool update -g NuvyntraLabs.Nuvyn.Cli --source https://api.nuget.org/v3/index.json nuvyn version On an interactive terminal, nuvyn asks every four hours whether to update from nuget.org y/N , default no . Skip that prompt with --no-update-check or NUVYNTRA NO UPDATE CHECK=1 . The cache file is ~/.nuvyntra/cli-updates.json , shared with maui-dev and maui-perf . The CLIs do not phone home. nuvyn init