From my-skills
Interact with your running Emacs server. Evaluate Emacs Lisp, query Emacs state, and work with buffers that don't have files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/my-skills:emacsWhen to use
Use for Emacs-specific operations only: evaluating Lisp, accessing Emacs variables/state, and working with buffers that don't have files on disk (like *scratch*). For reading/writing actual files, use the built-in Read/Write/Edit tools instead.
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Interact with your running Emacs server via `emacsclient`. Evaluate Emacs Lisp expressions, read and write buffer contents, execute commands, and access your Emacs environment.
Interact with your running Emacs server via emacsclient. Evaluate Emacs Lisp expressions, read and write buffer contents, execute commands, and access your Emacs environment.
emacs --daemon or add (server-start) to your init.elVerify: emacsclient -e "(+ 1 2)" should return 3
For reading/writing files on disk: Use the built-in Claude tools instead:
This skill is best reserved for Emacs-only operations:
Even if a buffer has a file backing it, use the Read/Write tools for the file content—they're simpler and don't require a running Emacs instance.
emacsclient -e "(+ 1 2)"
emacsclient -e "(buffer-name)"
emacsclient -e "(symbol-value 'load-path)"
# Current buffer
emacsclient -e "(buffer-substring-no-properties (point-min) (point-max))"
# Specific buffer
emacsclient -e "(with-current-buffer \"myfile.org\" (buffer-substring-no-properties (point-min) (point-max)))"
# Replace buffer contents
emacsclient -e "(with-current-buffer \"scratch\" (erase-buffer) (insert \"new content\"))"
# Append to buffer
emacsclient -e "(with-current-buffer \"notes\" (goto-char (point-max)) (insert \"\\nNew line\"))"
# Get variable
emacsclient -e "(symbol-value 'user-full-name)"
# Set variable
emacsclient -e "(setq fill-column 100)"
# Save buffer
emacsclient -e "(call-interactively 'save-buffer)"
# Switch to buffer
emacsclient -e "(switch-to-buffer \"*scratch*\")"
(with-current-buffer "myfile.el"
(goto-char (point-max))
(newline)
(insert "(defun my-function () \"docstring\" ())"))
(directory-files "/path/to/project" t "\\.el$")
(org-map-entries (lambda () (org-get-heading t t)))
; File exists?
(file-exists-p "/path/to/file")
; File size
(file-attribute-size (file-attributes "/path/to/file"))
; Modification time
(file-attribute-modification-time (file-attributes "/path/to/file"))
(mapcar #'buffer-name (buffer-list))
Extract TODO items from your Emacs notes:
(org-map-entries (lambda ()
(cons (org-get-heading t t)
(org-get-property-block (point)))))
Insert a new TODO into your inbox:
(with-current-buffer "inbox.org"
(goto-char (point-max))
(insert "\n* TODO ")
(insert "YOUR TASK HERE"))
| Error | Solution |
|---|---|
emacsclient: can't find socket | Start Emacs: emacs --daemon |
Symbol's value as variable is void | Check variable name spelling |
Buffer ... does not exist | Verify buffer name: emacsclient -e "(buffer-list)" |
Wrong number of arguments | Review Emacs Lisp docs for function signature |
\\n for newlines in string literalsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub brewski82/my-skills --plugin my-skills