package-conventions

Standardize Emacs Lisp package naming, metadata, and file structure conventions.

3|Updated Nov 10, 2025
One-click install
npx skills add https://github.com/hugoduncan/library-skills --skill package-conventions
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: package-conventions
Source: https://github.com/hugoduncan/library-skills/tree/main/plugins/emacs-libraries/skills/package-conventions
Command: npx skills add https://github.com/hugoduncan/library-skills --skill package-conventions

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill guides Emacs Lisp package developers through community conventions, preventing compatibility issues, rejections from package archives (like MELPA), and ensuring a high-quality user experience.

Core Features & Use Cases

  • Standardized Naming & Structure: Learn required file headers, naming prefixes, and directory layouts for both single and multi-file packages.
  • Metadata & Dependency Management: Correctly declare package versions, dependencies, and keywords for discoverability and proper integration.
  • Quality & Distribution Checklist: Follow best practices for docstrings, code quality, and MELPA submission requirements to ensure your package is production-ready.
  • Use Case: Ensure your new Emacs Lisp package is ready for submission to MELPA by automatically checking all header conventions, symbol naming rules, docstring formats, and dependency declarations, saving you from tedious manual review and potential rejections.

Quick Start

Use the package-conventions skill to review the provided Emacs Lisp file 'my-package.el' and identify any deviations from standard header conventions.

Frequently Asked Questions about package-conventions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prepare an Emacs Lisp package for MELPA submission?

Emacs Lisp packages require standardized headers, metadata declarations, and file structure to pass MELPA acceptance. This Skill codifies naming conventions, Package-Requires syntax, SPDX license indicators, semantic versioning, and provide forms that satisfy archive guidelines and tooling validation, ensuring your package meets all submission requirements.

What headers and metadata do Emacs Lisp packages need?

Emacs Lisp packages must include required file headers with package version, dependencies, keywords, URLs, and SPDX license indicators to ensure discoverability and proper integration. This Skill specifies the exact header format, lexical-binding declaration, Package-Requires structure, and autoload directives needed for compatibility with MELPA and GNU ELPA.

What naming and file structure conventions apply to multi-file Emacs packages?

Multi-file Emacs Lisp packages require consistent symbol prefixes, organized directory layouts, and coordinated provide forms across files. This Skill defines the standard naming rules, file organization patterns, and inter-file declarations that maintain code quality and enable proper package loading.

Can I use lexical-binding in my Emacs Lisp package?

Lexical-binding is a recommended practice for modern Emacs Lisp packages and requires explicit declaration in file headers. This Skill covers when and how to declare lexical-binding to improve performance and compatibility with contemporary Emacs package standards.

How do I document and specify package dependencies correctly?

Package dependencies must be declared using the Package-Requires header with specific version constraints and format. This Skill teaches the correct syntax for listing Emacs version requirements and external package dependencies so archives and package managers can resolve them automatically.

What docstring and symbol naming rules apply to Emacs packages?

Emacs packages must follow consistent docstring formats and use prefixed symbol names to prevent namespace collisions. This Skill specifies the naming conventions and docstring standards that ensure code clarity and reduce conflicts when users load multiple packages.