eln
Skill42 starsChanged 17 days agoMITView on GitHub
Professional scientific documentation in org-mode electronic lab notebooks with date-based organization, comprehensive record-keeping of hypotheses, methods, results, reasoning, and outcomes for reproducible research
In this repository44 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- phd-qualifierSkill
- citation-verifierSkill
- scientific-writingSkill
- brainstormingSkill
- elevenlabsSkill
- image-generationSkill
- presentationsSkill
- video-storytellingSkill
- code-reviewerSkill
- ralph-wiggumSkill
- tddSkill
- version-controlSkill
- opentrons-absorbance-readerSkill
- opentrons-gripperSkill
- opentrons-heater-shakerSkill
- opentrons-magnetic-blockSkill
- opentronsSkill
- opentrons-temperature-moduleSkill
- opentrons-thermocyclerSkill
- planningSkill
- claude-lightSkill
- emacs-lispSkill
- fairchemSkill
- idaesSkill
- materials-propertiesSkill
- pycalphadSkill
- pymatgenSkill
- python-aseSkill
- python-best-practicesSkill
- python-jaxSkill
- python-multiobjective-optimizationSkill
- python-optimizationSkill
- python-plottingSkill
- python-regression-statisticsSkill
- vaspSkill
- pycseSkill
- literature-reviewSkill
- materials-databasesSkill
- scientific-data-extractionSkill
- scientific-reviewerSkill
- scientific-workflowsSkill
- design-of-experimentsSkill
- troubleshootingSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 14 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈14
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Use this skill when:
- Distinctive: line 46
Next steps: Follow-up work, questions raised
- Distinctive: line 53
Follow the chain of logic
- Distinctive: line 56
Write clearly and professionally
- Distinctive: line 59
Never delete or modify past entries (make corrections with new entries)
- Distinctive: line 208
Use tags for categorization and filtering:
- Distinctive: line 512
Start each file with a brief summary:
- Distinctive: line 581
Every computational entry should enable reproduction:
- Distinctive: line 720
Use past tense for work done
- Distinctive: line 721
Use present tense for conclusions
- Distinctive: line 743
When helping with ELN:
- Distinctive: line 747
Ensure reproducibility: - check if enough detail provided
- Distinctive: line 753
Suggest organizational improvements: when appropriate
- Distinctive: line 848
Create comprehensive summaries for easy retrieval and reporting.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Electronic Lab Notebook (ELN) Skill
This skill provides expert guidance for maintaining professional electronic lab notebooks using org-mode, following best practices for scientific documentation, reproducibility, and research integrity.
When to Use This Skill
Use this skill when:
- Creating or updating lab notebook entries
- Documenting experiments, calculations, or analyses
- Recording hypotheses and experimental design
- Documenting computational workflows
- Summarizing results and drawing conclusions
- Organizing research notes chronologically
- Creating cross-references between related work
- Preparing documentation for publications or reports
- Ensuring reproducibility of scientific work
- Maintaining professional research records
Core Principles of Scientific Documentation
1. Chronological Organization
Entries are organized by date in a hierarchical structure:
notebook/
├── 2025/
│ ├── 01-January/
│ │ ├── 2025-01-15.org
│ │ └── 2025-01-20.org
│ └── 02-February/
│ └── 2025-02-03.org2. Complete Documentation
Each entry should contain:
- What was done: Detailed description of work
- Why it was done: Hypothesis, motivation, reasoning
- How it was done: Methods, procedures, parameters
- What was observed: Results, data, observations
- What it means: Analysis, interpretation, conclusions
- Next steps: Follow-up work, questions raised
3. Reproducibility
Documentation should enable anyone (including future you) to:
- Understand the reasoning behind decisions
- Reproduce the work exactly
- Access all data and code used
- Follow the chain of logic
4. Professional Standards
- Write clearly and professionally
- Be honest about failures and unexpected results
- Date and timestamp all entries
- Never delete or modify past entries (make corrections with new entries)
- Include sufficient detail for independent reproduction
Org-Mode ELN Structure
File Organization
Date-Based Files
Each day's work goes in a dated file:
2025-01-15.org # Single day's workDirectory Structure
research-notebook/
├── 2025/
│ ├── 01-January/
│ │ ├── 2025-01-15.org
│ │ ├── 2025-01-16.org
│ │ └── data/
│ │ └── 2025-01-15/
│ │ ├── experiment_results.csv
│ │ └── analysis.png
│ └── 02-February/
├── templates/
│ ├── experiment-template.org
│ └── calculation-template.org
├── index.org # Master index
└── README.org # Project overviewEntry Template Structure
#+TITLE: Lab Notebook - 2025-01-15
#+AUTHOR: Your Name
#+DATE: [2025-01-15 Wed]
#+FILETAGS: :experiment:catalyst:
#+STARTUP: overview
* Daily Summary
Brief overview of what was accomplished today.
* Entry 1: Hypothesis Testing - CO Adsorption on Pt
:PROPERTIES:
:ID: 2025-01-15-001
:PROJECT: Catalyst_Screening
:STATUS: In_Progress
:RELATED: [[file:2025-01-10.org::*Previous Results]]
:END:
** Objective
What are you trying to accomplish and why?
** Hypothesis
Clear statement of what you expect and the reasoning.
** Background/Context
- Why is this important?
- What previous work led to this?
- What are the key questions?
** Methods
*** Computational Setup
Detailed description of how the work was performed.
#+BEGIN_SRC python
# Include actual code used
from ase.build import fcc111
slab = fcc111('Pt', size=(4,4,4), vacuum=10.0)
#+END_SRC
*** Parameters
- DFT functional: PBE
- Energy cutoff: 400 eV
- k-points: 4×4×1
- Convergence: 0.05 eV/Å
** Results
*** Observations
What actually happened? Include data, figures, output.
#+BEGIN_SRC python :results file
# Analysis code
import matplotlib.pyplot as plt
# ... plotting code ...
plt.savefig('data/2025-01-15/adsorption_energy.png')
return 'data/2025-01-15/adsorption_energy.png'
#+END_SRC
#+RESULTS:
[[file:data/2025-01-15/adsorption_energy.png]]
*** Data
| Metal | E_ads (eV) | Site |
|-------+------------+-------|
| Pt | -1.82 | fcc |
| Cu | -0.95 | hcp |
| Au | -0.45 | ontop |
** Analysis
*** Interpretation
What do these results mean?
*** Comparison with Literature
How do results compare with expected values?
*** Unexpected Findings
Anything surprising or anomalous?
** Conclusions
- Key findings
- Hypothesis supported/rejected
- Confidence level in results
** Issues/Problems
Document any problems encountered and how they were resolved.
** Next Steps
- [ ] Validate with different functional
- [ ] Test larger surface models
- [ ] Calculate reaction barriers
** References
- Previous work: [[file:2025-01-10.org::*Initial Screening]]
- Literature: Smith et al. (2024) DOI:10.1021/xxxxx
- Code: [[file:~/projects/catalyst-screening/run_calculations.py]]
* Entry 2: Another Task
...Essential Org-Mode Features for ELN
1. Properties Drawer
:PROPERTIES:
:ID: unique-identifier
:PROJECT: Project_Name
:STATUS: Planning|In_Progress|Complete|On_Hold
:STARTED: [2025-01-15 Wed]
:COMPLETED: [2025-01-15 Wed]
:RELATED: [[link-to-related-entry]]
:DATA: [[file:./data/2025-01-15/results.csv]]
:END:2. Tags
Use tags for categorization and filtering:
#+FILETAGS: :experiment:simulation:catalyst:DFT:
* Entry Title :important:urgent:Common tag categories:
- Type: :experiment:, :simulation:, :analysis:, :literature:, :meeting:
- Topic: :catalyst:, :materials:, :synthesis:, :characterization:
- Status: :todo:, :in_progress:, :done:, :failed:
- Priority: :urgent:, :important:, :routine:
3. Links
# Internal links
[[file:2025-01-10.org::*Previous Results]]
[[id:2025-01-15-001]]
# External links
[[file:~/data/experiment_001.csv][Data file]]
[[https://doi.org/10.1021/xxxxx][Smith et al. 2024]]
# Code links
[[file:~/projects/analysis/plot_results.py]]4. Code Blocks
#+BEGIN_SRC python :results output :session analysis :exports both
import pandas as pd
import matplotlib.pyplot as plt
# Reproducible analysis code
data = pd.read_csv('data/2025-01-15/results.csv')
print(f"Mean energy: {data['energy'].mean():.3f} eV")
#+END_SRC
#+RESULTS:
: Mean energy: -1.234 eV5. Tables
| Parameter | Value | Units | Notes |
|----------------+-----------+-------+--------------------|
| Temperature | 300 | K | Room temperature |
| Pressure | 1 | atm | Standard |
| Coverage | 0.25 | ML | 1/4 monolayer |
#+TBLFM: @2$4=Calculated from geometry6. TODO Items and Checkboxes
** Next Steps
- [ ] Run convergence test for k-points
- [ ] Compare with experimental data from Lee et al.
- [X] Calculate adsorption energy
- [ ] Write up results for group meeting
** TODO Validate results with different functional
DEADLINE: <2025-01-20 Fri>
:PROPERTIES:
:EFFORT: 2h
:END:7. Timestamps
# Active timestamps (appear in agenda)
* Meeting with advisor
<2025-01-20 Fri>
# Inactive timestamps (documentation only)
Calculation started [2025-01-15 Wed]
# Date ranges
Project duration: <2025-01-10 Mon>--<2025-01-30 Mon>Common Entry Types
1. Experimental/Computational Work
* DFT Calculation - Surface Relaxation
:PROPERTIES:
:ID: 2025-01-15-001
:PROJECT: Catalyst_Screening
:TYPE: Calculation
:STATUS: Complete
:END:
** Objective
Optimize the geometry of clean Pt(111) surface.
** Methods
- Calculator: VASP
- Functional: PBE
- ENCUT: 400 eV
- k-points: 6×6×1 Monkhorst-Pack
- Convergence: Forces < 0.05 eV/Å
#+BEGIN_SRC bash
# Command used
vasp_std > vasp.out
#+END_SRC
** Results
- Final energy: -123.45 eV
- Relaxation time: 2.5 hours
- Converged in 45 ionic steps
[[file:./data/2025-01-15/surface_relaxation.png]]
** Analysis
Surface atoms relaxed inward by 0.03 Å (0.8% contraction).
This agrees with literature values (Smith 2023: 0.02-0.04 Å).
** Conclusion
Surface structure validated. Ready for adsorbate calculations.
** Next Steps
- [ ] Add CO adsorbate at FCC site
- [ ] Calculate adsorption energy2. Literature Review Entry
* Literature Review - CO Oxidation Mechanisms
:PROPERTIES:
:ID: 2025-01-15-002
:TOPIC: Catalysis
:STATUS: Complete
:END:
** Paper
Smith, J. et al. (2024) "CO Oxidation on Platinum Surfaces"
J. Phys. Chem. C, DOI: 10.1021/xxxxx
** Key Findings
- CO adsorption energy on Pt(111): -1.5 to -1.8 eV (experimental)
- Preferred site: FCC hollow
- Barrier for CO → CO₂: 0.8 eV
** Relevance to Our Work
Their experimental values provide validation targets for our DFT calculations.
Our predicted -1.82 eV is in excellent agreement.
** Questions Raised
- How does coverage affect binding energy?
- What about stepped surfaces?
** References to Follow Up
- [ ] Lee et al. (2023) - Coverage effects
- [ ] Zhang et al. (2024) - Step sites3. Data Analysis Entry
* Analysis - Comparing Different Functionals
:PROPERTIES:
:ID: 2025-01-15-003
:PROJECT: Method_Validation
:STATUS: Complete
:END:
** Objective
Compare PBE, PBE+D3, and RPBE for CO adsorption energies.
** Data Sources
- PBE: [[file:2025-01-10.org::*PBE Results]]
- PBE+D3: [[file:2025-01-12.org::*Dispersion Results]]
- RPBE: [[file:2025-01-14.org::*RPBE Calculations]]
** Analysis Code
#+BEGIN_SRC python :results file
import pandas as pd
import matplotlib.pyplot as plt
# Compile results
data = {
'Functional': ['PBE', 'PBE+D3', 'RPBE'],
'E_ads': [-1.82, -2.15, -1.45],
'Experiment': [-1.6, -1.6, -1.6]
}
df = pd.DataFrame(data)
# Plot
plt.figure(figsize=(8, 5))
plt.bar(df['Functional'], df['E_ads'], alpha=0.7, label='Calculated')
plt.axhline(y=-1.6, color='r', linestyle='--', label='Experiment')
plt.ylabel('Adsorption Energy (eV)')
plt.legend()
plt.tight_layout()
plt.savefig('data/2025-01-15/functional_comparison.png', dpi=300)
return 'data/2025-01-15/functional_comparison.png'
#+END_SRC
#+RESULTS:
[[file:data/2025-01-15/functional_comparison.png]]
** Findings
| Functional | E_ads (eV) | Error vs Expt (eV) |
|------------+------------+--------------------|
| PBE | -1.82 | -0.22 |
| PBE+D3 | -2.15 | -0.55 |
| RPBE | -1.45 | 0.15 |
#+TBLFM: $3=$2-(-1.6);%.2f
** Conclusions
- PBE gives reasonable agreement (within 0.22 eV)
- PBE+D3 overbinds significantly
- RPBE underestimates binding
- **Decision**: Use PBE for production calculations
** Impact on Previous Work
Need to note that PBE tends to overbind slightly when reporting results.4. Meeting Notes
* Group Meeting - Project Discussion
:PROPERTIES:
:ID: 2025-01-15-004
:TYPE: Meeting
:ATTENDEES: Prof. Smith, Jane Doe, John Smith
:END:
** Agenda
1. Progress updates
2. Results discussion
3. Next steps
** My Update
Presented CO adsorption results on Pt(111):
- E_ads = -1.82 eV (PBE)
- Good agreement with experiment (-1.6 eV)
** Feedback
- Prof. Smith: Test with larger surface to check size effects
- Jane: Compare with her experimental values (coming next week)
- Need to include dispersion for comparison
** Action Items
- [ ] Run calculations with 6×6×4 slab
- [ ] Prepare summary for Jane's experimental comparison
- [ ] Read paper Prof. Smith suggested: Zhang et al. 2024
** Next Meeting
<2025-01-22 Wed 10:00>5. Problem/Debugging Entry
* Troubleshooting - VASP SCF Convergence Issues
:PROPERTIES:
:ID: 2025-01-15-005
:TYPE: Problem
:STATUS: Resolved
:END:
** Problem
VASP calculation not converging after 100 SCF steps.
Error message:
#+BEGIN_EXAMPLE
WARNING: Sub-Space-Matrix is not hermitian in DAV
#+END_EXAMPLE
** Attempted Solutions
1. Increased NELM to 200 - Still failed
2. Changed ALGO from Fast to Normal - No improvement
3. Reduced SIGMA from 0.2 to 0.1 - Failed
4. **Solution**: Used ISMEAR=0 (Gaussian smearing) instead of ISMEAR=1
** Root Cause
System has a band gap. Methfessel-Paxton smearing (ISMEAR=1) is inappropriate.
Gaussian smearing (ISMEAR=0) is better for molecules and systems with gaps.
** Resolution
Changed INCAR:
#+BEGIN_EXAMPLE
ISMEAR = 0
SIGMA = 0.05
#+END_EXAMPLE
Calculation converged in 45 SCF steps.
** Lessons Learned
- Always check if system has a gap before choosing smearing
- For molecules/insulators: Use ISMEAR=0 or ISMEAR=-5
- For metals: ISMEAR=1 or 2 is appropriate
** References
- VASP Wiki: [[https://www.vasp.at/wiki/index.php/ISMEAR]]Best Practices
1. Daily Summaries
Start each file with a brief summary:
* Daily Summary
Today focused on validating DFT functional choice for catalyst project.
Compared PBE, PBE+D3, and RPBE against experimental data. Concluded
that PBE gives best agreement. Started large-scale screening of FCC
metals.
Key accomplishment: Validated methodology for production runs.
Main challenge: VASP convergence issues with molecular systems (resolved).2. Honest Documentation
** Results
Expected: E_ads ≈ -1.5 eV
**Observed: E_ads = -0.45 eV**
This is significantly different from literature values.
** Analysis of Discrepancy
Possible causes:
1. Wrong adsorption site? → Checked: FCC is correct
2. Insufficient k-points? → Tested 8×8×1: -0.46 eV (no change)
3. Functional issue? → Literature used PBE, we used PBE
4. **Surface coverage?** → Our 1/16 ML vs literature 1/4 ML
** Resolution
Rerun with higher coverage to match literature conditions.
Original calculation still valid for low-coverage limit.3. Version Control Integration
** Computational Details
Code version: catalyst-tools v2.3.1
Git commit: a3f5e2b
#+BEGIN_SRC bash
git log -1 --oneline
#+END_SRC
#+RESULTS:
: a3f5e2b Fix convergence criteria in optimizer4. Data Management
** Data Files
- Raw output: [[file:./data/2025-01-15/OUTCAR]]
- Processed data: [[file:./data/2025-01-15/results.csv]]
- Analysis notebook: [[file:./data/2025-01-15/analysis.ipynb]]
- Archived: ~/archives/2025/january/calculation_001.tar.gz
MD5 checksums:
- OUTCAR: 5d41402abc4b2a76b9719d911017c592
- results.csv: 7d793037a0760186574b0282f2f435e75. Cross-Referencing
** Related Work
- Background: [[file:2025-01-05.org::*Literature Review]]
- Previous attempt: [[file:2025-01-12.org::*Failed Calculation]] (explains why approach changed)
- Follow-up: [[file:2025-01-18.org::*Extended Analysis]]
- Project overview: [[file:../index.org::*Catalyst Screening Project]]6. Reproducibility Checklist
Every computational entry should enable reproduction:
** Reproducibility Information
- [X] Software versions documented
- [X] Input files included or linked
- [X] Random seeds specified (if applicable)
- [X] Computational environment described
- [X] Data processing code included
- [X] Analysis scripts provided
- [X] Key outputs archived
Environment:
- VASP: 6.4.2
- Python: 3.11.4
- ASE: 3.23.0
- NumPy: 1.24.3Search and Retrieval
Using Org-Mode Search
# Search by tag
C-c / m # Match tags
Search: experiment+DFT-failed
# Search by TODO
C-c / t # Show TODOs
# Search by text
C-c / r # Regex search
# Org-agenda
C-c a s # Search across all agenda filesCreating Index File
#+TITLE: Research Notebook Index
#+STARTUP: overview
* Projects
** [[file:2025/01-January/2025-01-15.org::*Catalyst Screening][Catalyst Screening Project]]
Started: [2025-01-05]
Status: Active
** Method Validation
Started: [2025-01-10]
Status: Complete
* Key Results
** [[file:2025/01-January/2025-01-15.org::*Functional Comparison][Best DFT Functional for CO Adsorption]]
Result: PBE preferred (error < 0.25 eV)
* Important Techniques
** [[file:2025/01-January/2025-01-12.org::*Convergence Testing][How to Test k-point Convergence]]Templates
Quick Entry Template
* Short Description
:PROPERTIES:
:ID: YYYY-MM-DD-NNN
:END:
** What I Did
** Why
** Results
** Next StepsFull Research Entry Template
* Project - Specific Task
:PROPERTIES:
:ID: YYYY-MM-DD-NNN
:PROJECT: Project_Name
:STATUS: In_Progress
:END:
** Objective
** Hypothesis
** Methods
** Results
** Analysis
** Conclusions
** Next StepsIntegration with Computational Workflows
Embedding Code
#+BEGIN_SRC python :results output :session :exports both
from ase.build import molecule
from ase.optimize import BFGS
mol = molecule('H2O')
# ... calculation code ...
print(f"Optimized energy: {mol.get_potential_energy():.3f} eV")
#+END_SRCCapturing Output
#+BEGIN_SRC bash :results output
cd ~/calculations/calc_001
grep "energy" OUTCAR | tail -1
#+END_SRC
#+RESULTS:
: free energy = -123.456789 eVIncluding Figures
#+CAPTION: CO adsorption energy vs coverage
#+NAME: fig:ads_energy
#+ATTR_ORG: :width 400
[[file:./data/2025-01-15/adsorption_plot.png]]
See Figure [[fig:ads_energy]] for trends.Professional Writing Guidelines
1. Clarity
- Write complete sentences
- Use past tense for work done
- Use present tense for conclusions
- Avoid ambiguous pronouns
2. Precision
- Include units: "300 K" not "300"
- Specify parameters: "PBE functional" not "DFT"
- Quantify: "decreased by 15%" not "decreased significantly"
3. Organization
- Use hierarchical structure
- One concept per section
- Chronological within day
- Logical grouping across days
4. Completeness
- Include negative results
- Document failed attempts
- Explain unexpected outcomes
- Preserve troubleshooting notes
Response Patterns
When helping with ELN:
- Suggest appropriate structure for the entry type
- Ask clarifying questions about what was done, why, and outcomes
- Recommend org-mode features that fit the task
- Ensure reproducibility - check if enough detail provided
- Encourage cross-referencing to related work
- Format code and data properly
- Include metadata (properties, tags, timestamps)
- Maintain professional tone while being helpful
- Prompt for conclusions and next steps
- Suggest organizational improvements when appropriate
Common Scenarios
Starting New Project
* Project Initiation - Catalyst Screening Study
:PROPERTIES:
:ID: 2025-01-15-001
:PROJECT: Catalyst_Screening
:STATUS: Planning
:END:
** Project Goal
Identify optimal catalyst for CO oxidation through computational screening.
** Background
[Literature review, motivation]
** Approach
1. Validate methodology with Pt(111) benchmark
2. Screen FCC metals (Cu, Ag, Au, Pt, Pd, Ni)
3. Analyze trends using d-band model
4. Validate top candidates with experiments
** Success Criteria
- Identify 2-3 promising candidates
- Error < 0.3 eV vs experiment
- Complete by [2025-02-28]
** Initial Tasks
- [ ] Set up calculation framework
- [ ] Run Pt(111) benchmark
- [ ] Compare functionalsDocumenting Failure
* Failed Attempt - NEB Calculation
:PROPERTIES:
:ID: 2025-01-15-006
:STATUS: Failed
:END:
** Objective
Calculate CO diffusion barrier on Pt(111).
** Approach
NEB with 7 images, climbing image method.
** Problem
Images diverged after 20 steps. Final image forces > 5 eV/Å.
** Analysis
Initial path guess was poor - CO moved through bulk instead of surface.
** Lessons Learned
- Need better initial path interpolation
- Check geometry of intermediate images before optimization
- Use more images (9-11) for surface diffusion
** Next Attempt
Will use improved path generation script and verify geometries.
Scheduled for [[file:2025-01-16.org][tomorrow]].Archiving and Long-Term Storage
End-of-Month Summary
#+TITLE: January 2025 Summary
#+DATE: [2025-01-31]
* Overview
Completed validation of DFT methodology for catalyst project.
Screened 6 FCC metals for CO adsorption. Identified Pt and Pd as
most promising candidates.
* Key Accomplishments
- Validated PBE functional (error < 0.25 eV)
- Completed metal screening
- Resolved VASP convergence issues
* Data Generated
- 24 DFT calculations
- 180 GB raw data (archived to ~/archives/2025/january/)
- 6 publications figures prepared
* Next Month Goals
- Begin reaction barrier calculations
- Compare with experimental data from collaborators
- Draft results section for paperYear-End Review
Create comprehensive summaries for easy retrieval and reporting.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

