domino-projects
Work with Domino Projects including Git integration, DFS vs Git-based projects, collaboration, and version control. Covers project creation, Git provider setup (GitHub, GitLab, Bitbucket), branch mana
SKILL.mdskills/source-ffab97c3b7d4a55b0806121e/SKILL.md
GitHubDomino Projects and Git Skill
Description
This skill helps users work with Domino Projects - including project creation, Git integration, version control, and collaboration features.
Activation
Activate this skill when users want to:
- Create or configure a Domino project
- Set up Git integration
- Understand DFS vs Git-based projects
- Collaborate with team members
- Manage project settings and permissions
Project Types
Git-Based Projects
- Code stored in external Git provider (GitHub, GitLab, Bitbucket)
- Full Git workflow support
- Better for teams familiar with Git
- Access to Git provider features (PRs, issues)
Domino File System (DFS) Projects
- Code stored in Domino's internal file system
- Automatic versioning (Git under the hood)
- Simpler for users unfamiliar with Git
- Good for research and experimentation
Creating a Project
Via Domino UI
- Click New Project
- Enter project name
- Select project type:
- Git-based: Connect to Git repository
- DFS: Use Domino File System
- Configure settings
- Click Create
Via Python SDK
from domino import Domino
domino = Domino()
# Create DFS project
project = domino.project_create(
project_name="my-project",
owner_name="your-username"
)
print(f"Project ID: {project['id']}")
Git-Based Projects
Connecting to Git Repository
- Create project as Git-based
- Enter repository URL
- Configure authentication:
- SSH Key: Add SSH public key to Git provider
- HTTPS: Use personal access token
Git Credentials
# Add SSH key to Domino account
# Go to Account Settings > Git Credentials
# Or use HTTPS with token
https://username:token@github.com/org/repo.git
Working with Git in Workspaces
Sync Changes
Click Sync in workspace to push changes:
- Domino commits changes
- Pushes to configured branch
- Updates project state
Manual Git Commands
# Check status
git status
# Add and commit
git add .
git commit -m "Update model training"
# Push to remote
git push origin main
# Pull latest
git pull origin main
IDE Git Integration
- VS Code: Use Source Control panel
- JupyterLab: Use Git extension
- RStudio: Use Git pane
Branch Management
# Create feature branch
git checkout -b feature/new-model
# Work on branch
git add .
git commit -m "Add new model"
git push origin feature/new-model
# Switch branches
git checkout main
Multi-Repository Support
Domino supports multiple Git repositories per project:
- Go to Project Settings > Repositories
- Add additional repositories
- Configure mount paths
- Enable/disable per execution
# Access code from multiple repos
# Repo 1: /mnt/code/main-repo/
# Repo 2: /mnt/code/shared-lib/
from shared_lib import utils
DFS Projects
How DFS Works
- Files stored in Domino-managed Git
- Automatic commits on sync
- Version history tracked
- Simplified workflow
Sync Files
- Work in workspace
- Click Sync when ready
- Enter commit message
- Files pushed to Domino
View History
- Go to Files in project
- Click History
- View all commits
- Restore previous versions
Project Structure
Recommended Structure
project/
├── README.md # Project documentation
├── requirements.txt # Python dependencies
├── data/ # Local data (small files)
├── src/ # Source code
│ ├── train.py
│ ├── evaluate.py
│ └── utils.py
├── notebooks/ # Jupyter notebooks
│ └── exploration.ipynb
└── tests/ # Unit tests
└── test_model.py
Special Paths
/mnt/code/: Project files/mnt/data/: Domino Datasets/mnt/artifacts/: Output artifacts/mnt/imported/: Imported project files
Collaboration
Project Roles
| Role | Permissions |
|---|---|
| Owner | Full control, delete project |
| Admin | Manage members, settings |
| Contributor | Edit files, run executions |
| Launcher User | Run launchers only |
| Results Consumer | View results only |
Adding Collaborators
- Go to Project Settings > Access
- Click Add Collaborator
- Search for user
- Assign role
- Click Add
Sharing Projects
- Private: Only invited users
- Organization: All org members can view
- Public: Anyone in Domino instance
Project Settings
Environment
Set default compute environment:
- Go to Project Settings > Environment
- Select default environment
- Optionally allow overrides
Hardware Tier
Set default resources:
- Go to Project Settings > Hardware Tier
- Select default tier
- Set GPU preferences
Environment Variables
Add project-level variables:
API_KEY=your-api-key
MODEL_VERSION=v2.0
DEBUG=false
Access in code:
import os
api_key = os.environ.get('API_KEY')
Importing/Exporting Projects
Import Project
- Click New Project
- Select Import
- Choose source:
- Git repository
- ZIP file
- Another Domino project
Export Project
# Download project files
domino download project-owner/project-name
Fork Project
- Go to project page
- Click Fork
- Creates copy in your account
Reproducibility
Execution Records
Every execution tracked:
- Exact code version
- Environment used
- Hardware tier
- Inputs/outputs
- Start/end times
Reproduce Past Execution
- Go to Jobs or Workspaces
- Find execution to reproduce
- Click Reproduce
- Creates workspace with same settings
Environment Locking
Lock environment to specific revision:
# In project settings or via SDK
domino.project_update(
project_name="my-project",
environment_id="env-specific-revision"
)
Best Practices
1. Use Git for Code
Keep code in version control for:
- Change tracking
- Code reviews
- Collaboration
- Rollback capability
2. Separate Code and Data
- Code: Git repository
- Large data: Domino Datasets
- Artifacts:
/mnt/artifacts/
3. Document Projects
Include README with:
- Project purpose
- Setup instructions
- How to run
- Dependencies
4. Use Environments
Don't install packages ad-hoc; use:
- Dockerfile instructions
- requirements.txt
- Environment configuration
5. Regular Commits
# Commit frequently with meaningful messages
git commit -m "Add data preprocessing step"
git commit -m "Fix model evaluation bug"
Troubleshooting
Git Authentication Failed
- Verify credentials in Domino account settings
- Check token hasn't expired
- Ensure repository access permissions
Sync Conflicts
# Pull latest first
git pull origin main
# Resolve conflicts
git status
# Edit conflicting files
git add .
git commit -m "Resolve conflicts"
Files Not Appearing
- Check file is in correct path
- Verify sync completed
- Refresh browser