anchor.diff:  
   ### Anatomy of a plugin
   
  -Plugins are essentially a collection of hooks with extra configuration. The agent parses the plugin configuration and passes it on to the plugin in a slightly normalized form, both as JSON or environment variables.
  +Plugins are essentially a collection of hooks with extra configuration. The agent passes the plugin configuration from the pipeline.yml to the plugin hooks as environment variables.
   
  -This means that you can write a plugin as a shell script, or as a binary.
  +A good example is the [docker plugin], which runs a command within a docker container. The pipeline invocation of this plugin looks like:
   
  -A plugin has a `plugin.yml` at it's root that describes what it does, the executables required on the agent machine, and a schema of the plugin’s configuration options:
  +```yml
  +steps:
  +  - command: yarn install && yarn run test
  +    plugins:
  +      docker#v1.0.0:
  +        image: node
  +        workdir: /app
  +```
  +
  +In its root directory the plugin has a `plugin.yml` that describes what it does, the executables required on the agent machine, and a [schema](#plugin-tools) of the plugin’s configuration options:
   
   ```yml
   name: Docker
  
positive.code:       type: string
    required:
      - image
  ```
  
  The plugin’s hook scripts exist under `hooks/`.
  
  A good example is the [docker plugin], which runs a command within a docker container.
  
  The pipeline invocation of this plugin looks like:
  
  ```yml
  steps:
    - command: yarn install && yarn run test
      plugins:
        docker#v1.0.0:
          image: node
          workdir: /app
  ```
  
  The (simplified) logic of the [command hook][hooks] script in `hooks/command`:
  
  ```bash
  #!/bin/bash
  
negative.code:         run: app
  ```
  
  ## Plugin sources
  
  If you refer to a plugin just by name (say `detect-clowns`), it defaults to
  