Skip to content

fix(pstack): name every skill after its folder - #702

Merged
poteto merged 2 commits into
mainfrom
lauren/pstack-skill-names-31fc
Oct 17, 2026
Merged

poteto merged 2 commits into
mainfrom
lauren/pstack-skill-names-31fc

Conversation

@poteto

@poteto poteto commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Two pstack skills had display names in their frontmatter: make-bot-ui was Make Bot UI and poteto-mode was Poteto Mode. Claude Code lists a skill by that name, so it showed /pstack:Make Bot UI and /pstack:Poteto Mode, which parse as the unknown commands /pstack:Make and /pstack:Poteto. Cursor runs a skill by its folder name and warns when the two differ. This PR fixes the names in the source, so every harness reads the same name and no harness needs a rewrite.

What changed

  • The frontmatter name of make-bot-ui and poteto-mode is now the folder name. The Claude Code tree is regenerated.
  • generate-pstack-harness-trees.mjs fails when a skill's name is not its folder name, or when the folder name is not lowercase words joined by hyphens, at most 64 characters. CI already runs it with --check.

Scope

  • Covers all 54 pstack skills. A script did the rename, and the second commit body has it so you can run it again.
  • Leaves out the two X skills under third_party/, which have the same problem. They are not in the Claude Code marketplace. A repo-wide check can follow after their owners rename them.
  • No version bump.

Tradeoffs

  • fix(pstack): name Claude Code skills after their folders #696 rewrites name only in the generated Claude Code tree. That fixes Claude Code, but the source still breaks the Agent Skills spec, Cursor still warns, and the two trees give one skill two names. Any other host that reads pstack/ directly also gets the display name.

Blast Radius

Cursor commands stay /make-bot-ui and /poteto-mode. Only their label in the slash menu changes from the display name to the folder name. Claude Code now lists /pstack:make-bot-ui and /pstack:poteto-mode, which run. The old listed forms never ran, so no alias is needed.

Verification

  • Claude Agent SDK 0.3.302 (Claude Code 2.1.302), supportedCommands() for the Claude Code tree: 2 broken names of 54 on main → 0 on this branch.
  • Cursor's skill name check over pstack/skills: 2 warnings on main and on fix(pstack): name Claude Code skills after their folders #696 → 0 on this branch.
  • generate-pstack-harness-trees.mjs --check fails on the first commit with the two names and passes on the second. validate-plugins.mjs passes.

Note

Low Risk
Naming and generator validation only; no auth, data, or runtime behavior changes beyond slash-menu labels and Claude Code command strings.

Overview
Aligns pstack skill frontmatter name with each skill’s folder slug so Cursor and Claude Code invoke the same identifier.

make-bot-ui and poteto-mode no longer use title-case display names (Make Bot UI, Poteto Mode). Claude Code can list runnable /pstack:make-bot-ui and /pstack:poteto-mode instead of broken commands that stopped at the space.

generate-pstack-harness-trees.mjs now fails the harness check when frontmatter name ≠ folder name, or when the folder is not a lowercase hyphenated slug (Agent Skills-style, ≤64 chars). That blocks the mismatch from coming back in CI (--check).

Reviewed by Cursor Bugbot for commit 72e97b8. Bugbot is set up for automated code reviews on this repo. Configure here.

…folder

Cursor runs a skill by its folder name. Claude Code lists it by its
frontmatter `name`, so a skill named `Poteto Mode` shows up as
`/pstack:Poteto Mode`, which parses as the unknown command `/pstack:Poteto`.
The Agent Skills spec requires the two to match and limits them to lowercase
words joined by hyphens, at most 64 characters.

The generator now fails on any pstack skill that breaks that rule. CI runs it
with --check. This commit fails on `make-bot-ui` and `poteto-mode`; the next
commit renames them.
`make-bot-ui` and `poteto-mode` had the display names `Make Bot UI` and
`Poteto Mode` in their frontmatter. Claude Code listed them as
`/pstack:Make Bot UI` and `/pstack:Poteto Mode`, which cannot run, and Cursor
warned that the name did not match the folder. The fix is in the source, so
Cursor, Claude Code, and the generated tree all read the same name and the
generator needs no per-harness rewrite.

Every skill was renamed by this script, run from the repository root. It
changes only the two skills whose name differed:

  node -e 'const fs=require("fs");for(const d of fs.readdirSync("pstack/skills")){const p=`pstack/skills/${d}/SKILL.md`;if(fs.existsSync(p))fs.writeFileSync(p,fs.readFileSync(p,"utf8").replace(/^(---\n[\s\S]*?^name: ).*$/m,`$1${d}`))}'
  node scripts/generate-pstack-harness-trees.mjs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants