A CLI that brings AI agent skills from your Dart and Flutter package dependencies directly into your agent.
Note: The Dart team is working on a similar solution based on Dart‘s MCP server. When that is released, we will provide scripts to convert your skills to Dart’s new format. This package will then either adopt the Dart MCP standard for delivering skills or be deprecated (assuming the MCP solution is equally capable).
Dart packages can ship a skills/ directory containing Agent Skills, structured instructions that teach AI coding assistants how to use the package effectively. The skills CLI finds those skills in your dependency tree and installs them into your agent so your AI assistant better understands your stack.
If you want to discuss or contribute to the
skillspackage, please join the#skillschannel on the Serverpod Discord server.
When you add a Dart package to your project, your AI coding assistant has no idea how to use it properly. It guesses APIs, invents patterns, and hallucinates methods that don't exist. You end up copy-pasting documentation into chat, writing custom rules, or correcting the AI over and over.
Package authors ship skills alongside their code. You run one command, and your AI assistant knows how to work with every package in your project.
skills get
That's it. Your AI assistant now has context-aware instructions for every dependency that provides skills.
Activate the CLI globally:
dart pub global activate skills
Make sure ~/.pub-cache/bin is on your PATH (instructions).
Navigate to the root of your Dart or Flutter project and run:
# Install skills from all dependencies skills get # Install skills from a specific package skills get serverpod # List installed skills skills list # Remove skills for packages no longer in your dependency tree skills prune # Remove all managed skills skills remove # Remove skills from one package skills remove serverpod
The CLI will automatically run pub get if needed, scan your dependency packages for skills/ directories, and install them in the right location for your agent. If you are using a monorepo, skills will locate your different packages and get the skills for all of them.
If git is installed, skills get also fetches skills from GitHub registries (see GitHub registries below). Skills that come from a Dart package in your dependency tree always take precedence over registry skills for that same package, allowing package maintainers to override the skills in the registry.
When you remove a package from your pubspec.yaml, its skills stay in your agent directories until you clean them up. Run:
skills prune
This removes only skills whose package is no longer in your dependency tree and updates the manifest. Use --agent <agent> to prune a single agent. If you have no managed skills, skills prune reports that and exits.
.cursor/), add .dart_skills/repos/ to your .gitignore so cloned registry repos are not committed..cursor/), you can ignore the whole .dart_skills/ directory.The CLI auto-detects your agent from project directory markers. If multiple agents are detected, it installs to all of them. You can also pass --agent explicitly or set the SKILLS_AGENT environment variable to target a single agent.
| agent | Flag | Install location | Spec |
|---|---|---|---|
| Antigravity | --agent antigravity | .agents/skills/ | Agent Skills |
| Claude Code | --agent claude | .claude/skills/ | Agent Skills |
| Cline | --agent cline | .cline/skills/ | Agent Skills |
| Codex | --agent codex | .agents/skills/ | Agent Skills |
| Cursor | --agent cursor | .cursor/skills/ | Agent Skills |
| GitHub Copilot | --agent copilot | .github/skills/ | Agent Skills |
| OpenCode | --agent opencode | .opencode/skills/ | Agent Skills |
| Generic | --agent generic | .agents/skills/ | Agent Skills |
Antigravity, Codex, and generic all install to the same .agents/skills/ directory (only generic is stored in the config). GitHub Copilot is not auto-detected (.github/ is often used for other purposes); use --agent copilot to install skills for Copilot explicitly.
Each of these agents receives the full Agent Skills directory (SKILL.md plus scripts/, references/, assets/) in each tool’s documented location.
When you run skills get, the CLI can also install skills from GitHub registries — repositories that host a skills/ directory with skills for packages that may not ship skills in their pub package. This is useful for community-maintained skills or packages that haven’t added a skills/ directory yet.
.dart_skills/repos/, you probably want to add this directory to your .gitignore.Ship AI skills with your package so every user's coding assistant understands your APIs, conventions, and best practices.
Create a skills/ directory at the root of your package (next to lib/). Each skill is a subdirectory containing a SKILL.md file following the Agent Skills specification:
my_package/
lib/
skills/
my_package-code-gen/
SKILL.md
scripts/ # optional helper scripts
references/ # optional reference docs
assets/ # optional static resources
my_package-testing/
SKILL.md
Every skill directory name must start with your package name followed by a hyphen. The CLI verifies this on installation and silently skips any skills that don't follow the convention.
For a package named serverpod:
| Directory name | Valid? |
|---|---|
serverpod-code-generation | Yes |
serverpod-api-design | Yes |
code-generation | No -- missing package prefix |
other_pkg-code-generation | No -- wrong prefix |
This convention ensures skill names are globally unique and self-documenting. When a user sees serverpod-code-generation in their agent, they know exactly where it came from.
The name field in SKILL.md should match the directory name. Here is an example of a skill:
--- name: my_package-my-skill description: Use when the user is working with MyPackage APIs to ensure correct patterns and error handling. --- # My Skill ## Guidelines - Always use `MyPackage.initialize()` before calling other methods. - Prefer the builder pattern for configuration. - Handle `MyPackageException` explicitly rather than catching generic exceptions. ## Examples ...
The description tells the AI when to activate the skill -- make it specific and action-oriented.
All agents receive the full skill directory (SKILL.md plus scripts/, references/, assets/). Write skills once and they install to each agent’s spec-defined location.
references/ files; all supported agents receive the full skill directory.skills getpackage_config.json.skills/ directory and each skill subdirectory with a SKILL.md..dart_skills/skills_config.json tracking file records which skills were installed from which package and agent.Users can update skills by running skills get again. Existing skills from your package are replaced with the latest versions.
The .dart_skills/skills_config.json file tracks managed skills so skills remove knows what to clean up without touching skills you created manually.