Skip to content

Configuration file

pollen.yaml, read from the working directory unless --config says otherwise:

repos:
- repo: https://github.com/toto/tata
revision: 1.2.3
paths:
- path: mydir/
recurse: true
exclude: ^toto
- repo: local
paths:
- path: skills
Key Required Default Description
targets no .claude/skills and .agents/skills; with --global, ~/.claude/skills and ~/.agents/skills Directories the skills are deployed into, each getting a full copy. A leading ~ is expanded (~/ everywhere, ~\ on Windows too); a relative path resolves against the working directory, so a user-level config should use ~ paths.
repos[].repo yes — A git URL, a path to a git repository, or local for the directory holding the config file.
repos[].revision for git — Tag, branch or commit to check out. A branch draws a warning, since each update deploys whatever it points to then; a full commit SHA is the only revision that cannot move (pollen validate --pinned enforces it). Forbidden on local.
repos[].paths[].path yes — Directory to search, relative to the source root. Write it with /, which every platform reads.
repos[].paths[].recurse no false Search the whole subtree instead of the immediate children.
repos[].paths[].exclude no — Regular expression rejecting skills whose path under path matches.

A path that itself holds a SKILL.md is taken as one skill. Otherwise its subdirectories are searched, and a skill found on the way is never descended into. A local source’s paths resolve against the config file’s directory, so a config can be shared without its sources moving. See examples/pollen.yaml for a commented config.

Every selected skill directory must remain inside its source root after symlink resolution. A child directory symlink resolving outside the root refuses the run. Links within the root retain their selected name and path. Excluded candidates are not selected and do not enter this check.

Set targets yourself to deploy elsewhere — a single directory, or the user-level pair, which is also what --global uses when the user-level config sets none:

targets:
- ~/.claude/skills
- ~/.agents/skills

A JSON Schema describes the file. Point your editor at it for completion and inline errors, by adding this first line to pollen.yaml:

# yaml-language-server: $schema=https://raw.githubusercontent.com/groupbees/pollen/main/schema/pollen.schema.json

pollen schema prints the same document, for a validator that wants it on stdin. It covers the file’s shape; pollen validate goes further and checks the sources and the skills themselves (see Usage).