@@ -58,6 +58,15 @@ func (m *UI) skillStatusItems() []skillStatusItem {
58 var items []skillStatusItem
58 var items []skillStatusItem
59 stateNames := make(map[string]struct{}, len(m.skillStates))
59 stateNames := make(map[string]struct{}, len(m.skillStates))
61+ disabledSet := make(map[string]bool)
62+ if m.com != nil && m.com.Workspace != nil {
63+ if cfg := m.com.Config(); cfg != nil {
64+ for _, name := range cfg.Options.DisabledSkills {
65+ disabledSet[name] = true
61 states := slices.Clone(m.skillStates)
70 states := slices.Clone(m.skillStates)
62 slices.SortStableFunc(states, func(a, b *skills.SkillState) int {
71 slices.SortStableFunc(states, func(a, b *skills.SkillState) int {
63 return strings.Compare(a.Path, b.Path)
72 return strings.Compare(a.Path, b.Path)
@@ -67,6 +76,9 @@ func (m *UI) skillStatusItems() []skillStatusItem {
67 if name == "" {
76 if name == "" {
68 name = filepath.Base(filepath.Dir(state.Path))
77 name = filepath.Base(filepath.Dir(state.Path))
79+ if disabledSet[name] {
70 stateNames[name] = struct{}{}
82 stateNames[name] = struct{}{}
71 icon := t.Resource.OnlineIcon.String()
83 icon := t.Resource.OnlineIcon.String()
72 if state.State == skills.StateError {
84 if state.State == skills.StateError {
@@ -87,6 +99,9 @@ func (m *UI) skillStatusItems() []skillStatusItem {
87 if _, ok := stateNames[skill.Name]; ok {
99 if _, ok := stateNames[skill.Name]; ok {
102+ if disabledSet[skill.Name] {
90 items = append(items, skillStatusItem{
105 items = append(items, skillStatusItem{
91 icon: t.Resource.OnlineIcon.String(),
106 icon: t.Resource.OnlineIcon.String(),
92 name: skill.Name,
107 name: skill.Name,