fix: resolve __SPECKIT_COMMAND_*__ refs in preset skill rendering (#2717) (#2718)
* fix: resolve __SPECKIT_COMMAND_*__ refs in preset skill rendering (#2717) The preset skill layer mirrors command templates into SKILL.md files but only ran resolve_skill_placeholders(), leaving command cross-references as raw __SPECKIT_COMMAND_<NAME>__ placeholders instead of rendering them as /speckit-<cmd> the way CommandRegistrar.register_commands() does. As a result, presets that override core commands under the agent skill layer (e.g. Claude --ai-skills) leaked the raw tokens into SKILL.md. Add a shared PresetManager._resolve_skill_command_refs() helper that maps the agent's invoke separator to IntegrationBase.resolve_command_refs(), and call it right after resolve_skill_placeholders() in every preset skill-rendering path: _register_skills() (install), the _reconcile_skills() override-restoration block, and both _unregister_skills() restore paths. This mirrors register_commands() and addresses the path divergence flagged in #1976. Add regression tests covering the install and restore paths. AI assistance: authored with Claude Code (Anthropic) — analysis, patch, and tests. Verified via the existing pytest suite plus a manual CLI install and remove cycle on a Claude --ai-skills project. * test: cover reconcile-override and extension restore command-ref paths (#2718 review) Copilot review flagged that the install and core-template restore paths gained regression tests, but the reconcile project-override branch and the extension-backed restore branch were uncovered. Add focused tests for both: - test_reconcile_override_skill_resolves_command_refs: a project override wins after preset removal; _reconcile_skills must render command refs. - test_extension_restore_resolves_command_refs: a skill restored from an extension command body must also render command refs. Both fail on main and pass with the fix in 8dd93c0.
H
Huy Bui Minh committed
66884db85ba6127fadbc7b9a804f6bf732020f67
Parent: 9af5411
Committed by GitHub <noreply@github.com>
on 5/27/2026, 5:49:54 PM