Skip to content

Avoid duplicate skill lookup for slash-invoked skills with disable-model-invocation #4637

Description

@Omzig

Summary

A skill that is explicitly invoked with a slash command can execute and inject its instructions into context, while another lookup path reports Skill not found, creating misleading context noise.

Reproduction

Use a skill with this frontmatter:

---
name: implement
description: "Implement a piece of work based on a spec or set of tickets."
disable-model-invocation: true
---

The local skill is C:\Users\omzig\.copilot\skills\implement\SKILL.md; the relevant setting is line 4: disable-model-invocation: true.

Then run:

/implement #1147

Observed behavior:

  • The /implement workflow is recognized and its instructions are injected into context.
  • A separate skill lookup reports: Skill not found: implement.
  • The command can continue, but the error is misleading and makes it appear that the skill failed to load.

Environment: Copilot CLI 1.0.80 on Windows.

Expected behavior

disable-model-invocation: true should prevent automatic/model-driven invocation. It should not make an explicit slash-command invocation unavailable. When the explicit command path succeeds, the runtime should not perform a second conflicting lookup or emit Skill not found.

Suggested fix

Distinguish explicit slash-command invocation from automatic skill invocation. Resolve the command/skill once, honor disable-model-invocation only for automatic loading, and suppress the registry error when the explicit command path has already loaded the skill successfully.

This is primarily a context-quality issue: the implementation workflow works, but the duplicate/conflicting lookup adds noise and obscures the actual result.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions