✅ Overview
The Scimax notebook system provides project-based document organization inspired by Emacs Scimax's `scimax-notebook' package. A notebook is a structured project directory that can contain research notes, documentation, code, data, and other project materials.
✅ What is a Notebook?
A notebook is a project directory with:
A `.scimax' configuration directory
Optional master/entry file (README.org, index.org, etc.)
Project markers (`.projectile', `.git', etc.)
Organized subdirectories for content
Metadata including collaborators, keywords, and custom settings
Notebooks can be used for:
Research projects with notes, data, and analysis
Software development projects
Personal knowledge management
Course materials and teaching resources
Collaborative documentation
✅ Key Features
Project Templates: Start with pre-configured structures for research, software, or notes
Master Files: Central entry point for each notebook
Automatic Detection: Discovers existing projects in your workspace
Search & Navigation: Full-text search and agenda views scoped to the notebook
Collaboration: Track collaborators with roles
Integration: Works with projectile markers and git repositories
Archiving: Create zip archives of committed files
✅ Creating Notebooks
✅ New Notebook Command
Create a new notebook with Scimax: New Notebook:
Command Palette → Scimax: New Notebook
You'll be prompted for:
Name: The notebook directory name (e.g., "my-research-project")
Description: Optional brief description
Parent Directory: Where to create the notebook (defaults to scimax.notebook.directory setting)
Template: Choose from empty, research, software, or notes
Initialize Git: Whether to run git init in the new directory
✅ Project Templates
✅ Empty Template
Minimal structure with a README.org file:
my-notebook/ ├── .scimax/ │ └── config.json ├── .projectile └── README.org
The README.org contains:
,#+TITLE: My Notebook
,#+DATE: 2026-01-13
,* My Notebook
[Project description]
✅ Research Template
For scientific research projects:
research-project/ ├── .scimax/ │ └── config.json ├── .projectile ├── README.org ├── references.bib ├── data/ ├── figures/ └── scripts/
The README.org is structured with research sections:
,#+TITLE: Research Project
,#+AUTHOR:
,#+DATE: 2026-01-13
,#+DESCRIPTION: Research project description
,* Overview
,* Literature Review
,* Methods
,* Results
,* Discussion
,* References
✅ Software Template
For software development projects:
software-project/ ├── .scimax/ │ └── config.json ├── .projectile ├── README.md ├── src/ ├── tests/ └── docs/
The README.md contains standard software documentation sections:
# Software Project
## Installation
## Usage
## Development
## License
✅ Notes Template
For note-taking and personal knowledge management:
notes-project/ ├── .scimax/ │ └── config.json ├── .projectile ├── index.org └── journal/
The index.org file:
,#+TITLE: My Notes
,#+DATE: 2026-01-13
,* Topics
,* Journal
See [[file:journal/][journal entries]].
,* References
✅ Manual Notebook Setup
You can also manually create a notebook directory:
Create a project directory
Add a `.projectile' file (can be empty)
Optionally create .scimax/config.json
Add a master file (README.org, index.org, etc.)
Scimax will automatically detect the project when you open it in VS Code.
✅ Notebook Structure
✅ Directory Layout
A typical notebook has this structure:
notebook-name/ ├── .scimax/ # Scimax configuration │ └── config.json # Notebook metadata and settings ├── .projectile # Projectile marker (can be empty) ├── .git/ # Optional git repository ├── README.org # Master file (entry point) ├── notes/ # Subdirectories for content ├── data/ # Project-specific directories └── references.bib # Optional bibliography
✅ Configuration File
The .scimax/config.json file contains notebook metadata:
{
"name": "My Research Project",
"description": "A study of molecular dynamics",
"keywords": ["physics", "molecular-dynamics", "simulation"],
"collaborators": [
{
"name": "Dr. Jane Smith",
"email": "jane@university.edu",
"role": "Principal Investigator"
},
{
"name": "Bob Johnson",
"email": "bob@university.edu",
"role": "Graduate Student"
}
],
"masterFile": "README.org",
"journalDirectory": "journal",
"bibliographyFiles": ["references.bib", "extra-refs.bib"],
"customCommands": {
"build": "make all",
"test": "pytest"
}
}
✅ Configuration Fields
name (string): Display name for the notebook
description (string, optional): Brief description
keywords (array, optional): Tags for searching and categorization
collaborators (array, optional): List of project collaborators
masterFile (string, optional): Path to the main entry file (relative to notebook root)
journalDirectory (string, optional): Directory for journal entries
bibliographyFiles (array, optional): Bibliography files for org-ref
customCommands (object, optional): Custom shell commands
✅ Master Files
The master file is the main entry point for your notebook. When you open a notebook, Scimax automatically opens this file.
Scimax looks for master files in this order:
File specified in `config.json' (`masterFile' field)
`README.org'
`README.md'
`index.org'
`index.md'
`main.org'
`main.md'
Best practices for master files:
Include project overview and goals
Link to other important files
Maintain a table of contents
Document the project structure
List collaborators and their roles
Example master file structure:
,#+TITLE: Molecular Dynamics Research
,#+AUTHOR: Jane Smith <jane@university.edu>
,#+DATE: 2026-01-13
,* Overview
This project investigates...
,* Project Structure
- [[file:notes/literature-review.org][Literature Review]]
- [[file:notes/methods.org][Methods and Protocols]]
- [[file:data/README.org][Data Documentation]]
- [[file:scripts/][Analysis Scripts]]
,* Team
- Jane Smith (PI): jane@university.edu
- Bob Johnson (Grad Student): bob@university.edu
,* Timeline
| Phase | Start | End | Status |
|--------------------+------------+------------+--------|
| Literature Review | 2026-01-01 | 2026-02-01 | DONE |
| Data Collection | 2026-02-01 | 2026-04-01 | TODO |
| Analysis | 2026-04-01 | 2026-06-01 | TODO |
,* References
bibliography:references.bib
✅ Project Markers
Scimax detects projects by looking for marker files:
`.projectile' - Projectile project marker
`.git' - Git repository
`.scimax' - Scimax configuration directory
`package.json' - Node.js project
`pyproject.toml' - Python project (PEP 518)
`Cargo.toml' - Rust project
`go.mod' - Go module
`pom.xml' - Maven project
`build.gradle' - Gradle project
`.project' - Eclipse project
When you open a directory with any of these markers, Scimax automatically registers it as a notebook.
✅ Managing Notebooks
✅ Opening Notebooks
✅ Open Notebook Command
Scimax: Open Notebook shows a quick pick menu of all registered notebooks:
Command Palette → Scimax: Open Notebook
The list shows:
Notebook name
Description
Full path
Git status indicator ($(git-branch) icon)
Notebooks are sorted by last accessed time (most recent first).
✅ Open Master File
Directly open the master file of the current or selected notebook:
Command Palette → Scimax: Open Notebook Master File
If no current notebook, you'll be prompted to select one.
✅ Notebook Detection
Scimax automatically detects projects when:
VS Code starts (scans workspace folders)
You open a file in a project directory
You manually create a notebook
To disable automatic detection:
{
"scimax.notebook.autoDetect": false
}
✅ Switching Notebooks
Opening a notebook sets it as the "current notebook" which affects:
Scoped search results
Agenda views
Recent files list
Status bar indicators
The current notebook persists across VS Code sessions.
✅ Recent Files
View recently modified files in the current notebook:
Command Palette → Scimax: Recent Files in Notebook
Shows up to 20 files sorted by modification time, with:
File name
Relative path from notebook root
File type icon
✅ Listing Notebook Files
Scimax tracks all .org and .md files in the notebook, automatically excluding:
Hidden directories (starting with `.')
node_modules/
dist/ and build/
.git/
Collaboration
Adding Collaborators
Track project collaborators with:
Command Palette → Scimax: Add Collaborator
You'll be prompted for:
Name
Email address
Role (optional, e.g., "Principal Investigator", "Developer")
Collaborators are stored in .scimax/config.json and can be viewed in:
Notebook tree view
Notebook info command
Viewing Collaborators
Collaborators appear in:
Notebook Tree View: Expand a notebook → Collaborators section
Notebook Info: Run Scimax: Notebook Info
Config File: View .scimax/config.json
Example collaborators in config:
{
"collaborators": [
{
"name": "Dr. Alice Chen",
"email": "alice@institution.edu",
"role": "PI"
},
{
"name": "Bob Martinez",
"email": "bob@student.edu",
"role": "PhD Student"
}
]
}
Notebook Commands
Core Commands
| Command | Description |
|---|---|
Scimax: New Notebook | Create a new notebook |
Scimax: Open Notebook | Open/switch to a notebook |
Scimax: Open Notebook Master File | Open the master file |
Scimax: Recent Files in Notebook | View recently modified files |
Search and Organization
| Command | Description |
|---|---|
Scimax: Search in Notebook | Full-text search within notebook |
Scimax: Notebook Agenda | View agenda items (TODOs, deadlines) |
Scimax: Index Notebook | Index files for search |
Management
| Command | Description |
|---|---|
Scimax: Notebook Settings | Edit .scimax/config.json |
Scimax: Notebook Info | Show notebook metadata |
Scimax: Add Collaborator | Add project collaborator |
Scimax: Archive Notebook | Create zip archive (git repos only) |
Scimax: Remove Notebook from Tracking | Unregister notebook (keeps files) |
Notebook Info
View detailed notebook information:
Command Palette → Scimax: Notebook Info
Displays:
Notebook name and description
File system path
Number of tracked files
Number of collaborators
Git repository status
Creation date
Last accessed date
Notebook Settings
Edit notebook configuration:
Command Palette → Scimax: Notebook Settings
Opens .scimax/config.json in the editor. If the file doesn't exist, Scimax creates a default configuration first.
After editing, save the file to apply changes.
Archive Notebook
Create a zip archive of all committed files (requires git):
Command Palette → Scimax: Archive Notebook
This runs git archive to create a zip file containing the current HEAD state. The archive is saved to the parent directory with the name:
notebook-name-2026-01-13.zip
Only works for notebooks that are git repositories. Uncommitted files are not included.
Remove from Tracking
Stop tracking a notebook without deleting files:
Command Palette → Scimax: Remove Notebook from Tracking
This removes the notebook from Scimax's registry but leaves all files on disk unchanged. Use this to clean up notebooks you no longer work with.
Configuration
Settings
Configure notebook behavior in VS Code settings:
{
// Default parent directory for new notebooks
"scimax.notebook.directory": "~/notebooks",
// Default template: empty, research, software, notes
"scimax.notebook.defaultTemplate": "research",
// Automatically detect projects in workspace
"scimax.notebook.autoDetect": true
}
`scimax.notebook.directory'
Default parent directory for new notebooks. If not set, defaults to ~/notebooks.
Example:
{
"scimax.notebook.directory": "/home/user/projects"
}
`scimax.notebook.defaultTemplate'
Default template for new notebooks. Options:
`empty' - Minimal structure with README.org
`research' - Scientific research project
`software' - Software development project
`notes' - Note-taking with journal
Example:
{
"scimax.notebook.defaultTemplate": "research"
}
`scimax.notebook.autoDetect'
Whether to automatically detect projects in workspace folders. Default: true.
Example:
{
"scimax.notebook.autoDetect": false
}
Integration with Projectile
The notebook system integrates with projectile project management:
Projectile Markers
When creating a notebook, Scimax automatically creates a .projectile file, which:
Marks the directory as a project root
Works with projectile commands
Helps tools identify project boundaries
Compatible with Projectile
All notebooks are compatible with projectile. The .projectile file can contain:
Ignore patterns (one per line, starting with -)
Include patterns (one per line)
Example .projectile:
-node_modules -*.pyc -__pycache__ -.venv -dist -build
Project Root Detection
Scimax uses the same markers as projectile to detect project roots:
`.projectile'
`.git'
Language-specific markers (package.json, Cargo.toml, etc.)
This ensures consistent behavior between scimax notebooks and projectile commands.
Practical Workflows
Research Project Workflow
Create Research Notebook:
Set Up Structure:
Add Collaborators:
Daily Work:
Track Progress:
Archive Milestones:
Software Development Workflow
Create Software Notebook:
Document Architecture:
Integrate with Tools:
Development Cycle:
Search Code and Docs:
Personal Knowledge Base Workflow
Create Notes Notebook:
Organize Topics:
Daily Journal:
Search and Discovery:
Maintain Index:
Multi-Notebook Workflow
Project Switching:
Cross-Notebook Search:
Notebook Organization:
Archiving Old Projects:
Troubleshooting
Notebook Not Detected
If Scimax doesn't detect your project:
Check for project markers (`.projectile', `.git', etc.)
Verify the directory is in your workspace
Check `scimax.notebook.autoDetect' setting
Manually create a `.projectile' file
Reload VS Code window
Master File Not Found
If master file doesn't open:
Check masterFile in .scimax/config.json
Verify the file exists at the specified path
Use one of the default names (README.org, index.org, etc.)
Path should be relative to notebook root
Search Not Working
If notebook search returns no results:
Run Scimax: Index Notebook to rebuild index
Check that files have `.org' or `.md' extensions
Verify database is initialized
Check search scope is set to notebook directory
Archive Command Fails
If archiving fails:
Verify notebook is a git repository (`git status' works)
Ensure you have committed changes
Check git is in your PATH
Review error message in VS Code notifications
Advanced Usage
Custom Templates
While Scimax provides built-in templates, you can create custom setups:
Create a notebook with empty template
Set up your desired structure
Save as a template repository
Clone for new projects
Automation with Custom Commands
Add custom commands to .scimax/config.json:
{
"customCommands": {
"setup": "chmod +x scripts/*.sh && npm install",
"deploy": "./scripts/deploy.sh",
"backup": "rsync -av data/ backup/",
"report": "python scripts/generate_report.py"
}
}
These commands can be used with shell integrations or task runners.
Nested Notebooks
Scimax supports nested projects:
parent-notebook/
├── .projectile
├── README.org
└── sub-project/
├── .projectile
└── README.org
Each level is detected as a separate notebook, useful for:
Monorepo structures
Research programs with multiple studies
Course materials with per-chapter projects
Integration with Bibliography
For research notebooks, integrate with org-ref:
Add bibliography files to config:
Reference citations in org files:
Use Scimax: Open Bibliography to manage references
Version Control Best Practices
For notebooks with git:
Commit .scimax/config.json to share configuration
Add .gitignore for generated files:
Use branches for experimental work
Archive important milestones with tags:
Use Scimax: Archive Notebook to create portable snapshots
Summary
The Scimax notebook system provides powerful project organization for research, development, and knowledge management:
Templates help you start with the right structure
Master files provide clear entry points
Scoped search and agenda views keep you focused
Collaboration features track team members
Projectile integration works with existing tools
Flexible configuration adapts to your workflow
Start by creating your first notebook with Scimax: New Notebook and exploring the commands. The notebook system scales from simple note collections to complex multi-person research projects.