> ## Documentation Index
> Fetch the complete documentation index at: https://twenty-claude-cool-pascal-5ay683.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Scaffolding

> Generate entity files interactively with yarn twenty dev:add — objects, fields, views, logic functions, and more.

Instead of creating entity files by hand, use the interactive scaffolder:

```bash filename="Terminal" theme={null}
yarn twenty dev:add
```

It prompts you to pick an entity type and walks you through the required fields, then writes a ready-to-use file with a stable `universalIdentifier` and the correct `defineEntity()` call.

You can also pass the entity type directly to skip the first prompt:

```bash filename="Terminal" theme={null}
yarn twenty dev:add object
yarn twenty dev:add logicFunction
yarn twenty dev:add frontComponent
```

## Available entity types

| Entity type            | Command                                    | Generated file                          |
| ---------------------- | ------------------------------------------ | --------------------------------------- |
| Object                 | `yarn twenty dev:add object`               | `src/objects/<name>.ts`                 |
| Field                  | `yarn twenty dev:add field`                | `src/fields/<name>.ts`                  |
| Logic function         | `yarn twenty dev:add logicFunction`        | `src/logic-functions/<name>.ts`         |
| Front component        | `yarn twenty dev:add frontComponent`       | `src/front-components/<name>.tsx`       |
| Role                   | `yarn twenty dev:add role`                 | `src/roles/<name>.ts`                   |
| Skill                  | `yarn twenty dev:add skill`                | `src/skills/<name>.ts`                  |
| Agent                  | `yarn twenty dev:add agent`                | `src/agents/<name>.ts`                  |
| View                   | `yarn twenty dev:add view`                 | `src/views/<name>.ts`                   |
| Navigation menu item   | `yarn twenty dev:add navigationMenuItem`   | `src/navigation-menu-items/<name>.ts`   |
| Page layout            | `yarn twenty dev:add pageLayout`           | `src/page-layouts/<name>.ts`            |
| Page layout tab        | `yarn twenty dev:add pageLayoutTab`        | `src/page-layout-tabs/<name>.ts`        |
| Command menu item      | `yarn twenty dev:add commandMenuItem`      | `src/command-menu-items/<name>.ts`      |
| View field             | `yarn twenty dev:add viewField`            | `src/view-fields/<name>.ts`             |
| Connection provider    | `yarn twenty dev:add connectionProvider`   | `src/connection-providers/<name>.ts`    |
| Timeline activity type | `yarn twenty dev:add timelineActivityType` | `src/timeline-activity-types/<name>.ts` |

## What the scaffolder generates

Each entity type has its own template. For example, `yarn twenty dev:add object` asks for:

1. **Name (singular)** — e.g., `invoice`
2. **Name (plural)** — e.g., `invoices`
3. **Label (singular)** — auto-populated from the name (e.g., `Invoice`)
4. **Label (plural)** — auto-populated (e.g., `Invoices`)
5. **Create a view and navigation item?** — if you answer yes, the scaffolder also generates a matching view and sidebar link for the new object.

Other entity types have simpler prompts — most only ask for a name.

The `field` entity type is more detailed: it asks for the field name, label, type (from a list of all available field types like `TEXT`, `NUMBER`, `SELECT`, `RELATION`, etc.), and the target object's `universalIdentifier`.

## Custom output path

Use the `--path` flag to place the generated file in a custom location:

```bash filename="Terminal" theme={null}
yarn twenty dev:add logicFunction --path src/custom-folder
```
