Skip to content

Cross-tool hygiene: skill dir-name != frontmatter name (setup/update -> setup-wizard/update-wizard) collides under OpenCode #374

Description

@BaseInfinity

Context

This is a cross-tool coexistence finding, not a Claude Code bug. Claude Code only reads .claude/skills, so this never bites there. But OpenCode reads .opencode/skills + .claude/skills + .agents/skills together, and that's where it surfaces. Related: BaseInfinity/opencode-sdlc-wizard#26.

Finding

claude-sdlc-wizard installs skills whose directory name differs from the name: in frontmatter:

  • .claude/skills/update/SKILL.md declares name: update-wizard
  • .claude/skills/setup/SKILL.md declares name: setup-wizard

Those names collide with opencode-sdlc-wizard's own setup-wizard / update-wizard skills. When OpenCode reads both trees, skill({ name: "update-wizard" }) resolves non-deterministically — it can load the Claude updater (which maintains .claude/ + the Claude wizard) instead of the OpenCode one. Verified: resolution flips between identical runs.

Suggested fix (low effort, improves multi-lane coexistence)

  1. Make the skill directory name match the name: (e.g. dir setup-wizard/ with name: setup-wizard), so at least the naming is internally consistent; and/or
  2. Namespace the wizard maintenance skills (e.g. claude-setup-wizard / claude-update-wizard) so they can't collide with the OpenCode/Codex siblings when a multi-tree reader (OpenCode) is present.

The workflow skills (sdlc etc.) collide too, but those are functionally equivalent, so the maintenance skills are the higher-value fix.

Environment: OpenCode 1.16.2 reading claude-sdlc-wizard + opencode-sdlc-wizard + codex siblings, macOS 15.1 arm64.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions