# geni resource create (/cli/resource/create)



```sh
geni resource create --type <code|agent|app|skill> [flags]
```

Creates a resource in the cloud and scaffolds its starting files into a directory, then drops a `.geni-resource.json` marker so later commands in that directory resolve the id automatically.

Load the matching [authoring skill](/cli/skills/load) first (`code-workflow`, `agent-workflow`, `app`, or `skill-authoring`) for the type contract and a worked example.

## Synopsis [#synopsis]

```sh
geni resource create --type code --name "Daily Digest"
geni resource create --type agent --name "Inbox Triage" --dir ./triage
geni resource create --type app --name "Customer Explorer"
geni resource create --type skill --name "Gmail Inbox Triage"
```

| Flag            | Notes                                                                                    |
| --------------- | ---------------------------------------------------------------------------------------- |
| `--type <type>` | Required. `code`, `agent`, `app`, or `skill`.                                            |
| `--name <name>` | Human-friendly name in Title Case. Defaults to "New Workflow" / "New App" / "New Skill". |
| `--dir <path>`  | Directory to scaffold into. Defaults to the current directory.                           |
| `--json`        | Machine-readable output.                                                                 |

For a skill, the starter `SKILL.md` frontmatter gets a slugified form of the name (`gmail-inbox-triage`); the cloud name re-syncs from that frontmatter on every publish.

The target directory must not already be a workflow directory (no existing `.geni-resource.json`). After creating, edit the files and run [`geni resource validate`](/cli/resource/validate).
