diff --git a/pkg/skills/installer.go b/pkg/skills/installer.go index d4ca2ac15..c46dd9f53 100644 --- a/pkg/skills/installer.go +++ b/pkg/skills/installer.go @@ -187,6 +187,9 @@ func matchesGitHubWebBase(repoURL *url.URL, webBaseURL string) bool { if err != nil { return false } + if !strings.EqualFold(repoURL.Scheme, baseURL.Scheme) { + return false + } if !strings.EqualFold(repoURL.Host, baseURL.Host) { return false } diff --git a/pkg/skills/installer_test.go b/pkg/skills/installer_test.go index 83e241e5f..981b61302 100644 --- a/pkg/skills/installer_test.go +++ b/pkg/skills/installer_test.go @@ -200,6 +200,18 @@ func TestParseGitHubRefWithBaseURL(t *testing.T) { if !strings.Contains(err.Error(), `invalid GitHub URL host "gitlab.example.com"`) { t.Fatalf("unexpected error = %v", err) } + + _, err = parseGitHubRefWithBaseURL( + "http://ghe.example.com/git/org/repo/tree/dev/skills/test", + "https://ghe.example.com/git", + "main", + ) + if err == nil { + t.Fatal("parseGitHubRefWithBaseURL() error = nil, want invalid host error for scheme mismatch") + } + if !strings.Contains(err.Error(), `invalid GitHub URL host "ghe.example.com"`) { + t.Fatalf("unexpected scheme mismatch error = %v", err) + } } func TestSkillInstallerResolveGitHubRefUsesDefaultBranch(t *testing.T) {