# uip rules init

> Syntax and options for `uip rules init`, which creates a Business Rules project seeded with one decision table and registers it in a solution.

`uip rules init` creates a Business Rules project seeded with one decision table. The project holds `project.uiproj`, `Business rule.dmn`, `entry-points.json`, and `bindings_v2.json`.

Where the project lands depends on the current directory:

- Inside an existing solution, the project is created at `./<name>` and added to that solution's `.uipx` manifest.
- Outside a solution, a parent solution named `<name>Solution` is created, and the project is created inside it at `./<name>Solution/<name>`.
- With `--skip-solution-registration`, the project is created at `./<name>` and is not registered in any solution.

## Synopsis

```
uip rules init <name> [--force] [--skip-solution-registration]
```

## Arguments

| Name | Required | Purpose |
|---|---|---|
| `<name>` | yes | Business Rules project name. Letters, numbers, underscores (`_`), and hyphens (`-`) only. |

## Options

| Long | Value | Default | Description |
|---|---|---|---|
| `--force` | flag | off | Initialize the project even if the target directory exists and is not empty. When the directory already holds a `.dmn` file, the existing rule files are left as they are and `RuleStatus` is `Preserved`. |
| `--skip-solution-registration` | flag | off | Do not register the project in the surrounding solution, and do not create a parent solution. `SolutionRegistration.Status` is `OptedOut`. |

## Example

```bash
# Create a project; outside a solution, a parent my-rules-projectSolution is created
uip rules init my-rules-project
```

## Data shape (--output json)

```json
{
  "Code": "RulesInit",
  "Data": {
    "Status": "Created successfully",
    "Path": "/workspace/my-rules-projectSolution/my-rules-project",
    "RuleStatus": "Created",
    "SolutionRegistration": {
      "Status": "Registered",
      "Message": "Project registered in parent solution.",
      "Solution": "/workspace/my-rules-projectSolution/my-rules-projectSolution.uipx",
      "Project": "my-rules-project/project.uiproj",
      "ProjectId": "00000000-0000-0000-0000-000000000000",
      "Instructions": "The project is listed in the parent solution manifest.\nPacking or uploading the solution will sync solution resources automatically."
    },
    "AutoCreatedSolution": {
      "Name": "my-rules-projectSolution",
      "Path": "/workspace/my-rules-projectSolution",
      "SolutionFile": "/workspace/my-rules-projectSolution/my-rules-projectSolution.uipx"
    },
    "ProjectArtifacts": { "Created": true },
    "NextSteps": "The project is listed in the parent solution manifest.\nPacking or uploading the solution will sync solution resources automatically."
  }
}
```

| Field | Description |
|---|---|
| `RuleStatus` | `Created` when the seeded decision table was written. `Preserved` when the project already held a `.dmn` file. |
| `SolutionRegistration.Status` | One of `Registered`, `AlreadyRegistered`, `Skipped`, `Failed`, `NotInSolution`, or `OptedOut`. |
| `AutoCreatedSolution` | Present only when `init` created the parent solution. |
| `ProjectArtifacts` | Present only when the project was registered in a solution. |
| `NextSteps` | Present only when the registration returned instructions. |

## Exit codes

Refer to [Exit codes](./exit-codes.md) for the shared contract. The command exits `1` when the name contains characters other than letters, numbers, underscores, and hyphens, or when the target directory exists and is not empty and `--force` is not passed.

## Related commands

- [`uip rules refresh`](./uip-rules-refresh.md) regenerates the entry points after you edit the `.dmn` file.
- [`uip rules validate`](./uip-rules-validate.md) checks the project.
- [`uip solution`](./uip-solution.md) packs, publishes, and deploys the solution that holds the project.

## See also

- [`uip rules`](./uip-rules.md) for the tool overview and project layout.
