feat: list each declared doc kind as its own homepage card

- compute per-kind home URLs (lib/, api/, wiki/) via _find_home_for_kind
- emit one card per declared kind so multi-kind repos (e.g. doc-forge
  with lib + wiki) appear in each matching homepage section
- declare the doc-forge wiki kind and refresh its vendored site with the
  combined lib + wiki build
This commit is contained in:
2026-09-11 23:38:31 +05:30
parent a32eeaf2b4
commit 42e5ed290e
70 changed files with 58518 additions and 1106 deletions

View File

@@ -10,15 +10,13 @@
<link rel="next" href="loaders/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.23">
<title>Home - docforge</title>
<title>docforge - docforge</title>
@@ -110,7 +108,7 @@
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Home
docforge
</span>
</div>
@@ -222,32 +220,10 @@
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Home
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<li class="md-nav__item">
<a href="../wiki/" class="md-nav__link">
@@ -258,508 +234,197 @@
</a>
</li>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<li class="md-nav__item">
<a href="../wiki/01_overview/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wiki/02_architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wiki/03_conventions/" class="md-nav__link">
<span class="md-ellipsis">
Conventions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wiki/04_iterative_workflow/" class="md-nav__link">
<span class="md-ellipsis">
Iterative Workflow
</span>
</a>
</li>
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#docforge" class="md-nav__link">
<span class="md-ellipsis">
docforge
</span>
</a>
<nav class="md-nav" aria-label="docforge">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge--summary" class="md-nav__link">
<span class="md-ellipsis">
Summary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--installation" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--cli-usage" class="md-nav__link">
<span class="md-ellipsis">
CLI usage
</span>
</a>
<nav class="md-nav" aria-label="CLI usage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge--generate-an-mkdocs-site-from-a-python-package" class="md-nav__link">
<span class="md-ellipsis">
Generate an MkDocs site from a Python package:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--generate-mcp-json-documentation" class="md-nav__link">
<span class="md-ellipsis">
Generate MCP JSON documentation:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--generate-mkdocs-site-and-mcp-json-documentation" class="md-nav__link">
<span class="md-ellipsis">
Generate MkDocs site and MCP JSON documentation:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--serve-mkdocs-locally" class="md-nav__link">
<span class="md-ellipsis">
Serve MkDocs locally:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--serve-mcp-locally" class="md-nav__link">
<span class="md-ellipsis">
Serve MCP locally:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge--core-concepts" class="md-nav__link">
<span class="md-ellipsis">
Core concepts
</span>
</a>
<nav class="md-nav" aria-label="Core concepts">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge--loader" class="md-nav__link">
<span class="md-ellipsis">
Loader
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--semantic-model" class="md-nav__link">
<span class="md-ellipsis">
Semantic model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--renderer" class="md-nav__link">
<span class="md-ellipsis">
Renderer
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--symbol" class="md-nav__link">
<span class="md-ellipsis">
Symbol
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge--architecture" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
</a>
<nav class="md-nav" aria-label="Architecture">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge--front-end" class="md-nav__link">
<span class="md-ellipsis">
Front-end:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--middle-end" class="md-nav__link">
<span class="md-ellipsis">
Middle-end:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--back-end" class="md-nav__link">
<span class="md-ellipsis">
Back-end:
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge--rendering-pipeline" class="md-nav__link">
<span class="md-ellipsis">
Rendering pipeline
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--google-styled-doc-forge-convention-gsdfc" class="md-nav__link">
<span class="md-ellipsis">
Google-Styled Doc-Forge Convention (GSDFC)
</span>
</a>
<nav class="md-nav" aria-label="Google-Styled Doc-Forge Convention (GSDFC)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge--general-rules" class="md-nav__link">
<span class="md-ellipsis">
General rules
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge--notes-subsection-grouping" class="md-nav__link">
<span class="md-ellipsis">
Notes subsection grouping
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--example-formatting" class="md-nav__link">
<span class="md-ellipsis">
Example formatting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--separator-rules" class="md-nav__link">
<span class="md-ellipsis">
Separator rules
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--package-docstrings" class="md-nav__link">
<span class="md-ellipsis">
Package docstrings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--module-docstrings" class="md-nav__link">
<span class="md-ellipsis">
Module docstrings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--class-docstrings" class="md-nav__link">
<span class="md-ellipsis">
Class docstrings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--function-and-method-docstrings" class="md-nav__link">
<span class="md-ellipsis">
Function and method docstrings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--property-docstrings" class="md-nav__link">
<span class="md-ellipsis">
Property docstrings
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--attribute-documentation" class="md-nav__link">
<span class="md-ellipsis">
Attribute documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge--parsing-guarantees" class="md-nav__link">
<span class="md-ellipsis">
Parsing guarantees
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge-classes" class="md-nav__link">
<span class="md-ellipsis">
Classes
</span>
</a>
<nav class="md-nav" aria-label="Classes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.GriffeLoader" class="md-nav__link">
<span class="md-ellipsis">
GriffeLoader
</span>
</a>
<nav class="md-nav" aria-label="GriffeLoader">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.GriffeLoader-functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.GriffeLoader.load_module" class="md-nav__link">
<span class="md-ellipsis">
load_module
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge.GriffeLoader.load_project" class="md-nav__link">
<span class="md-ellipsis">
load_project
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge.MCPRenderer" class="md-nav__link">
<span class="md-ellipsis">
MCPRenderer
</span>
</a>
<nav class="md-nav" aria-label="MCPRenderer">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.MCPRenderer-functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.MCPRenderer.generate_sources" class="md-nav__link">
<span class="md-ellipsis">
generate_sources
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge.MkDocsRenderer" class="md-nav__link">
<span class="md-ellipsis">
MkDocsRenderer
</span>
</a>
<nav class="md-nav" aria-label="MkDocsRenderer">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.MkDocsRenderer-functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.MkDocsRenderer.generate_readme" class="md-nav__link">
<span class="md-ellipsis">
generate_readme
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#docforge.MkDocsRenderer.generate_sources" class="md-nav__link">
<span class="md-ellipsis">
generate_sources
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#docforge-functions" class="md-nav__link">
<span class="md-ellipsis">
Functions
</span>
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#docforge.discover_module_paths" class="md-nav__link">
<span class="md-ellipsis">
discover_module_paths
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="">
</nav>
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../wiki/05_development/01_environment/" class="md-nav__link">
<span class="md-ellipsis">
Environment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../wiki/05_development/02_quality_gates/" class="md-nav__link">
<span class="md-ellipsis">
Quality Gates
</span>
</a>
</li>
</ul>
</nav>
</li>
@@ -795,7 +460,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__container">
@@ -812,14 +477,14 @@
</a>
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
<label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Loaders
</label>
@@ -891,7 +556,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_8" >
<div class="md-nav__link md-nav__container">
@@ -908,14 +573,14 @@
</a>
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="">
<label class="md-nav__link " for="__nav_8" id="__nav_8_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Models
</label>
@@ -1033,7 +698,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_9" >
<div class="md-nav__link md-nav__container">
@@ -1050,14 +715,14 @@
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<label class="md-nav__link " for="__nav_9" id="__nav_9_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Navigation
</label>
@@ -1175,7 +840,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_10" >
<div class="md-nav__link md-nav__container">
@@ -1192,14 +857,14 @@
</a>
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
<label class="md-nav__link " for="__nav_10" id="__nav_10_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
Renderers
</label>
@@ -1321,7 +986,7 @@
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_11" >
<div class="md-nav__link md-nav__container">
@@ -1338,14 +1003,14 @@
</a>
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="">
<label class="md-nav__link " for="__nav_11" id="__nav_11_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
CLI
</label>
@@ -3474,7 +3139,9 @@ A sorted list of unique dotted module import paths.</p>
</div>
</div>
</div><ul>
<li><a href="docforge/">Docforge</a></li>
</ul>