MCPcopy Create free account
hub / github.com/diillson/chatcli / List

Method List

cli/skill_handler.go:515–598  ·  view source on GitHub ↗

List shows all installed skills.

()

Source from the content-addressed store, hash-verified

513
514// List shows all installed skills.
515func (sh *SkillHandler) List() {
516 installed, err := sh.registryMgr.ListInstalled()
517 if err != nil {
518 fmt.Printf(" %s %s\n", colorize(i18n.T("skill.error")+":", ColorRed), err.Error())
519 return
520 }
521
522 fmt.Println()
523 if len(installed) == 0 {
524 fmt.Println(colorize(" "+i18n.T("skill.list.empty"), ColorYellow))
525 fmt.Printf("\n %s\n\n",
526 i18n.T("skill.list.search_hint", colorize("/skill search <query>", ColorCyan)))
527 return
528 }
529
530 fmt.Printf(" %s (%d):\n\n",
531 colorize(i18n.T("skill.list.header"), ColorCyan), len(installed))
532
533 // Compute column widths
534 maxNameLen := 0
535 maxVerLen := 0
536 maxSourceLen := 0
537 for _, s := range installed {
538 if len(s.Name) > maxNameLen {
539 maxNameLen = len(s.Name)
540 }
541 ver := ""
542 if s.Version != "" {
543 ver = "v" + s.Version
544 }
545 if len(ver) > maxVerLen {
546 maxVerLen = len(ver)
547 }
548 src := s.Source
549 if src == "" {
550 src = "local"
551 }
552 if len(src) > maxSourceLen {
553 maxSourceLen = len(src)
554 }
555 }
556
557 for _, s := range installed {
558 // Pad raw strings first, then colorize
559 paddedName := fmt.Sprintf("%-*s", maxNameLen, s.Name)
560
561 ver := ""
562 if s.Version != "" {
563 ver = "v" + s.Version
564 }
565 paddedVer := fmt.Sprintf("%-*s", maxVerLen, ver)
566
567 src := s.Source
568 if src == "" {
569 src = "local"
570 }
571 srcTag := fmt.Sprintf("[%s]", src)
572

Callers 1

HandleCommandMethod · 0.95

Calls 6

IsPinnedMethod · 0.95
TFunction · 0.92
colorizeFunction · 0.85
GetRegistriesMethod · 0.80
ErrorMethod · 0.65
ListInstalledMethod · 0.45

Tested by

no test coverage detected