# outputs

The step-level `outputs` field declares named outputs derived from a step's result, so later steps and templates can reference structured values from it.

```yaml
steps:
  - name: build
    type: container
    action: build
    build:
      context: .
      tags:
        - app:local
    outputs:
      image: "{{ .metadata.image }}"

  - name: smoke
    type: container
    action: run
    run:
      image: "{{ .steps.build.outputs.image }}"
      command: uname -a
```

Later steps can read declared outputs with `{{ .steps.<name>.outputs.<key> }}`.

## Step Result Context

Templates can access prior step results:

- **`{{ .steps.<name>.value }}`**
  Primary value from the step.
- **`{{ .steps.<name>.values }}`**
  Array of values, used by multi-select steps.
- **`{{ .steps.<name>.metadata.<key> }}`**
  Metadata such as stdout, stderr, exit code, image, or digest when available.
- **`{{ .steps.<name>.outputs.<key> }}`**
  Declared output value.
- **`{{ .steps.<name>.skipped }}`**
  Whether the step was skipped.
- **`{{ .steps.<name>.error }}`**
  Error message if the step failed.
