{"record":{"id":"0711a609cde006b4","repo":"larksuite/cli","slug":"suite-description-prefix-is-missing","errorCode":null,"errorMessage":"suite description prefix is missing","messagePattern":"suite description prefix is missing","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/skillscheck/layout.go","lineNumber":148,"sourceCode":"\n\tfor _, name := range removed {\n\t\tline := routeLine(name)\n\t\tif len(line.FindAllStringIndex(content, -1)) != 1 {\n\t\t\treturn \"\", fmt.Errorf(\"suite route for %s is missing or duplicated\", name)\n\t\t}\n\t\tcontent = line.ReplaceAllString(content, \"\")\n\t}\n\n\tfor _, name := range target {\n\t\tif len(routeLine(name).FindAllStringIndex(content, -1)) != 1 {\n\t\t\treturn \"\", fmt.Errorf(\"cropped suite route for %s is missing or duplicated\", name)\n\t\t}\n\t}\n\n\tkeywords := suiteKeywords(content)\n\tstart := strings.Index(content, suiteDescriptionPrefix)\n\tif start < 0 {\n\t\treturn \"\", fmt.Errorf(\"suite description prefix is missing\")\n\t}\n\tvalueStart := start + len(suiteDescriptionPrefix)\n\tvalueEndOffset := strings.Index(content[valueStart:], suiteDescriptionSuffix)\n\tif valueEndOffset < 0 {\n\t\treturn \"\", fmt.Errorf(\"suite description keyword suffix is missing\")\n\t}\n\tvalueEnd := valueStart + valueEndOffset\n\tcontent = content[:valueStart] + strings.Join(keywords, \"、\") + content[valueEnd:]\n\treturn content, nil\n}\n\nfunc suiteKeywords(content string) []string {\n\trouteLine := regexp.MustCompile(`(?m)^- [^\\n（]+(?:（([^）\\n]*)）)?:`)\n\tseen := map[string]bool{}\n\tkeywords := []string{}\n\tfor _, match := range routeLine.FindAllStringSubmatch(content, -1) {\n\t\tif len(match) < 2 || match[1] == \"\" {\n\t\t\tcontinue","sourceCodeStart":130,"sourceCodeEnd":166,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/internal/skillscheck/layout.go#L130-L166","documentation":"cropSuiteRoutes must rewrite the frontmatter description's aggregated keyword list, but the fixed Chinese prefix that anchors the description could not be found in SKILL.md - the archive's description format no longer matches the cropping contract.","triggerScenarios":"Thrown at internal/skillscheck/layout.go:148 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Keep the expected suite description prefix in the archive's SKILL.md"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7fd6ef3c07182257ce776cdc5a614e122d5bd4b3","analyzedAt":"2026-09-04T21:17:44.649Z","contentChangedAt":"2026-09-04T21:17:44.649Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}