Custom tag templates moved from fragments/tags/{layout}/ to fragments/tags/{layout}-tag.html and fragments/tags/{layout}-listing.html (flattened directory structure)
Requires Significant Effort
Feature
Status
Notes
Post-build scripts
Custom
Node.js/Python scripts that modify built HTML need porting
Deep MkDocs internals
Custom
Plugins that monkey-patch MkDocs classes
Custom extensions
Custom
Python markdown extensions with MkDocs-specific logic
MkDocs Plugin Migration Guide
MkDocs plugins are not compatible with DocsForge. Below is a mapping of common MkDocs plugins to their DocsForge equivalents or workarounds.
Built-in (Zero Effort)
These MkDocs plugins have direct built-in equivalents in DocsForge — remove from plugins: and they load automatically:
MkDocs Plugin
DocsForge
Notes
search
Built-in
Lunr.js search, same behavior. Remove from config.
tags
Built-in
Same tags: front matter, same tag pages. Remove from config.
blog
Built-in
Blog with authors, categories, archives, RSS. Remove from config.
Not supported. Export notebooks to Markdown first.
mkdocs-swagger-ui-tag
Not supported. Use a custom plugin or embed Swagger UI HTML directly.
Custom MkDocs Plugins
Plugins that extend MkDocs' BasePlugin class or hook into MkDocs events (on_page_markdown, on_page_content, etc.) need to be rewritten for DocsForge's plugin system:
DocsForge uses the same event names (on_page_markdown, on_post_build, etc.) — many MkDocs plugins can be adapted by changing the import from mkdocs.plugins to docsforge.core.plugin_base.
The config schema uses DocsForge's Config class instead of MkDocs' BaseConfig.
All MkDocs-compatible Markdown extensions work directly. DocsForge uses the same python-markdown package with pymdown-extensions. Copy your markdown_extensions: block as-is:
markdown_extensions:-admonition-pymdownx.superfences-pymdownx.tabbed:alternate_style:true-pymdownx.tasklist:custom_checkbox:true# ... all your existing extensions work unchanged
The 31 most common extensions are already pre-enabled — you only need to list them if you want custom configuration.
Config Key Migration
MkDocs / Material Key
DocsForge
Notes
mkdocs.yml
docsforge.yml
Rename the file
theme.name: material
theme.name: material
Same — DocsForge bundles Material
theme.features
theme.features
Same — all Material features supported
theme.palette
theme.palette
Same — color scheme configuration
theme.font
theme.font
Same — font configuration
theme.favicon
theme.favicon
Same — relative to docs_dir
theme.logo
theme.logo
Same — relative to docs_dir
theme.icon.logo
theme.icon.logo
Same — Material icon reference
markdown_extensions
markdown_extensions
Same — fully compatible
plugins
plugins
Partial — built-in plugins work; third-party need porting
extra_css
extra_css
Same
extra_javascript
extra_javascript
Same
extra
extra
Same — custom template variables
site_dir
site_dir
Same
docs_dir
docs_dir
Same
hooks
hooks
Same — but MkDocs hook format may differ
INHERIT
❌ Not supported
Use YAML anchors instead
validation
validation
Same
watch
watch
Same — extra paths to watch during serve
Deprecated / Removed Keys
Key
Status
Replacement
strict
Supported
Use strict: true in config or docsforge build --strict on the CLI
config_file_path
Internal
Not needed in user config
site_description
Supported
Same key
site_author
Supported
Same key
copyright
Supported
Same key
repo_url
Supported
Same key
repo_name
Supported
Same key
edit_uri
Supported
Same key
remote_branch
❌ Removed
Use GitHub Actions for deployment
remote_name
❌ Removed
Use GitHub Actions for deployment
use_directory_urls
Supported
Same key (default: true)
dev_addr
Supported
Same key (default: 127.0.0.1:8000)
site_url
Required
Must be set for social cards, sitemap, RSS
OI Wiki uses several advanced features. Here's how each maps:
OI Wiki Feature
DocsForge Equivalent
Effort
hooks/on_env.py (nav_math filter)
Custom plugin or hook
Medium
toggle-sidebar plugin
Theme customization
Low
document-offsets-injection extension
Built-in or custom plugin
Medium
extra: disqus
Disqus integration (manual)
Low
extra: pagetime
Built-in git date display
None
_static/css/extra.css
extra_css — direct copy
None
_static/js/math-csr.js
extra_javascript — direct copy
None
MathJax external CDN
Built-in KaTeX or MathJax
Low
Post-build Node scripts
Custom build pipeline
High
Estimated Migration Effort
Basic content + styling: < 1 hour
Custom hooks + extensions: 2–4 hours
Post-build pipeline: 4–8 hours
Full OI Wiki migration: ~1–2 days for a developer familiar with both systems
Feature Parity: Material vs DocsForge
Feature
Material
DocsForge
Material theme
(included)
Search
(built-in)
Tags
(built-in)
Social cards
(Insiders)
❌ Not built-in
Blog
(Insiders)
(built-in)
Privacy plugin
(Insiders)
(built-in)
Optimize plugin
(Insiders)
(auto post-build)
PWA / Offline
(Insiders)
(built-in)
Git revision dates
(plugin)
(built-in)
Minification
(Insiders)
(auto)
Built-in icons
(58MB bundled)
Instant navigation
Custom admonitions
Mermaid diagrams
(plugin)
(built-in)
Code annotations
(Insiders)
(built-in)
Content tabs
Data tables
Tooltips
Step-by-Step Migration
1. Backup Your Site
cpmkdocs.ymlmkdocs.yml.bak
gitadd-A&&gitcommit-m"backup before docsforge migration"
2. Create docsforge.yml
Copy your mkdocs.yml to docsforge.yml. Most settings work directly: