fix(skills): namespace setup/update skill names to fix OpenCode collision (#374)#451
Merged
Merged
Conversation
…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.
1 task
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skills/setup/SKILL.md(name: setup-wizard) andskills/update/SKILL.md(name: update-wizard) collide withopencode-sdlc-wizard's identically-named skills. OpenCode reads multiple skill trees byname:, not directory, soskill({ 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.claude-setup-wizard/claude-update-wizard: frontmattername:, the live dispatch string inhooks/sdlc-prompt-check.sh:62, and every user-facing/setup-wizard//update-wizardreference across docs, hooks, and testsskills/setup/,skills/update/stay as-is) — presented 3 options to the user, this was the explicit pick. Only thename:identifier moves, since that's what OpenCode actually resolves collisions on; renaming directories too would've touchedcli/init.jsinstall paths for zero additional collision-fixing benefit.step-update-wizard/step-setup-wizardstep-registry keys andCHANGELOG.md/ROADMAP.md/ROADMAP_ARCHIVE.mdhistorical 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.mdfiles just over the 20000-char audit threshold (same class of regressiontest-audit-session-load.shcaught 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 testtest_no_bare_setup_update_wizard_collision, mutation-verified RED before the fix)bash tests/test-cli.sh— 97/97bash tests/test-self-update.sh— 153/153bash tests/test-hooks.sh— 161/161tests/*.shfiles, 0 failures