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

# Context

> Discover workspace, schemes, simulators, and build configs

Use `context` to inspect a project and output all available build options.

```bash theme={null}
# Show project context (human readable)
flowdeck context

# JSON output for agents/automation
flowdeck context --json

# Point to a specific project directory
flowdeck context --project /path/to/project
```

## Options

| Option             | Short | Description         |
| ------------------ | ----- | ------------------- |
| `--project <path>` | `-p`  | Project directory   |
| `--json`           | `-j`  | Output as JSON      |
| `--examples`       | `-e`  | Show usage examples |

## JSON Output

When the project has a saved workspace selection (via `flowdeck config set`), the
top-level fields describe **that** workspace, and `projects[]` lists **every**
discovered workspace inside the project root with its own schemes,
configurations, and simulators.

```json theme={null}
{
  "schema": "flowdeck.context",
  "schemaVersion": "1.1.0",
  "workspace": "iOS/MyApp.xcodeproj",
  "schemes": [
    {
      "name": "MyApp",
      "category": "iOS",
      "platform": "iOS",
      "defaultConfiguration": "Debug",
      "actionConfigurations": ["Debug", "Release"],
      "availableConfigurations": ["Debug", "Release", "Staging"]
    }
  ],
  "buildConfigurations": ["Debug", "Release"],
  "derivedDataPath": "/Users/you/Library/Developer/FlowDeck/DerivedData/...",
  "simulators": [
    {"name": "iPhone 16", "udid": "...", "platform": "iOS", "osVersion": "18.0", "state": "Shutdown"}
  ],
  "projects": [
    {
      "workspace": "iOS/MyApp.xcodeproj",
      "schemes": [
        {
          "name": "MyApp",
          "category": "iOS",
          "platform": "iOS",
          "defaultConfiguration": "Debug",
          "actionConfigurations": ["Debug", "Release"],
          "availableConfigurations": ["Debug", "Release", "Staging"]
        }
      ],
      "buildConfigurations": ["Debug", "Release"],
      "derivedDataPath": "/Users/you/Library/Developer/FlowDeck/DerivedData/..."
    },
    {
      "workspace": "test/IntegrationTests.xcodeproj",
      "schemes": [
        {
          "name": "IntegrationTests",
          "category": "Tests",
          "platform": "iOS",
          "defaultConfiguration": "Debug",
          "actionConfigurations": ["Debug", "Release"],
          "availableConfigurations": ["Debug", "Release"]
        }
      ],
      "buildConfigurations": ["Debug", "Release"],
      "derivedDataPath": "/Users/you/Library/Developer/FlowDeck/DerivedData/..."
    }
  ]
}
```

When **no** saved workspace exists yet (discovery mode), the top-level
`workspace`/`schemes`/`buildConfigurations`/`simulators` fields are absent and
the response wraps the per-workspace list with onboarding metadata:

```json theme={null}
{
  "schema": "flowdeck.context",
  "schemaVersion": "1.1.0",
  "mode": "discovery",
  "projectPath": "/path/to/project",
  "requiresConfiguration": true,
  "multipleProjectsFound": true,
  "discoveredCount": 2,
  "message": "No saved config found. Multiple projects/workspaces were discovered (2)…",
  "projects": [
    {
      "workspace": "iOS/MyApp.xcodeproj",
      "schemes": [...],
      "buildConfigurations": [...],
      "simulators": [...],
      "derivedDataPath": "..."
    },
    {
      "workspace": "test/IntegrationTests.xcodeproj",
      "schemes": [...],
      "buildConfigurations": [...],
      "simulators": [...],
      "derivedDataPath": "..."
    }
  ]
}
```

The `projects[]` array is the canonical way to enumerate every workspace and
its scheme list in a single call — useful for monorepos that ship multiple
`.xcodeproj` / `.xcworkspace` bundles, and for tools (the FlowDeck macOS app,
agents) that need to flip between workspaces without making a second CLI
roundtrip.

The top-level response includes:

* `schema`: the output contract identifier, currently `flowdeck.context`
* `schemaVersion`: the version for that specific output contract, currently `1.1.0`

Each scheme now exposes three configuration views:

* `defaultConfiguration`: the scheme's `LaunchAction.buildConfiguration`
* `actionConfigurations`: the unique union of config names referenced by the scheme actions
* `availableConfigurations`: the ordered configuration list from the primary buildable target's `XCConfigurationList`, which is the closest match to Xcode's Edit Scheme picker
