# Partial Pipelines

These are Buildkite pipelines intended to be inserted into other pipelines with
the `buildkite-agent pipeline upload` command. Standalone pipelines, which we
register with the Buildkite API, are stored in the main pipeline directory.
