Packs

Share a set of skills from anywhere as one address, and add them all with one command.

A pack is a list of skills from other places: GitHub repositories, or skills on skilless. Add one and every skill in it lands in your library and this project:

skilless add @ieedan/pack/svelte-essentials

That is the pack svelte-essentials by ieedan. Its page, and its full link, is skilless.dev/packs/ieedan/svelte-essentials.

Each skill remembers the pack it came from. skilless list and the dashboard show the pack as its origin.

Making a pack

Open Packs on skilless.dev and create one. Add your own skills, skills from a GitHub repository, or another pack. A new pack is private: only you can see it, or add it from the CLI while signed in. Turn on Public to let anyone with the address use it.

A skill of yours in a public pack still has to be public itself for anyone else to get it. Make it public from the skill's menu.

From the terminal, skilless packs create makes one with your skills, or any repository, in it:

skilless packs create "Svelte essentials" no-effect github.com/sveltejs/ai-tools --public

skilless packs list and skilless packs delete do the rest, and agents connected over MCP can manage packs too.

Writing one by hand

A pack is just JSON, so you can host it anywhere: in a repository, or on your own site. skilless add takes any URL that serves one, or a file path:

skilless add example.com/skills.json
skilless add ./team-pack.json
{
	"$schema": "https://skilless.dev/schema/pack.json",
	"name": "Svelte essentials",
	"description": "What I add to every SvelteKit project.",
	"skills": [
		"github.com/anthropics/skills",
		"github.com/sveltejs/ai-tools/skills#main",
		"github.com/ieedan/skills/.agents/skills/test",
		"@ieedan/grill-me"
	]
}

Only skills is required. Each entry is one of:

  • A repository, github.com/owner/repo: every skill in it.

  • A folder in one, github.com/owner/repo/path: every skill in that folder, or the one skill if that is where it lives.

  • A skill on skilless, @user/skill, or its link https://skilless.dev/skills/<user>/<skill>. Copy a skill's link from its menu on the dashboard.

  • Another pack, @user/pack/<pack> or https://skilless.dev/packs/<user>/<pack>, any URL serving one, or a pack file beside this one (./base.json): every skill in it, including ones it gains later.

Add #branch or #tag to a repository to pin it.

A pack can't include itself, directly or through other packs. skilless.dev refuses an entry that would make a loop, and skilless add stops with the loop spelled out, like A includes itself: A → B → A, for packs hosted anywhere else.

Following a pack

Adding a pack follows it. skilless update checks every pack you follow:

  • Skills the pack has gained are copied into your library. They are added to this project if it already uses the pack, or made global if the pack's skills are.
  • Skills the pack has dropped are left where they are, and you're asked whether to delete them. Keep one and it stops following the pack.
  • Every skill is brought up to date with where it comes from, like any skill added from a repository.

If a skill is in your library from somewhere else already, a pack never replaces it during update. Adding the pack again with skilless add asks first.

When two packs have the same skill, the one that added it last is its origin.