- fix GSDFC spec contradictions in __init__ docstring (parenthesized types, fenced-block rule) and sync generated README - rewrite docstrings across loaders, models, nav, servers, renderers, cli; sync .pyi stubs - add pydoclint (google style) gate to dev extras and pyproject config - fix mcp nav resources doc:// -> docs:// - refresh docs/lib and docs/mcp, drop stale docforge/ duplicate group - update wiki pages and add GSDFC + MCP guides under 05_development
1.3 KiB
1.3 KiB
Architecture
docforge is split into four horizontal layers. Everything flows top to
bottom through the CLI.
Loaders → Models
The docforge/loaders package wraps griffe to extract modules, functions,
classes, and Google-style docstring sections. Loaded data is normalized into
the object model under docforge/models (Project, Module, DocObject).
Navigation
docforge/nav parses docforge.nav.yml specs (NavSpec, Resolver, and the
MkDocs nav emitter) and, since the wiki kind, derives wiki navigation from the
file structure via build_wiki_nav.
Renderers
docforge/renderers turn model data into artifacts:
MkDocsRenderer→docs/lib/**reference markdownMCPRenderer→docs/mcp/**structured documentation
Servers
docforge/servers serves generated artifacts over live protocols:
MCPServer→ serves a pre-generateddocs/mcp/**bundle through MCP resources (docs://index,docs://nav,docs://modules/{module})
CLI
docforge/cli wires it all together:
commands.py— thebuildcommand and its--mkdocs/--api/--wiki/--mcpmodesmkdocs_utils.py— config generation (mkdocs.yml) including merged wiki + lib + api navigationapi_utils.py— OpenAPI loading and API docs generation