{"record":{"id":"42b1812f9d93c51e","repo":"affaan-m/ECC","slug":"docs-zh-cn-readme-md-is-missing-the-quick-start-catalog","errorCode":null,"errorMessage":"docs/zh-CN/README.md is missing the quick-start catalog summary","messagePattern":"docs/zh-CN/README\\.md is missing the quick-start catalog summary","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/ci/catalog.js","lineNumber":157,"sourceCode":"function parseZhRootReadmeExpectations(readmeContent) {\n  const match = readmeContent.match(/你现在可以使用\\s+(\\d+)\\s+个代理、\\s*(\\d+)\\s*个技能和\\s*(\\d+)\\s*个命令/i);\n  if (!match) {\n    throw new Error('README.zh-CN.md is missing the quick-start catalog summary');\n  }\n\n  return [\n    { category: 'agents', mode: 'exact', expected: Number(match[1]), source: 'README.zh-CN.md quick-start summary' },\n    { category: 'skills', mode: 'exact', expected: Number(match[2]), source: 'README.zh-CN.md quick-start summary' },\n    { category: 'commands', mode: 'exact', expected: Number(match[3]), source: 'README.zh-CN.md quick-start summary' }\n  ];\n}\n\nfunction parseZhDocsReadmeExpectations(readmeContent) {\n  const expectations = [];\n\n  const quickStartMatch = readmeContent.match(/你现在可以使用\\s+(\\d+)\\s+个智能体、\\s*(\\d+)\\s*项技能和\\s*(\\d+)\\s*个命令了/i);\n  if (!quickStartMatch) {\n    throw new Error('docs/zh-CN/README.md is missing the quick-start catalog summary');\n  }\n\n  expectations.push(\n    { category: 'agents', mode: 'exact', expected: Number(quickStartMatch[1]), source: 'docs/zh-CN/README.md quick-start summary' },\n    { category: 'skills', mode: 'exact', expected: Number(quickStartMatch[2]), source: 'docs/zh-CN/README.md quick-start summary' },\n    { category: 'commands', mode: 'exact', expected: Number(quickStartMatch[3]), source: 'docs/zh-CN/README.md quick-start summary' }\n  );\n\n  const tablePatterns = [\n    { category: 'agents', regex: /\\|\\s*智能体\\s*\\|\\s*(?:(?:PASS:|\\u2705)\\s*)?(\\d+)\\s*个\\s*\\|/i, source: 'docs/zh-CN/README.md comparison table' },\n    { category: 'commands', regex: /\\|\\s*命令\\s*\\|\\s*(?:(?:PASS:|\\u2705)\\s*)?(\\d+)\\s*个\\s*\\|/i, source: 'docs/zh-CN/README.md comparison table' },\n    { category: 'skills', regex: /\\|\\s*技能\\s*\\|\\s*(?:(?:PASS:|\\u2705)\\s*)?(\\d+)\\s*项\\s*\\|/i, source: 'docs/zh-CN/README.md comparison table' }\n  ];\n\n  for (const pattern of tablePatterns) {\n    const match = readmeContent.match(pattern.regex);\n    if (!match) {\n      throw new Error(`${pattern.source} is missing the ${pattern.category} row`);","sourceCodeStart":139,"sourceCodeEnd":175,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/scripts/ci/catalog.js#L139-L175","documentation":"parseZhDocsReadmeExpectations throws when docs/zh-CN/README.md lacks the quick-start counts sentence pattern. It fires when the localized docs README diverges from the canonical sentence (reworded, translated differently, or counts removed), leaving no source for expected agent/skill/command totals.","triggerScenarios":"Thrown at scripts/ci/catalog.js:157 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Restore the '你现在可以使用 N 个代理…' sentence in docs/zh-CN/README.md.","Regenerate the localized README from the catalog tooling.","Update the regex if the canonical Chinese phrasing changed."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}