Skip to content

palm get

palm get reads the lock and lists what is installed, one row per entry.

Terminal window
palm get [kind] [names...] [-s <source>] [--files]
palm get sources
palm get targets
palm get all

Aliases: palm list, palm ls.

Command What it lists
palm get every installed entry
palm get skills installed skills only
palm get skill tdd handoff two entries by name
palm get -s mattpocock/skills entries from one source
palm get mcp MCP servers with the variables each needs and whether they are set
palm get --files every generated path with its entry
palm get sources the declared sources
palm get targets the project root, then each harness, whether it is active and its config folder
palm get all entries, sources and targets
palm get -g the global scope
~/project
$ palm get
kind name source ref sha targets files
───── ───────────────────── ────────────────────────────────── ───────────── ─────── ──────────── ─────
skill tdd mattpocock/skills ^1.2 → v1.2.3 2c0db90 claude,codex 5
agent agent-sdk-verifier-py anthropics/claude-plugins-official main bc94689 claude,codex 2
$ palm get sources
source alias kind ref sha/tree entries
────────────────────────────────── ───── ──── ───────────── ──────── ───────
mattpocock/skills git ^1.2 → v1.2.3 2c0db90 1
anthropics/claude-plugins-official git main bc94689 1
$ palm get skills --files
.agents/skills/tdd/SKILL.md skill tdd mattpocock/skills
.agents/skills/tdd/agents/openai.yaml skill tdd mattpocock/skills
.agents/skills/tdd/references/mocking.md skill tdd mattpocock/skills
.claude/skills/tdd/SKILL.md skill tdd mattpocock/skills
.claude/skills/tdd/references/mocking.md skill tdd mattpocock/skills
Argument Meaning
kind skill, agent, instruction, hook, mcp, plugin; source, target or all
names only these names
Option Meaning
-s, --source <source> only what came from this source
--files every file palm wrote, with its entry

The global options also apply.

Column Shows
kind, name the entry
source the declared source name, or palm.yaml for a hand-declared MCP server
ref the version: v1.2.3 for an exact tag, ^1.2 → v1.2.3 for a range and what it resolved to, main for a branch; empty for an in-repo source, which has no ref
sha the locked commit
targets the targets the entry is on
files how many files palm wrote for it, and how many entries it merged

palm describe <name> shows whether a plugin selected the entry, and its at: when palm.yaml sets one. palm get sources shows each source’s name, alias, kind (github, git or local), ref, commit, and the number of entries. palm get targets prints the project root first, then every target, whether it is active in this scope, and where its config lives. Under -g, paths print as ~/....

-s <source> with a name that is not declared fails with E_NOT_FOUND and suggests the nearest declared source.

--files replaces a search of the harness folders. Pipe it to grep to find who wrote a file, or use palm describe <path>.

palm 0.3 adds a footer with the bytes each harness loads at every session start, and a layer column for personal entries.

palm get --json prints { "items": [...] }, one object per entry with kind, name, source, ref, resolved, sha, targets, files and layer, which is always team in 0.2. palm get mcp --json adds variables: each variable a server needs, and whether it is set. palm get targets --json carries the project root. See JSON output.

palm get reads palm.yaml and the lock, and the environment for palm get mcp. It writes nothing and needs no network.

Code When
0 The list printed, even when it is empty.
1 -s names a source that is not declared. The message suggests the nearest one.
2 An unknown kind word or option.