// skill.go 提供 Skill 管理相关的 Wails service。 package bridge import ( "cursor/internal/cursor" "cursor/internal/skills" ) // SkillProject 表示一个用户打开过的 Cursor 项目。 type SkillProject = cursor.ProjectEntry // SkillInfo 表示一个内置 Skill。 type SkillInfo = skills.Skill // SkillService 定义 Skill 管理相关的 Wails service。 type SkillService struct{} // NewSkillService 创建 Skill 管理 service。 func NewSkillService() *SkillService { return &SkillService{} } // ListRecentProjects 返回用户打开过的 Cursor 项目列表。 func (s *SkillService) ListRecentProjects() ([]SkillProject, error) { logServiceCall("skills", "list_recent_projects") projects, err := cursor.ListRecentProjects() logServiceResult("skills", "list_recent_projects", err) return projects, err } // ListSkills 返回所有内置 Skill。 func (s *SkillService) ListSkills() ([]SkillInfo, error) { logServiceCall("skills", "list_builtin") result := skills.List() logServiceResult("skills", "list_builtin", nil) return result, nil } // DeleteProjectRecord 从 Cursor 的项目记录中删除指定项目。 func (s *SkillService) DeleteProjectRecord(projectPath string) error { logServiceCall("skills", "delete_project_record", "project", projectPath) err := cursor.DeleteProjectRecord(projectPath) logServiceResult("skills", "delete_project_record", err) return err } // GetProjectSkillStates 返回指定项目内各内置 skill 的安装状态。 func (s *SkillService) GetProjectSkillStates(projectPath string) (map[string]bool, error) { logServiceCall("skills", "get_project_states", "project", projectPath) states := make(map[string]bool) for _, skill := range skills.List() { states[skill.Name] = skills.IsInstalled(projectPath, skill.Name) } logServiceResult("skills", "get_project_states", nil) return states, nil } // SetProjectSkill 开启时将内置 skill 安装到项目,关闭时移除。 func (s *SkillService) SetProjectSkill(projectPath string, skillName string, enabled bool) error { logServiceCall("skills", "set_project_skill", "project", projectPath, "skill", skillName, "enabled", enabled) var err error if enabled { err = skills.Install(projectPath, skillName) } else { err = skills.Uninstall(projectPath, skillName) } logServiceResult("skills", "set_project_skill", err) return err }