> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowdeck.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate Project

> Generate the Xcode project an XcodeGen project.yml declares

Generate the `.xcodeproj` that an XcodeGen manifest (`project.yml`) declares, next to the manifest. XcodeGen is built into FlowDeck, so no separate install is needed. An unchanged manifest is a no-op, so running it again is cheap.

```bash theme={null}
# Generate from ./project.yml
flowdeck project generate

# Generate a project in another directory
flowdeck project generate --path ~/Code/MyApp

# Regenerate even when the manifest has not changed
flowdeck project generate --no-cache

# Machine-readable result
flowdeck project generate --json
```

## Project file format

A `project.yml` project keeps the format its `.xcodeproj` already has, and is generated as the classic `project.pbxproj` when there is no project yet. FlowDeck never converts a generated project to Xcode's JSON format (`project.xcproj`) on its own, so plain `xcodegen generate`, CocoaPods, and your own scripts keep working.

Pass `--project-format xcproj` to convert the generated project with the selected Xcode (27.2 or later). After that, keep regenerating with `flowdeck project generate`: plain `xcodegen generate` writes a `project.pbxproj` beside the existing `project.xcproj`, and Xcode refuses to open a project that holds both.

## Options

| Option | Short | Description |
| - | - | - |
| `--path <path>` | `-p` | Directory containing `project.yml` (default: current directory) |
| `--no-cache` | | Regenerate even when the manifest has not changed |
| `--project-format <format>` | | `pbxproj` or `xcproj`. Default: the existing project's format, otherwise `pbxproj` |
| `--json` | `-j` | Output as JSON |
| `--examples` | `-e` | Show usage examples |

## JSON Output

```json theme={null}
{
  "success": true,
  "regenerated": true,
  "projectPath": "/Users/me/Projects/MyApp/MyApp.xcodeproj",
  "projectFormat": "pbxproj"
}
```

`regenerated` is `false` when the manifest had not changed. `projectFormat` is absent when generation failed, and `projectFormatNote` explains why a project asked to be `xcproj` was kept classic.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.