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

Method Pin

cli/skill_handler.go:1199–1235  ·  view source on GitHub ↗

Pin marks a skill to be auto-injected into every turn for the rest of the session, regardless of triggers/paths. Pinning is rejected for skills with `disable-model-invocation: true` (the flag exists precisely to forbid automatic injection; manual invocation via `/ ` remains the supported

(name string)

Source from the content-addressed store, hash-verified

1197// automatic injection; manual invocation via `/<skill-name>` remains the
1198// supported path for those).
1199func (sh *SkillHandler) Pin(name string) {
1200 if sh.personaMgr == nil {
1201 fmt.Printf("\n %s\n\n", colorize(i18n.T("skill.pin.no_manager"), ColorRed))
1202 return
1203 }
1204 skill, err := sh.personaMgr.GetSkillByName(name)
1205 if err != nil || skill == nil {
1206 fmt.Printf("\n %s %s\n", colorize(i18n.T("skill.pin.not_found")+":", ColorYellow), colorize(name, ColorCyan))
1207 fmt.Printf(" %s\n\n", i18n.T("skill.pin.search_hint", colorize("/skill search <query>", ColorCyan)))
1208 return
1209 }
1210 if skill.DisableModelInvocation {
1211 fmt.Printf("\n %s %s\n", colorize(i18n.T("skill.pin.disabled_invocation")+":", ColorYellow), colorize(skill.Name, ColorCyan))
1212 fmt.Printf(" %s\n\n", i18n.T("skill.pin.use_manual_hint", colorize("/"+skill.Name, ColorCyan)))
1213 return
1214 }
1215
1216 sh.pinnedSkillsMu.Lock()
1217 _, already := sh.pinnedSkillNames[skill.Name]
1218 sh.pinnedSkillNames[skill.Name] = struct{}{}
1219 count := len(sh.pinnedSkillNames)
1220 sh.pinnedSkillsMu.Unlock()
1221
1222 if already {
1223 fmt.Printf("\n %s %s\n\n", colorize(i18n.T("skill.pin.already"), ColorGray), colorize(skill.Name, ColorCyan))
1224 return
1225 }
1226
1227 sh.logger.Info("skill pinned",
1228 zap.String("skill", skill.Name),
1229 zap.Int("total_pinned", count))
1230
1231 fmt.Printf("\n %s %s\n",
1232 colorize(i18n.T("skill.pin.success"), ColorGreen),
1233 colorize(skill.Name, ColorCyan))
1234 fmt.Printf(" %s\n\n", colorize(i18n.T("skill.pin.effect"), ColorGray))
1235}
1236
1237// Unpin removes a skill from the pinned set. No-op (with a friendly notice)
1238// when the skill wasn't pinned to begin with.

Calls 7

TFunction · 0.92
colorizeFunction · 0.85
GetSkillByNameMethod · 0.80
LockMethod · 0.80
UnlockMethod · 0.80
InfoMethod · 0.65
StringMethod · 0.45