Use when modifying Emacs config files - ensures you edit .org source files not generated .el files, and properly tangle changes
Literate Configuration: Jeff's Emacs config uses org-mode files as source. Editing .el files directly is forbidden - they're auto-generated and changes will be overwritten.
Core principle: .org files are source of truth → tangle to .el files → Emacs loads .el files
Use this skill when:
emacs/ directory.org and .el files in emacs/ directoriesDO NOT edit .el files directly - they get overwritten when tangled
| Task | Method | Command/Trigger |
|---|---|---|
| Normal editing | Auto-tangle | Save .org file (requires #+auto_tangle: y) |
| Manual tangle | Emacs command | C-c C-v t |
| CLI tangling | Script | ./bin/tangle-org.sh path/to/file.org |
| Batch tangle | Script + find | find emacs/ -name "*.org" -exec ./bin/tangle-org.sh {} \; |
.org file#+auto_tangle: y header in file.el fileC-c C-v t (org-babel-tangle)# Single file
./bin/tangle-org.sh emacs/major-modes/org.org
# All org files
find emacs/ -name "*.org" -exec ./bin/tangle-org.sh {} \;
Features: Auto-finds Emacs, validates files, batch mode, clear errors
#+title: Module Name
#+property: header-args:emacs-lisp :tangle module-name.el
#+auto_tangle: y
jf/reload-module to load changes| Mistake | Why Bad | Fix |
|---|---|---|
Editing .el files directly |
Changes overwritten on next tangle | Edit .org file instead |
Committing only .org |
.el out of sync, breaks config |
Commit both .org and .el |
| Forgetting to tangle | Changes in .org not applied |
Save (auto-tangle) or run C-c C-v t |
Missing #+auto_tangle: y |
Manual tangling required | Add header to .org file |
| Property line not activated | Tangling fails silently | Press C-c C-c on #+PROPERTY line |
| Syntax errors in org blocks | Tangle fails silently | Use Claude Code hook for validation |
When auto-tangling or manual tangling fails, see troubleshooting-tangling.md for:
C-c C-c)Quick fix for most issues: Press C-c C-c on the #+PROPERTY: header-args line to activate it.
Claude Code hook (validate_elisp_syntax.py) validates elisp before writing .el files to prevent invalid code.