xenodium-elisp
Xenodium's Emacs packages: chatgpt-shell, agent-shell, dwim-shell-command, and ACP integration for modern Emacs development.
Best use case
xenodium-elisp is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Xenodium's Emacs packages: chatgpt-shell, agent-shell, dwim-shell-command, and ACP integration for modern Emacs development.
Teams using xenodium-elisp should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/xenodium-elisp/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How xenodium-elisp Compares
| Feature / Agent | xenodium-elisp | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Xenodium's Emacs packages: chatgpt-shell, agent-shell, dwim-shell-command, and ACP integration for modern Emacs development.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Xenodium Elisp Skill
> *"The best UI is no UI. The second best UI is Emacs."*
## Package Overview
| Package | Stars | Description |
|---------|-------|-------------|
| [chatgpt-shell](https://github.com/xenodium/chatgpt-shell) | 1180⭐ | Multi-LLM Emacs shell (ChatGPT, Claude, DeepSeek, Gemini, Ollama) |
| [agent-shell](https://github.com/xenodium/agent-shell) | 415⭐ | Native Emacs buffer for LLM agents via ACP |
| [dwim-shell-command](https://github.com/xenodium/dwim-shell-command) | 293⭐ | Save and apply shell commands with ease |
| [acp.el](https://github.com/xenodium/acp.el) | 109⭐ | Agent Client Protocol implementation |
| [ob-swiftui](https://github.com/xenodium/ob-swiftui) | 87⭐ | SwiftUI in Org Babel blocks |
| [sqlite-mode-extras](https://github.com/xenodium/sqlite-mode-extras) | 58⭐ | Enhanced sqlite-mode |
## chatgpt-shell: Multi-LLM Interface
```elisp
(use-package chatgpt-shell
:custom
(chatgpt-shell-model-version "gpt-4o")
(chatgpt-shell-anthropic-key (getenv "ANTHROPIC_API_KEY"))
(chatgpt-shell-openai-key (getenv "OPENAI_API_KEY"))
:config
;; Switch between models
(setq chatgpt-shell-model-versions
'("gpt-4o" "gpt-4-turbo" "claude-3-5-sonnet" "gemini-pro")))
;; Key bindings
(global-set-key (kbd "C-c g") 'chatgpt-shell)
(global-set-key (kbd "C-c G") 'chatgpt-shell-send-region)
```
### Shell Commands
| Command | Description |
|---------|-------------|
| `chatgpt-shell` | Open interactive shell |
| `chatgpt-shell-send-region` | Send selected region |
| `chatgpt-shell-describe-code` | Explain code at point |
| `chatgpt-shell-refactor-code` | Refactor with AI |
| `chatgpt-shell-generate-unit-test` | Generate tests |
## agent-shell: ACP-Powered Agents
Agent Client Protocol enables structured agent workflows:
```elisp
(use-package agent-shell
:after acp
:config
(setq agent-shell-default-agent "coding-assistant"))
;; Define custom agent
(acp-define-agent "music-topos-agent"
:system-prompt "You are a categorical music theory assistant..."
:tools '((:name "generate-color"
:description "Generate deterministic color from seed"
:parameters ((:name "seed" :type "integer")
(:name "index" :type "integer")))))
```
## dwim-shell-command: Smart Shell Integration
```elisp
(use-package dwim-shell-command
:bind (("M-!" . dwim-shell-command)
("C-c !" . dwim-shell-command-on-marked-files)))
;; Define reusable commands
(dwim-shell-command-define
:name "Convert to WebP"
:command "cwebp -q 80 '<<f>>' -o '<<fne>>.webp'"
:utils "cwebp")
(dwim-shell-command-define
:name "FFmpeg to GIF"
:command "ffmpeg -i '<<f>>' -vf 'fps=10,scale=320:-1' '<<fne>>.gif'"
:utils "ffmpeg")
```
### Template Variables
| Variable | Meaning |
|----------|---------|
| `<<f>>` | Full file path |
| `<<fne>>` | File path without extension |
| `<<e>>` | File extension |
| `<<*>>` | All marked files |
## acp.el: Agent Client Protocol
```elisp
(use-package acp
:config
;; Register MCP servers
(acp-register-server
:name "gay-mcp"
:command '("julia" "--project=@gay" "-e" "using Gay; Gay.serve_mcp()")
:env '(("GAY_SEED" . "1069")))
(acp-register-server
:name "firecrawl"
:command '("npx" "-y" "firecrawl-mcp")))
```
## sqlite-mode-extras: Enhanced Database UI
```elisp
(use-package sqlite-mode-extras
:after sqlite-mode
:hook (sqlite-mode . sqlite-mode-extras-minor-mode)
:bind (:map sqlite-mode-map
("n" . sqlite-mode-extras-next-row)
("p" . sqlite-mode-extras-prev-row)
("e" . sqlite-mode-extras-edit-cell)
("x" . sqlite-mode-extras-execute)))
```
## Integration with Music Topos
### Gay.jl Colors in chatgpt-shell
```elisp
(defun gay/chatgpt-shell-colorize-response ()
"Colorize chatgpt-shell responses with deterministic colors."
(let* ((response-count (length chatgpt-shell--conversation))
(color (gay-color-at gay-seed-default response-count))
(hex (gay-color-to-hex color)))
(put-text-property (point-min) (point-max)
'face `(:background ,hex))))
(add-hook 'chatgpt-shell-response-hook #'gay/chatgpt-shell-colorize-response)
```
### GF(3) Conservation for Agent Responses
```elisp
(defun gay/agent-response-trit (response)
"Map agent response to trit based on sentiment/category."
(let* ((hash (sxhash response))
(color (gay-color-at gay-seed-default (mod hash 1000)))
(hue (plist-get color :H)))
(gay-hue-to-trit hue)))
(defun gay/verify-conversation-gf3 ()
"Verify GF(3) conservation across conversation."
(let ((trits (mapcar #'gay/agent-response-trit
chatgpt-shell--conversation)))
(gay-gf3-conserved-p trits)))
```
## Transient Integration
```elisp
(require 'transient)
(transient-define-prefix gay-transient ()
"Gay.el color generation commands."
["Colors"
("p" "Generate palette" gay-generate-palette)
("c" "Check GF(3)" gay-check-gf3)
("h" "Color at index" gay-color-at-interactive)]
["Agents"
("s" "Spawn hierarchy" narya/spawn-hierarchy)
("d" "Demo" narya/demo)]
["Shell"
("g" "ChatGPT Shell" chatgpt-shell)
("a" "Agent Shell" agent-shell)])
(global-set-key (kbd "C-c C-g") 'gay-transient)
```
## Xenomodern Philosophy
Xenodium's approach embodies xenomodernity through:
1. **Embrace the old** (Emacs) **while pushing forward** (LLM integration)
2. **Ironic distance** from "modern" GUIs while building better UX
3. **DWIM philosophy**: Do What I Mean, not what I said
4. **Composable primitives**: Small packages that combine powerfully
```
xenodium
│
┌──────────────┼──────────────┐
│ │ │
Emacs Lisp Modern LLMs Unix Tools
(1976) (2022+) (1970s)
│ │ │
└──────────────┴──────────────┘
│
Ironic Synthesis
(chatgpt-shell, acp.el)
```
## Commands
```bash
just xenodium-setup # Install xenodium packages
just chatgpt-shell-demo # Run chatgpt-shell demo
just agent-shell-config # Configure agent-shell with MCP
just dwim-define # Create custom dwim-shell-command
```
## Resources
- [xenodium.com](https://xenodium.com/) - Blog with Emacs tips
- [YouTube: Xenodium](https://www.youtube.com/@xenodium) - Video tutorials
- [ACP Specification](https://agentclientprotocol.com/) - Agent Client ProtocolRelated Skills
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
entity-class-conventions
Sets the standards for entity class design including annotations, ID generation strategies, and relationship configurations for database interaction.
enhancer
Transform simple prompts into comprehensive, context-aware prompts. Use for prompt enhancement, requirements analysis, and implementation strategy. Includes Context7 prompt engineering guides lookup.
Enhance Meeting Minutes
This skill should be used when enhancing FHIR meeting minutes by synthesizing transcript discussion into Confluence pages, capturing reasoning and trade-offs with XML DOM manipulation
engram
Persistent semantic memory layer for AI agents. Local-first storage (SQLite+LanceDB) with Ollama embeddings. Store and recall facts, decisions, preferences, events, relationships across sessions. Supports memory decay, deduplication, typed memories (5 types), memory relationships (7 graph relation types), agent/user scoping, semantic search, context-aware recall, auto-extraction from text (rules/LLM/hybrid), import/export, REST API, MCP protocol. Solves context window and compaction amnesia. Server at localhost:3400, dashboard at /dashboard. Install via npm (engram-memory), requires Ollama with nomic-embed-text model.
Enforce Agent Identity in Skill
No description provided.
emblem-ai-agent-wallet
Connect to EmblemVault and manage crypto wallets via Emblem AI - Agent Hustle. Supports Solana, Ethereum, Base, BSC, Polygon, Hedera, and Bitcoin. Use when the user wants to trade crypto, check balances, swap tokens, or interact with blockchain wallets.
email-triage-draft-replies
Review unread email, categorize it, and draft replies (no sending without approval)
email-extractor
Expert in email content extraction and analysis. **Use whenever the user mentions .eml files, email messages, says "Extract email information", "Using the email information", or requests to extract, parse, analyze, or process email files.** Handles email thread parsing, attachment extraction, and converting emails to structured markdown format for AI processing. (project, gitignored)
ElevenLabs Automation
Automate ElevenLabs text-to-speech workflows -- generate speech from text, browse and inspect voices, check subscription limits, list models, stream audio, and retrieve history via the Composio MCP integration.
eda
Exploratory Data Analysis for tabular data. Use when analyzing column distributions, checking data quality, examining class balance, detecting missing patterns, or generating summary statistics for datasets.
economic-calendar-fetcher
Fetch upcoming economic events and data releases using FMP API. Retrieve scheduled central bank decisions, employment reports, inflation data, GDP releases, and other market-moving economic indicators for specified date ranges (default: next 7 days). Output chronological markdown reports with impact assessment.