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

# aspect axl add

> Add an AXL module from a GitHub release to MODULE.aspect, with the archive's integrity hash computed for you.

`aspect axl add` adds an AXL module from a GitHub release to your `MODULE.aspect`. It downloads the release archive, computes its SHA-512 integrity, and appends the `axl_archive_dep` entry.

```shell theme={null}
aspect axl add gh:aspect-build/rules_lint            # the latest release
aspect axl add gh:aspect-build/rules_lint@latest     # the same
aspect axl add gh:aspect-build/rules_lint@v2.0.0     # a specific tag
```

The spec is `gh:OWNER/REPO[@VERSION]`. GitHub is the only source it supports. A version that has a tag but no GitHub release is still accepted.

It appends an entry like this to the `MODULE.aspect` at the Aspect root, creating the file if there isn't one:

```python title="MODULE.aspect" theme={null}
axl_archive_dep(
    name = "rules_lint",
    urls = ["https://github.com/aspect-build/rules_lint/archive/refs/tags/v2.0.0.tar.gz"],
    integrity = "sha512-...",
    strip_prefix = "rules_lint-2.0.0",
    auto_use_tasks = True,
    dev = True,
)
```

The module name is the repository name, lowercased, with hyphens turned into underscores. What each field means is in [Use external AXL modules](/docs/cli/guides/module).

## Options

| Flag            | Default             | What it does                                                                          |
| --------------- | ------------------- | ------------------------------------------------------------------------------------- |
| positional spec | required            | `gh:OWNER/REPO`, optionally with `@latest` or `@<tag>`                                |
| `--name <name>` | the repository name | The module name to declare, for when the default collides with an existing dependency |
| `--yes`         | off                 | Skip the confirmation prompt                                                          |

When adding the latest release on a terminal, the command shows the release's tag, author and integrity and asks before writing. A pinned `@<tag>` and non-interactive runs skip the prompt.

It refuses to add a module whose name is already declared in `MODULE.aspect`. Pass `--name` to declare it under another name, or remove the existing entry first.
