Finds every skill on the computer that an agent can load, not just the ones
ally installed. It looks in the shared .agents/skills/ folder and in each
agent's own folder (.claude/skills/, .codex/skills/, .cursor/skills/),
for the project, your home folder, or both. A folder counts as a skill when it
holds a SKILL.md, whether it is a real folder or a link to one.
Usage
installed_skills(scope = c("project", "user"), check_github = TRUE)Value
A tibble with one row per skill and columns:
name: the skill's folder name.description: the start of thedescriptionfrom theSKILL.mdheader, which agents read to decide when to use the skill. The full text is in theSKILL.mdatpath.installed_by:"ally","skills CLI", orNAwhen nothing recorded it.installed_from: the GitHub repository and folder, local path or link target the skill was installed from, such as"posit-dev/skills/r-lib/r-cli-app", orNAwhen nothing recorded it.installed: when this copy was installed or last updated, in your time zone.updated_on_github: when the skill's folder last changed on GitHub, orNAfor skills that did not come from GitHub.edited:TRUEif any copy of the skill has changed since ally installed it,FALSEif none has, orNAwhen there is nothing to compare with: skills ally did not install, or installed before it recorded a fingerprint of each skill's files.update_skill()will not overwrite an edited skill withoutforce = TRUE.scope:"project"or"user".found_in: the folders that hold the skill, such as".agents, .claude".path: the skill's folder, preferring the.agents/skills/copy.
Details
A skill that sits in several folders (the .agents/skills/ copy and the
Claude Code copy ally makes, for instance) is listed once, with every folder
it was found in.
What installed a skill, where from, and when come from the first of these
that records it: the .ally-source.json that install_skill() writes, or the
lockfile the skills command-line tool (npx skills) keeps at
.agents/.skill-lock.json. A skill that is a link to a folder elsewhere shows
that folder as where it came from. Skills copied in by hand have none of this,
so their install time is when their folder was created.
For skills installed from GitHub, installed_skills() also looks up when the
skill's folder last changed there, using the repository's public commit feed.
That needs no token and does not count against the GitHub API rate limit. If
that time is later than installed, update_skill() will fetch a newer
version.
Skills that come from Claude Code plugins live elsewhere and are not listed.