> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dotbot.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Share workflows via enterprise registries

> Publish and install dotbot workflows, stacks, tools, and skills from a git-hosted registry, manage multiple registries, and author a registry.json manifest.

Enterprise registries let your team publish and share dotbot workflows, stacks, tools, skills, and agents through a standard git repository or a local directory. Any team member can link to your registry with a single command and then install content from it by name. Registries work with public and private git hosts, and local paths are available for inner-loop development.

## Add a registry

<Steps>
  <Step title="Register a remote git repository">
    Run `dotbot registry add` with a short name and the repository URL:

    ```powershell theme={null}
    dotbot registry add myorg https://github.com/myorg/dotbot-extensions.git
    ```

    dotbot clones the repository and validates `registry.json`. The name you provide (`myorg`) must match the `name` field inside `registry.json`, and dotbot exits with an error if they do not match. Pass `--branch <branch>` to clone a non-default branch, or `--force` to overwrite an existing registry with the same name.
  </Step>

  <Step title="Register a local path (optional)">
    Local paths are linked rather than cloned, so they always reflect the current state of the directory. Use this during development before pushing to a remote:

    ```powershell theme={null}
    dotbot registry add myorg C:\repos\myorg-dotbot-extensions
    ```
  </Step>
</Steps>

dotbot records each registered registry in a `registries.json` file in your dotbot home directory.

## List registries

See all registered registries and the content they declare:

```powershell theme={null}
dotbot registry list
```

The output shows each registry's name, source URL or path, and the workflows, stacks, tools, skills, and agents it provides.

## Install from a registry

Pass the registry name and content name separated by a colon:

```powershell theme={null}
dotbot init -Workflow myorg:custom-workflow
```

You can combine registry content with other flags to set up a full project in one command:

```powershell theme={null}
dotbot init -Workflow myorg:custom-workflow -Stack dotnet
```

## Update and remove registries

Pull the latest content from all registered registries:

```powershell theme={null}
dotbot registry update
```

Update a single registry by name, or remove one you no longer need:

```powershell theme={null}
dotbot registry update myorg
dotbot registry remove myorg
```

<Note>
  Local-path registries are linked rather than cloned, so they always reflect the current state of the local directory. Running `registry update` has no effect on local registries.
</Note>

## registry.json manifest

Place a `registry.json` at the root of your registry repository. dotbot validates this file during `registry add`:

```json registry.json theme={null}
{
  "name": "myorg",
  "display_name": "My Org Extensions",
  "description": "Shared workflows and stacks for the platform team",
  "version": "1.0.0",
  "min_dotbot_version": "3.5",
  "content": {
    "workflows": ["custom-workflow", "release-pipeline"],
    "stacks": ["my-stack"],
    "tools": ["internal-api-caller"],
    "skills": ["coding-standards"],
    "agents": []
  }
}
```

The `content` section can list `workflows`, `stacks`, `tools`, `skills`, `agents`, and `prompts`. Each declared item must have a matching directory in the registry repository. For example, `"workflows": ["custom-workflow"]` requires `workflows/custom-workflow/` to exist.

dotbot performs these checks during validation:

1. `registry.json` exists at the repository root.
2. The JSON parses without syntax errors.
3. The `name` field matches the name provided on the command line.
4. The `content` section lists at least one item.
5. Each declared item has a matching directory. A missing directory is a warning, not a fatal error.
6. `min_dotbot_version` is read and reported so you can confirm compatibility with your installed version.

## Authentication for private registries

If your registry is hosted on a private git repository, dotbot relies on your existing git credential configuration. When a clone fails because of an authentication error, dotbot prints provider-specific hints.

<Tabs>
  <Tab title="GitHub">
    ```powershell theme={null}
    gh auth login
    git credential-manager configure
    ```
  </Tab>

  <Tab title="Azure DevOps">
    ```powershell theme={null}
    az login
    git config credential.helper manager
    ```
  </Tab>

  <Tab title="GitLab">
    Add an SSH key to your GitLab account, or store a personal access token in `~/.netrc`:

    ```
    machine gitlab.com login <your-email> password <your-pat>
    ```
  </Tab>
</Tabs>

<Warning>
  Make sure your PAT or SSH key has at least read access to the registry repository. dotbot does not store credentials. It delegates entirely to your git credential helper.
</Warning>
