Contributing
Contributing to Doc Gen
Develop project-structure features with evidence that scanning, rendering, and persistence remain correctly separated.
make checkCategory
Quick Command
scope -> implement -> validate -> document -> hand offOverviewโ
Keep CLI interaction under app/doc_gen/cli, reusable structure behavior under
app/doc_gen/core/structure, Markdown construction in renderers, and file
persistence in writers. Make selected targets and outputs explicit.
Contribution Workflow
Workflow Timeline
Implementation Standards
Before You Begin
- Resolve target and outputRequired
Determine repository input and output document before generation begins.
- Keep read-only commands read-onlyRequired
Print and analyze must never create or update project documents.
- Keep generate narrowRequired
Only the resolved output document may be written.
- Protect dry-runRequired
Dry-run may scan and render but must not create directories, write files, or invoke the writer.
- Preserve ignore behaviorRequired
Apply built-in and configured exclusions consistently across print, analyze, and generate.
- Document public contractsRequired
Synchronize options, profiles, output paths, examples, failures, and recovery guidance.
Quality Gates
# Focused examples
python -m pytest tests/cli
python -m pytest tests/test_dry_run.py
# Complete validation
python -m pytest
make check
# Hook validation
make pre-commit-validate
make pre-commit-run-staged
make pre-commit-runFinal Review Checklist
Before You Begin
- Scope is focusedRequired
Every changed file supports the structure contract, tests, or documentation.
- Read-only behavior is provenRequired
Print, analyze, and dry-run leave project files unchanged.
- Generation is preciseRequired
Only the requested document is written and unrelated documentation remains untouched.
- Quality results are recordedRequired
Focused tests, full tests, formatting, lint, and relevant builds have explicit outcomes.
- Release actions remain separateRequired
Versions, changelogs, tags, pushes, and publication are untouched unless explicitly requested.