Contributing to Agentic-SpliceAI¶
Documentation Structure¶
We follow a clear convention for organizing documentation:
1. Internal Development (dev/)¶
Purpose: Internal notes, scripts, and development-specific documentation
Visibility: NOT pushed to GitHub (in .gitignore)
Audience: Project developers only
Structure:
dev/
├── data/ # Data setup scripts and notes
├── experiments/ # Experimental code and results
├── notes/ # Development notes and ideas
└── scratch/ # Temporary work
Examples:
- dev/notes/architecture_ideas.md - Brainstorming notes
- dev/experiments/new_feature_test.py - Experimental code
- dev/scratch/temp_analysis.ipynb - Temporary notebooks
2. Public Documentation (docs/)¶
Purpose: Public-facing documentation, tutorials, and guides
Visibility: Pushed to GitHub
Audience: External users and contributors
Structure:
docs/
├── tutorials/ # Step-by-step guides
├── guides/ # How-to guides
├── architecture/ # System architecture docs
└── api/ # API documentation
Examples:
- docs/tutorials/getting_started.md - User onboarding
- docs/guides/splice_site_analysis.md - Feature guide
- docs/architecture/multi_agent_system.md - System design
3. Scripts (scripts/)¶
Purpose: Public automation scripts and utilities
Visibility: Pushed to GitHub
Audience: All users
Structure:
scripts/
├── deployment/ # Deployment automation
├── utils/ # Utility scripts
└── ci/ # CI/CD scripts
Examples:
- scripts/deployment/deploy.sh - Deployment automation
- scripts/utils/format_code.sh - Code formatting
4. Package Documentation (<package>/docs/)¶
Purpose: Package-specific documentation
Visibility: Pushed to GitHub
Audience: Users of specific packages/modules
Structure:
Examples:
- server/docs/API.md - REST API documentation
- server/docs/QUICKSTART.md - Server setup guide
5. Data Documentation (data/)¶
Purpose: Dataset descriptions and usage
Visibility: Pushed to GitHub
Audience: Users working with datasets
Examples:
- data/README.md - Data structure and access guide
When to Use Each¶
Use dev/ for:¶
- ✅ Development notes and brainstorming
- ✅ Experimental code
- ✅ Personal notes and TODOs
- ✅ Temporary files and scratch work
- ✅ Work-in-progress that's not ready to share
Use scripts/ for:¶
- ✅ Public automation scripts (deployment, CI/CD)
- ✅ Utility scripts for all users
- ✅ Build automation
- ✅ Code formatting and linting
Use tests/ for:¶
- ✅ Private development tests
- ✅ Setup scripts with local paths (e.g.,
tests/data/) - ✅ Test data and fixtures
- ✅ Development-specific scripts
- ✅ Anything that shouldn't be shared publicly
Use docs/ for:¶
- ✅ User-facing tutorials
- ✅ Feature documentation
- ✅ Architecture and design docs
- ✅ Contributing guidelines
- ✅ API references
Use <package>/docs/ for:¶
- ✅ Package-specific guides
- ✅ Module API documentation
- ✅ Package quickstart guides
File Organization Best Practices¶
Naming Conventions¶
Development files (in dev/):
- Use descriptive names: setup_data_symlinks.sh
- Include dates for time-sensitive notes: 2025-11-26_meeting_notes.md
- Use prefixes for categories: exp_new_feature.py, note_architecture.md
Public documentation (in docs/):
- Use clear, user-friendly names: getting_started.md
- Follow consistent naming: tutorial_*.md, guide_*.md
- Use lowercase with underscores: api_reference.md
Documentation Standards¶
All public docs should include: 1. Clear title and purpose 2. Table of contents (for long docs) 3. Code examples with syntax highlighting 4. Links to related documentation 5. Last updated date (optional)
Internal dev docs can be: - More informal and concise - Work-in-progress - Personal notes style
Git Workflow¶
What Gets Committed¶
Always commit:
- Public documentation (docs/, <package>/docs/)
- README files
- Contributing guidelines
- Data documentation (data/README.md)
Never commit:
- Internal development files (dev/)
- Personal notes
- Experimental code (unless ready for review)
- Temporary files
.gitignore Configuration¶
The dev/ and tests/ directories are configured in .gitignore:
# Development directory (NOT for public)
dev/
dev/**/*
# Tests directory (NOT for public - development only)
tests/
tests/**/*
Examples from This Project¶
Private Test Scripts¶
tests/data/setup_data_symlinks.sh- Data symlink setup (private paths)tests/data/README.md- Private script documentation
Public Documentation¶
README.md- Project overviewQUICKSTART.md- Quick start guideSETUP.md- Environment setupdata/README.md- Data structure guide
Package Documentation¶
server/README.md- Server package overviewserver/QUICKSTART.md- Server quick start
Contributing Documentation¶
When adding new documentation:
- Determine visibility: Internal or public?
- Choose location:
dev/,docs/, or<package>/docs/ - Follow conventions: Use appropriate naming and structure
- Link related docs: Cross-reference where helpful
- Keep it updated: Update docs when code changes
Questions?¶
If you're unsure where to put something:
- Will external users need this? → docs/ or <package>/docs/
- Is this a useful public script? → scripts/ or scripts/<topic>/
- Is this a private script or test? → tests/
- Is this internal/temporary? → dev/
- Is this about datasets? → data/README.md
When in doubt, start in dev/ and promote to appropriate location when ready.