{"id":47796818,"url":"https://github.com/semcod/code2docs","last_synced_at":"2026-06-01T11:04:17.043Z","repository":{"id":342864190,"uuid":"1175438760","full_name":"semcod/code2docs","owner":"semcod","description":"code2docs uses code2llm's AnalysisResult to produce human-readable documentation: README.md, API references, module docs, usage examples, and architecture diagrams.","archived":false,"fork":false,"pushed_at":"2026-04-20T16:26:51.000Z","size":9822,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-20T18:36:19.966Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-07T18:00:11.000Z","updated_at":"2026-04-20T16:26:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/code2docs","commit_stats":null,"previous_names":["wronai/code2docs"],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/code2docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fcode2docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fcode2docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fcode2docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fcode2docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/code2docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Fcode2docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T16:28:18.365Z","updated_at":"2026-06-01T11:04:17.034Z","avatar_url":"https://github.com/semcod.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## AI Cost Tracking\n\n![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-3.0.33-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-25.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)\n\n- 🤖 **LLM usage:** $7.5000 (73 commits)\n- 👤 **Human dev:** ~$2534 (25.3h @ $100/h, 30min dedup)\n\nGenerated on 2026-04-20 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)\n\n---\n\n![version](https://img.shields.io/badge/version-3.0.33-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![docs](https://img.shields.io/badge/docs-auto--generated-blueviolet)\n\n\u003e Auto-generate and sync project documentation from source code analysis.\n\n**code2docs** uses [code2llm](https://github.com/wronai/code2llm)'s `AnalysisResult` to produce human-readable documentation: README.md, API references, module docs, usage examples, and architecture diagrams.\n\n```\ncode2llm  →  AnalysisResult  →  .toon / .mmd / context.md   (for LLM)\ncode2docs →  AnalysisResult  →  README.md / docs/ / examples/  (for humans)\n```\n\n## Installation\n\n```bash\npip install code2docs\n```\n\nOr from source:\n\n```bash\ngit clone https://github.com/wronai/code2docs\ncd code2docs\npip install -e .\n```\n\n### Optional extras\n\n```bash\npip install code2docs[watch]    # file watcher (watchdog)\npip install code2docs[mkdocs]   # MkDocs integration\npip install code2docs[dev]      # development tools\n```\n\n# Generate full documentation for a project\ncode2docs ./my-project\n\n# Generate only README\ncode2docs ./my-project --readme-only\n\n# Sync (regenerate only changed modules)\ncode2docs sync ./my-project\n\n# Watch mode (auto-resync on file changes)\ncode2docs watch ./my-project\n\n# Initialize config file\ncode2docs init ./my-project\n\n# Dry-run (show what would be generated)\ncode2docs ./my-project --dry-run\n```\n\n### Python API\n\n```python\nfrom code2docs import generate_readme, generate_docs, Code2DocsConfig\n\n# Generate README\ngenerate_readme(\"./my-project\", output=\"README.md\")\n\n# Generate full docs with custom config\nconfig = Code2DocsConfig(project_name=\"mylib\", verbose=True)\ndocs = generate_docs(\"./my-project\", config=config)\n```\n\n## Generated Output\n\n```\n\u003cproject\u003e/\n├── README.md                      # Main README (auto-generated sections)\n├── docs/\n│   ├── index.md                   # Documentation index\n│   ├── architecture.md            # Architecture + Mermaid diagrams\n│   ├── api/\n│   │   ├── index.md               # API overview\n│   │   ├── module_analyzer.md     # Per-module API reference\n│   │   └── ...\n│   └── modules/\n│       ├── analyzer.md            # Detailed module documentation\n│       └── ...\n├── examples/\n│   ├── basic_usage.py             # Auto-generated usage example\n│   ├── class_examples.py          # Class usage examples\n│   └── ...\n└── code2docs.yaml                 # Generator configuration\n```\n\n## Configuration\n\nCreate `code2docs.yaml` in your project root (or run `code2docs init`):\n\n```yaml\nproject:\n  name: my-project\n  source: ./\n  output: ./docs/\n\nreadme:\n  sections:\n    - overview\n    - install\n    - quickstart\n    - api\n    - structure\n    - endpoints\n  badges:\n    - version\n    - python\n    - coverage\n    - complexity\n  sync_markers: true\n\ndocs:\n  api_reference: true\n  module_docs: true\n  architecture: true\n  changelog: true\n\nexamples:\n  auto_generate: true\n  from_entry_points: true\n\nsync:\n  strategy: markers    # markers | full | git-diff\n  watch: false\n  ignore:\n    - \"tests/\"\n    - \"__pycache__\"\n```\n\n## Sync Markers\n\ncode2docs can update only specific sections of an existing README using markers:\n\n```markdown\n\u003c!-- code2docs:start --\u003e# code2docs\n\n![version](https://img.shields.io/badge/version-3.0.33-blue) ![python](https://img.shields.io/badge/python-%3E%3D3.9-blue) ![coverage](https://img.shields.io/badge/coverage-unknown-lightgrey) ![functions](https://img.shields.io/badge/functions-276-green)\n\u003e **276** functions | **57** classes | **51** files | CC̄ = 3.8\n\n\u003e Auto-generated project documentation from source code analysis.\n\n**Author:** Tom Sapletta  \n**License:** Apache-2.0[(LICENSE)](./LICENSE)  \n**Repository:** [https://github.com/wronai/code2docs](https://github.com/wronai/code2docs)\n\n### From PyPI\n\n```bash\npip install code2docs\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/wronai/code2docs\ncd code2docs\npip install -e .\n```\n\n### Optional Extras\n\n```bash\npip install code2docs[llm]    # LLM integration (litellm)\npip install code2docs[git]    # Git integration (GitPython)\npip install code2docs[watch]    # file watcher (watchdog)\npip install code2docs[mkdocs]    # MkDocs integration\npip install code2docs[dev]    # development tools\npip install code2docs[all]    # all optional features\n```\n\n# Generate full documentation for your project\ncode2docs ./my-project\n\n# Only regenerate README\ncode2docs ./my-project --readme-only\n\n# Preview what would be generated (no file writes)\ncode2docs ./my-project --dry-run\n\n# Check documentation health\ncode2docs check ./my-project\n\n# Sync — regenerate only changed modules\ncode2docs sync ./my-project\n```\n\n### Python API\n\n```python\nfrom code2docs import generate_readme, generate_docs, Code2DocsConfig\n\n# Quick: generate README\ngenerate_readme(\"./my-project\")\n\n# Full: generate all documentation\nconfig = Code2DocsConfig(project_name=\"mylib\", verbose=True)\ndocs = generate_docs(\"./my-project\", config=config)\n```\n\n## Generated Output\n\nWhen you run `code2docs`, the following files are produced:\n\n```\n\u003cproject\u003e/\n├── README.md                 # Main project README (auto-generated sections)\n├── docs/\n│   ├── api.md               # Consolidated API reference\n│   ├── modules.md           # Module documentation with metrics\n│   ├── architecture.md      # Architecture overview with diagrams\n│   ├── dependency-graph.md  # Module dependency graphs\n│   ├── coverage.md          # Docstring coverage report\n│   ├── getting-started.md   # Getting started guide\n│   ├── configuration.md    # Configuration reference\n│   └── api-changelog.md    # API change tracking\n├── examples/\n│   ├── quickstart.py       # Basic usage examples\n│   └── advanced_usage.py   # Advanced usage examples\n├── CONTRIBUTING.md         # Contribution guidelines\n└── mkdocs.yml             # MkDocs site configuration\n```\n\n## Sync Markers\n\ncode2docs can update only specific sections of an existing README using HTML comment markers:\n\n```markdown\n\u003c!-- code2docs:start --\u003e\n# Project Title\n... auto-generated content ...\n\u003c!-- code2docs:end --\u003e\n```\n\nContent outside the markers is preserved when regenerating. Enable this with `sync_markers: true` in your configuration.\n\n## Architecture\n\n```\ncode2docs/\n    ├── registry    ├── llm_helper├── code2docs/    ├── __main__    ├── 04_sync_and_watch    ├── 05_custom_generators    ├── quickstart    ├── 06_formatters    ├── advanced_usage    ├── 03_programmatic_api    ├── entry_points    ├── 07_web_frameworks    ├── class_examples    ├── basic_usage    ├── 01_cli_usage    ├── 02_configuration        ├── updater    ├── sync/        ├── watcher    ├── base        ├── quickstart        ├── advanced_usage        ├── markdown        ├── badges        ├── toc    ├── formatters/        ├── differ        ├── coverage_gen        ├── _source_links        ├── depgraph_gen        ├── getting_started_gen        ├── config_docs_gen        ├── changelog_gen    ├── generators/        ├── code2llm_gen        ├── module_docs_gen        ├── api_reference_gen        ├── examples_gen        ├── mkdocs_gen    ├── config        ├── api_changelog_gen        ├── _registry_adapters        ├── readme_gen        ├── contributing_gen    ├── analyzers/        ├── dependency_scanner        ├── endpoint_detector        ├── architecture_gen        ├── project_scanner        ├── docstring_extractor    ├── cli```\n\n### Classes\n\n- **`GeneratorRegistry`** — Registry of documentation generators.\n- **`LLMHelper`** — Thin wrapper around litellm for documentation generation.\n- **`MetricsReportGenerator`** — Generate a metrics report from code analysis.\n- **`APIChangelogGenerator`** — Generate changelog based on API changes.\n- **`CustomGenerator`** — Example of extending the base generator class.\n- **`Updater`** — Apply selective documentation updates based on detected changes.\n- **`GenerateContext`** — Shared context passed to all generators during a run.\n- **`BaseGenerator`** — Abstract base for all documentation generators.\n- **`MarkdownFormatter`** — Helper for constructing Markdown documents.\n- **`ChangeInfo`** — Describes a detected change.\n- **`Differ`** — Detect changes between current source and previous state.\n- **`CoverageGenerator`** — Generate docs/coverage.md — docstring coverage report.\n- **`SourceLinker`** — Build source-code links (relative paths + optional GitHub/GitLab URLs).\n- **`DepGraphGenerator`** — Generate docs/dependency-graph.md with Mermaid diagrams.\n- **`GettingStartedGenerator`** — Generate docs/getting-started.md from entry points and dependencies.\n- **`ConfigDocsGenerator`** — Generate docs/configuration.md from Code2DocsConfig dataclass.\n- **`ChangelogEntry`** — A single changelog entry.\n- **`ChangelogGenerator`** — Generate CHANGELOG.md from git log and analysis diff.\n- **`Code2LlmGenerator`** — Generate code2llm analysis files in project/ directory.\n- **`ModuleDocsGenerator`** — Generate docs/modules.md — consolidated module documentation.\n- **`ApiReferenceGenerator`** — Generate docs/api.md — consolidated API reference.\n- **`ExamplesGenerator`** — Generate examples/ — usage examples from public API signatures.\n- **`MkDocsGenerator`** — Generate mkdocs.yml from the docs/ directory structure.\n- **`ReadmeConfig`** — Configuration for README generation.\n- **`DocsConfig`** — Configuration for docs/ generation.\n- **`ExamplesConfig`** — Configuration for examples/ generation.\n- **`SyncConfig`** — Configuration for synchronization.\n- **`Code2LlmConfig`** — Configuration for code2llm analysis generation.\n- **`LLMConfig`** — Configuration for optional LLM-assisted documentation generation.\n- **`Code2DocsConfig`** — Main configuration for code2docs.\n- **`ApiChange`** — A single API change between two analysis snapshots.\n- **`ApiChangelogGenerator`** — Generate API changelog by diffing current analysis with a saved snapshot.\n- **`ReadmeGeneratorAdapter`** — —\n- **`ApiReferenceAdapter`** — —\n- **`ModuleDocsAdapter`** — —\n- **`ArchitectureAdapter`** — —\n- **`DepGraphAdapter`** — —\n- **`CoverageAdapter`** — —\n- **`ApiChangelogAdapter`** — —\n- **`ExamplesAdapter`** — —\n- **`MkDocsAdapter`** — —\n- **`GettingStartedAdapter`** — —\n- **`ConfigDocsAdapter`** — —\n- **`ContributingAdapter`** — —\n- **`Code2LlmAdapter`** — Adapter for code2llm analysis generation.\n- **`ReadmeGenerator`** — Generate README.md from AnalysisResult.\n- **`ContributingGenerator`** — Generate CONTRIBUTING.md by detecting dev tools from pyproject.toml.\n- **`DependencyInfo`** — Information about a project dependency.\n- **`ProjectDependencies`** — All detected project dependencies.\n- **`DependencyScanner`** — Scan and parse project dependency files.\n- **`Endpoint`** — Represents a detected web endpoint.\n- **`EndpointDetector`** — Detects web endpoints from decorator patterns in source code.\n- **`ArchitectureGenerator`** — Generate docs/architecture.md — architecture overview with diagrams.\n- **`ProjectScanner`** — Wraps code2llm's ProjectAnalyzer with code2docs-specific defaults.\n- **`DocstringInfo`** — Parsed docstring with sections.\n- **`DocstringExtractor`** — Extract and parse docstrings from AnalysisResult.\n- **`DefaultGroup`** — Click Group that routes unknown subcommands to 'generate'.\n\n### Functions\n\n- `detect_changes_example(project_path)` — Detect what files have changed since last documentation generation.\n- `update_docs_incrementally(project_path)` — Update only the parts of docs that need changing.\n- `force_full_regeneration(project_path)` — Force full regeneration of all documentation.\n- `watch_and_auto_regenerate(project_path, interval)` — Watch for file changes and auto-regenerate documentation.\n- `custom_watcher_with_hooks(project_path)` — Set up a custom watcher with pre/post generation hooks.\n- `sync_with_git_changes(project_path)` — Only regenerate docs for files changed in git.\n- `generate_custom_report(project_path)` — Generate a custom metrics report.\n- `markdown_formatting_examples()` — Demonstrate markdown formatting utilities.\n- `generate_complex_document()` — Generate a complex markdown document using the formatter.\n- `badge_examples()` — Generate various badge examples.\n- `toc_examples()` — Demonstrate table of contents generation.\n- `build_custom_readme()` — Build a custom README using formatters.\n- `generate_readme_simple(project_path)` — Generate README.md content from a project.\n- `generate_full_documentation(project_path)` — Generate complete documentation for a project.\n- `custom_documentation_pipeline(project_path)` — Create a custom documentation pipeline.\n- `inspect_project_structure(project_path)` — Inspect project structure from analysis.\n- `generate_docs_if_needed(project_path, force)` — Only generate docs if code has changed.\n- `detect_flask_endpoints(project_path)` — Detect Flask endpoints in a project.\n- `detect_fastapi_endpoints(project_path)` — Detect FastAPI endpoints in a project.\n- `generate_api_docs_from_endpoints(project_path, output_dir)` — Generate API documentation from detected endpoints.\n- `create_example_web_apps(target_dir)` — Create example Flask and FastAPI apps for testing.\n- `document_web_project(project_path)` — Complete workflow: detect endpoints and generate docs.\n- `run_cli_basic(project_path)` — Run code2docs CLI programmatically.\n- `run_cli_with_config(project_path, config_path)` — Run with custom configuration.\n- `create_basic_config()` — Create a basic configuration.\n- `create_advanced_config()` — Create advanced configuration with all options.\n- `save_yaml_config_example(path)` — Save example YAML config to file.\n- `load_config_from_yaml(path)` — Load configuration from YAML file.\n- `start_watcher(project_path, config)` — Start watching project for file changes and auto-resync docs.\n- `generate_badges(project_name, badge_types, stats, deps)` — Generate shields.io badge Markdown strings.\n- `generate_toc(markdown_content, max_depth)` — Generate a table of contents from Markdown headings.\n- `extract_headings(content, max_depth)` — Extract headings from Markdown content.\n- `generate_docs(project_path, config)` — High-level function to generate all documentation.\n- `generate_code2llm_analysis(project_path, config)` — Convenience function to generate code2llm analysis.\n- `generate_readme(project_path, output, sections, sync_markers)` — Convenience function to generate a README.\n- `analyze_and_document(project_path, config)` — Convenience function: analyze a project in one call.\n- `main()` — code2docs — Auto-generate project documentation from source code.\n- `generate(project_path, config_path, readme_only, sections)` — Generate documentation (default command).\n- `sync(project_path, config_path, verbose, dry_run)` — Synchronize documentation with source code changes.\n- `watch(project_path, config_path, verbose)` — Watch for file changes and auto-regenerate docs.\n- `init(project_path, output)` — Initialize code2docs.yaml configuration file.\n- `check(project_path, config_path, target)` — Health check — verify documentation completeness.\n- `diff(project_path, config_path)` — Preview what would change without writing anything.\n\n\n## Project Structure\n\n📦 `code2docs` (1 functions)\n📄 `code2docs.__main__`\n📦 `code2docs.analyzers`\n📄 `code2docs.analyzers.dependency_scanner` (6 functions, 3 classes)\n📄 `code2docs.analyzers.docstring_extractor` (10 functions, 2 classes)\n📄 `code2docs.analyzers.endpoint_detector` (3 functions, 2 classes)\n📄 `code2docs.analyzers.project_scanner` (4 functions, 1 classes)\n📄 `code2docs.base` (3 functions, 2 classes)\n📄 `code2docs.cli` (14 functions, 1 classes)\n📄 `code2docs.config` (5 functions, 7 classes)\n📄 `code2docs.examples.advanced_usage`\n📄 `code2docs.examples.quickstart`\n📦 `code2docs.formatters`\n📄 `code2docs.formatters.badges` (2 functions)\n📄 `code2docs.formatters.markdown` (13 functions, 1 classes)\n📄 `code2docs.formatters.toc` (3 functions)\n📦 `code2docs.generators` (1 functions)\n📄 `code2docs.generators._registry_adapters` (26 functions, 13 classes)\n📄 `code2docs.generators._source_links` (6 functions, 1 classes)\n📄 `code2docs.generators.api_changelog_gen` (9 functions, 2 classes)\n📄 `code2docs.generators.api_reference_gen` (7 functions, 1 classes)\n📄 `code2docs.generators.architecture_gen` (10 functions, 1 classes)\n📄 `code2docs.generators.changelog_gen` (6 functions, 2 classes)\n📄 `code2docs.generators.code2llm_gen` (5 functions, 1 classes)\n📄 `code2docs.generators.config_docs_gen` (4 functions, 1 classes)\n📄 `code2docs.generators.contributing_gen` (8 functions, 1 classes)\n📄 `code2docs.generators.coverage_gen` (7 functions, 1 classes)\n📄 `code2docs.generators.depgraph_gen` (9 functions, 1 classes)\n📄 `code2docs.generators.examples_gen` (14 functions, 1 classes)\n📄 `code2docs.generators.getting_started_gen` (8 functions, 1 classes)\n📄 `code2docs.generators.mkdocs_gen` (4 functions, 1 classes)\n📄 `code2docs.generators.module_docs_gen` (9 functions, 1 classes)\n📄 `code2docs.generators.readme_gen` (18 functions, 1 classes)\n📄 `code2docs.llm_helper` (7 functions, 1 classes)\n📄 `code2docs.registry` (4 functions, 1 classes)\n📦 `code2docs.sync`\n📄 `code2docs.sync.differ` (7 functions, 2 classes)\n📄 `code2docs.sync.updater` (2 functions, 1 classes)\n📄 `code2docs.sync.watcher` (1 functions)\n📄 `examples.01_cli_usage` (2 functions)\n📄 `examples.02_configuration` (4 functions)\n📄 `examples.03_programmatic_api` (5 functions)\n📄 `examples.04_sync_and_watch` (6 functions)\n📄 `examples.05_custom_generators` (13 functions, 3 classes)\n📄 `examples.06_formatters` (5 functions)\n📄 `examples.07_web_frameworks` (5 functions)\n📄 `examples.advanced_usage`\n📄 `examples.basic_usage`\n📄 `examples.class_examples`\n📄 `examples.entry_points`\n📄 `examples.quickstart`\n\n## Requirements\n\n- Python \u003e= \u003e=3.9\n- code2llm \u003e=0.5.0- jinja2 \u003e=3.1- click \u003e=8.0- pyyaml \u003e=6.0- rich \u003e=13.0\n\n## Contributing\n\n**Contributors:**\n- Tom Softreck \u003ctom@sapletta.com\u003e\n- Tom Sapletta \u003ctom-sapletta-com@users.noreply.github.com\u003e\n\nWe welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n# Clone the repository\ngit clone https://github.com/wronai/code2docs\ncd code2docs\n\n# Install in development mode\npip install -e \".[dev]\"\n\n## Documentation\n\n- 📖 [Full Documentation](https://github.com/wronai/code2docs/tree/main/docs) — API reference, module docs, architecture\n- 🚀 [Getting Started](https://github.com/wronai/code2docs/blob/main/docs/getting-started.md) — Quick start guide\n- 📚 [API Reference](https://github.com/wronai/code2docs/blob/main/docs/api.md) — Complete API documentation\n- 🔧 [Configuration](https://github.com/wronai/code2docs/blob/main/docs/configuration.md) — Configuration options\n- 💡 [Examples](./examples) — Usage examples and code samples\n\n### Generated Files\n\n| Output | Description | Link |\n|--------|-------------|------|\n| `README.md` | Project overview (this file) | — |\n| `docs/api.md` | Consolidated API reference | [View](./docs/api.md) |\n| `docs/modules.md` | Module reference with metrics | [View](./docs/modules.md) |\n| `docs/architecture.md` | Architecture with diagrams | [View](./docs/architecture.md) |\n| `docs/dependency-graph.md` | Dependency graphs | [View](./docs/dependency-graph.md) |\n| `docs/coverage.md` | Docstring coverage report | [View](./docs/coverage.md) |\n| `docs/getting-started.md` | Getting started guide | [View](./docs/getting-started.md) |\n| `docs/configuration.md` | Configuration reference | [View](./docs/configuration.md) |\n| `docs/api-changelog.md` | API change tracking | [View](./docs/api-changelog.md) |\n| `CONTRIBUTING.md` | Contribution guidelines | [View](./CONTRIBUTING.md) |\n| `examples/` | Usage examples | [Browse](./examples) |\n| `mkdocs.yml` | MkDocs configuration | — |\n\n\u003c!-- code2docs:end --\u003e\n```\n\nContent outside the markers is preserved when regenerating. Enable this with `sync_markers: true` in your configuration.\n\n## Architecture\n\n```\ncode2docs/\n    ├── registry    ├── llm_helper├── code2docs/    ├── __main__    ├── 04_sync_and_watch    ├── 05_custom_generators    ├── 06_formatters    ├── 03_programmatic_api    ├── entry_points    ├── 07_web_frameworks    ├── class_examples    ├── basic_usage    ├── 01_cli_usage    ├── 02_configuration        ├── updater    ├── sync/        ├── watcher        ├── differ        ├── quickstart    ├── base        ├── advanced_usage        ├── badges        ├── markdown    ├── formatters/        ├── toc        ├── coverage_gen        ├── _source_links        ├── depgraph_gen        ├── getting_started_gen        ├── config_docs_gen        ├── changelog_gen    ├── generators/        ├── code2llm_gen        ├── module_docs_gen        ├── api_reference_gen        ├── examples_gen        ├── mkdocs_gen    ├── config        ├── api_changelog_gen        ├── _registry_adapters        ├── contributing_gen        ├── readme_gen    ├── analyzers/        ├── docstring_extractor        ├── endpoint_detector        ├── architecture_gen        ├── project_scanner    ├── cli        ├── dependency_scanner```\n\n## Requirements\n\n- Python \u003e= \u003e=3.9\n- code2llm \u003e=0.5.0- jinja2 \u003e=3.1- click \u003e=8.0- pyyaml \u003e=6.0- rich \u003e=13.0\n\n## Contributing\n\n**Contributors:**\n- Tom Softreck \u003ctom@sapletta.com\u003e\n- Tom Sapletta \u003ctom-sapletta-com@users.noreply.github.com\u003e\n\nWe welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n# Clone the repository\ngit clone https://github.com/wronai/code2docs\ncd code2docs\n\n# Install in development mode\npip install -e \".[dev]\"\n\n## Architecture\n\n```\ncode2docs/\n├── cli.py                    # CLI (click-based)\n├── config.py                 # Configuration (code2docs.yaml)\n├── analyzers/                # Adapters to code2llm + custom detectors\n│   ├── project_scanner.py    # Wrapper on code2llm.ProjectAnalyzer\n│   ├── endpoint_detector.py  # Flask/FastAPI/Django route extraction\n│   ├── docstring_extractor.py\n│   └── dependency_scanner.py\n├── generators/               # Documentation generators\n│   ├── readme_gen.py         # README.md generator\n│   ├── api_reference_gen.py  # docs/api/ reference from signatures\n│   ├── module_docs_gen.py    # docs/modules/ per-module docs\n│   ├── examples_gen.py       # examples/ from signatures\n│   ├── changelog_gen.py      # CHANGELOG from git log\n│   └── architecture_gen.py   # Architecture + Mermaid diagrams\n├── templates/                # Jinja2 templates\n├── sync/                     # Change detection \u0026 selective regeneration\n│   ├── differ.py\n│   ├── updater.py\n│   └── watcher.py\n└── formatters/               # Markdown, badges, TOC\n```\n\n## Requirements\n\n- Python \u003e= 3.9\n- [code2llm](https://github.com/wronai/code2llm) \u003e= 0.5.0\n- Jinja2 \u003e= 3.1\n- Click \u003e= 8.0\n- PyYAML \u003e= 6.0\n\n## License\n\nLicensed under Apache-2.0.\n\n\u003c!-- taskill:status:start --\u003e\n\n## Status\n\n_Last updated by [taskill](https://github.com/oqlos/taskill) at 2026-04-25 18:20 UTC_\n\n| Metric | Value |\n|---|---|\n| HEAD | `42f2ec4` |\n| Coverage | — |\n| Failing tests | — |\n| Commits in last cycle | 0 |\n\n\u003e No commits or file changes since the last run. The project state is unchanged; TODO.md shows a number of completed lints/tasks but there are still active issues to address.\n\n\u003c!-- taskill:status:end --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fcode2docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Fcode2docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Fcode2docs/lists"}