package main import ( "fmt" "github.com/spf13/cobra" "skillmgr/internal/installer" "skillmgr/internal/types" ) var installCmd = &cobra.Command{ Use: "install ", Short: "安装 skill 或 command", Long: `将 skill 或 command 安装到目标平台。 类型: skill, command 示例: # 全局安装到 Claude Code skillmgr install skill lyxy-kb --platform claude --global # 项目级安装到 OpenCode skillmgr install command lyxy-kb --platform opencode`, Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { itemType := args[0] name := args[1] platformStr, _ := cmd.Flags().GetString("platform") global, _ := cmd.Flags().GetBool("global") from, _ := cmd.Flags().GetString("from") platform := types.Platform(platformStr) scope := types.ScopeProject if global { scope = types.ScopeGlobal } switch itemType { case "skill": if from != "" { return installer.InstallSkillFrom(name, platform, scope, from) } return installer.InstallSkill(name, platform, scope) case "command": if from != "" { return installer.InstallCommandFrom(name, platform, scope, from) } return installer.InstallCommand(name, platform, scope) default: return fmt.Errorf("无效的类型: %s(必须是 'skill' 或 'command')", itemType) } }, } func init() { installCmd.Flags().StringP("platform", "p", "", "目标平台 (claude|opencode)") installCmd.Flags().BoolP("global", "g", false, "全局安装") installCmd.Flags().String("from", "", "临时仓库 URL(不保存到配置)") installCmd.MarkFlagRequired("platform") rootCmd.AddCommand(installCmd) }