Skip to content

[Bug]: extension update renders the github extension's Claude skill differently from extension add, and its README links a missing file #5105

Open

Description

@fgalarraga

Bug Description

After specify extension update github (1.0.2 to 1.0.3), the github extension's Claude skill and registry entry differ from what specify extension add github produced: the skill lost its hook-name rule and front matter, and registered_skills is empty. The 1.0.3 README also links a file that is not installed.

Steps to Reproduce

  1. In a project with the claude integration (--script ps), run specify extension add github. The recorded source is "local", version 1.0.2.
  2. Run specify extension update github and confirm the prompt. The recorded source becomes {"kind":"catalog","catalog":"default"}, version 1.0.3.
  3. Compare .claude/skills/speckit-github-taskstoissues/SKILL.md, the github entry in .specify/extensions/.registry, and .specify/extensions/github/README.md before and after (we diffed the committed files with git diff --ignore-cr-at-eol).

Expected Behavior

extension update produces the same skill content, front matter and registry entry as extension add of the same version, and the README's links resolve in an installed project (or point to the documentation site).

Actual Behavior

  1. The skill lost the hook-name rule, in both places it appeared:

    -- When constructing command invocations from hook command names, replace dots (`.`) with hyphens (`-`). For example, `speckit.git.commit` → `/speckit-git-commit`.

    With the Claude integration, skills are named with hyphens, so a hook named speckit.git.commit would now be invoked by a name that does not exist.

  2. The front matter changed:

    -  source: extension:github
    -user-invocable: true
    -disable-model-invocation: false
    +  source: github:commands/speckit.github.taskstoissues.md

    The # Github Taskstoissues Skill heading was dropped too. Skills installed by the core integration keep user-invocable and disable-model-invocation.

  3. registered_skills is empty. In .specify/extensions/.registry, github records registered_commands.claude: ["speckit.github.taskstoissues"] but registered_skills: [], although the skill folder exists. Extensions installed with extension add record their skill names there.

  4. Dead README links. .specify/extensions/github/README.md links ../../docs/integrations/cli.md#integration-specific-options (line 29) and ../../docs/integrations/cli.md#upgrade-an-integration (line 99). From .specify/extensions/github/ these resolve to .specify/docs/integrations/cli.md, which is not installed.

We do not know whether the front-matter change in point 2 is an intended format change; points 1, 3 and 4 look unintended.

Specify CLI Version

1.2.3

AI Agent

Claude Code

Operating System

Windows 11 Pro

Python Version

3.14.7 (the uv tool environment specify-cli runs in)

Error Logs

None; the commands succeed.

Additional Context

Seen in seven repositories updated the same way on 2026-10-23, all with the same result. The project uses the github extension as the replacement for the deprecated core taskstoissues command.

AI Disclosure

Drafted by Claude Code (model Claude Opus 5.5), human-supervised: the agent found the differences while reviewing the update in our repositories, gathered the diffs and wrote this report; a maintainer of those repositories reviewed it and asked for it to be filed.

Activity

  1. added
    triage-must-haveVerdict: high-value, important work for Spec Kit — do first
    on Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage-must-haveVerdict: high-value, important work for Spec Kit — do first

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions