This file contains notes and instructions for Claude (AI assistant) when working on this project.
SlideStream is an AI-powered tool to create video presentations from Markdown and PowerPoint files. The project uses modern Python tooling and has zero type checker errors.
- Package Manager: uv (for dependency management, virtual environment, building)
- Type Checker: basedpyright (configured for zero errors)
- Linter/Formatter: ruff (configured for modern Python standards)
- Testing: pytest with coverage reporting
- CI/CD: GitHub Actions (if configured)
Important: Use twine for PyPI uploads, not uv publish. The user has a .pypirc file configured that uv cannot use.
-
Update Version:
# Update version in both files: # - pyproject.toml: version = "x.y.z" # - src/slide_stream/__init__.py: __version__ = "x.y.z"
-
Run Tests:
python -m pytest
-
Build Package:
uv build
-
Upload with Twine (not uv):
twine upload dist/slide_stream-x.y.z* -
Commit and Push:
git add . git commit -m "Release version x.y.z" git push
src/slide_stream/
├── __init__.py # Version and package info
├── cli.py # Main CLI interface (Typer)
├── config.py # Configuration constants
├── llm.py # LLM integration (OpenAI, Gemini, Claude, etc.)
├── media.py # Image/audio/video processing
├── parser.py # Markdown parsing
└── powerpoint.py # PowerPoint (.pptx) parsing
- Project maintains zero basedpyright errors
- Uses type guards for dynamic content (BeautifulSoup, etc.)
- Strategic
# type: ignorefor missing type stubs - See
TYPE_SAFETY.mdfor detailed documentation
- Comprehensive test coverage for all modules
- CLI tests use
typer.testing.CliRunner - PowerPoint tests create temporary .pptx files
- Tests avoid network calls (use
--image-source text)
- Single main command (no subcommands)
- Supports both
.mdand.pptxinput files - File type detection by extension
- Rich progress bars and error formatting
- docs/USER_GUIDE.md: Comprehensive user guide with examples
- docs/DEVELOPMENT_WORKFLOW.md: Development workflow and release process
- docs/TYPE_SAFETY.md: Type safety documentation
- docs/TYPING_IMPROVEMENTS.md: Type improvement roadmap
- tests/fixtures/: Test data files
- 1.0.0: Initial release with Markdown support
- 1.1.0: Added PowerPoint (.pptx) support with speaker notes
- Write tests first (TDD approach)
- Implement feature with type safety
- Update CLI help text if needed
- Update README.md with examples
- Run full test suite
- Check type coverage:
basedpyright
- Use
--image-source textto avoid network calls during testing - Check
coverage.xmlfor test coverage gaps - Use Rich console for better error formatting
- Core:
typer,rich,moviepy,pillow,beautifulsoup4,python-pptx - Optional AI providers via extras:
[openai],[gemini],[claude],[groq],[all-ai] - Development:
pytest,ruff,basedpyright,twine
- Never use
uv publish- always usetwine upload - PowerPoint speaker notes are used for enhanced AI narration
- All tests must pass before release
- Type checker must show zero errors
- Follow semantic versioning for releases