Skip to content

[Bug]: integration use drops ai_skills from init-options.json for a skills-mode Copilot install #3550

Description

@seiya-koji

Bug Description

Running specify integration use copilot against a Copilot integration that was installed with --integration-options "--skills" removes "ai_skills": true from .specify/init-options.json.

Steps to Reproduce

# 1. Install Copilot in skills mode
$ specify init proj --integration copilot --integration-options "--skills" --script sh --ignore-agent-tools
$ cd proj

$ cat .specify/init-options.json
{
  "ai": "copilot",
  "ai_skills": true,
  "feature_numbering": "sequential",
  "here": false,
  "integration": "copilot",
  "script": "sh",
  "speckit_version": "0.12.16"
}

$ find .github -type f | sort
.github/skills/speckit-analyze/SKILL.md
.github/skills/speckit-checklist/SKILL.md
...
(10 files total, all SKILL.md under .github/skills/)

# 2. Add an extension as an example — it is installed as skills
$ specify extension add git

$ find .github -type f | sort
.github/skills/speckit-analyze/SKILL.md
...
.github/skills/speckit-git-commit/SKILL.md
.github/skills/speckit-git-feature/SKILL.md
...
(15 files total — the git extension commands were also added as skills)

# 3. Just re-select the same copilot as the default integration
$ specify integration use copilot
✓ Default integration set to copilot.

$ cat .specify/init-options.json
{
  "ai": "copilot",
  "feature_numbering": "sequential",
  "here": false,
  "integration": "copilot",
  "script": "sh",
  "speckit_version": "0.12.16"
}

$ find .github -type f | sort
.github/agents/speckit.git.commit.agent.md
.github/agents/speckit.git.feature.agent.md
...
.github/prompts/speckit.git.commit.prompt.md
.github/prompts/speckit.git.feature.prompt.md
...
.github/skills/speckit-analyze/SKILL.md
.github/skills/speckit-checklist/SKILL.md
...
(the 5 git extension commands were regenerated in the legacy commands layout under agents/ + prompts/, coexisting with the 15 existing skills files)

No switch to another integration is needed — running use copilot alone triggers the bug (a round-trip like use claudeuse copilot triggers it as well).

Expected Behavior

use only changes the default integration using the stored configuration, so:

  • "ai_skills": true is preserved
  • .github keeps its skills layout unchanged

Actual Behavior

  • The "ai_skills" key is removed from init-options.json, while integration_settings.copilot.parsed_options in .specify/integration.json still says {"skills": true} — the two files now contradict each other.
  • The 5 git extension commands are regenerated as .github/agents/speckit.git.*.agent.md + .github/prompts/speckit.git.*.prompt.md (legacy commands layout), duplicating and coexisting with the existing .github/skills/speckit-git-*/SKILL.md.

Specify CLI Version

0.12.16

AI Agent

GitHub Copilot

Operating System

macOS 26.5.2

Python Version

Python 3.14.3

Error Logs

None

Additional Context

None

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions