palm describe
palm describe answers “what is this, where did it come from, and what did it write” for one thing.
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 |
$ palm describe tddskill 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-clihook 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/skillsOptions
Section titled “Options”| 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.
An entity
Section titled “An entity”| 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.
A path
Section titled “A path”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.
A source or a target
Section titled “A source or a target”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 ~/....
Reads and writes
Section titled “Reads and writes”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.
Exit codes
Section titled “Exit codes”| 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. |