Agent skill

Elisp Review

by captainflasmr in captainflasmr/ollama-buddy

Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities.

GPL-3.0Auto-check passed

Install Elisp Review

skills CLI
$ npx skills add captainflasmr/ollama-buddy --skill elisp-review -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install captainflasmr/ollama-buddy elisp-review --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/captainflasmr/ollama-buddy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/elisp-review .claude/skills/elisp-review && rm -rf skills-src

Use ~/.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/

Facts

Skill name
elisp-review
GitHub stars
103
Token cost
~2.2k tokens
SKILL.md length
924 words
Files
1
Skills in repo
12
Repo updated
First seen
Licence
GPL-3.0

At a glance

Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities.

  • Works in 4 steps: Orientation → Review Dimensions → Output Format → …
  • The user asks to review
  • SKILL.md covers Phase 1: Orientation, Phase 2: Review Dimensions, Phase 3: Output Format and Phase 4: Closing Note, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Elisp Review is an agent skill from captainflasmr/ollama-buddy. Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities. Use this skill whenever the user asks to review, audit, check, or analyse an elisp or Emacs Lisp package, file, or set of files. Trigger on phrases like "review my package", "check my elisp", "audit this emacs package", "look for bugs in my lisp", "optimise my elisp", or any time the user shares .el files and wants feedback. Always use this skill when .el files are involved and improvement is the goal — even…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: A friendly Emacs interface for interacting with Ollama models. The licence is GPL-3.0.

When your agent uses it

  • The user asks to review
  • Analyse an elisp
  • Emacs Lisp package
  • Phrases like review my package

Example prompts

  • “review my package”
  • “check my elisp”
  • “audit this emacs package”
  • “/elisp-review”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Orientation
  2. Review Dimensions
  3. Output Format
  4. Closing Note

What it can do on your machine

Read from SKILL.md and the folder at commit 12eaf7f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Elisp Review loads about 2.2k tokens when it runs. Until then it costs about 151 tokens; SKILL.md has 924 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~151
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from captainflasmr/ollama-buddy at commit 12eaf7f, republished under its GPL-3.0 licence (© captainflasmr). 924 words, ~2,205 tokens.

Download SKILL.mdSave it as .claude/skills/elisp-review/SKILL.md (or your agent's skills folder).
name
elisp-review
description
Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities. Use this skill whenever the user asks to review, audit, check, or analyse an elisp or Emacs Lisp package, file, or set of files. Trigger on phrases like "review my package", "check my elisp", "audit this emacs package", "look for bugs in my lisp", "optimise my elisp", or any time the user shares .el files and wants feedback. Always use this skill when .el files are involved and improvement is the goal — even if the user just says "what do you think of this?" about an elisp file.

Elisp Package Review Skill

You are performing a structured code review of an Emacs Lisp package. Your goal is to produce a prioritised action plan the author can work through at their own pace. Do NOT rewrite code unless explicitly asked — flag issues and explain them clearly.


Phase 1: Orientation

Before diving into issues, briefly orient yourself:

  1. Read every .el file in the package.
  2. Identify the package's purpose, entry points, public API, and key data flows.
  3. Note the Emacs version target and any declared dependencies (Package-Requires).
  4. Check whether lexical-binding is enabled in every file.

State a one-paragraph summary of what the package does before listing any issues.


Phase 2: Review Dimensions

Work through each dimension below in order. Collect ALL findings before presenting — do not present dimension-by-dimension.

1. Correctness & Bugs

Look for logic errors and runtime hazards:

  • Unguarded car/cdr on potentially-nil values — use when, if-let, or and to guard.
  • Off-by-one errors in list/string indexing.
  • Mutation of shared structure — accidental aliasing via setcar/setcdr.
  • Process/buffer leaks — processes or temp buffers created but never cleaned up; missing unwind-protect.
  • Async race conditions — timer or sentinel callbacks that assume buffer/ process state that may have changed.
  • Wrong equality predicate — eq vs equal vs string= misuse.
  • Incorrect use of mapcar vs mapc — using mapcar when return value is discarded (wasteful allocation).
  • save-excursion / save-restriction misuse — forgetting to restore state after buffer modifications.
  • Hook not removed on cleanup — hooks added in init but never removed in teardown/disable path.
  • Advice not removed — advice-add without corresponding advice-remove in disable/unload path.
  • Missing require — symbols used from libraries not explicitly required.
  • Circular or redundant require — files requiring each other or requiring things already guaranteed by dependencies.
2. Emacs Lisp Style & Conventions

Check against established community conventions:

File header:

  • ;;; package-name.el --- Short description -*- lexical-binding: t -*-
  • ;;; Commentary: section present and informative.
  • ;;; Code: marker present.
  • ;;; package-name.el ends here footer present.
  • Package-Version, Package-Requires, Author, Keywords, URL headers present and accurate.

Naming:

  • All public symbols prefixed with package-name- (or agreed namespace).
  • Internal/private symbols prefixed with package-name-- (double dash).
  • Constants use defconst not defvar.
  • Booleans named with -p suffix (package-name-verbose-p).

Docstrings:

  • Every defun, defvar, defcustom, defface, define-minor-mode has a docstring.
  • First line of docstring is a complete sentence ending in . and ≤80 chars.
  • Interactive commands document their argument in the first line if applicable.
  • defcustom docstrings describe valid values.

Customisation:

  • User-facing variables use defcustom, not defvar.
  • defcustom has correct :type, :group, and :safe where appropriate.
  • A defgroup exists for the package.

Functions:

  • Prefer cl-lib over deprecated cl package (cl-loop, cl-destructuring-bind, etc.).
  • Prefer seq- functions over manual recursion for sequence operations.
  • Avoid flet/labels — use cl-flet/cl-labels.
  • Avoid lexical-let — unnecessary with lexical-binding: t.
  • interactive spec is correct and uses modern forms (e.g. (interactive "r") not deprecated forms).
  • Functions that modify buffers use with-current-buffer rather than relying on implicit current buffer.

Control flow:

  • Prefer when/unless over (if ... nil) / (if ... t).
  • Prefer cond over deeply nested if.
  • Prefer pcase over complex cond matching on structure.
  • Avoid (not (not x)) — use (and x t) or just trust truthiness.
Show full SKILL.md (427 more words)Show less
3. Performance & Optimisation
  • Repeated buffer-substring / buffer-string in tight loops — cache the result.
  • re-search-forward in loops without narrow-to-region — can be O(n²); consider reorganising.
  • append in loops — quadratic; prefer push + nreverse.
  • length on a list to check emptiness — use null or consp instead.
  • Uncompiled lambdas in hot paths — prefer named functions or ensure byte compilation.
  • Large defconst data — consider lazy initialisation if not always needed.
  • sit-for 0 / redisplay in loops — usually a sign of a design smell; flag and explain.
  • Synchronous process calls blocking UI — prefer async with sentinels or make-process.
  • Unnecessary with-temp-buffer — if only string operations are needed, avoid buffer allocation.
  • Timer granularity — timers firing too frequently (< 0.1s) without clear need.
  • font-lock-add-keywords called repeatedly — should be called once, not on every mode activation.
4. Autoloads & Load-Time Cost
  • All entry-point commands and public functions the user calls directly should have ;;;###autoload cookies.
  • No expensive computation at top level (i.e. outside any function) — this runs at load time.
  • defvar / defcustom at top level is fine; defun bodies running at load time are not.
  • require at top level is acceptable but flag heavy requires that could be deferred with with-eval-after-load or autoload.
5. Compatibility & Portability
  • Flag use of functions introduced after the declared minimum Emacs version in Package-Requires.
  • Flag OS-specific code paths without appropriate guards (system-type checks).
  • Flag hard-coded paths.
  • Flag any use of (require 'cl) — must use (require 'cl-lib).
6. Error Handling & Robustness
  • condition-case used where failures are plausible (network, file I/O, subprocess).
  • Error messages are user-readable (not raw Lisp objects).
  • user-error used for user-facing mistakes (not error), so Edebug doesn't trap them.
  • unwind-protect used wherever resources (buffers, processes, overlays) are allocated.

Phase 3: Output Format

Present findings as a structured action plan using the following format. Group by severity. Within each group, order by file then by approximate line number.

## Package Review: <package-name>

### Summary
<One paragraph: what the package does, overall impression, headline numbers>

---

### 🔴 Critical — Fix Before Release
Issues that will cause errors, data loss, or broken behaviour.

#### C1. <Short title>
**File:** `foo.el` **~Line:** 42
**Issue:** <Clear explanation of the problem and why it matters>
**Suggestion:** <What to do — no code rewrite, just direction>

#### C2. ...

---

### 🟠 Important — Strong Recommendation
Style violations, missing conventions, or meaningful inefficiencies.

#### I1. <Short title>
...

---

### 🟡 Minor — Worth Addressing
Small style issues, minor optimisations, nitpicks.

#### M1. <Short title>
...

---

### 💡 Optimisation Opportunities
Performance improvements worth considering, ordered by estimated impact.

#### O1. <Short title>
...

---

### ✅ Strengths
Brief list of things done well — keep this honest and specific.

Phase 4: Closing Note

After the plan, add a short paragraph:

"This is a plan for you to action at your own pace — not all items need to be addressed. Prioritise 🔴 Critical items first. Feel free to ask me to elaborate on any specific finding or to help implement a fix."


Review Principles

  • Flag, don't fix. Explain the problem and point in a direction. The author decides what to do.
  • Be specific. Always cite the file and approximate line number.
  • Be proportionate. A one-file utility and a major package deserve different levels of rigour — calibrate accordingly.
  • No ERT / testing review. Do not comment on presence or absence of tests.
  • Respect intent. If a pattern looks unusual but is clearly deliberate, note it as a question rather than a violation.

© 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

Files

Just SKILL.md in .agents/skills/elisp-review of captainflasmr/ollama-buddy.

Open the folder on GitHubat commit 12eaf7f

Compare with similar skills

Elisp Review 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.

Elisp Review compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Elisp Review this skillcaptainflasmr/ollama-buddy103—~2.2kAutomated safety check: PassGPL-3.0
Add Bugremotion-dev/remotion63k—~215Automated safety check: PassCustom licence
Add Packageremix-run/remix33k—~2kAutomated safety check: PassMIT
Ecc Conventionsaffaan-m/ECC276k—~2.8kAutomated safety check: PassMIT
Mole Bug Patternstw93/Mole70k—~2kAutomated safety check: PassGPL-3.0
Bugccch1mneyyy/dsh-TUI4.2k—~342Automated safety check: PassMIT

Similar skills

  • Add Bug

    remotion-dev/remotion

    Official

    Add a new Remotion bug entry to packages/bugs/api/[v].ts. An agent skill from remotion-dev/remotion.

    63k GitHub stars~215 tokensUpdated today
    Media & CreativeAuto-check passed
  • Add Package

    remix-run/remix

    Create or align a package in the Remix monorepo to match existing package conventions.

    33k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Ecc Conventions

    affaan-m/ECC

    Development conventions and patterns for ECC. An agent skill from affaan-m/ECC.

    276k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Bug

    ccch1mneyyy/dsh-TUI

    Turn a reported defect into an actionable bug report or issue draft.

    4.2k GitHub stars~342 tokensUpdated today
    Testing & QAAuto-check passed
  • Bug Bounty

    sickn33/agentic-awesome-skills

    Complete bug bounty workflow

    47k GitHub starsUsed in 1 repo~5k tokens
    SecurityAuto-check: notes

More from captainflasmr/ollama-buddy

All 12 skills in this repo
  • Blog Writer

    captainflasmr/ollama-buddy

    Write an Emacs blog post in James Dyer's voice for www.emacs.dyerdwelling.family.

    103 GitHub stars~2.1k tokensUpdated 29 days ago
    Auto-check passed
  • Elisp Dev

    captainflasmr/ollama-buddy

    Assist with Emacs Lisp (elisp) development, debugging, and parenthesis matching.

    103 GitHub stars~2.7k tokensUpdated 29 days ago
    Auto-check passed
  • Annotate Project

    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…

    103 GitHub stars~6.2k tokensUpdated 29 days ago
    Auto-check passed
  • Reddit Post Writer

    captainflasmr/ollama-buddy

    Write an r/emacs Reddit post in James Dyer's voice for announcing or discussing an Emacs package.

    103 GitHub stars~1.4k tokensUpdated 29 days ago
    Auto-check passed
  • Code Refactoring

    captainflasmr/ollama-buddy

    Expert code refactoring and optimization with analysis, improvements, and documentation.

    103 GitHub stars~446 tokensUpdated 29 days ago
    Auto-check passed
  • Emacs Blog Reviewer

    captainflasmr/ollama-buddy

    Review Emacs blog posts for technical accuracy, naming conventions, and correct Emacs idioms.

    103 GitHub stars~751 tokensUpdated 29 days ago
    Auto-check passed

Questions about Elisp Review

What does Elisp Review do?

Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities. Elisp Review is an agent skill from captainflasmr/ollama-buddy. Review Emacs Lisp (elisp) packages for bugs, style/convention violations, and optimisation opportunities.

When should I use Elisp Review?

Elisp Review fits situations like: the user asks to review; analyse an elisp; emacs Lisp package; phrases like review my package.

How do I install Elisp Review in Claude Code?

Run `npx skills add captainflasmr/ollama-buddy --skill elisp-review -a claude-code`. Or copy the skill folder (.agents/skills/elisp-review in captainflasmr/ollama-buddy) into .claude/skills/elisp-review in your project. Claude Code loads it when a task matches its description.

How do I install Elisp Review in Codex?

Run `npx skills add captainflasmr/ollama-buddy --skill elisp-review -a codex`. Or copy the skill folder (.agents/skills/elisp-review in captainflasmr/ollama-buddy) into .agents/skills/elisp-review in your project. Codex loads it when a task matches its description.

Can I use Elisp Review in Cursor, Gemini CLI or GitHub Copilot?

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-review -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-review, .gemini/skills/elisp-review, .github/skills/elisp-review and .opencode/skills/elisp-review in your project.

What does Elisp Review need to run?

SKILL.md names no scripts, command-line tools or credentials: Elisp Review is instructions for the agent only.

Does Elisp Review access the network?

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.

Is Elisp Review safe to install?

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.

What licence does Elisp Review use?

Elisp Review 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.

How many tokens does Elisp Review use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Elisp Review?

Skills that share tags, products or a category with Elisp Review: Add Bug (remotion-dev/remotion, 63k stars), Add Package (remix-run/remix, 33k stars), Ecc Conventions (affaan-m/ECC, 276k stars) and Mole Bug Patterns (tw93/Mole, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Elisp Review?

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.