Install or refresh the shared MkDocs Material style layer (Ink & Indigo on warm paper). Use when setting up or restyling a docs project.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add edjchapman/claude-code-config --skill mkdocs-style --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mkdocs Style?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/edjchapman-mkdocs-style)More formats (shields.io, HTML) on the badges page.
---
name: mkdocs-style
description: Install or refresh the shared MkDocs Material style layer (Ink & Indigo on warm paper). Use when setting up or restyling a docs project.
argument-hint: "[--css-dest <path>] [--check]"
---
Install or update the shared MkDocs style layer in the current project, then
reconcile the project's `mkdocs.yml` with it.
## Arguments
`$ARGUMENTS`
- `--css-dest <path>` — where `custom.css` lands, relative to the project root.
Only needed for non-standard layouts; see step 2.
- `--check` — report drift only: dry-run the installer and diff the vendored
files against the payload. Make no changes.
## How the layer works
The canonical assets live in the claude-code-config repo under `tooling/mkdocs/`:
a partial parent config (`mkdocs.style.yml`: theme, features, palette, fonts,
markdown_extensions, `extra_css`, `extra.generator: false`) and the palette
stylesheet (`custom.css`). A project consumes them via MkDocs native config
inheritance — `INHERIT: mkdocs.style.yml` at the top of its `mkdocs.yml`.
MkDocs merges the child config **onto** the parent: mappings merge per-key
(child wins), but **lists replace wholesale**. So the project must not redefine
`theme.features`, `theme.palette`, `theme.font`, `markdown_extensions`, or
`extra_css` — unless it deliberately owns the whole list (and then `extra_css`
must still include `stylesheets/custom.css`). Per-project branding keys
(`theme.favicon`, `theme.logo`, `theme.icon.logo`) merge safely and stay in the
project.
## Steps
1. Resolve the config repo: `CONFIG_REPO="$(dirname "$(readlink ~/.claude/skills)")"`
(the skills directory is a symlink into the repo). Run
`git -C "$CONFIG_REPO" pull --ff-only` first so the payload is current.
2. Determine the css destination if `--css-dest` was not given:
- Default: `docs/stylesheets/custom.css`.
- Generated-docs projects (e.g. a `scripts/build-docs-tree.sh` that symlinks
assets into a git-ignored `docs/`): use the committed source directory that
is exposed as `stylesheets/` in the docs tree (career-portfolio:
`mkdocs-theme/stylesheets/custom.css`).
3. Run the installer:
`"$CONFIG_REPO/scripts/install-mkdocs-style.sh" --target . [--css-dest <path>]`
(add `--dry-run` under `--check`, then also `diff` the two vendored files
against the payload and report; stop here in check mode).
4. Reconcile `mkdocs.yml` — the judgment work the script only warns about:
- Delete keys now owned by the parent: `theme.name`, `theme.features`,
`theme.palette`, `theme.font`, `theme.icon.repo`, the whole
`markdown_extensions` block, `extra_css` (unless the project needs extra
stylesheets — then keep it as a deliberate whole-list override with
`stylesheets/custom.css` first and a comment saying so), and
`extra.generator`.
- Keep: `INHERIT`, site metadata, plugins, nav, `extra.social`/`extra.tags`,
validation, docs_dir/site_dir, dev_addr, and branding keys
(`theme.favicon`, `theme.logo`, `theme.icon.logo`).
- Delete any superseded palette CSS the project carried before.
- Check logo/favicon contrast: the light header is warm paper (`#faf8f3`) —
a white or very light logo asset becomes invisible. Prefer
`theme.icon.logo` with a Material icon (inline SVG, `currentColor`, adapts
to both schemes) over a fixed-colour image.
- If the project's content might use `--8<--` literally, grep for it —
`pymdownx.snippets` in the shared layer activates include syntax.
5. Verify:
- Strict build via the project's own entry point (`make check`, `make ci`,
`make docs-build`, or `uv run mkdocs build --strict`).
- Spot-check the merged config:
`uv run python -c "from mkdocs.config import load_config; c = load_config(); print(c['theme'].name, len(c['markdown_extensions']))"`
- Show `git diff --stat` and summarise what changed visually (palette,
features gained/lost) so the user can sign off.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!