Trellis Session Insight
mindfold-ai/Trellis
Reach into past AI conversation history through the trellis mem CLI.
Assist with Emacs Lisp (elisp) development, debugging, and parenthesis matching.
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install captainflasmr/ollama-buddy elisp-dev --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/elisp-dev .claude/skills/elisp-dev && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .claude/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-devType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install captainflasmr/ollama-buddy elisp-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/elisp-dev .agents/skills/elisp-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .agents/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install captainflasmr/ollama-buddy elisp-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/elisp-dev .cursor/skills/elisp-dev && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .cursor/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/captainflasmr/ollama-buddy.git --path .agents/skills/elisp-dev--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install captainflasmr/ollama-buddy elisp-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/elisp-dev .gemini/skills/elisp-dev && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .gemini/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install captainflasmr/ollama-buddy elisp-devInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/elisp-dev .github/skills/elisp-dev && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .github/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install captainflasmr/ollama-buddy elisp-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/elisp-dev .opencode/skills/elisp-dev && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "elisp-dev" agent skill from https://github.com/captainflasmr/ollama-buddy/tree/main/.agents/skills/elisp-dev into .opencode/skills/elisp-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elisp-dev", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
elisp-devAssist with Emacs Lisp (elisp) development, debugging, and parenthesis matching.
Elisp Dev is an agent skill from captainflasmr/ollama-buddy. Assist with Emacs Lisp (elisp) development, debugging, and parenthesis matching. Use this skill when the user is writing, editing, or debugging elisp code, struggling with unbalanced parentheses, or needs help with elisp development workflows. Trigger on phrases like "debug my elisp", "unbalanced parentheses", "paren matching", "elisp debugging", or any request involving writing or fixing Emacs Lisp code.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Debugging. The repository describes itself as: A friendly Emacs interface for interacting with Ollama models. The licence is GPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 12eaf7f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are elisp).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Elisp Dev loads about 2.7k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 932 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from captainflasmr/ollama-buddy at commit 12eaf7f, republished under its GPL-3.0 licence (© captainflasmr). 932 words, ~2,695 tokens.
.claude/skills/elisp-dev/SKILL.md (or your agent's skills folder).You are assisting with Emacs Lisp development. Your goal is to help the user write correct, idiomatic elisp and debug issues efficiently.
| Key / Command | Action |
|---|---|
C-M-f (forward-sexp) | Move forward across one balanced expression |
C-M-b (backward-sexp) | Move backward across one balanced expression |
C-M-n (forward-list) | Move forward across one balanced list |
C-M-p (backward-list) | Move backward across one balanced list |
C-M-u (backward-up-list) | Move up one level of parentheses |
C-M-d (down-list) | Move down one level of parentheses |
C-M-k (kill-sexp) | Kill the balanced expression following point |
C-M-SPC (mark-sexp) | Mark the balanced expression following point |
C-M-t (transpose-sexps) | Transpose the sexps around point |
Enable show-paren-mode globally:
(show-paren-mode 1)Or configure it:
(setq show-paren-delay 0
show-paren-style 'mixed) ; 'parenthesis, 'expression, or 'mixedparedit or smartparensParedit provides strict structural editing:
| Key | Action |
|---|---|
( | Inserts () and places cursor inside |
) | Moves past closing paren ("smart close") |
M-(" | Wraps the next sexp in parentheses |
M-s" | Splits the current sexp at cursor |
M-r" | Raises the current sexp (replaces parent with child) |
C-k" | Kills the sexp, preserving structure |
`M-<up>`` | Splice sexp, killing everything around it |
`M-<down>`` | Splice sexp into parent |
Smartparens is more flexible and works with multiple languages:
(require 'smartparens-config)
(smartparens-global-mode 1)Use check-parens:
M-x check-parens jumps to the first unmatched parenUse Emacs to scan:
;; Evaluate this to find the position of unbalanced parens
(with-current-buffer (current-buffer)
(goto-char (point-min))
(condition-case err
(while (not (eobp))
(forward-sexp))
(error (message "Unbalanced at position %d, line %d"
(point) (line-number-at-pos)))))Use count-pairs approach:
;; Count all parens in the file
(let ((open (count-matches "(" (point-min) (point-max)))
(close (count-matches ")" (point-min) (point-max))))
(message "Open: %d, Close: %d, Diff: %d" open close (- open close)))Narrow to the problematic region:
C-x n n (narrow-to-region)M-x check-parensC-x n w (widen) to restore" inside a string without escaping breaks parsingmessage — The Print Debugger(message "Value of x: %S" x) ; %S for lisp objects, %s for strings
(message "Point is at %d" (point))
(message "Buffer: %s, Line: %d" (buffer-name) (line-number-at-pos))View the *Messages* buffer with C-h e.
debug-on-error — Automatic Stack Traces(setq debug-on-error t) ; Enter debugger on any error
(setq debug-on-signal t) ; Also break on signals (very verbose)Toggle interactively: M-x toggle-debug-on-error
In the debugger:
c — continued — step through (single-step)q — quit debuggere — evaluate expressionh — helpInstrument a function for debugging:
C-u C-M-x (eval-defun with prefix) — instrument the current defunM-x edebug-defun — same thingM-x edebug-all-defs — instrument all subsequent defs as they're evaluatedExecution control while in Edebug:
| Key | Action |
|---|---|
SPC | Step through (next expression) |
n | Next (skip stepping into function calls) |
t | Trace (show but don't stop at each step) |
T | Rapid trace (faster, less display) |
g | Go (run until next breakpoint) |
c | Continue (run until done or break) |
f | Forward (exit current function) |
o | Out (step out of current function) |
i | Step in (step into function call) |
q | Quit Edebug |
b | Set breakpoint at point |
u | Unset breakpoint |
x | Set conditional breakpoint |
e | Evaluate expression (M-: in Edebug) |
r | Return a value from current function |
d | Display details of current expression |
w | Where (show backtrace) |
? | Help |
Breakpoints:
b at point to set/unsetx for conditional: x (equal x 42)B to show all breakpointsU to unset all breakpointsEvaluate expressions during debugging:
e — evaluate in minibufferM-: — evaluate with completiontrace-function — Function Call Tracing(require 'trace)
(trace-function 'my-function) ; Trace calls to my-function
(untrace-function 'my-function) ; Stop tracing
(untrace-all) ; Stop all tracingOutput goes to *trace-output* buffer.
(debug) ; Enter debugger immediately when this is evaluatedOr use M-x debug to enter the debugger at the current position.
;; Simple timing
(benchmark-run 1 (my-function))
;; More detailed
(benchmark-run-compiled 100 (my-function))
;; Profile a specific function
(profiler-start 'cpu)
(my-function)
(profiler-stop)
(profiler-report);; Describe a variable
C-h v variable-name
;; Describe a function
C-h f function-name
;; Apropos (search for symbols)
C-h a regexp
;; Inspect value
M-: variable-name RET
;; Pretty-print a complex structure
M-x pp-eval-expression RET variable-name RET| Key | Action |
|---|---|
C-M-x | Evaluate the current defun |
C-x C-e | Evaluate the sexp before point |
C-j | Evaluate and print result in current buffer (Lisp Interaction mode) |
M-: | Evaluate expression in minibuffer |
C-x C-e with prefix (C-u) | Insert result into buffer |
;; Load a file
(load-file "~/path/to/file.el")
;; Require a feature (triggers autoloads)
(require 'my-feature)
;; Load after another package loads
(with-eval-after-load 'org
(require 'my-org-extension))C-M-x to evaluate itM-:C-h e to check messagesC-u C-M-x to instrument with Edebug;; Byte-compile current buffer
M-x emacs-lisp-byte-compile
;; Byte-compile and load
M-x emacs-lisp-byte-compile-and-load
;; Check for warnings
M-x byte-compile-fileAlways check compiler warnings — they often catch real bugs:
M-x check-parens — jumps to the problem" without matching "); is fine, but #| needs |#)(require 'some-library)C-h f function-namesave-excursion or save-restriction if modifying pointfuncall or apply#' before function namesC-g to quitM-x toggle-debug-on-quit to get a backtrace on C-g(message "…") calls to find the loopwhile loops for missing increment/progress;; Enable eldoc (show function signature in echo area)
(add-hook 'emacs-lisp-mode-hook #'eldoc-mode)
;; Enable flymake for on-the-fly checking
(add-hook 'emacs-lisp-mode-hook #'flymake-mode)
;; Enable paredit or smartparens
(add-hook 'emacs-lisp-mode-hook #'paredit-mode)
;; or
(add-hook 'emacs-lisp-mode-hook #'smartparens-strict-mode)
;; Enable rainbow delimiters for visual paren matching
(add-hook 'emacs-lisp-mode-hook #'rainbow-delimiters-mode)lexical-binding: t in the file header#' (function quote) when passing functions: (mapcar #'car list)defcustom for user-facing variables, defvar for internalmy-package--private, my-package-publicwhen/unless instead of (if … nil)condition-case for operations that might failwith-temp-buffer instead of creating and managing temp buffers manuallycar/cdr on potentially empty listsC-M-x eval-defun
C-u C-M-x eval-defun + edebug instrument
C-x C-e eval-last-sexp
M-: eval-expression
C-h e view-echo-area-messages
M-x edebug-defun
M-x toggle-debug-on-error
M-x check-parens
C-M-f forward-sexp
C-M-b backward-sexp
C-M-u backward-up-list
C-M-d down-list© captainflasmr, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/elisp-dev of captainflasmr/ollama-buddy.
Open the folder on GitHubat commit 12eaf7f
Elisp Dev next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Elisp Dev this skillcaptainflasmr/ollama-buddy | 103 | — | ~2.7k | Automated safety check: Pass | GPL-3.0 | |
| Trellis Session Insightmindfold-ai/Trellis | 15k | 4 repos | ~1.7k | Automated safety check: Pass | AGPL-3.0 | |
| Native Data FetchingCherryHQ/cherry-studio-app | 4k | 6 repos | ~2.9k | Automated safety check: Notes | MIT | |
| Aoti Debugpytorch/pytorch | 104k | 1 repos | ~1.7k | Automated safety check: Pass | Custom licence | |
| Herdr Throwaway Reproductionherdrdev/herdr | 43k | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Systematic Debuggingultralisp/ultralisp | 258 | 51 repos | ~2.4k | Automated safety check: Pass | None |
mindfold-ai/Trellis
Reach into past AI conversation history through the trellis mem CLI.
CherryHQ/cherry-studio-app
A skill your agent uses when implementing or debugging ANY network request, API call, or data fetching.
pytorch/pytorch
Debug AOTInductor (AOTI) errors and crashes. An agent skill from pytorch/pytorch.
herdrdev/herdr
Runs a disposable, uniquely named Herdr session inside an existing one so runtime, pane, terminal or API bugs can be reproduced without touching the main session.
ultralisp/ultralisp
A skill your agent uses when encountering any bug, test failure, or unexpected behavior, before proposing fixes
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
captainflasmr/ollama-buddy
Write an Emacs blog post in James Dyer's voice for www.emacs.dyerdwelling.family.
captainflasmr/ollama-buddy
Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities.
captainflasmr/ollama-buddy
Analyse a project's source code and generate a simply-annotate database file with LLM-created annotations categorised by tag: defun for functions and large syntactical blocks, line for smaller…
captainflasmr/ollama-buddy
Write an r/emacs Reddit post in James Dyer's voice for announcing or discussing an Emacs package.
captainflasmr/ollama-buddy
Expert code refactoring and optimization with analysis, improvements, and documentation.
captainflasmr/ollama-buddy
Review Emacs blog posts for technical accuracy, naming conventions, and correct Emacs idioms.
Categories
Assist with Emacs Lisp (elisp) development, debugging, and parenthesis matching. Elisp Dev is an agent skill from captainflasmr/ollama-buddy. Assist with Emacs Lisp (elisp) development, debugging, and parenthesis matching.
Elisp Dev fits situations like: the user is writing; debugging elisp code; struggling with unbalanced parentheses; needs help with elisp development workflows.
Run `npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a claude-code`. Or copy the skill folder (.agents/skills/elisp-dev in captainflasmr/ollama-buddy) into .claude/skills/elisp-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a codex`. Or copy the skill folder (.agents/skills/elisp-dev in captainflasmr/ollama-buddy) into .agents/skills/elisp-dev in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add captainflasmr/ollama-buddy --skill elisp-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elisp-dev, .gemini/skills/elisp-dev, .github/skills/elisp-dev and .opencode/skills/elisp-dev in your project.
SKILL.md names no scripts, command-line tools or credentials: Elisp Dev is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Elisp Dev is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Elisp Dev: Trellis Session Insight (mindfold-ai/Trellis, 15k stars), Native Data Fetching (CherryHQ/cherry-studio-app, 4k stars), Aoti Debug (pytorch/pytorch, 104k stars) and Herdr Throwaway Reproduction (herdrdev/herdr, 43k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
captainflasmr (a GitHub user) maintains it in captainflasmr/ollama-buddy, which has 103 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on September 10, 2026.
Source: captainflasmr/ollama-buddy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.