{"record":{"id":"c311bc521685be35","repo":"Tencent/WeKnora","slug":"skill-description-is-d-characters-maximum-is-d","errorCode":null,"errorMessage":"skill description is %d characters; maximum is %d","messagePattern":"skill description is (.+?) characters; maximum is (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/agent/skills/skill.go","lineNumber":107,"sourceCode":"\t}\n\tif !namePattern.MatchString(s.Name) {\n\t\treturn errors.New(\"skill name must contain only letters, numbers, hyphens, and underscores\")\n\t}\n\tfor _, reserved := range reservedWords {\n\t\tif strings.Contains(s.Name, reserved) {\n\t\t\treturn fmt.Errorf(\"skill name cannot contain reserved word: %s\", reserved)\n\t\t}\n\t}\n\tif xmlTagPattern.MatchString(s.Name) {\n\t\treturn errors.New(\"skill name cannot contain XML tags\")\n\t}\n\n\t// Validate description\n\tif s.Description == \"\" {\n\t\treturn errors.New(\"skill description is required\")\n\t}\n\tif n := utf8.RuneCountInString(s.Description); n > MaxDescriptionLength {\n\t\treturn fmt.Errorf(\"skill description is %d characters; maximum is %d\", n, MaxDescriptionLength)\n\t}\n\tif xmlTagPattern.MatchString(s.Description) {\n\t\treturn errors.New(\"skill description cannot contain XML tags\")\n\t}\n\n\treturn nil\n}\n\n// applyInstallName picks the directory / tool identity. Third-party SKILL.md\n// files often put a display title in name (\"Word / DOCX\") and a kebab-case\n// id in slug (\"word-docx\"). A title that is already a valid identity is\n// left alone so Chinese names such as 律师助手 stay as-is.\nfunc (s *Skill) applyInstallName() error {\n\tif s == nil {\n\t\treturn errors.New(\"skill name is required\")\n\t}\n\tif installableSkillName(s.Name) {\n\t\ts.Name = strings.TrimSpace(s.Name)","sourceCodeStart":89,"sourceCodeEnd":125,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/agent/skills/skill.go#L89-L125","documentation":"Length guard in Skill.Validate: the skill's Description exceeds MaxDescriptionLength runes per the Claude skill spec. The description must be shortened; the message reports the actual and maximum rune counts.","triggerScenarios":"Thrown at internal/agent/skills/skill.go:107 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Shorten the frontmatter `description` to within MaxDescriptionLength characters","Move long usage detail into the SKILL.md body instead of the description","Validate the frontmatter locally before shipping the skill"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}