Managing Dart Package Skills
Install skills for all dependencies in the current project interactively:
Bash$ dart run skills@ get
Scanning dependencies for available skills...
? Select skills to install:
[x] shelf: routing - Define and handle HTTP routes
[ ] shelf: middleware - Add logging and CORS middleware
[x] dio: error-handling - Configure retry interceptors
Use arrow keys + spacebar to toggle, Ctrl+A to select/deselect all, Enter to confirm.
Progress:
- Confirm you're in a Dart/Flutter project directory with a
pubspec.yaml - Run
dart run skills@ getto scan dependencies for available skills - Select desired skills interactively, or use flags for non-interactive install
- Verify installed skills with
dart run skills@ list - Decide on version-control strategy for
.agents/skills/and.config/dart_skills/ - Periodically re-run
getto pull upstream updates; resolve local-modification prompts - Run
pruneafter removing dependencies to clean up stale skills
Installing
- All dependencies, interactive:
dart run skills@ get - Single package:
dart run skills@ get -p <package_name> - Single skill from a package:
dart run skills@ get -p <package_name> -s <skill_name> - All skills, no prompts:
dart run skills@ get --all - From a Git repository:
dart run skills@ add <git_repository_url>(add--allto skip prompts)
Managing
- List installed:
dart run skills@ list - Prune orphaned skills (dependency removed from pubspec.yaml):
dart run skills@ prune - Remove explicitly:
dart run skills@ remove -p <package_name>
Updating
Re-run dart run skills@ get any time — it updates all installed skills (including those from added Git sources) to match current dependency versions. If a skill was edited locally, the tool detects the modification and prompts to either overwrite with upstream or keep local customizations.
Example 1:
Input: A project depends on shelf and dio, both of which vend skills. Developer wants only routing and error-handling skills, no middleware.
Output: Run dart run skills@ get, deselect "shelf: middleware" in the prompt, keep "shelf: routing" and "dio: error-handling" checked, press Enter. Result: .agents/skills/shelf-routing/SKILL.md and .agents/skills/dio-error-handling/SKILL.md (with an examples/ subfolder) are created.
Example 2:
Input: CI pipeline needs to install every available skill with no interactive input.
Output: dart run skills@ get --all
Example 3:
Input: A team maintains a private Git repo of shared skills unrelated to pub.dev packages.
Output: dart run skills@ add https://github.com/org/shared-skills --all, then future updates via plain dart run skills@ get.
Example 4:
Input: dio was removed from pubspec.yaml but dio-error-handling skill files remain.
Output: dart run skills@ prune removes the orphaned skill directory automatically.
- Commit
.agents/skills/and.config/dart_skills/together if the team shares a fixed skill set — this keeps update-tracking metadata consistent across machines. - Alternatively, gitignore both directories and have each developer run
dart run skills@ getlocally; add.config/dart_skills/to.gitignorein that case. - Customize installed skills locally to reflect team architecture/style conventions — the tool is designed to detect and preserve these edits during updates.
- Re-run
getregularly so agents benefit from upstream fixes to deprecated APIs or new best practices. - Use
-p/-sflags for scripted, reproducible setups (e.g., in CI or onboarding scripts) instead of relying on interactive selection.
- Don't commit
.agents/skills/without also committing.config/dart_skills/(or vice versa) — mismatched tracking metadata causes confusing update prompts for teammates. - Don't forget to run
pruneafter removing a dependency; stale skill instructions can mislead the agent into using APIs no longer available. - Don't blindly accept "overwrite with upstream" during an update if you've made intentional local customizations — review the diff first.
- Don't assume all dependencies vend skills — only packages that ship a
skills/directory appear in the scan/prompt.