When starting any session:
- Run
tree -L 2to see current repo structure - Check
git statusfor current state - Review open issues on GitHub
- Check the project board for priorities
- Current state: Lives on main branch only
- History: Lives in git commits
- Planning: Lives in GitHub issues/projects
- Never: Keep old versions, drafts, or outdated docs
Issue → Branch → Code → Test → Doc → Commit → PR → Merge
Every piece of work should:
- Start with a GitHub issue
- Happen on a feature branch
- Include tests
- Update relevant docs
- Use atomic commits (logical chunks)
- Go through PR review
# Always from main
git checkout main
git pull
git checkout -b <type>/<description>
# Types:
# - feature/ (new functionality)
# - fix/ (bug fixes)
# - docs/ (documentation only)
# - refactor/ (code improvements)# Atomic commits after logical sections
git add <files>
git commit -m "<type>: <present-tense-description>"
# Types: feat, fix, docs, refactor, test, choreExamples:
feat: add quote extraction for biographiesfix: handle empty source documentsdocs: update setup instructions
When creating PRs:
- Link to the issue: "Fixes #123"
- Describe what changed and why
- Confirm tests pass
- Confirm docs updated
Every issue should have:
- Clear title
- Labels (at minimum one of:
development,documentation,bug,enhancement) - For research items add:
person:<name>ortopic:<topic> - Assignment to project board
- Milestone if applicable
Core labels:
development- Code workdocumentation- Docs updatesbug- Something brokenenhancement- Improvementsresearch- Research tasks
Entity labels:
person:<lastname>- For biographical worktopic:<keyword>- For thematic research
Before any commit:
# Run tests if they exist
pytest tests/ # or appropriate test command
# Check for syntax errors
python -m py_compile src/**/*.py
# Verify documentation is current
# (Manually check if automated check doesn't exist)When code changes:
- Update relevant docs immediately
- Never create "v2" docs - update in place
- Remove outdated sections
- Keep examples current
Before modifying:
- Understand current patterns
- Follow existing conventions
- Don't introduce new patterns without discussion
- Check git history if unclear:
git log -p <file>
Never commit secrets:
# Check .env.example for required variables
cp .env.example .env
# Edit .env with actual values
# Ensure .env is in .gitignoreGitHub Actions will run on:
- Push to any branch (tests)
- PR creation/update (full checks)
- Merge to main (deployment/updates)
Starting work?
- Check issues first
- Create branch from main
- Run tree to see structure
Making changes?
- Test locally first
- Commit logical chunks
- Update docs immediately
Stuck or unsure?
- Check existing patterns
- Look at git history
- Review similar PRs
Ready to merge?
- Tests passing
- Docs updated
- PR approved
- Linked issue closed
- One source of truth - Main branch is reality
- Issues before code - Plan in GitHub
- Test everything - No untested code
- Commit often - Logical, atomic chunks
- Docs stay current - Update or delete
This workflow ensures consistent, trackable progress. All work flows through GitHub issues and PRs, creating a complete audit trail.