✅ 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:

  1. Name: The notebook directory name (e.g., "my-research-project")

  2. Description: Optional brief description

  3. Parent Directory: Where to create the notebook (defaults to scimax.notebook.directory setting)

  4. Template: Choose from empty, research, software, or notes

  5. 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:

  1. Create a project directory

  2. Add a `.projectile' file (can be empty)

  3. Optionally create .scimax/config.json

  4. 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:

  1. File specified in `config.json' (`masterFile' field)

  2. `README.org'

  3. `README.md'

  4. `index.org'

  5. `index.md'

  6. `main.org'

  7. `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:

  1. VS Code starts (scans workspace folders)

  2. You open a file in a project directory

  3. 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/

Searching and Navigation

Search in Notebook

Search within a specific notebook using full-text search:

Command Palette → Scimax: Search in Notebook

This command:

  1. Prompts for a notebook (or uses current notebook)

  2. Asks for search query

  3. Sets database search scope to the notebook directory

  4. Displays results with:

Results are limited to 100 matches and use FTS5 full-text search with BM25 ranking.

Notebook Agenda

View agenda items (TODOs, scheduled, deadlines) scoped to a notebook:

Command Palette → Scimax: Notebook Agenda

Shows:

  • TODO items with state (TODO, DONE, etc.)

  • Scheduled items with dates

  • Deadlines with countdown/overdue indicators

  • Priority indicators ([#A], [#B], [#C])

The agenda includes items up to 2 weeks in the future and all unscheduled TODOs.

Notebook Index

Index all files in a notebook for search:

Command Palette → Scimax: Index Notebook

This recursively indexes all `.org' and `.md' files in the notebook directory, updating the Scimax database for fast full-text and semantic search.

Progress is shown in a notification with a progress bar.

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:

  1. Notebook Tree View: Expand a notebook → Collaborators section

  2. Notebook Info: Run Scimax: Notebook Info

  3. 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

CommandDescription
Scimax: New NotebookCreate a new notebook
Scimax: Open NotebookOpen/switch to a notebook
Scimax: Open Notebook Master FileOpen the master file
Scimax: Recent Files in NotebookView recently modified files

Search and Organization

CommandDescription
Scimax: Search in NotebookFull-text search within notebook
Scimax: Notebook AgendaView agenda items (TODOs, deadlines)
Scimax: Index NotebookIndex files for search

Management

CommandDescription
Scimax: Notebook SettingsEdit .scimax/config.json
Scimax: Notebook InfoShow notebook metadata
Scimax: Add CollaboratorAdd project collaborator
Scimax: Archive NotebookCreate zip archive (git repos only)
Scimax: Remove Notebook from TrackingUnregister 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:

  1. `.projectile'

  2. `.git'

  3. Language-specific markers (package.json, Cargo.toml, etc.)

This ensures consistent behavior between scimax notebooks and projectile commands.

Practical Workflows

Research Project Workflow

  1. Create Research Notebook:

  2. Set Up Structure:

  3. Add Collaborators:

  4. Daily Work:

  5. Track Progress:

  6. Archive Milestones:

Software Development Workflow

  1. Create Software Notebook:

  2. Document Architecture:

  3. Integrate with Tools:

  4. Development Cycle:

  5. Search Code and Docs:

Personal Knowledge Base Workflow

  1. Create Notes Notebook:

  2. Organize Topics:

  3. Daily Journal:

  4. Search and Discovery:

  5. Maintain Index:

Multi-Notebook Workflow

  1. Project Switching:

  2. Cross-Notebook Search:

  3. Notebook Organization:

  4. Archiving Old Projects:

Troubleshooting

Notebook Not Detected

If Scimax doesn't detect your project:

  1. Check for project markers (`.projectile', `.git', etc.)

  2. Verify the directory is in your workspace

  3. Check `scimax.notebook.autoDetect' setting

  4. Manually create a `.projectile' file

  5. Reload VS Code window

Master File Not Found

If master file doesn't open:

  1. Check masterFile in .scimax/config.json

  2. Verify the file exists at the specified path

  3. Use one of the default names (README.org, index.org, etc.)

  4. Path should be relative to notebook root

Search Not Working

If notebook search returns no results:

  1. Run Scimax: Index Notebook to rebuild index

  2. Check that files have `.org' or `.md' extensions

  3. Verify database is initialized

  4. Check search scope is set to notebook directory

Archive Command Fails

If archiving fails:

  1. Verify notebook is a git repository (`git status' works)

  2. Ensure you have committed changes

  3. Check git is in your PATH

  4. Review error message in VS Code notifications

Advanced Usage

Custom Templates

While Scimax provides built-in templates, you can create custom setups:

  1. Create a notebook with empty template

  2. Set up your desired structure

  3. Save as a template repository

  4. 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:

  1. Add bibliography files to config:

  2. Reference citations in org files:

  3. Use Scimax: Open Bibliography to manage references

Version Control Best Practices

For notebooks with git:

  1. Commit .scimax/config.json to share configuration

  2. Add .gitignore for generated files:

  3. Use branches for experimental work

  4. Archive important milestones with tags:

  5. 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.

Navigation