{"id":50505086,"url":"https://github.com/serverpod/skills","last_synced_at":"2026-06-02T15:02:20.990Z","repository":{"id":342835877,"uuid":"1166550169","full_name":"serverpod/skills","owner":"serverpod","description":"A CLI for managing your Dart skills.","archived":false,"fork":false,"pushed_at":"2026-05-12T14:19:34.000Z","size":107,"stargazers_count":22,"open_issues_count":11,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-16T23:51:29.953Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serverpod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-25T10:46:27.000Z","updated_at":"2026-05-12T15:15:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/serverpod/skills","commit_stats":null,"previous_names":["serverpod/skills"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/serverpod/skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fskills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fskills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fskills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fskills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serverpod","download_url":"https://codeload.github.com/serverpod/skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fskills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33827068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T15:02:20.205Z","updated_at":"2026-06-02T15:02:20.983Z","avatar_url":"https://github.com/serverpod.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skills\n\nA CLI that brings AI agent skills from your Dart and Flutter package dependencies directly into your IDE.\n\n\u003e Note: The Dart team is working on a [similar solution](https://docs.google.com/document/d/1k_X-Sp4GQyZP6k9lvZ1Itj0GvzQZuWl3iKzi5AIa69Q/edit?tab=t.0) 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).\n\nDart packages can ship a `skills/` directory containing [Agent Skills](https://agentskills.io/specification), 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 IDE so your AI assistant better understands your stack.\n\n\u003e If you want to discuss or contribute to the `skills` package, please join the `#skills` channel on the [Serverpod Discord](https://serverpod.dev/discord) server.\n\n## The problem\n\nWhen 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.\n\n## The solution\n\nPackage authors ship skills alongside their code. You run one command, and your AI assistant knows how to work with every package in your project.\n\n```bash\nskills get\n```\n\nThat's it. Your AI assistant now has context-aware instructions for every dependency that provides skills.\n\n## Installation\n\nActivate the CLI globally:\n\n```bash\ndart pub global activate skills\n```\n\nMake sure `~/.pub-cache/bin` is on your PATH ([instructions](https://dart.dev/tools/pub/cmd/pub-global#running-a-script-from-your-path)).\n\n## Quick start\n\nNavigate to the root of your Dart or Flutter project and run:\n\n```bash\n# Install skills from all dependencies\nskills get\n\n# Install skills from a specific package\nskills get serverpod\n\n# List installed skills\nskills list\n\n# Remove skills for packages no longer in your dependency tree\nskills prune\n\n# Remove all managed skills\nskills remove\n\n# Remove skills from one package\nskills remove serverpod\n```\n\nThe CLI will automatically run `pub get` if needed, scan your dependency packages for `skills/` directories, and install them in the right location for your IDE. If you are using a monorepo, `skills` will locate your different packages and get the skills for all of them.\n\nIf **git** is installed, `skills get` also fetches skills from GitHub registries (see [GitHub registries](#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.\n\n### Pruning removed dependencies\n\nWhen you remove a package from your `pubspec.yaml`, its skills stay in your IDE directories until you clean them up. Run:\n\n```bash\nskills prune\n```\n\nThis removes only skills whose package is no longer in your dependency tree and updates the manifest. Use `--ide \u003cide\u003e` to prune a single IDE. If you have no managed skills, `skills prune` reports that and exits.\n\n### Version control and .gitignore\n\n- If you version-control your IDE config (e.g. `.cursor/`), add `.dart_skills/repos/` to your `.gitignore` so cloned registry repos are not committed.\n- If you ignore your IDE directory (e.g. `.cursor/`), you can ignore the whole `.dart_skills/` directory.\n\n## Supported IDEs\n\nThe CLI auto-detects your IDE from project directory markers. If multiple IDEs are detected, it installs to all of them. You can also pass `--ide` explicitly or set the `SKILLS_IDE` environment variable to target a single IDE.\n\n| IDE | Flag | Install location | Spec |\n| --- | ---- | ---------------- | ---- |\n| [Antigravity](https://antigravity.google/docs/skills) | `--ide antigravity` | `.agents/skills/` | Agent Skills |\n| [Claude Code](https://code.claude.com/docs/en/skills) | `--ide claude` | `.claude/skills/` | Agent Skills |\n| [Cline](https://docs.cline.bot/customization/skills) | `--ide cline` | `.cline/skills/` | Agent Skills |\n| [Codex](https://developers.openai.com/codex/skills/) | `--ide codex` | `.agents/skills/` | Agent Skills |\n| [Cursor](https://cursor.com/docs/skills) | `--ide cursor` | `.cursor/skills/` | Agent Skills |\n| [GitHub Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills) | `--ide copilot` | `.github/skills/` | Agent Skills |\n| [OpenCode](https://opencode.ai) | `--ide opencode` | `.opencode/skills/` | Agent Skills |\n| Generic | `--ide generic` | `.agents/skills/` | Agent Skills |\n\nAntigravity, 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 `--ide copilot` to install skills for Copilot explicitly.\n\nEach of these IDEs receives the full Agent Skills directory (SKILL.md plus `scripts/`, `references/`, `assets/`) in each tool’s documented location.\n\n## GitHub registries\n\nWhen 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.\n\n- **Requirement:** Git must be installed and on your PATH. If git is not found, a warning is printed and only Dart package skills are used.\n- **Registries:** The CLI currently uses two registries: [flutter/skills](https://github.com/flutter/skills) and [serverpod/skills-registry](https://github.com/serverpod/skills-registry). Each is cloned or updated under `.dart_skills/repos/`, you probably want to add this directory to your `.gitignore`.\n\n## For package maintainers\n\nShip AI skills with your package so every user's coding assistant understands your APIs, conventions, and best practices.\n\n### Adding skills to your package\n\nCreate 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](https://agentskills.io/specification):\n\n```\nmy_package/\n  lib/\n  skills/\n    my_package-code-gen/\n      SKILL.md\n      scripts/       # optional helper scripts\n      references/    # optional reference docs\n      assets/        # optional static resources\n    my_package-testing/\n      SKILL.md\n```\n\n### Naming convention\n\nEvery 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.\n\nFor a package named `serverpod`:\n\n| Directory name | Valid? |\n| -------------- | ------ |\n| `serverpod-code-generation` | Yes |\n| `serverpod-api-design` | Yes |\n| `code-generation` | No -- missing package prefix |\n| `other_pkg-code-generation` | No -- wrong prefix |\n\nThis convention ensures skill names are globally unique and self-documenting. When a user sees `serverpod-code-generation` in their IDE, they know exactly where it came from.\n\n### Writing a skill\n\nThe `name` field in `SKILL.md` should match the directory name. Here is an example of a skill:\n\n```\n---\nname: my_package-my-skill\ndescription: Use when the user is working with MyPackage APIs to ensure correct patterns and error handling.\n---\n\n# My Skill\n\n## Guidelines\n\n- Always use `MyPackage.initialize()` before calling other methods.\n- Prefer the builder pattern for configuration.\n- Handle `MyPackageException` explicitly rather than catching generic exceptions.\n\n## Examples\n\n...\n```\n\nThe `description` tells the AI when to activate the skill -- make it specific and action-oriented.\n\n### Supporting all IDEs\n\nAll IDEs receive the full skill directory (SKILL.md plus `scripts/`, `references/`, `assets/`). Write skills once and they install to each IDE’s spec-defined location.\n\n### Best practices\n\n- **Keep skills focused.** One skill per major feature area. Don't dump everything into a single skill.\n- **Write for the AI, not the human.** Skills are instructions for the coding assistant. Be direct and prescriptive.\n- **Include examples.** Show correct usage patterns. The AI learns best from concrete examples.\n- **Keep SKILL.md under 500 lines.** Move detailed reference material into `references/` files; all supported IDEs receive the full skill directory.\n- **Version your skills with your package.** When you change APIs, update the skills to match.\n\n### What happens when users run `skills get`\n\n1. The CLI resolves your package's location on disk from `package_config.json`.\n2. It finds your `skills/` directory and each skill subdirectory with a `SKILL.md`.\n3. It validates that each skill name starts with your package name.\n4. Skills are installed into the user's IDE-specific location.\n5. A `.dart_skills/skills_config.json` tracking file records which skills were installed from which package and IDE.\n\nUsers can update skills by running `skills get` again. Existing skills from your package are replaced with the latest versions.\n\nThe `.dart_skills/skills_config.json` file tracks managed skills so `skills remove` knows what to clean up without touching skills you created manually.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverpod%2Fskills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserverpod%2Fskills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverpod%2Fskills/lists"}