# @mwillbanks/tuil-cli

Source: /tuil/docs/reference/packages/cli
Locale: en

CLI for initializing tuil applications and installing source-owned registry items and skills.



## Overview [#overview]

CLI for initializing tuil applications and installing source-owned registry items and skills.

`@mwillbanks/tuil-cli` is independently installable and also participates in the
umbrella `@mwillbanks/tuil` runtime where applicable.

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npm install @mwillbanks/tuil-cli
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm add @mwillbanks/tuil-cli
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn add @mwillbanks/tuil-cli
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun add @mwillbanks/tuil-cli
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## How it operates [#how-it-operates]

The CLI validates configuration, resolves registry dependency graphs, plans every write, and only then applies source-owned files. Initializers and installers share the same conflict-safe transaction boundary.

<Mermaid
  chart="flowchart LR
  S0[&#x22;arguments&#x22;]
  S1[&#x22;validation&#x22;]
  S2[&#x22;plan&#x22;]
  S3[&#x22;conflict check&#x22;]
  S4[&#x22;write&#x22;]
  S5[&#x22;receipt&#x22;]
  S0 --> S1
  S1 --> S2
  S2 --> S3
  S3 --> S4
  S4 --> S5"
/>

## API [#api]

| API                                                                               | Signature                       | Description                           |
| --------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------- |
| [`InitAnswers`](/tuil/docs/reference/packages/cli/api/init-answers)                    | `export InitAnswers`            | Public export InitAnswers.            |
| [`InitWizard`](/tuil/docs/reference/packages/cli/api/init-wizard)                      | `export InitWizard`             | Public export InitWizard.             |
| [`installBundledSkills`](/tuil/docs/reference/packages/cli/api/install-bundled-skills) | `function installBundledSkills` | Public function installBundledSkills. |
| [`main`](/tuil/docs/reference/packages/cli/api/main)                                   | `function main`                 | Public function main.                 |
| [`RegistryItem`](/tuil/docs/reference/packages/cli/api/registry-item)                  | `export RegistryItem`           | Public export RegistryItem.           |
| [`RegistryItemType`](/tuil/docs/reference/packages/cli/api/registry-item-type)         | `export RegistryItemType`       | Public export RegistryItemType.       |

## Events and lifecycle [#events-and-lifecycle]

The CLI does not publish runtime events. It reports deterministic command results and actionable errors to the invoking process.

All subscriptions and registrations return a disposer or belong to an owning
runtime that disposes them in reverse order.

## Example [#example]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx @mwillbanks/tuil create my-terminal-app
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx @mwillbanks/tuil create my-terminal-app
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx @mwillbanks/tuil create my-terminal-app
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x @mwillbanks/tuil create my-terminal-app
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Related [#related]

* [Package architecture](/tuil/docs/concepts/packages)
* [Events](/tuil/docs/concepts/events)
* [Testing](/tuil/docs/guides/testing)
