What is Lola? The Universal AI Context Package Manager
-
Gineesh Madapparambath
- Ai tools
- July 25, 2026
If you have been using AI coding assistants like Claude Code, Cursor, or Gemini CLI, you have probably come across the concept of skills, commands, and agent instructions. These are reusable markdown-based packages that give AI assistants procedural knowledge about how to perform specific tasks.
But here is the problem: every AI assistant has its own way of loading these skills. Claude Code reads from .claude/skills/ and .claude/commands/. Cursor uses .cursor/rules/. Gemini CLI reads from GEMINI.md. If you write a skill for one assistant, it does not work on another without manual porting.
This is where Lola comes in.
What is Lola?
Lola is an open-source, universal package manager for AI context. Think of it as DNF/YUM for AI skills: if a skill is the RPM package, Lola is the package manager that installs it to the right place for your AI assistant.
You write your skills and context modules once as portable packages, then install them to any supported AI assistant with a single command.
lola install my-module -a claude-code
lola install my-module -a cursor
lola install my-module -a gemini-cli
Same module, different assistants, one command.
Note
This post isn’t affiliated with or endorsed by the Lola project, its maintainers, or Red Hat. It’s an independent overview based on the project’s public GitHub repository and documentation.
Why Do We Need Lola?
The industry is shifting from prompt engineering to context engineering. Instead of crafting one-off prompts, developers are building reusable packages of instructions, workflows, and reference material that AI assistants can discover and follow.
The challenge is fragmentation. Each AI assistant expects context in a different format and location:
| Assistant | Skills Location | Commands Location |
|---|---|---|
| Claude Code | .claude/skills/<name>/SKILL.md |
.claude/commands/<name>.md |
| Cursor | .cursor/rules/<name>.mdc |
.cursor/commands/<name>.md |
| Gemini CLI | GEMINI.md (reference-based) |
.gemini/commands/<name>.toml |
| OpenCode | AGENTS.md (reference-based) |
.opencode/commands/<name>.md |
Without Lola, you would need to manually copy and adapt skills for each assistant. Lola abstracts this away: it knows where each assistant expects files and handles the translation automatically.
Key Concepts
Modules
A Lola module is a portable package of AI context. It can contain:
- Skills - auto-triggered instructions that activate when your request matches
- Commands - slash commands you invoke explicitly (e.g.,
/review-pr) - Agents - specialized subagent definitions
Modules are stored in ~/.lola/modules/ (project scope copies them into .lola/modules/ inside the project; user scope installs to platform-appropriate user config directories).
Module Structure
A module uses auto-discovery, no manifest file is required:
my-module/
skills/
code-review/
SKILL.md # Skill definition with YAML frontmatter
scripts/ # Supporting files
commands/
quick-commit.md # Slash command
agents/
reviewer.md # Subagent definition
Marketplaces
A marketplace is a curated catalog of modules, like a package registry. Instead of hunting for individual repositories, you register a marketplace and search or install modules from it.
# Add a marketplace
$ lola market add general \
https://raw.githubusercontent.com/RedHatProductSecurity/lola-market/main/general-market.yml
# Search modules
$ lola search --mod workflow
Local registry (1 module)
cloud_content
4 skills, 0 commands, 0 agents
# Install directly from marketplace
$ lola install lola-manager -a claude-code
Organizations can host private marketplaces to distribute internal skills at scale.
Installation Scopes
Lola supports two scopes:
- Project scope (default) - installs to the current project directory. Skills are available only in that project.
- User scope (
--scope user) - installs globally to your user configuration directories. Skills are available across all projects.
# Project scope (default)
lola install my-module -a claude-code
# User/global scope
lola install my-module -a claude-code --scope user
How Lola Works Behind the Scenes
When you run lola install, Lola converts your module’s skills and commands into each assistant’s native format:
- Claude Code and Cursor get a full copy of the skill content. Cursor rewrites relative file paths since it only copies the
.mdcskill content rather than the whole skill directory. - Gemini CLI and OpenCode don’t copy skills at all. Instead, Lola adds reference entries to
GEMINI.mdorAGENTS.mdthat point the assistant back to the originalSKILL.mdinside.lola/modules/.
The key idea: Lola is just an installer. It does not run at execution time. After installation, your AI assistant reads its own native config files directly, and Lola is out of the picture until you run an update.
Getting Started
Install Lola
# Using pip
pip install lola-ai
# Using uv (recommended)
uv tool install lola-ai
Add a Marketplace
# Official community marketplace
lola market add general https://raw.githubusercontent.com/RedHatProductSecurity/lola-market/main/general-market.yml
Add and Install a Module
# From a git repository
lola mod add https://github.com/user/my-skills.git
lola install my-skills -a claude-code
# Or directly from a marketplace
lola search --mod <query>
lola install <module-name> -a claude-code
Verify Installation
# List all installed modules
lola list
# In Claude Code, check available skills
# Type /skills in the Claude Code prompt
Essential Commands
| Command | Description |
|---|---|
lola mod add <source> |
Add a module from git, folder, zip, or tar |
lola mod ls |
List registered modules |
lola search --mod <query> |
Search for modules in the local registry |
lola mod rm <name> |
Remove a module |
lola install <module> |
Install to all detected assistants |
lola install <module> -a <assistant> |
Install to a specific assistant |
lola uninstall <module> |
Remove module from assistants |
lola list |
List all installed modules |
lola update |
Regenerate assistant files from source |
lola market add <name> <url> |
Register a marketplace |
lola market ls |
List marketplaces |
lola sync |
Sync from a .lola-req declarative file |
Declarative Management with .lola-req
For teams, you can declare module dependencies in a .lola-req file at your project root:
python-tools>=1.0.0
https://github.com/user/module.git@main
https://github.com/org/repo.git@main#subdirectory=plugins/dev
https://github.com/user/repo.git#assistant=claude-code,cursor
Then sync with:
lola sync
This helps a team keep the same AI skills installed, version-controlled and auditable, without everyone manually copying files around.
Supported AI Assistants
| Assistant | Skills | Commands | Agents |
|---|---|---|---|
| Claude Code | Yes | Yes | Yes |
| Copilot CLI | Yes | Yes | Yes |
| Copilot (VS Code) | Yes | Yes (project scope only) | Yes |
| Cursor | Yes | Yes | Yes |
| Gemini CLI | Yes | Yes | N/A |
| OpenCode | Yes | Yes | Yes |
Note
GitHub Copilot has two install targets that share the same project (.github/) and user (~/.copilot/) files but differ in how they write MCP server config: copilot-cli uses the mcpServers key, while copilot-vscode writes to .vscode/mcp.json using VS Code’s servers key.
Licensing and Governance
Lola is released under the Apache-2.0 license and is community-governed by its maintainers, with an official marketplace maintained separately at the lola-market repository.
What is Next?
In the next post, we will walk through a practical example: installing Ansible community AI skills from the ai-forge project using Lola, and see how it fits into an Ansible development workflow.
References
Gineesh Madapparambath
Gineesh Madapparambath is the founder of techbeatly. He is the co-author of The Kubernetes Bible, Second Edition and the author of Ansible for Real Life Automation. He has worked as a Systems Engineer, Automation Specialist, and content author. His primary focus is on Ansible Automation, Containerisation (OpenShift & Kubernetes), and Infrastructure as Code (Terraform). (Read more: iamgini.com)
Note
Disclaimer: The views expressed and the content shared in all published articles on this website are solely those of the respective authors, and they do not necessarily reflect the views of the author’s employer or the platform. We strive to ensure the accuracy and validity of the content published on our website. However, we cannot guarantee the absolute correctness or completeness of the information provided. It is the responsibility of the readers and users of this website to verify the accuracy and appropriateness of any information or opinions expressed within the articles. If you come across any content that you believe to be incorrect or invalid, please contact us immediately so that we can address the issue promptly.