anchor.diff:  
   ## Creating Lifecycle hooks
   
  -Agent hooks are executed and can be written in any programming language.
  -
  -## Creating Step hooks
  -
  -Step hooks are shell scripts you can use to run commands and export environment
  -variables. Hooks have access to all the standard [Buildkite environment variables](/docs/pipelines/environment-variables).
  -
  -Step hooks are copied to `$TMPDIR` directory and *sourced* by the default shell
  -on the Agent that is running the build, which has a few implications:
  +Lifecycle hooks are executed and can be written in any programming language of
  +your choice. See the specific lifecycle hook documentation for details on the
  +interface between them and the Buildkite Agent.
  +
  +Lifecycle hooks are only executed from the [global hooks](#global-hooks)
  +directory.
  +
  +## Creating Job hooks
  +
  +Job hooks are shell scripts you can use to run commands and export environment
  +variables. Job hooks have access to all the standard
  +[Buildkite environment variables](/docs/pipelines/environment-variables).
  +
  +Job hooks are copied to `$TMPDIR` directory and *sourced* by the default shell
  +on the Agent that is running the build. This has a few implications:
   
   * `$BASH_SOURCE` contains the location the hook is sourced from
   * `$0` contains the location of the copy of the script that is running from `$TMPDIR`
   * the shebang line of the hook script has no effect
   
  -To write step hooks in another programming language, you need to call them from
  -within the shell script, and explicitly pass any Buildkite environment variables
  -you need to the script when you call it.
  +To write job hooks in another programming language, you need to execute them
  +from within the shell script, and explicitly pass any Buildkite environment
  +variables you need to the script when you call it.
   
   The following is an example of a custom `environment` hook which exports a
   GitHub API key for the pipeline’s release build step:
  
positive.code:   <tbody>
      <tr>
        <td style="white-space: nowrap"><code>pre-bootstrap</code></td>
        <td>Runs before a step’s job is started. Useful for <a href="/docs/agent/v3/securing#strict-checks-using-agent-hooks">adding strict checks</a> before jobs are permitted to run.</td></tr>
      <tr>
        <td style="white-space: nowrap"><code>agent-shutdown</code></td>
        <td>Runs when each agent shuts down. Useful for performing cleanup tasks
        for the entire agent, outside of the job lifecycle.</td></tr>
    </tbody>
  </table>
  
  ## Available Step hooks
  
  The following is a complete list of available step hooks, and the order in which
  they are run as part of each job:
  
  <table>
  
negative.code: export GITHUB_RELEASE_ACCESS_KEY='xxx'
  ```
  
  ## Job hooks on Windows
  
  Agents running on Windows require hook files to have either:
  
  * A `.bat` extension, and be written in [Windows Batch](https://en.wikipedia.org/wiki/Batch_file), or
  * Access to <a href="/docs/agent/v3/windows#git-for-windows">Git for Windows</a>, which includes bash
  