mcpbeat Sign in

Fix Worktree Opsx Skills Not Created Skill for Claude

Diagnose/fix worktrees missing the generated openspec-* (opsx) skills after worktreeInit. Root cause: bare `npx openspec` can resolve a squatted registry stub instead of the real CLI.

821 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
254
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/BlackBeltTechnology/pi-agent-dashboard --skill fix-worktree-opsx-skills-not-created

The instruction itself

5 sections, as written by the author

When to Use

Use when a git worktree lacks the OpenSpec lifecycle skills (.pi/skills/openspec-explore, openspec-propose, and related directories), /opsx: commands are missing, openspec-apply-change stalls, or .pi/settings.json#worktreeInit needs an audit.

Procedure

  • Confirm the skills are generated, not committed. .pi/.gitignore contains skills/openspec-*/**; each fresh worktree must run openspec init.
  • Confirm the repository declares @fission-ai/openspec and identify its package-manager install command. The unscoped npm package openspec is a 0.0.0 stub.
  • Require a clean git status --porcelain=v1, then install repository dependencies. For this repository, run pnpm install --frozen-lockfile.
  • Use the repository-pinned binary when it exists:
   pnpm exec openspec init --tools pi --force

pnpm exec uses the declared local dependency and fails when the binary is absent. In a repository that does not declare the CLI, use the version-pinned scoped package explicitly: npx @fission-ai/[email protected] init --tools pi --force.

  • Verify the CLI reports setup success. Check the lifecycle skills this repository requires by name: openspec-explore, openspec-propose, openspec-apply-change, openspec-update-change, and openspec-archive-change.
  • Check git status --short. Generated openspec-* skill directories should remain ignored. Review any tracked context-file rewrite before continuing.

Why the old path fails

Bare npx openspec init ... can fetch [email protected] when node_modules/.bin/openspec is absent. The stub exits without generating lifecycle skills. Installing dependencies first and using pnpm exec openspec preserves the lockfile-selected CLI and fails visibly when setup is incomplete.

Pitfalls

  • Run the dependency install first. pnpm exec openspec cannot recover a missing local binary.
  • Do not hard-code the number of generated skills or commands. OpenSpec releases generate different sets; validate the required lifecycle names.
  • The worktree-init gate test ! -d .pi/skills/openspec-explore correctly re-triggers initialization when generated skills are absent.
  • openspec init --force can rewrite tracked AGENTS.md or CLAUDE.md. Generated skill directories are safe; tracked context changes require review.

Verification

set -euo pipefail
before_status="$(git status --porcelain=v1)"
if [ -n "$before_status" ]; then
  printf '%s\n' "Refusing recovery in a dirty worktree" >&2
  exit 1
fi
pnpm install --frozen-lockfile
pnpm exec openspec --version
pnpm exec openspec init --tools pi --force
for skill in openspec-explore openspec-propose openspec-apply-change openspec-update-change openspec-archive-change; do
  test -d ".pi/skills/$skill" || exit 1
done
after_status="$(git status --porcelain=v1)"
test -z "$after_status"

Completion requires setup success, every named directory, and empty Git status before and after recovery.

How to use it

Copy the folder

Take blackbelttechnology/fix-worktree-opsx-skills-not-created from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npm, npx. Without those the skill loads but fails at the first command.