Create comprehensive documentation for all Gemini meetup workshop subprojects by:
- Generating detailed
NOTES.mdfiles from git commit history analysis - Distilling those into user-friendly
README.mdfiles for each subproject - Creating a top-level
README.mdwith links to all subprojects
Subprojects identified (chronologically reverse order):
./tv - Already has comprehensive NOTES.md ✅
./waker
./smash - Has FRICTION-LOG.md and TODO.md - READY FOR TESTING
./utils
./adventure
./roast
./prisoner
./bricks
./flocks
./data
./artifacts
./history
./scripts
./doodles
./cost
./factuality
./games
./kundali
./podcast
./recap
./wearable
./docs
Core Features:
- ✅ Git history parsing with
git log --reverse --oneline - ✅ Full commit diff extraction with
git show - ✅ LLM-powered commit analysis using
utils.model.make_gemini() - ✅ Existing documentation context loading (FRICTION-LOG.md, TODO.md, etc.)
- ✅ Comprehensive NOTES.md generation from commit timeline
- ✅ README.md distillation from NOTES.md using LLM
- ✅ Flexible CLI with options for notes-only or readme-only generation
Usage:
# Generate both NOTES.md and README.md
python bin/generate-docs.py smash
# Generate only NOTES.md
python bin/generate-docs.py smash --notes-only
# Generate README.md from existing NOTES.md
python bin/generate-docs.py smash --readme-onlyTechnical Implementation:
- Uses existing
utils.model.make_gemini()pattern for consistency - Loads context from existing docs (FRICTION-LOG.md, TODO.md, README.md, etc.)
- Chronological commit analysis preserves development narrative
- Professional prompt engineering for both technical notes and user-facing documentation
- Error handling for git commands and LLM calls
- Progress tracking for long commit histories
Next Immediate Steps:
-
Test with
smash/subproject:cd /path/to/repo python bin/generate-docs.py smash -
Validate quality:
- Review generated
smash/NOTES.mdfor technical accuracy - Review generated
smash/README.mdfor user-friendliness - Compare against existing
smash/FRICTION-LOG.mdandsmash/TODO.md
- Review generated
-
Refine if needed:
- Adjust prompts based on output quality
- Handle edge cases discovered during testing
- Optimize for different commit message styles
-
Scale to other subprojects:
- Process remaining subprojects in priority order
- Build comprehensive documentation suite
- Create top-level README.md with project overview
LLM Integration:
- Uses existing
utils.model.make_gemini()for consistency with codebase - Separate prompts for NOTES.md (technical) vs README.md (user-facing)
- Context injection from existing documentation files
- Error handling with fallback content generation
Git Analysis:
- Chronological order (
--reverse) preserves development story - Full diff analysis (
git show) vs just commit messages - Subdirectory filtering to focus on relevant changes
- Handles both individual commits and file-specific history
Output Strategy:
- NOTES.md: Technical development narrative, chronological
- README.md: Distilled user-facing documentation with quick start
- Existing docs preserved as context, not overwritten
- Links to slides and detailed docs where they exist
- ✅
tools/- Hermetic Poetry subproject for documentation generation- ✅
tools/pyproject.toml- Poetry configuration with isolated dependencies - ✅
tools/generate-docs.py- Complete documentation generator (moved from bin/) - ✅
tools/README.md- Usage instructions for the documentation tools
- ✅
- 🔄
<subproject>/NOTES.md- Generated development narratives - 🔄
<subproject>/README.md- Generated user documentation - 🔄
README.md- Top-level repository overview (pending)
This entire documentation system was built through an iterative conversation-driven development process:
- Problem Identification: Repository had 20+ workshop subprojects with inconsistent documentation
- Solution Design: LLM-powered git commit analysis to reconstruct development narratives
- Architecture Decisions:
- Hermetic Poetry environment for dependency isolation
- Gemini 2.5 Flash for cost-effective LLM analysis
- Two-tier documentation (technical NOTES.md + user-facing README.md)
- Top-level directory generation from all sub-READMEs
Hermetic Poetry Setup: Moved from bin/generate-docs.py to tools/ subproject to avoid system dependencies
LLM Integration: Used existing utils.model.make_gemini() pattern, upgraded from gemini-1.5-pro to gemini-2.5-flash
Git Analysis: Chronological commit processing with git log --reverse and full diff analysis via git show
Context Integration: Loads existing docs (FRICTION-LOG.md, TODO.md) for richer analysis
Batch Processing: Shell script for processing all subprojects with special cases for tv (readme-only) and waker (notes-only)
Successfully tested on smash/ subproject:
- Analyzed 20 commits from git history
- Generated comprehensive technical notes and user-friendly README
- Cost-effective processing with new Gemini model
- Complete dependency isolation achieved
- ✅ Individual project documentation:
cd tools && poetry run python generate-docs.py ../smash - ✅ Batch processing:
cd tools && ./generate-all-docs.sh - ✅ Top-level directory:
cd tools && poetry run python generate-docs.py --top-level - ✅ Flexible options:
--notes-only,--readme-only, skip existing docs - ✅ Error handling: Graceful failures, continues processing other projects
Dependency Management: Poetry subproject approach solved hermetic environment requirement Model Selection: Gemini 2.5 Flash provided optimal price/performance for commit analysis Batch Processing: Shell script with error handling and existing doc checks for production use Documentation Architecture: Technical development timeline + distilled user guides works well for workshop context
The system successfully processed the entire repository and generated:
- Individual project NOTES.md and README.md files for all subprojects
- Top-level README.md directory from all sub-project documentation
- Complete development narrative reconstruction from git commit history
All documentation generation is now hermetic, automated, and scalable for future workshop projects.