{"record":{"id":"ab2a967b951e25e6","repo":"larksuite/cli","slug":"skills-layout-must-be-separate-or-suite","errorCode":null,"errorMessage":"skills layout must be separate or suite","messagePattern":"skills layout must be separate or suite","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/skillscheck/layout.go","lineNumber":31,"sourceCode":"\t\"github.com/larksuite/cli/internal/vfs\"\n)\n\ntype Layout string\n\nconst (\n\tLayoutSeparate         Layout = \"separate\"\n\tLayoutSuite            Layout = \"suite\"\n\tsuiteDescriptionPrefix        = \"description: 飞书/Lark 聚合能力入口：管理飞书/Lark 产品能力（\"\n\tsuiteDescriptionSuffix        = \"等）。\"\n)\n\nfunc ParseLayout(value string) (Layout, error) {\n\tlayout := Layout(strings.TrimSpace(value))\n\tswitch layout {\n\tcase \"\", LayoutSeparate, LayoutSuite:\n\t\treturn layout, nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"skills layout must be separate or suite\")\n\t}\n}\n\nfunc EffectiveLayout(state *SkillsState) Layout {\n\tif state != nil && state.Layout == LayoutSuite {\n\t\treturn LayoutSuite\n\t}\n\treturn LayoutSeparate\n}\n\nfunc ResolveLayout(requested Layout, state *SkillsState, readable bool) (Layout, error) {\n\tif requested != \"\" {\n\t\treturn ParseLayout(string(requested))\n\t}\n\tif readable {\n\t\treturn EffectiveLayout(state), nil\n\t}\n\treturn LayoutSeparate, nil","sourceCodeStart":13,"sourceCodeEnd":49,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/internal/skillscheck/layout.go#L13-L49","documentation":"Guard in ParseLayout: the requested skills layout string is neither empty, \"separate\", nor \"suite\". Only these layout values are accepted when configuring skills installation.","triggerScenarios":"Thrown at internal/skillscheck/layout.go:31 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use `separate` or `suite`, or omit the value to get the default"],"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"}