See More

# CLI > Every shellui-native command and option. Source: https://native.shellui.dev/docs/cli The CLI is a .NET global tool. Install or update it with: ```bash dotnet tool install -g ShellUI.Native.CLI --prerelease dotnet tool update -g ShellUI.Native.CLI --prerelease ``` Run every command from the folder that holds your project's `.csproj`. ## init Sets up ShellUI Native in the project: detects the platform, creates `Components/UI`, installs `Shell.cs` and writes `shellui-native.json`. On MAUI it also writes `Resources/Styles/ShellUITheme.xaml`. In a project that also uses ShellUI for Blazor (it has a `shellui.json`), the components go in `Components/Native` instead, so the two sets don't clash. The namespace follows the folder: `Components/UI` gives `YourApp.Components.UI`, `Components/Native` gives `YourApp.Components.Native`. ```bash shellui-native init [--yes] [--force] [--style default|minimal] ``` | Option | Description | |---|---| | `--yes` | Use the defaults without asking. | | `--force` | Initialise again in a project that's already set up. | | `--style` | `default` or `minimal`. Saved in `shellui-native.json`; it doesn't change the installed code yet. | ## add Copies components into `Components/UI`, with every component and helper they depend on. Adding a part, such as `dialog-trigger`, installs its whole family. The namespace in each file is replaced with your project's. ```bash shellui-native add [--force] ``` Separate names with spaces or commas: `shellui-native add button input card` or `shellui-native add button,input,card`. An unknown name gets suggestions: `shellui-native add donut` answers "Did you mean 'donut-chart'?". | Option | Description | |---|---| | `--force` | Overwrite components that are already installed (and your edits to them). | ## list Shows the components that have a template for the project's platform, with their category and whether they're installed. ```bash shellui-native list [--installed] [--available] ``` | Option | Description | |---|---| | `--installed` | Only installed components. | | `--available` | Only components that aren't installed yet. | ## remove Deletes each named component's file from `Components/UI` and drops it from `shellui-native.json`. Only that file goes: the parts and helpers it installed stay, since other components may use them. ```bash shellui-native remove ``` ## update Replaces installed components with the CLI's current templates. With no names, or with `--all`, it updates every installed component. Your edits to those files are overwritten, so commit first. ```bash shellui-native update shellui-native update --all ``` `add` never touches a file that's already in your project, so after updating the CLI a new component can land next to an older version of something it depends on. If it doesn't build, update that dependency: `date-range-picker` needs the current `calendar`, and `button-group` the current `button`. ## shellui-native.json `init` writes the project's configuration; `add` and `remove` keep `InstalledComponents` up to date. ```json { "Schema": "https://native.shellui.dev/schema.json", "Style": "default", "ComponentsPath": "Components/UI", "TargetPlatform": 1, "Theme": { "Enabled": true, "Style": "default", "SyncWithShellUI": true }, "InstalledComponents": [] } ```