Skip to content

palm describe

palm describe answers “what is this, where did it come from, and what did it write” for one thing.

Terminal window
palm describe <[kind:]name | path>
palm describe <source> <[kind:]name>
palm describe source <name>
palm describe target <target>

Alias: palm info.

Command What it shows
palm describe tdd one installed entity
palm describe hook:gh-cli the same, when a name means two kinds
palm describe mattpocock/skills handoff an entity of a source, installed or not, read from the index
palm describe mcp docs an MCP server, with the block each harness received
palm describe .claude/skills/tdd/SKILL.md the entity that wrote this file
palm describe setup.sh a bare file name, found under .palm/assets and the output folders
palm describe .mcp.json every entity with an entry merged into this file
palm describe source mattpocock/skills a source: URL, ref, commit, detection rule, counts and index warnings
palm describe target codex where each kind goes for Codex in this scope
~/project
$ palm describe tdd
skill tdd (installed, project scope)
Test-driven development with red-green-refactor.
source mattpocock/skills https://github.com/mattpocock/skills.git
ref ^1.2 → v1.2.3 2c0db90
path skills/engineering/tdd
version 1.2.3
selected by palm.yaml
claude .claude/skills/tdd/SKILL.md, .claude/skills/tdd/references/mocking.md
codex .agents/skills/tdd/SKILL.md, .agents/skills/tdd/agents/openai.yaml, .agents/skills/tdd/references/mocking.md
note claude gets its own copy in .claude/skills
$ palm describe hook:gh-cli
hook gh-cli (installed, project scope)
source trailofbits/skills https://github.com/trailofbits/skills.git
ref ^2.1 → v2.1.0 924ffa8
path plugins/gh-cli/hooks/hooks.json
version 2.1.0
selected by plugin:gh-cli
claude .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/hooks.json, .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/intercept-github-curl.sh, .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/persist-session-id.sh, .claude/settings.json
codex .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/hooks.json, .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/intercept-github-curl.sh, .palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/persist-session-id.sh, .codex/hooks.json
merged .claude/settings.json /hooks/PreToolUse
merged .claude/settings.json /hooks/SessionStart
merged .codex/hooks.json /hooks/PreToolUse
merged .codex/hooks.json /hooks/SessionStart
runs PreToolUse//Bash CLAUDE_PLUGIN_ROOT="$CLAUDE_PROJECT_DIR"/.palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli bash "$CLAUDE_PROJECT_DIR"/.palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/intercept-github-curl.sh
runs SessionStart//- CLAUDE_PLUGIN_ROOT="$CLAUDE_PROJECT_DIR"/.palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli bash "$CLAUDE_PROJECT_DIR"/.palm/assets/trailofbits__skills/gh-cli/plugins/gh-cli/hooks/persist-session-id.sh
trust trusted (sha256:23759d85)
$ palm describe .claude/settings.json
.claude/settings.json merged of hook gh-cli from trailofbits/skills
Argument Meaning
what [kind:]name, a path, source <name> or target <id>
Option Meaning
-s, --source <source> the entity from this source

The global options also apply.

Field Shows
description from the entity’s frontmatter or manifest
source the declared source, its ref, the resolved tag and the commit
path, version where the entity lives in the source, and its version
selected by palm.yaml, or plugin:<name> when a plugin selected it
files per harness every generated path and merged entry, per target
notes what install printed once: dropped fields, skipped targets, “from command”, shared folders
activation for an instruction: the activation the source declared, and where a harness widened it until 0.3
at the placement root from palm.yaml, when set; placed at the root until 0.3
program for a hook or stdio server: every command, the hash, and whether it is trusted
scripts the asset folder and its file count; for a skill, the scripts it cites
needs for an MCP server: every variable, and whether it is set

An entity that is not installed yet shows what the index knows, from its source, when you name the source first. When a bare name exists in two sources, the hint is palm describe <source> <name>.

palm describe mcp <name> adds the rendered block for each harness, so you see exactly what Codex got in TOML.

Given a path, absolute, relative or starting with ~, palm names the entity that wrote it. palm compares real paths, so a path behind a symlink works, and a bare file name such as setup.sh is looked up in .palm/assets and the output folders.

Match Meaning
file the entity wrote this file
inside the path is a folder, and these entities wrote files inside it
merged the file is shared, and these entities own entries in it, by JSON pointer, TOML table or block

A path no entity wrote prints so and exits 1.

palm describe source <name> shows the URL or path, ref, commit, root, layout as YAML, the scan rule that matched, the counts per kind and the index warnings. Scanning shows an example. For a source palm.yaml does not declare, such as palm describe source mattpocock/skills before any install, palm fetches it and shows the ref, commit, scan rule, counts and index warnings.

An installed entity whose files are gone shows (missing) beside each one, and palm get counts them in the files column. A name installed only in the other scope gets the same hint as palm remove: the command with or without -g. For a source pinned to a tag or a commit, it also prints the latest release tag.

palm describe target <target> prints the project root, then renders a sample entity of every kind for that harness in the current scope, so the paths include any home-directory override you set. Under -g, paths print as ~/....

palm describe reads palm.yaml, the lock and the cached index. It writes nothing. It needs no network, except to index a declared source whose commit is not cached.

Code When
0 The entity, path, source or target was found.
1 Nothing matches the name or path, or the name means two kinds.
2 No argument, or an unknown kind word.