Skip to content

fix(installer): install Claude skills as <name>/SKILL.md so /god-* appear in the picker - #90

Open
ikkeflikkeri wants to merge 1 commit into
hannsxpeter:mainfrom
ikkeflikkeri:main
Open

fix(installer): install Claude skills as <name>/SKILL.md so /god-* appear in the picker#90
ikkeflikkeri wants to merge 1 commit into
hannsxpeter:mainfrom
ikkeflikkeri:main

Conversation

@ikkeflikkeri

Copy link
Copy Markdown

Bug

After npx godpowers --claude --global the installer reports Installed 15 slash commands to skills/ but none of the /god-* slash commands appear in Claude Code's picker. The skill files are on disk but Claude doesn't see them.

Root cause

Claude Code expects Agent Skills at ~/.claude/skills/<name>/SKILL.md — a directory per skill with a SKILL.md at its root (the Anthropic Agent Skills spec). The installer was writing each skill as a flat ~/.claude/skills/<name>.md file, which the picker never picked up.

The Codex branch already used the directory layout, which is why Codex continued to work.

Fix

Extend the existing installSkillFile Codex branch to also include claude in the directory-layout case. Mirrors the working Codex behavior and uses the same prune/uninstall logic that already understands both flat and directory forms.

Also update the success label so Claude reports Claude Code skill directories instead of the misleading skills/.

scripts/test-install-smoke.js had five Claude assertions that were encoding the broken flat-file layout as the expected behavior — those are updated to match the corrected directory layout.

Upgrade path

pruneGodpowersSkills already removes stale god-*.md flat files, so users re-running the installer against a fresh install get the corrected layout automatically. Verified end-to-end with a fake stale file in a throwaway HOME.

Diff

Two files, +18 / -12. No refactors, no new config fields, no new test files.

lib/installer-core.js         | 10 ++++++++--
scripts/test-install-smoke.js | 20 ++++++++++----------

Verification

  • npm run validate-skills → 496/496 pass
  • npm run test:prepublication → 12/12 pass
  • End-to-end node bin/install.js --claude --global against a fresh USERPROFILE → 15 skill directories with SKILL.md inside each, label correctly reads Claude Code skill directories
  • Stale-flat-file upgrade path: re-running the installer after planting a fake god-stale-flat.md removes it and writes the new directory layout; unrelated files in ~/.claude/skills/ are preserved
  • Verified locally on Windows: /god, /god-init, /god-plan, /god-build, /god-mode, /god-fix, /god-ship, /god-sync, /god-undo, /god-first-run, /god-demo, /god-help, /god-surface, /god-status, and /god-version all become visible in Claude Code's picker

References

…pear in the picker

After `npx godpowers --claude --global` the installer wrote each skill as a
flat `~/.claude/skills/<name>.md` file, but Claude Code expects Agent Skills
to live as directories at `~/.claude/skills/<name>/SKILL.md` (Anthropic Agent
Skills spec). The picker never saw them.

Extend `installSkillFile` to use the directory layout for Claude Code alongside
the existing Codex branch, and update the install success label so it reports
`Claude Code skill directories` instead of the misleading `skills/`.

Update `scripts/test-install-smoke.js` Claude assertions that were encoding
the broken flat-file layout as the expected behavior.

Pruned on upgrade: `pruneGodpowersSkills` already removes stale `god-*.md`
flat files, so users re-running the installer get the corrected layout
automatically.
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.

1 participant