Skip to content
Back to skills

1724 Cross References 18795abc

ASecurity

ExDoc auto-links identifiers written in backtick-delimited code spans. This reference covers every linking syntax available.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 1, 2026
devopsgoapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 1, 2026

npx -y skills add tools-only/X-Skills --skill 1724-cross-references_18795abc --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 1724 Cross References 18795abc?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 1724 Cross References 18795abc
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-1724-cross-references-18795abc/badge)](https://www.skillsdirectory.com/skills/tools-only-1724-cross-references-18795abc)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Cross-References and Linking

ExDoc auto-links identifiers written in backtick-delimited code spans. This reference covers every linking syntax available.

## Module Links

Reference another module by writing its name in backticks:

```elixir
@moduledoc """
See `MyApp.Accounts` for user management functions.
"""
```

If the module name collides with a local function or could be ambiguous, use the `m:` prefix:

```elixir
@doc """
Delegates to `m:MyApp.Accounts` for persistence.
"""
```

The `m:` prefix is also useful when linking to modules whose names look like function calls.

## Function Links

### Remote Functions (Other Modules)

```elixir
@doc """
Similar to `MyApp.Accounts.get_user/1` but raises on failure.
Accepts the same options as `MyApp.Accounts.list_users/2`.
"""
```

### Local Functions (Same Module)

Omit the module name to link to a function in the current module:

```elixir
@doc """
The bang variant of `fetch_config/1`. Raises `KeyError` if the key is missing.
"""
```

### Operators

```elixir
@doc """
Works like the `Kernel.<>/2` operator but for lists.
"""
```

### Function Arity

Always include the arity. `function/1` and `function/2` are distinct links:

```elixir
@doc """
See `transform/1` for the single-argument version, or
`transform/2` to pass options.
"""
```

## Type Links

Use the `t:` prefix to link to types:

```elixir
@doc """
Returns a `t:MyApp.Money.amount/0` representing the balance.

Accepts any `t:Enumerable.t/0` as input.
"""
```

For types in the same module:

```elixir
@doc """
Returns a `t:result/0` tuple.
"""
```

## Callback Links

Use the `c:` prefix to link to behaviour callbacks:

```elixir
@doc """
Invoked by the framework. See `c:GenServer.init/1` for details.

Implementations must satisfy `c:MyApp.PaymentGateway.charge/2`.
"""
```

## Erlang Module and Function Links

### Erlang Modules

Use `m:` with the atom syntax:

```elixir
@doc """
Uses `m::ets` for fast in-memory lookups.
"""
```

### Erlang Functions

Use the atom syntax directly:

```elixir
@doc """
Wraps `:erlang.system_info/1` to fetch VM metrics.

Delegates to `:timer.send_interval/2` for periodic messages.
"""
```

### Erlang Types

```elixir
@doc """
Returns a `t::erlang.reference/0`.
"""
```

## Custom Text Links

When you want link text that differs from the identifier, use markdown link syntax with a backtick-delimited destination:

```elixir
@doc """
Returns a [money amount](`MyApp.Money.amount/0`) in the given currency.

See the [payment gateway behaviour](`MyApp.PaymentGateway`) for the
full contract.

Read the [validation rules](`MyApp.Validation.validate/2`) for details.
"""
```

## Cross-Application References

Link to documentation in other Hex packages or OTP apps using `e:`:

```elixir
@doc """
Follows the patterns described in the
[Elixir writing documentation guide](`e:elixir:writing-documentation.html`).

See [Plug.Conn](`e:plug:Plug.Conn.html`) for the full struct reference.
"""
```

For functions in other apps:

```elixir
@doc """
Wraps [`Ecto.Repo.transaction/2`](`e:ecto:Ecto.Repo.html#c:transaction/2`).
"""
```

## Linking to Extra Pages

If your project includes extra markdown pages in the ExDoc configuration, link to them by filename:

```elixir
@moduledoc """
For deployment instructions, see the [Operations Guide](operations-guide.md).

Architecture decisions are documented in [ADR-001](adr/001-event-sourcing.md).
"""
```

## Summary of Prefixes

| Prefix | Links to | Example |
|--------|----------|---------|
| *(none)* | Module or function | `` `MyApp.Repo` ``, `` `fetch/1` `` |
| `m:` | Module (explicit) | `` `m:MyApp.Repo` `` |
| `t:` | Type | `` `t:String.t/0` `` |
| `c:` | Callback | `` `c:GenServer.init/1` `` |
| `e:` | Cross-app page | `` `e:elixir:writing-documentation.html` `` |

## Common Mistakes

```elixir
# BAD - missing arity
@doc "See `MyApp.Accounts.get_user` for details."

# GOOD - include arity
@doc "See `MyApp.Accounts.get_user/1` for details."

# BAD - using URL-style links for internal modules
@doc "See [MyApp.Accounts](https://hexdocs.pm/my_app/MyApp.Accounts.html)."

# GOOD - let ExDoc resolve the link
@doc "See `MyApp.Accounts`."

# BAD - linking to private functions (ExDoc will warn)
@doc "Uses `do_internal_parse/2` under the hood."

# GOOD - only link to public API
@doc "Uses an internal parser to process the input."
```

Files in this skill

  • README.md1 KB
  • skill.md4.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.