anchor.diff:  
   By default the pipeline upload step reads your pipeline definition from `.buildkite/pipeline.yml` in your repository. You can specify a different file path by adding it as the first argument:
   
  -<%= image "custom-pipeline-file.png", width: 1174/2, height: 452/2, alt: "Screenshot of a custom pipeline file upload" %>
  -
  -A common use for custom file paths is when separating test and deployment steps into two completely separate pipelines, both using the same repository URL. For example, your test pipeline’s upload command could be:
  +```yml
  +steps:
  +  - label: ":pipeline: Pipeline upload"
  +    command: buildkite-agent pipeline upload .buildkite/deploy.yml
  +```
  +
  +A common use for custom file paths is when separating test and deployment steps into two separate pipelines. Both `pipeline.yml` files are stored in the same repo and both Buildkite pipelines use the same repo URL. For example, your test pipeline’s upload command could be:
   
   ```
   buildkite-agent pipeline upload .buildkite/pipeline.yml
  
positive.code: # Defining Your Pipeline Steps
  
  Pipeline steps can be defined visually in Buildkite or, more powerfully, in code using a `pipeline.yml` file.
  
  Defining your pipeline steps in a `pipeline.yml` file gives you access to more configuration options than the web interface, and allows you to version, audit and review your build pipelines alongside your source code.
  
  {:toc}
  
  
negative.code: 
  <%= image "show-example-test.png", width: 968/2, height: 698/2, alt: "Screenshot of the build passing with pipeline upload step first, and then the example step" %>
  
  For more example steps and detailed configuration options, see the example `pipeline.yml` below, or the step type specific documentation: [command steps](/docs/pipelines/command-step), [wait steps](/docs/pipelines/wait-step), [block steps](/docs/pipelines/block-step), [input steps](/docs/pipelines/input-step), and [trigger steps](/docs/pipelines/trigger-step).
  
  If your pipeline has more than one step and you have multiple agents available to run them, they will automatically run at the same time. If your steps rely on running in sequence, you can separate them with [wait steps](/docs/pipelines/wait-step). This will ensure that any steps before the 'wait' are completed before steps after the 'wait' are run.
  
  When a step is run by an agent, it will be run with a clean checkout of the pipeline's repository. If your commands or scripts rely on the output from previous steps, you will need to either combine them into a single script or use [artifacts](/docs/pipelines/artifacts) to pass data between steps. This enables any step to be picked up by any agent and run steps in parallel to speed up your build.
  
  ## Example pipeline
  
  Here’s a more complete example based on [the Buildkite Agent’s build pipeline](https://github.com/buildkite/agent/blob/master/.buildkite/pipeline.yml). It contains script commands, wait steps, block steps, and automatic artifact uploading:
  
  ```yaml
  steps:
  