# Conventions ## GSDFC docstrings All documented source uses the Google-Styled Doc-Forge Convention (GSDFC): `Args:`, `Returns:`, `Raises:`, and `Attributes:` sections with properly typed signatures. The authoritative GSDFC specification lives in the `docforge/__init__.py` package docstring, which is exported verbatim into `docs/mcp/modules/docforge.json`, so the MCP bundle is self-documenting. Key rules: - Use parenthesized types in prose entries (`name (Type):`) that match the signature types. - Use `# Summary`, `# Examples`, and `# Notes` sections at module level. - Use `Args:`, `Returns:`, `Raises:`, `Yields:`, `Notes:`, and `Example:` sections at function and method level. - Always update the matching `.pyi` stub alongside the `.py` implementation. ## `.pyi` stubs Every module ships a matching `.pyi` stub kept in sync with the `.py` implementation. When signatures change, update both files. ## Wiki pages - Hand-written markdown lives in `docs/wiki/**` and is never generated. - File names use a numeric prefix: `01_overview.md`, `02_architecture.md`. - Nested directories become nested navigation groups: `05_development/01_environment.md` → group *Development*. - `index.md` is the site `Home` at the root, and a section root inside a directory. - Navigation labels are derived by stripping the numeric prefix and applying title case on the remaining words. ## Templates MkDocs config fragments live in `docforge/templates`. The `mkdocs.wiki.yml` fragment carries only the `search` plugin, since wiki pages contain no mkdocstrings directives.