Skip to content
Back to skills

Doc Link Convention

ASecurity

This skill should be used when writing or reviewing cross-file links inside Maigo source files (`agents/*.md`, `commands/*.md`, `skills/*/SKILL.md`). It enforces that cross-source links use absolute GitHub URLs — relative links break `mkdocs build --strict` because these files are dual-context (raw GitHub view + include-markdown shim into `docs/`).

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 19, 2026
documentationgogit

Security analysis

A100/100

Scanned October 19, 2026

npx -y skills add Lee-W/maigo --skill doc-link-convention --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Doc Link Convention?

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

Security grade badge for Doc Link Convention
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lee-w-doc-link-convention/badge)](https://www.skillsdirectory.com/skills/lee-w-doc-link-convention)

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
---
name: doc-link-convention
description: This skill should be used when writing or reviewing cross-file links inside Maigo source files (`agents/*.md`, `commands/*.md`, `skills/*/SKILL.md`). It enforces that cross-source links use absolute GitHub URLs — relative links break `mkdocs build --strict` because these files are dual-context (raw GitHub view + include-markdown shim into `docs/`).
---

<!-- mkdocs-include-start -->

# Doc Link Convention

**Owner Agent**: Soyo (Reviewer) — flagged at review-time when editing Maigo source.
**Consumers**: any task editing `agents/` / `commands/` / `skills/` in the Maigo repo.

## When to apply

Maigo's `agents/*.md`, `commands/*.md`, and `skills/*/SKILL.md` are **dual-context**:

- They are read raw on GitHub by contributors / `claude --plugin-dir`.
- They are also pulled into the docs site via `docs/{agents,commands,skills}/<name>.md` include-markdown shims.

A relative cross-source link works in one view but breaks the other.

## The rule

**Cross-source link → absolute GitHub URL. No exceptions.**

```markdown
[/maigo:remember](https://github.com/Lee-W/maigo/blob/main/commands/remember.md)
```

**Not:**

```markdown
[/maigo:remember](remember.md)                         <!-- ❌ relative -->
[/maigo:remember](../commands/remember.md)             <!-- ❌ relative -->
[/maigo:remember](/commands/remember.md)               <!-- ❌ root-relative -->
```

## Why a relative link breaks `mkdocs build --strict`

`include-markdown` defaults to `rewrite-relative-urls=true`. When it inlines
`commands/remember.md` into `docs/commands/remember.md`, it rewrites relative
URLs from the destination page's perspective. But the source path
(`commands/remember.md`) differs from the mkdocs page path
(`docs/commands/remember.md`, which is a shim), so the rewrite points at a
location mkdocs cannot resolve → `Aborted with N warnings in strict mode!`.

Absolute URLs are not rewritten by `include-markdown`, so both the GitHub
raw view and the mkdocs page resolve correctly.

Disabling `rewrite-relative-urls` is also wrong: cross-directory relative
links to *real* reference docs (e.g. `../docs/reference/memory.md`) rely on
the rewrite to become mkdocs-resolvable.

## Exception: links to real reference docs

When the link target is a real doc page under `docs/reference/` or
`docs/guides/` (**not** a shim), a relative link is correct because
`rewrite-relative-urls=true` will produce the right final URL:

```markdown
[Memory reference](../docs/reference/memory.md)
```

From a `commands/<x>.md` source file, that rewrites to `../reference/memory.md`
in `docs/commands/<x>.md` — which correctly points at `docs/reference/memory.md`.

| Link target type | Use |
|---|---|
| Another source file (`agents/*.md`, `commands/*.md`, `skills/*/SKILL.md`) | **Absolute GitHub URL** |
| Real reference doc (`docs/reference/*.md`, `docs/guides/*.md`) | Relative (`../docs/reference/foo.md`) |
| Same source file (anchor only) | Plain anchor (`#section-name`) |

## Review-time enforcement (Soyo)

When `strict-review` runs on a diff that touches `agents/`, `commands/`, or
`skills/*/SKILL.md` in the Maigo repo itself, append this rule as **base
checklist item 10**:

- Search the diff for `]\(` followed by anything that does **not** start with
  `http://` / `https://` / `#` / `../docs/`. If the link target is another
  source file → **must-fix** with改法: rewrite to
  `https://github.com/Lee-W/maigo/blob/main/<source-path>`.

This is only a checklist item when editing Maigo itself. Downstream projects
using Maigo as a plugin do not need this rule — it is specific to Maigo's
own dual-context publishing setup.

## What this skill does NOT cover

- Link targets *outside* the Maigo repo (use whatever the target convention is).
- The 6-step new-skill checklist — see [Skills reference](https://github.com/Lee-W/maigo/blob/main/docs/reference/skills.md#add-new-skill-checklist).
- mkdocs configuration itself — this skill assumes `rewrite-relative-urls=true`
  default and `--strict` build.

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.