zensical
Helps manage Zensical documentation sites, including configuration in toml and site navigation.
Install
mkdir -p .claude/skills/zensical && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10790" && unzip -o skill.zip -d .claude/skills/zensical && rm skill.zipInstalls to .claude/skills/zensical
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
> **Scope**: Gives GitHub Copilot precise knowledge of the Zensical documentation setup in > this repository so it can make correct edits to `zensical.toml`, add pages, adjust navigation, > and help with theming without ever reverting to the legacy MkDocs workflow.Key capabilities
- →Update site configuration
- →Add documentation pages
- →Adjust navigation
How it works
It manages documentation via zensical.toml and the zensical CLI, replacing legacy MkDocs.
Inputs & outputs
When to use zensical
- →Update site configuration
- →Add new documentation pages
- →Adjust documentation navigation
About this skill
Zensical Skill – CDM Platform Docs
Scope: Gives GitHub Copilot precise knowledge of the Zensical documentation setup in this repository so it can make correct edits to
zensical.toml, add pages, adjust navigation, and help with theming without ever reverting to the legacy MkDocs workflow.
1. What is Zensical?
Zensical is a modern static-site generator that is the successor to MkDocs + Material for
MkDocs. Configuration is in TOML (zensical.toml), not YAML. The output is a static
site/ directory identical in structure to MkDocs output, so the same GitHub Pages deployment
pipeline works.
| Property | Value |
|---|---|
| Package | zensical (PyPI) |
| Version | >=0.0.23 (see docs/requirements.txt) |
| Config file | zensical.toml (repo root) |
| Docs source | docs/ |
| Build output | site/ (.gitignore-d) |
| CLI | python3 -m zensical build --clean |
| Serve locally | python3 -m zensical serve |
Never create or restore a
mkdocs.yml— it was intentionally deleted. All doc tooling must usezensical.tomland thezensicalCLI.
2. Configuration file (zensical.toml)
The file lives at the repo root (zensical.toml).
2.1 Top-level [project] keys
| Key | Type | Purpose |
|---|---|---|
site_name | string | Title in browser tab + header |
site_description | string | <meta name="description"> for SEO |
site_author | string | <meta name="author"> |
site_url | string | Canonical URL (important for sitemap) |
repo_url | string | Shown as repo link in header |
repo_name | string | Display name for the repo link |
edit_uri | string | GitHub edit-page URI prefix |
docs_dir | string | Source directory (default docs) |
copyright | string | HTML fragment shown in footer |
nav | array of tables | Explicit navigation tree (optional) |
extra_css | string array | Extra CSS files relative to docs_dir |
extra_javascript | string array | Extra JS files relative to docs_dir |
2.2 Navigation syntax
Navigation is defined as a TOML array of inline tables, mixing leaves (page) and nested sections. Every navigation entry is a one-key inline table.
nav = [
{ "Home" = "index.md" }, # leaf page
{ "Installation" = [ # section
{ "Overview" = "installation/index.md" },
{ "Provider Stack" = "installation/provider-stack.md" },
]},
]
- Paths are relative to
docs_dir. - Sections can be nested arbitrarily.
- If
navis omitted Zensical derives structure from the directory tree.
2.3 Theme section
[project.theme]
language = "en" # locale for UI labels
# variant = "classic" # uncomment for traditional Material look
features = [...] # list of feature toggle strings (see §2.4)
[[project.theme.palette]] # light palette (TOML array-of-tables)
scheme = "default"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"
[[project.theme.palette]] # dark palette
scheme = "slate"
toggle.icon = "lucide/moon"
toggle.name = "Switch to light mode"
[project.theme.icon] # optional icon overrides
logo = "lucide/cpu"
repo = "fontawesome/brands/github"
[project.theme.font] # optional font overrides (Google Fonts)
text = "Inter"
code = "JetBrains Mono"
2.4 Active feature toggles (CDM)
The following features are currently enabled in zensical.toml:
content.action.edit → "Edit this page" button (uses edit_uri)
content.action.view → "View source" button
content.code.annotate → code annotations with tooltips
content.code.copy → copy-to-clipboard button in code blocks
content.code.select → line-range selection in code blocks
content.footnote.tooltips → inline footnote hover tooltips
content.tabs.link → linked content tabs (all same-label tabs switch together)
content.tooltips → improved link tooltips
navigation.footer → prev/next page links in footer
navigation.indexes → section index pages (section title links to index.md)
navigation.instant → SPA-style client-side navigation
navigation.instant.prefetch → prefetch on link hover
navigation.path → breadcrumb above page title
navigation.sections → top-level sections as sidebar groups
navigation.tabs → top-level sections as horizontal tabs (≥1220 px)
navigation.tabs.sticky → sticky tabs
navigation.top → back-to-top button
navigation.tracking → URL hash = active anchor
search.highlight → highlight search terms after following a result
2.5 Social links
[[project.extra.social]]
icon = "fontawesome/brands/github"
link = "https://github.com/the78mole/complete-device-management"
3. Markdown features
Zensical supports the same Markdown extensions as MkDocs + Material without explicit
markdown_extensions configuration. All of the following work out of the box:
| Feature | Syntax |
|---|---|
| Admonitions | !!! note, !!! warning, !!! tip, !!! info, !!! danger |
| Collapsible admonitions | ??? note "Title" |
| Mermaid diagrams | ```mermaid fenced code block |
| Code highlighting | fenced blocks with language tag, e.g. ```python |
| Code annotations | # (1) inside code + 1. Explanation below |
| Content tabs | === "Tab A" / === "Tab B" |
| Task lists | - [x] done, - [ ] todo |
| Tables | GitHub Flavored Markdown tables |
| Footnotes | [^1] / [^1]: text |
| Table of contents | automatic, ## headings generate anchors |
| Attribute lists | { .class #id } after elements |
| Emoji/icons | :material-check:, :fontawesome-brands-github:, :lucide-cpu: |
No
markdown_extensionssection needed — Zensical handles all of this automatically.
4. GitHub Actions deployment
File: .github/workflows/docs.yml
The workflow:
- Installs Zensical via
pip install -r docs/requirements.txt - Runs
zensical build(clean build) - Uploads
site/as a GitHub Pages artifact - Deploys to GitHub Pages on pushes to
main
- name: Install Zensical
run: pip install -r docs/requirements.txt
- name: Build
run: zensical build
docs/requirements.txtpinszensical>=0.0.23. Update this line to bump the version.
5. Current documentation structure
docs/
├── index.md # Home
├── NOTES.md # Not in nav (internal notes)
├── installation/
│ ├── index.md # Installation overview
│ ├── provider-stack.md # Provider-Stack setup
│ ├── tenant-stack.md # Tenant-Stack setup
│ ├── device-stack.md # Device-Stack setup
│ └── cloud-infrastructure.md # Legacy (not in nav, kept for reference)
├── getting-started/
│ ├── index.md
│ ├── first-device.md
│ └── first-ota-update.md
├── architecture/
│ ├── index.md
│ ├── stack-topology.md
│ ├── pki.md
│ ├── iam.md
│ └── data-flow.md
├── workflows/
│ ├── device-provisioning.md
│ ├── ota-updates.md
│ ├── remote-access.md
│ └── monitoring.md
└── use-cases/
├── index.md
├── tenant-onboarding.md
├── fleet-management.md
├── security-incident-response.md
└── troubleshooting.md
Pages not listed in nav are still built; they just don't appear in the sidebar.
6. Common tasks
Add a new page
- Create
docs/<section>/new-page.md - Add an entry to
navinzensical.toml:{ "My New Page" = "<section>/new-page.md" }, - Run
python3 -m zensical build --cleanto verify.
Add a new top-level section
nav = [
...
{ "New Section" = [
{ "Overview" = "new-section/index.md" },
{ "Detail" = "new-section/detail.md" },
]},
]
Enable an additional feature toggle
Add the feature string to the features list in [project.theme]:
features = [
...
"navigation.expand", # ← new: expand all nav sections by default
]
Change the color palette
[project.theme]
# use "classic" for traditional Material for MkDocs look
variant = "classic"
[[project.theme.palette]]
scheme = "default"
primary = "indigo"
accent = "indigo"
toggle.icon = "lucide/sun"
toggle.name = "Switch to dark mode"
Add extra CSS
[project]
extra_css = ["stylesheets/extra.css"]
Then create docs/stylesheets/extra.css.
Build and preview locally
# Build once
python3 -m zensical build --clean
# Live-reload dev server
python3 -m zensical serve
# → serves on http://127.0.0.1:8000
7. Migration notes (from MkDocs)
The CDM docs were migrated from MkDocs + Material for MkDocs to Zensical in February 2026 because MkDocs 2.0 broke compatibility with Material for MkDocs.
| MkDocs concept | Zensical equivalent |
|---|---|
mkdocs.yml | zensical.toml |
site_name: (YAML) | site_name = "…" (TOML) |
theme.features: list | features = […] in [project.theme] |
theme.palette: list | [[project.theme.palette]] TOML array-of-tables |
nav: list of {Title: file} | nav = [{ "Title" = "file.md" }, …] |
extra.social: | [[project.extra.social]] |
markdown_extensions: | Not needed (all extensions built-in) |
plugins: - search | Built-in, no config needed |
!!python/name:… Jinja2/Python hooks | Not supported; use standard Markdown |
run: mkdocs build | run: zensical build |
When not to use it
- →MkDocs workflow
- →YAML configuration
Prerequisites
Limitations
- →No support for mkdocs.yml
How it compares
It uses TOML configuration and a modern CLI instead of the deprecated MkDocs workflow.
Compared to similar skills
zensical side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| zensical (this skill) | 0 | 5mo | Review | Intermediate |
| doc | 0 | 3mo | Review | Intermediate |
| richpdf | 0 | 3mo | Review | Intermediate |
| document-pro | 0 | 3mo | No flags | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by the78mole
View all by the78mole →You might also like
doc
ansys
Write, review, or edit PyMechanical documentation. Use when writing reStructuredText (RST) files, Python docstrings, Sphinx configurations, example scripts, README files, or any doc content for the PyMechanical library. This covers NumPy docstrings, RST file formatting, Google developer style guide
richpdf
0r1xByte
>
document-pro
bighardperson
文档处理技能 - 让 AI 能够读取、解析、提取 PDF、DOCX、PPT 等文档的关键信息。当用户要求分析文档、提取内容、总结报告时触发此技能。
feature-doc-updates
liudger
Ensure README and documentation are updated when adding features in python-bsblan. Use when implementing new behavior, parameters, API surface changes, or user-visible capabilities.
repo-markdown-quality
ventura8
______________________________________________________________________
pdf-creator
seaworld008
Create PDF documents from markdown with proper Chinese font support using weasyprint. This skill should be used when converting markdown to PDF, generating formal documents (legal, trademark filings, reports), or when Chinese typography is required. Triggers include "convert to PDF", "generate PDF",