GNU Emacs as a stateful Lisp machine for agents — daemon, moo-* protocol, emacs.py router, emacs:// URLs, spoken grammar, play-learn-lift.
Pro scans all 15 files and shows the line behind each finding
Scanned 10/6/2026
npx -y skills add SimHacker/moollm --skill emacs --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Emacs?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/simhacker-emacs)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: emacs
description: GNU Emacs as a stateful Lisp machine for agents — daemon, moo-* protocol, emacs.py router, emacs:// URLs, spoken grammar, play-learn-lift.
allowed-tools: [read, grep, glob, run_terminal_cmd]
related: [sister-script, play-learn-lift, yaml-jazz, cursor-mirror, robust-first]
license: MIT
---
# Emacs (MOO)
## What this skill is
GNU Emacs with `emacs --daemon` is a **long-lived evaluator**: buffers, modes, and elisp are the program. Agents and humans share **persistent context** (open files, marks, narrowing, undo). The **sister script** `scripts/emacs.py` adapts `emacsclient` for tools: **JSON-shaped results**, **named targets**, **batching**, **logging**, and **`emacs://`** routing.
This is **not** a thin “run one shell command” wrapper. The value is the **protocol**: what to return after each operation, how to name multiple daemons, how speech and intent map to elisp.
## Three interaction tiers
1. **Intent** — `(moo-rename-symbol "a" "b" :scope 'project)` style (to be implemented in elisp; names in CARD).
2. **Structural** — `(moo-in-defun "foo" ...)` , `(moo-try BODY)` with `atomic-change-group`.
3. **Raw elisp** — `(emacs.py eval "(+ 1 2)")` or direct `emacsclient --eval`.
## Sister script: `scripts/emacs.py`
Subcommands (see `--help`):
- `status` — daemon up, current target
- `eval SEXP` — evaluate, print JSON `{ok, value, error}` where possible
- `target list | current | use NAME` — `~/.emacs.d/moo/servers.yml`
- `speak TEXT` — placeholder: will use `spoken-grammar.yml` + optional local LLM
- `url EMACS_URL` — resolve and dispatch (staged implementation)
Environment:
- `EMACSCLIENT` — path to emacsclient (default: `emacsclient`)
- `MOO_EMACS_TARGET` — default target name
Logs: append JSON lines to `.moollm/skills/emacs/logs/command-log.jsonl` when run from a MOOLLM workspace.
## Elisp side (templates/)
Install copies under `~/.emacs.d/moo/` (see `templates/init.el`):
- `moo-protocol.el` — `moo-with-effects`, standard result plist
- `moo-structural.el` — structural helpers
- `moo-oneshot.el` — oneshot define / log / promote
- `moo-macros.el` — macro capture and schema export hooks
## Integration
- **play-learn-lift** — oneshot log + macro list + command-log.jsonl
- **cursor-mirror** — optional: correlate agent edits with Emacs log
- **yaml-jazz** — `spoken-grammar.yml` comments carry semantics
## Cursor prompt / aiService snapshot
Optional: [reference/cursor-aiService-prompts.yaml](reference/cursor-aiService-prompts.yaml) holds `aiService.prompts` and `aiService.generations` from the workspace DB (see [reference/README.md](reference/README.md)). Regenerate with `cursor-mirror export-prompts <workspace-id> -o …`.
## Part of MOOLLM
Repo [README](../../README.md), [skills/README.md](../README.md).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!