MyNixOS website logo

Custom skills for Claude Code.

This option can be either:

  • An attribute set defining skills
  • A path to a directory containing skill folders

If an attribute set is used, the attribute name becomes the skill directory name, and the value is either:

  • Inline content as a string (creates .claude/skills/<name>/SKILL.md)
  • A path to a file (creates .claude/skills/<name>/SKILL.md)
  • A path to a directory (creates .claude/skills/<name>/ with all files)

This also accepts Nix store paths, for example a skill directory from a package.

If a path is used, it is expected to contain one folder per skill name, each containing a SKILL.md. The directory is symlinked to ~/.claude/skills/.

Declarations
Type
(attribute set of (strings concatenated with "\n" or absolute path or string)) or absolute path
Default
{ }
Example
{
  xlsx = ./skills/xlsx/SKILL.md;
  data-analysis = ./skills/data-analysis;
  pdf-processing = ''
    ---
    name: pdf-processing
    description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.
    ---

    # PDF Processing

    ## Quick start

    Use pdfplumber to extract text from PDFs:

    ```python
    import pdfplumber

    with pdfplumber.open("document.pdf") as pdf:
        text = pdf.pages[0].extract_text()
    ```
  '';

  # A skill can also be a subdirectory within a package source (store path)
  beads = "${pkgs.beads.src}/claude-plugin/skills/beads";
}