GitHub Copilot
Set up GitHub Copilot in your editor, or use
Copilot CLI. The integration key is copilot; a CLI is not required for IDE setup.
Multi-Install Safety
This integration is not declared multi-install safe. See the shared multi-install rules.
Setup
specify init my-project --integration copilot
For an existing Spec Kit project, use specify integration install copilot.
See integration management for activation, upgrades, and removal.
Default Skills Layout
Skills are installed as .github/skills/speckit-<command>/SKILL.md.
Invoke them in the agent's chat as /speckit-specify or
/speckit-bug-assess for the installed bug extension. These are agent skills,
not terminal commands. Generated skills are both user- and model-invocable by
default.
User-Invocable-Only Skills
To stop Copilot loading the core Spec Kit command skills automatically in the skills layout:
specify init my-project --integration copilot --integration-options="--no-model-invocation"
This writes disable-model-invocation: true into the core command skills.
VS Code's agent skills documentation
says this requires manual invocation through the / slash command only.
GitHub's Copilot CLI skills documentation does not list the field, but in a
manual check with Copilot CLI 1.0.70 the model called its skill tool for
speckit-specify without the flag and did not with it, and an explicit
/speckit-specify still ran. With the flag the model could still read the
skill's SKILL.md as an ordinary file, so it is not a hard block. Neither
source says whether a skill with this flag keeps its description out of the
model's context.
- The option has no effect in the commands layout, whether selected explicitly
with
--commandsor retained from an existing installation when no layout flag is passed: the.agent.mdand.prompt.mdfiles are not skills and no flag is written. - Extension skills stay model-invocable, because mandatory extension hooks rely
on the model invoking them. If an extension's mandatory hook runs a core
command (its
command:is a corespeckit.<command>), leave this option off: the model cannot run that hook while the core skill is user-invocable only. - The option is stored with the integration's other options and reapplied by
specify integration upgrade copilot. Passing--integration-optionstoupgradereplaces all stored options;--integration-options=""clears them. Re-runningspecify initlikewise stores only the options passed to it. - Core command skills that a preset overrides, or stops overriding, are reverted
to the default by commands that re-register preset skills without reinstalling
Copilot: commands that install, remove or update presets (including
specify bundlecommands that carry presets),specify integration use copilot, andspecify integration switch copilotwhen Copilot is installed but not the default. To reapply the option, runspecify integration upgrade copilot --forcewhile Copilot is the default integration (--forceis needed because those commands modify installed skill files, and it overwrites local edits to Spec Kit-managed files).
Commands Layout
To opt into the supported commands layout:
specify init my-project --integration copilot --integration-options="--commands"
This installs .agent.md files under .github/agents/, companion .prompt.md
files under .github/prompts/, and merges .vscode/settings.json.
In this layout, Copilot CLI can select an agent through /agents or address
it directly in a prompt.
Use --integration-options="--skills" to explicitly select the default skills
layout when migrating an existing commands installation with
specify integration upgrade copilot. Passing it replaces all stored options,
so include any you want to keep: without --no-model-invocation in that value,
for example, the migrated skills are written as model-invocable. See the
shared upgrade rules,
including the restriction on changing layouts while preset artifacts are
registered.
--skills and --commands are mutually exclusive. Without an explicit layout
flag, existing managed command installations retain their layout on upgrade or
activation; a fresh installation defaults to skills.
The commands layout adds only missing VS Code settings and subkeys. Existing values remain unchanged. If an existing settings file is JSONC or otherwise cannot be parsed as a JSON object, the merge is skipped with a warning and manual instructions. An existing merged settings file is retained on uninstall; a newly created settings file is manifest-tracked.
Runtime Events and Workflow Permissions
Native events use .github/hooks/speckit.json.
--integration-options="--events false" disables Spec Kit event handlers.
See runtime events.
Workflow steps require Copilot CLI separately from the IDE setup. In skills
mode, command steps pass /speckit-<command> in the prompt. In commands mode,
they select --agent speckit.<command> and pass the user's arguments as the
prompt rather than treating agent files as slash commands.
Headless dispatch adds --yolo by default, allowing tools, paths, and URLs
without interactive approval. Set SPECKIT_COPILOT_ALLOW_ALL_TOOLS=0 to stop
Spec Kit from adding this flag. The deprecated SPECKIT_ALLOW_ALL_TOOLS is
accepted only as a fallback. A configured --model and requested
--output-format json are forwarded.