Skills
Write a set of instructions once as a SKILL.md and let agents pull it in when a task calls for it.
A skill is a SKILL.md file: a short frontmatter block that says when the skill applies, and a markdown body with the instructions. Use one for anything you would otherwise paste into chat over and over, like a style guide, a review checklist, or the steps for a recurring report. Agents load a skill only when it is relevant, so you can keep many of them around without bloating every prompt.
LibreChat does not come with any skills. Each one is written or uploaded by a user, created by an agent during a chat, or provided by your admin.
Create a skill
Open Skills from the side panel and click +. Choose Write skill instructions to write one in the editor, or Upload a skill to import a .md file, or a .zip or .skill archive that contains a SKILL.md. If Skills is missing from the side panel, your admin has turned it off or your role cannot use it.
A minimal skill:
---
name: brand-guidelines
description: Use when writing public-facing copy that must follow the company voice and terminology.
---
Write in a concise, practical tone.
Prefer active voice.
Say "workspace", never "project space".The name must be kebab-case (lowercase letters, digits, and dashes), at most 64 characters, and unique among your skills; uploading a skill with a name you already use fails instead of overwriting. Names starting with anthropic- or claude-, and command words like help or settings, are reserved.
The description matters more than anything else in the file: it is what the model reads to decide whether the skill applies. "Use when writing release notes for the mobile app" will trigger; "Writing helper" will not. Put the trigger phrases first and keep it under 250 characters, because longer descriptions are cut short in the list the model sees. The hard limit is 1,024 characters for the description and 100,000 for the body.

Frontmatter options
Besides name and description, a skill can set:
always-apply: true: load the skill on every turn instead of waiting for the model to ask for it.user-invocable: false: hide it from the$menu.disable-model-invocation: true: leave it out of the list the model chooses from. You can still invoke it with$.allowed-tools: a list of tools (for example["execute_code"]) that the agent gets for that turn when the skill is invoked with$or always applied, even if the agent does not normally have them.compatibility: free-text notes on what the skill needs, such as a particular MCP server. LibreChat keeps it but does not enforce it.
when-to-use works in place of description, and alwaysApply in place of always-apply. Keys are not case-sensitive, and other keys you add are kept as metadata.
Bundled files
A skill can carry more than one file. A common layout is references/ for long documents, scripts/ for code the agent can run, and assets/ for templates. The agent reads these files when the skill is in use, so SKILL.md can stay short and point to them. When Run Code is on, the files are also available in the sandbox under /mnt/data/skills/<skill-name>/. In the skill viewer, relative links between the skill's Markdown files open the linked file.
In an archive, SKILL.md must sit at the top level or inside exactly one folder. An upload is limited to 50 MB by default (your admin can change this), 500 files, and 10 MB per file; files with unsafe paths are skipped and reported. A skill with bundled files gets an arrow next to its name in the Skills sidebar; expand it to browse the files and open one.
Use a skill
There are three ways a skill reaches the conversation:
- You pick it. Type
$in the chat box and choose a skill. Nothing is added to your text; the skill shows as a chip above the composer and is loaded for that message. - The model picks it. The agent sees the names and descriptions of the skills available to it, and loads one when your request matches.
- It is always applied. Skills with
always-apply: trueare loaded on every turn.
While a skill loads, the message shows Loading followed by the skill name, then Loaded once it is in context.
The model only sees names and descriptions in its list (up to 100 skills), not the instructions. A skill you pick or that is always applied loads its full SKILL.md for that turn. One turn takes up to 10 picked and 20 always-applied skills, 30 in total; past that, always-applied skills are dropped first.

Which skills an agent can use
Two things decide it.
First, your own list. Each skill has an Available to agent switch. Turn it off and the skill disappears from the $ menu, from what the model can choose, and from always-apply, without deleting it. Skills you create start on. Skills shared with you start off unless your admin made shared skills active by default.
Second, the agent. The Skills section in the Agent Builder has three settings:
- Off: the agent uses no skills.
- All: every skill you have switched on.
- Selected: only the skills you add to the list.
Selected is the better choice for a focused agent. A support agent with 40 skills to choose from will pick the wrong one more often than one with the three it needs.
Skills written by agents
An agent with skills turned on can also write skills while it works, for example to save a procedure that just worked. It can create a new skill if your role is allowed to create skills, and edit existing skills only if you can edit them and they are in the agent's scope. Skills from your admin stay read-only. With Selected and an empty list, the agent sees none of your existing skills but can still create new ones.
Sharing
Skills are shared the same way as agents and prompts, with Viewer (use it, cannot edit), Editor, and Owner roles. Sharing needs the share permission on your role, which is off by default for regular users. See Access Control.
Your admin can also provide skills, from the server's file system, from Agent Plugins, or mirrored from a GitHub repository. These are read-only in LibreChat; change them at the source. Skills from the file system and plugins start switched on.
Setup
Skills are on by default for all users. Admins can turn the feature off with the skills agent capability (see agents endpoint configuration), control who can create and share skills in the Admin Panel or interface.skills, provide skills from disk or GitHub as described in Skill Sync, and change the upload size limit with fileConfig.skills.
How is this guide?