Skip to content

fix(skills): namespace setup/update skill names to fix OpenCode collision (#374)#451

Merged
BaseInfinity merged 2 commits into
mainfrom
fix/374-claude-namespace-skill-names
Jul 15, 2026
Merged

fix(skills): namespace setup/update skill names to fix OpenCode collision (#374)#451
BaseInfinity merged 2 commits into
mainfrom
fix/374-claude-namespace-skill-names

Conversation

@BaseInfinity

Copy link
Copy Markdown
Owner

Summary

  • Closes Cross-tool hygiene: skill dir-name != frontmatter name (setup/update -> setup-wizard/update-wizard) collides under OpenCode #374skills/setup/SKILL.md (name: setup-wizard) and skills/update/SKILL.md (name: update-wizard) collide with opencode-sdlc-wizard's identically-named skills. OpenCode reads multiple skill trees by name:, not directory, so skill({ name: "update-wizard" }) resolved non-deterministically — sometimes silently loading the wrong wizard's updater. Claude Code only reads .claude/skills, so this never bit there.
  • Renamed to claude-setup-wizard / claude-update-wizard: frontmatter name:, the live dispatch string in hooks/sdlc-prompt-check.sh:62, and every user-facing /setup-wizard//update-wizard reference across docs, hooks, and tests
  • Directories intentionally unchanged (skills/setup/, skills/update/ stay as-is) — presented 3 options to the user, this was the explicit pick. Only the name: identifier moves, since that's what OpenCode actually resolves collisions on; renaming directories too would've touched cli/init.js install paths for zero additional collision-fixing benefit.
  • step-update-wizard/step-setup-wizard step-registry keys and CHANGELOG.md/ROADMAP.md/ROADMAP_ARCHIVE.md historical citations correctly left untouched (internal tracking labels and historical record, not the invocable identifier)

Token-budget note

Namespacing added ~8 chars per occurrence, pushing both SKILL.md files just over the 20000-char audit threshold (same class of regression test-audit-session-load.sh caught in #440). Trimmed two verbose sentences in each file — reread both in context to confirm meaning was preserved, not just word count.

Cross-model review

Codex xhigh, CERTIFIED round 1. Verified the live dispatch string, ran all four affected suites independently, confirmed the sweep was complete with no stragglers outside the intentionally-excluded files.

Test plan

  • bash tests/test-doc-consistency.sh — 74/74 (new regression test test_no_bare_setup_update_wizard_collision, mutation-verified RED before the fix)
  • bash tests/test-cli.sh — 97/97
  • bash tests/test-self-update.sh — 153/153
  • bash tests/test-hooks.sh — 161/161
  • Full sweep: all 58 tests/*.sh files, 0 failures
  • Codex xhigh cross-model review — CERTIFIED (round 1)

…sion (#374)

Closes #374. skills/setup/SKILL.md (name: setup-wizard) and
skills/update/SKILL.md (name: update-wizard) collided with
opencode-sdlc-wizard's identically-named skills — OpenCode reads
multiple skill trees by name:, not directory, causing non-deterministic
resolution that could silently load the wrong wizard's updater.

Renamed to claude-setup-wizard / claude-update-wizard: frontmatter
name:, the live dispatch string in hooks/sdlc-prompt-check.sh, and
every user-facing /setup-wizard or /update-wizard reference across
docs/hooks/tests. Directories intentionally unchanged — only the
name: identifier moves, since that's what OpenCode actually resolves
on. step-update-wizard/step-setup-wizard step-registry keys and
CHANGELOG/ROADMAP historical citations correctly left untouched.

New regression test (test_no_bare_setup_update_wizard_collision,
mutation-verified RED before the fix) plus a token-budget trim in
both SKILL.md files to stay under the 20000-char audit threshold.
Codex xhigh cross-model review CERTIFIED round 1.
@BaseInfinity
BaseInfinity merged commit 2ee9ae0 into main Jul 15, 2026
4 checks passed
BaseInfinity added a commit that referenced this pull request Jul 20, 2026
…459)

#450: WebFetch's built-in summarization produced 3 inconsistent
answers across 2 calls to the same doc URL during #456's review,
including a wrong root-cause citation that cost a full Codex review
round. Only a raw curl fetch got the actual verbatim schema.

#451: maintainer had to explicitly ask for this postmortem step
itself — second occurrence of the "I hate having to remind you"
complaint (first was #436, 2026-07-04, about cross-model review).
The SDLC skill's own capture-learnings step isn't triggered
proactively at natural session-close points.

Both logged per this repo's own Post-Mortem convention:
incident -> root cause -> new rule -> scope, rather than fixed
by verbal apology alone.
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.

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

1 participant