# steps

The `steps` field is an ordered array of step objects. Atmos executes the steps in the order they appear.

```yaml
workflows:
  deploy:
    steps:
      - name: plan
        type: atmos
        command: terraform plan vpc
      - name: apply
        type: atmos
        command: terraform apply vpc -auto-approve
```

Each array item is a step — the unit of work Atmos runs, whether it executes a command or renders interactive UI. The `type` field selects step behavior. Fields such as `title`, `columns`, `prompt`, `retry`, and `timeout` are parameters on that same step object; they are not separate steps.

```yaml
steps:
  - name: building
    type: spin
    title: Building application
    command: npm run build
    timeout: 60s
```

In this example, `spin` is the value of `steps[].type`. The fields `title`, `command`, and `timeout` configure that `spin` step.

## Common Fields

- **`name`**
  Optional step identifier. Atmos generates names like 
  `step1`
   when omitted. Names are used by 
  `--from-step`
   and by templates such as 
  `{{ .steps.plan.value }}`
  .
- **`type`**
  Step behavior selector. Type 
  `atmos`
   is the default for command steps. See 
  [type](/workflows/steps/type)
  .
- **`command`**
  Command text for command-running step types such as 
  `atmos`
  , 
  `shell`
  , 
  `spin`
  , and 
  `container`
   run actions.
- **`stack`**
  Step-level stack override for 
  `type: atmos`
   steps.
- **`identity`**
  Step-level auth identity. See 
  [identity](/workflows/steps/identity)
  .
- **`env`**
  Step-level environment variables. See 
  [env](/workflows/steps/env)
  .
- **`working_directory`**
  Step-level working directory override. See 
  [working_directory](/workflows/steps/working-directory)
  .
- **`retry`**
  Retry policy for the step. See 
  [retry](/workflows/steps/retry)
  .
- **`output`**
  Step-level output mode override. See 
  [output](/workflows/steps/output)
  .
- **`show`**
  Step-level display settings override. See 
  [show](/workflows/steps/show)
  .
- **`outputs`**
  Declared outputs derived from the step result. See 
  [outputs](/workflows/steps/outputs)
  .

Type-specific fields are documented with [type](/workflows/steps/type).
