From 86f8c0b92faa536b2c6e4e424d995fdc4e8833ce Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 02:02:19 +0000 Subject: [PATCH 1/2] Initial plan From 8caf1896dd2d54fc5b6570ac51769fc00aea7617 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 May 2026 02:04:14 +0000 Subject: [PATCH 2/2] feat(cmd): add tryInstallPluginSkills and wire pluginSkillInstaller hook - Add cmd/plugin_skills.go with tryInstallPluginSkills(name string) that looks up clime- on PATH, runs `skills` subcommand, fetches the returned repo manifest, and installs any skills not already present - Add pluginSkillInstaller var in cmd/plugin.go and invoke it from executePluginInstall after successful manifest save - Fixes undefined: tryInstallPluginSkills CI failure in go vet Agent-Logs-Url: https://github.com/git-hulk/clime/sessions/3680a0d7-99ec-46e5-a4bb-39916baa418a Co-authored-by: git-hulk <4987594+git-hulk@users.noreply.github.com> --- cmd/plugin.go | 11 +++++---- cmd/plugin_skills.go | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 cmd/plugin_skills.go diff --git a/cmd/plugin.go b/cmd/plugin.go index 4ad7e89..edbb91f 100644 --- a/cmd/plugin.go +++ b/cmd/plugin.go @@ -16,10 +16,11 @@ import ( ) var ( - pluginInstall plugin.Plugin - pluginUpdateRepo string - pluginUpdateForce bool - pluginInstallRunner = executePluginInstall + pluginInstall plugin.Plugin + pluginUpdateRepo string + pluginUpdateForce bool + pluginInstallRunner = executePluginInstall + pluginSkillInstaller = tryInstallPluginSkills ) func init() { @@ -337,6 +338,8 @@ func executePluginInstall(manifest *plugin.Manifest, name string, p plugin.Plugi return fmt.Errorf("plugin installed but failed to update manifest: %w", err) } + pluginSkillInstaller(name) + spinner.Success(fmt.Sprintf("Installed plugin %q (%s)", name, version)) return nil } diff --git a/cmd/plugin_skills.go b/cmd/plugin_skills.go new file mode 100644 index 0000000..6bfb477 --- /dev/null +++ b/cmd/plugin_skills.go @@ -0,0 +1,53 @@ +package cmd + +import ( + "os/exec" + "strings" + + "github.com/git-hulk/clime/internal/skill" +) + +func tryInstallPluginSkills(name string) { + name = strings.TrimSpace(name) + if name == "" { + return + } + + bin, err := exec.LookPath("clime-" + name) + if err != nil { + return + } + + out, err := exec.Command(bin, "skills").Output() + if err != nil { + return + } + + source := strings.TrimSpace(string(out)) + if source == "" { + return + } + + manifest, err := skill.LoadManifest() + if err != nil { + return + } + + repoManifest, err := skill.FetchRepoManifest(source) + if err != nil { + return + } + + dir, cleanup, err := skill.PrepareRepoDir(source) + if err != nil { + return + } + defer cleanup() + + for _, entry := range repoManifest.Skills { + if _, found := manifest.GetSkill(entry.Name); found { + continue + } + _ = installSkillEntry(manifest, &entry, source, dir) + } +}