Docs Directory Organization¶
Status: Canonical Reference
Scope:docs/folder structure and organization
Audience: Maintainers, Contributors
This document defines the organization of the docs/ directory, including folder purposes, naming conventions, and the target structure for documentation.
Table of Contents¶
- Design Principles
- Target Directory Structure
- Folder Purposes
- File Placement Guidelines
- MkDocs Infrastructure
- Migration Plan (Remove after completion)
- Migration Checklist (Remove after completion)
1. Design Principles¶
1.1 Separation of Concerns¶
| Category | Location | Purpose |
|---|---|---|
| MkDocs Infrastructure | docs/_mkdocs/ | Theme, styles, assets, config |
| Package Documentation | docs/packages/<pkg>/ | System-level specs for core modules |
| Contracts & Standards | docs/contracts/ | Cross-cutting specifications |
| How-to Guides | docs/guides/ | Step-by-step tutorials |
| Contributor Docs | docs/contributors/ | Development guidelines |
| Development in Progress | docs/in-progress/ | Feature specifications and design docs for ongoing development |
| Backlog | docs/backlog/ | Technical debt, known issues, and gaps pending resolution |
| Content | docs/patterns/, docs/mindmaps/ | User-facing educational content |
| Tools Documentation | docs/tools/ | Tool-specific documentation |
1.2 Naming Conventions¶
| Type | Convention | Example |
|---|---|---|
| Folders | snake_case or kebab-case | leetcode_datasource/, two_pointers/ |
| Files | kebab-case.md | solution-contract.md |
| Package folders | Match package name exactly | docs/packages/codegen/ matches src/codegen/ |
1.3 Root-level Files¶
Only these files should remain at docs/ root:
| File | Purpose | Reason |
|---|---|---|
index.md | MkDocs landing page | Required by MkDocs |
index_zh-TW.md | Chinese landing page | Localization |
authors.yml | Author definitions | Required by document-dates plugin |
robots.txt | SEO | Must be served at site root |
BingSiteAuth.xml | Bing verification | Must be served at site root |
google*.html | Google verification | Must be served at site root |
Additionally, pages/ must remain at docs/pages/ (generated mindmap HTML output).
All other .md files MUST be placed in appropriate subdirectories.
2. Target Directory Structure¶
docs/
βββ index.md # MkDocs landing page
βββ index_zh-TW.md # Chinese landing page
βββ robots.txt # SEO (must be at root)
βββ BingSiteAuth.xml # Bing verification
βββ google8e4b975a9b708272.html # Google verification
β
βββ _mkdocs/ # βββ MkDocs Infrastructure βββ
β βββ overrides/ # Theme overrides
β βββ stylesheets/ # Custom CSS
β
βββ assets/ # Static assets (document-dates plugin uses this)
β βββ document_dates/ # Plugin config & author avatars (plugin-managed)
β βββ avatar/ # Author avatars (referenced in authors.yml)
β βββ user.config.css # Plugin custom CSS config
β βββ user.config.js # Plugin custom JS config
β
βββ authors.yml # Author definitions (plugin requires root)
βββ pages/ # Generated HTML (mindmaps) - DO NOT MOVE
β
βββ contracts/ # βββ Cross-cutting Contracts βββ
β βββ solution-contract.md # Solution file requirements
β βββ generator-contract.md # Generator file requirements
β βββ documentation-header-spec.md # Doc header standards
β
βββ guides/ # βββ How-to Guides βββ
β βββ act-local-github-actions.md # Run GitHub Actions locally
β βββ build-docs-manual.md # Build docs manually
β βββ github-pages-setup.md # GitHub Pages setup
β βββ local-docs-build.md # Local docs build options
β βββ mkdocs-content-guide.md # MkDocs content authoring
β
βββ contributors/ # βββ Contributor Documentation βββ
β βββ README.md # Contributor overview
β βββ testing.md # Testing documentation
β βββ vscode-setup.md # VSCode configuration
β βββ virtual-env-setup.md # Virtual environment setup
β βββ documentation-architecture.md # Doc architecture principles
β βββ documentation-naming.md # Naming conventions
β βββ package-documentation-strategy.md # Package doc strategy (NEW)
β βββ docs-directory-organization.md # This file (NEW)
β
βββ architecture/ # βββ Architecture Documentation βββ
β βββ README.md # Architecture overview
β βββ packages-overview.md # Packages architecture summary
β βββ architecture-migration.md # Migration documentation
β
βββ in-progress/ # βββ Development in Progress βββ
β βββ README.md # Directory purpose and workflow
β βββ <feature-name>/ # Feature-specific docs (temporary, removed after completion)
β βββ specification.md # Feature requirements
β βββ design.md # Design documentation (optional)
β βββ checklist.md # Acceptance checklist
β
βββ backlog/ # βββ Backlog (Persistent) βββ
β βββ README.md # Directory purpose and workflow
β βββ missing-test-files.md # Solutions without test files
β βββ environment-issues.md # Known environment problems
β
βββ runner/ # βββ Runner Module βββ
β βββ README.md # Runner specification
β βββ cli-output-contract.md # CLI output format
β βββ benchmarking/ # Benchmarking docs
β β βββ memory-metrics.md
β βββ profiling/ # Profiling docs
β βββ cli-output-memory.md
β βββ input-scale-metrics.md
β
βββ packages/ # βββ Package Documentation (src/) βββ
β βββ codegen/ # CodeGen specification
β β βββ README.md
β βββ leetcode_datasource/ # DataSource specification
β β βββ README.md
β βββ practice_workspace/ # Workspace specification
β βββ README.md
β
βββ patterns/ # βββ Algorithm Patterns βββ
β βββ README.md # Patterns overview
β βββ sliding_window/
β βββ two_pointers/
β βββ backtracking_exploration/
β
βββ mindmaps/ # βββ Mind Maps βββ
β βββ index.md # Mindmaps landing page
β βββ *.md # Individual mindmaps
β
βββ tools/ # βββ Tools Documentation βββ
β βββ README.md # Tools overview
β βββ leetcode-api/
β βββ mindmaps/
β βββ patterndocs/
β βββ review-code/
β βββ docstring/
β βββ maintenance/
β
βββ reference/ # βββ Reference Documents βββ (NEW)
βββ ontology-design.md # Ontology design reference
3. Folder Purposes¶
3.1 _mkdocs/ β MkDocs Infrastructure¶
Contains all MkDocs-related configuration and assets that are NOT documentation content.
| Subfolder | Purpose |
|---|---|
overrides/ | MkDocs Material theme customizations |
stylesheets/ | Custom CSS files |
Note: The assets/ directory is at docs/assets/ (not under _mkdocs/) because the document-dates plugin requires it. See Section 5.2 for plugin rules.
Why _mkdocs/? - Prefix . indicates infrastructure, not content - Many MkDocs plugins cannot access repo root - Keeps content docs clean from infrastructure files
3.2 contracts/ β Cross-cutting Contracts¶
Specifications that apply across multiple modules.
| File | Scope |
|---|---|
solution-contract.md | Solution file format (affects solutions/, runner/) |
generator-contract.md | Generator file format (affects generators/, runner/) |
documentation-header-spec.md | Document header format (affects all docs) |
3.3 guides/ β How-to Guides¶
Step-by-step tutorials for specific tasks. NOT specifications or contracts.
| Characteristic | Description |
|---|---|
| Verb-oriented | "How to do X" |
| Task-focused | Single goal per guide |
| Not normative | Doesn't define standards |
3.4 contributors/ β Contributor Documentation¶
Documentation for project maintainers and contributors.
| Focus | Examples |
|---|---|
| Development setup | vscode-setup.md, virtual-env-setup.md |
| Testing | testing.md |
| Documentation standards | package-documentation-strategy.md, this file |
3.5 architecture/ β Architecture Documentation¶
High-level architecture documentation that spans multiple modules.
| File | Purpose |
|---|---|
README.md | Architecture overview |
packages-overview.md | Summary of packages architecture |
architecture-migration.md | Migration plans and history |
3.6 in-progress/ β Development in Progress¶
Feature specifications and design documents for ongoing development work.
| Purpose | Details |
|---|---|
| Temporary storage | Documents are removed after feature completion and acceptance |
| Version control | All documents are tracked in Git for development history |
| Structure | Each feature gets its own subdirectory with specification, design, and checklist |
Lifecycle: 1. Create feature directory: docs/in-progress/<feature-name>/ 2. Add specification, design, and checklist documents 3. Update documents as development progresses 4. Complete acceptance checklist 5. Remove feature directory after acceptance (history preserved in Git)
Example structure:
docs/in-progress/new-problem-tests-autogen/
βββ specification.md # Requirements and feature spec
βββ design.md # Technical design (optional)
βββ checklist.md # Acceptance criteria and verification steps
Note: Not all features require all three files. For example, new-problem-tests-autogen currently only contains specification.md with acceptance criteria embedded within it.
3.7 backlog/ β Technical Debt and Known Issues¶
Persistent documentation for issues, gaps, and technical debt that are acknowledged but not actively being worked on.
| Purpose | Details |
|---|---|
| Persistent storage | Unlike in-progress/, documents persist until items are resolved |
| Coverage tracking | Missing test files, incomplete pattern coverage |
| Known issues | Environment problems, workarounds |
| Technical debt | Items to clean up or improve |
Difference from in-progress/:
| Aspect | in-progress/ | backlog/ |
|---|---|---|
| Content | Features under active development | Issues/gaps pending resolution |
| Lifecycle | Removed after completion | Persists until resolved |
| Structure | Feature directories with specs | Topic-based documents |
| Priority | Active work | Not actively being worked on |
Example structure:
docs/backlog/
βββ README.md # Directory purpose
βββ missing-test-files.md # Solutions without tests
βββ environment-issues.md # Environment setup problems
3.8 Package Folders (docs/packages/<pkg>/, docs/runner/)¶
System-level documentation for core modules. See Package Documentation Strategy.
| Folder | Corresponds to |
|---|---|
docs/runner/ | runner/ |
docs/packages/codegen/ | src/codegen/ |
docs/packages/leetcode_datasource/ | src/leetcode_datasource/ |
docs/packages/practice_workspace/ | src/practice_workspace/ |
β οΈ Important: Package docs must be under
docs/packages/<pkg>/, notdocs/<pkg>/. Scattered files likedocs/codegen.mdare NOT allowed.βΉοΈ Why
docs/runner/stays atdocs/runner/(NOTdocs/packages/runner/)? -runner/is at repo root, not underpackages/- Docs structure mirrors code structure:runner/βdocs/runner/- Only modules underpackages/go todocs/packages/
4. File Placement Guidelines¶
Decision Tree¶
Is it MkDocs infrastructure (styles, assets, config)?
βββ YES β docs/_mkdocs/
βββ NO β
Is it a cross-cutting specification/contract?
βββ YES β docs/contracts/
βββ NO β
Is it a how-to guide (step-by-step tutorial)?
βββ YES β docs/guides/
βββ NO β
Is it for contributors/maintainers only?
βββ YES β docs/contributors/
βββ NO β
Is it architecture-level (spans multiple modules)?
βββ YES β docs/architecture/
βββ NO β
Is it about a specific package/module?
βββ YES β docs/packages/<pkg>/
βββ NO β
Is it a feature specification/design doc for ongoing development?
βββ YES β docs/in-progress/<feature-name>/
βββ NO β
Is it a known issue, gap, or technical debt (not actively being worked on)?
βββ YES β docs/backlog/
βββ NO β
Is it educational content (patterns, mindmaps)?
βββ YES β docs/patterns/ or docs/mindmaps/
βββ NO β
Is it about a tool?
βββ YES β docs/tools/<tool>/
βββ NO β Discuss with maintainers
Common Mistakes¶
| β Wrong | β Correct | Reason |
|---|---|---|
docs/codegen-spec.md | docs/packages/codegen/README.md | Package docs go in package folder |
docs/solution-contract.md | docs/contracts/solution-contract.md | Contracts go in contracts/ |
docs/act-local-github-actions.md | docs/guides/act-local-github-actions.md | How-to guides go in guides/ |
docs/stylesheets/ | docs/_mkdocs/stylesheets/ | Infrastructure goes in _mkdocs/ |
docs/new-feature-spec.md | docs/in-progress/new-feature/specification.md | Development specs go in in-progress/ |
docs/known-issues.md | docs/backlog/environment-issues.md | Known issues go in backlog/ |
5. MkDocs Infrastructure¶
5.1 Configuration Updates¶
When moving infrastructure to docs/_mkdocs/, update mkdocs.yml:
# Before
theme:
custom_dir: docs/overrides
extra_css:
- stylesheets/extra.css
# After
theme:
custom_dir: docs/_mkdocs/overrides
extra_css:
- _mkdocs/stylesheets/extra.css
5.2 Plugin Configuration¶
Update any plugins that reference infrastructure paths:
| Plugin | Config Key | New Path |
|---|---|---|
document-dates | (internal) | docs/authors.yml (must be at root, not configurable) |
theme | custom_dir | docs/_mkdocs/overrides |
document-dates Plugin Rules¶
The document-dates plugin has specific requirements:
authors.ymllocation: Must be atdocs/authors.yml(root of docs directory). The plugin does NOT support custom paths through its configuration. It will:- First check
docs/authors.yml -
Fallback to
material/blogplugin'sauthors_fileconfig if file not found (only if blog plugin is used) -
assets/document_dates/directory: The plugin automatically: - Copies default config files to
docs/assets/document_dates/during build - Adds
assets/document_dates/user.config.cssandassets/document_dates/user.config.jstoextra_cssandextra_javascriptautomatically -
Do NOT manually add these paths in
mkdocs.yml- the plugin handles it -
Custom configuration files and avatars:
- All files (config files and author avatars) are stored in
docs/assets/document_dates/ - Plugin copies default config files to
docs/assets/document_dates/if they don't exist - Custom files in
docs/assets/document_dates/override plugin defaults - Author avatars are stored in
docs/assets/document_dates/avatar/and referenced inauthors.ymlasassets/document_dates/avatar/... - DO NOT migrate
docs/assets/document_dates/- it's managed by the plugin
6. Migration Plan¶
β οΈ REMOVE THIS SECTION AFTER MIGRATION IS COMPLETE
6.1 Phase 1: Create New Structure¶
Create new directories:
# MkDocs infrastructure
# Note: docs/_mkdocs/assets/ is NOT created - document-dates plugin uses docs/assets/
mkdir -p docs/_mkdocs/overrides
mkdir -p docs/_mkdocs/stylesheets
# Note: docs/_mkdocs/pages/ is NOT created - pages stay in docs/pages/
# Documentation folders
mkdir -p docs/contracts
mkdir -p docs/guides
mkdir -p docs/architecture
mkdir -p docs/packages/codegen
mkdir -p docs/packages/leetcode_datasource
mkdir -p docs/packages/practice_workspace
mkdir -p docs/reference
6.2 Phase 2: Move MkDocs Infrastructure¶
| From | To | Note |
|---|---|---|
docs/assets/ | DO NOT MOVE | Contains document_dates/ - plugin-managed (see plugin rules below) |
docs/overrides/ | docs/_mkdocs/overrides/ | |
docs/stylesheets/ | docs/_mkdocs/stylesheets/ | |
docs/pages/ | DO NOT MOVE | Generated output, stays in place |
docs/authors.yml | DO NOT MOVE | Plugin requires root location |
Important: The document-dates plugin automatically manages docs/assets/document_dates/: - Plugin copies default config files to docs/assets/document_dates/ during build if they don't exist - Custom files in docs/assets/document_dates/ (including user.config.css, user.config.js, and avatar/) override plugin defaults - Author avatars are stored in docs/assets/document_dates/avatar/ and referenced in authors.yml - DO NOT migrate docs/assets/document_dates/ - it's plugin-managed - See Section 5.2 for detailed plugin rules
6.3 Phase 3: Move Contracts¶
| From | To |
|---|---|
docs/solution-contract.md | docs/contracts/solution-contract.md |
docs/generator-contract.md | docs/contracts/generator-contract.md |
docs/documentation-header-spec.md | docs/contracts/documentation-header-spec.md |
6.4 Phase 4: Move Guides¶
| From | To |
|---|---|
docs/act-local-github-actions.md | docs/guides/act-local-github-actions.md |
docs/build-docs-manual.md | docs/guides/build-docs-manual.md |
docs/github-pages-setup.md | docs/guides/github-pages-setup.md |
docs/local-docs-build.md | docs/guides/local-docs-build.md |
docs/mkdocs-content-guide.md | docs/guides/mkdocs-content-guide.md |
6.5 Phase 5: Move Architecture Docs¶
| From | To |
|---|---|
docs/architecture-migration.md | docs/architecture/architecture-migration.md |
docs/packages-architecture-spec.md | Split: overview β docs/architecture/packages-overview.md, details β docs/packages/leetcode_datasource/README.md |
6.6 Phase 6: Move Reference Docs¶
| From | To |
|---|---|
docs/ontology-design.md | docs/reference/ontology-design.md |
6.7 Phase 7: Create Package Docs¶
Create placeholder README.md files:
| File | Source |
|---|---|
docs/packages/codegen/README.md | New (merge content from docs/codegen-spec.md) |
docs/packages/leetcode_datasource/README.md | New (extract from packages-architecture-spec.md) |
docs/packages/practice_workspace/README.md | New |
docs/architecture/README.md | New |
6.8 Phase 8: Update mkdocs.yml¶
Update all path references in mkdocs.yml:
theme.custom_dirextra_cssnavsection (all moved files)
6.9 Phase 9: Delete Old Files¶
After verifying everything works:
- Delete
docs/codegen-spec.md(merged intodocs/packages/codegen/README.md) - Delete moved files from original locations
- Verify no broken links
6.10 Phase 10: Cleanup¶
- Remove this Migration Plan section from this document
- Remove the Migration Checklist section
- Update
mkdocs.ymlnav if needed
7. Migration Checklist¶
β οΈ REMOVE THIS SECTION AFTER MIGRATION IS COMPLETE
Phase 1: Create Structure¶
-
Create(NOT created - document-dates plugin usesdocs/_mkdocs/assets/docs/assets/) - Create
docs/_mkdocs/overrides/ - Create
docs/_mkdocs/stylesheets/ -
Create(not needed, stays in docs/)docs/_mkdocs/pages/ - Create
docs/contracts/ - Create
docs/guides/ - Create
docs/architecture/ - Create
docs/packages/codegen/ - Create
docs/packages/leetcode_datasource/ - Create
docs/packages/practice_workspace/ - Create
docs/reference/
Phase 2: Move MkDocs Infrastructure¶
- Keep
docs/assets/in place (DO NOT MOVE - containsdocument_dates/managed by plugin, see Section 5.2) - Move
docs/overrides/βdocs/_mkdocs/overrides/ - Move
docs/stylesheets/βdocs/_mkdocs/stylesheets/ - Keep
docs/pages/in place (DO NOT MOVE - generated output) - Keep
docs/authors.ymlin place (plugin requires root)
Phase 3: Move Contracts¶
- Move
docs/solution-contract.mdβdocs/contracts/ - Move
docs/generator-contract.mdβdocs/contracts/ - Move
docs/documentation-header-spec.mdβdocs/contracts/
Phase 4: Move Guides¶
- Move
docs/act-local-github-actions.mdβdocs/guides/ - Move
docs/build-docs-manual.mdβdocs/guides/ - Move
docs/github-pages-setup.mdβdocs/guides/ - Move
docs/local-docs-build.mdβdocs/guides/ - Move
docs/mkdocs-content-guide.mdβdocs/guides/
Phase 5: Move Architecture Docs¶
- Move
docs/architecture-migration.mdβdocs/architecture/ - Handle
docs/packages-architecture-spec.md: - Create
docs/architecture/packages-overview.md(summary) - Move to
docs/packages/leetcode_datasource/README.md(detailed spec)
Phase 6: Move Reference Docs¶
- Move
docs/ontology-design.mdβdocs/reference/
Phase 7: Create Package Docs¶
- Create
docs/packages/codegen/README.md(fromcodegen-spec.md) - Create
docs/packages/leetcode_datasource/README.md(frompackages-architecture-spec.md) - Create
docs/packages/practice_workspace/README.md(placeholder) - Create
docs/architecture/README.md
Phase 8: Update mkdocs.yml¶
- Update
theme.custom_dirpath - Update
extra_csspath - Update all
naventries for moved files - Add new sections (Architecture, Packages)
Phase 9: Verify & Delete¶
- Build docs locally:
mkdocs serve - Verify all links work
- Delete
docs/codegen-spec.md(moved to codegen/README.md) - Delete old infrastructure directories (assets, overrides, stylesheets)
Phase 10: Cleanup¶
- Remove Section 6 (Migration Plan) from this document
- Remove Section 7 (Migration Checklist) from this document
- Commit with message:
docs: complete docs/ directory reorganization
Related Documents¶
| Document | Content |
|---|---|
| Package Documentation Strategy | Package-level documentation standards |
| Documentation Architecture | Overall documentation principles |