{"record":{"id":"902764c374506b2a","repo":"pbakaus/impeccable","slug":"overused-font-is-value-specific-by-default-use","errorCode":null,"errorMessage":"overused-font is value-specific by default. Use ${IMPECCABLE_COMMAND} hooks ignore-value overused-font <font> for a confirmed font, or ${IMPECCABLE_COMMAND} hooks ignore-rule overused-font --all-values only when the user asked to ignore overused fonts generally.","messagePattern":"overused-font is value-specific by default\\. Use (.+?) hooks ignore-value overused-font <font> for a confirmed font, or (.+?) hooks ignore-rule overused-font --all-values only when the user asked to ignore overused fonts generally\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"plugin/skills/impeccable/scripts/hook-admin.mjs","lineNumber":581,"sourceCode":"    } else if (arg.startsWith('--')) {\n      throw new Error(`Unknown ignore-rule flag: ${arg}`);\n    } else {\n      positionals.push(arg);\n    }\n  }\n\n  return {\n    rule: normalizeRuleId(positionals[0]),\n    allValues,\n  };\n}\n\nfunction addIgnoreRule(cwd, args) {\n  const parsed = parseIgnoreRuleArgs(args);\n  const rule = parsed.rule;\n  if (!rule) throw new Error(`Pass a rule id, e.g. ${IMPECCABLE_COMMAND} hooks ignore-rule side-tab`);\n  if (rule === 'overused-font' && !parsed.allValues) {\n    throw new Error(`overused-font is value-specific by default. Use ${IMPECCABLE_COMMAND} hooks ignore-value overused-font <font> for a confirmed font, or ${IMPECCABLE_COMMAND} hooks ignore-rule overused-font --all-values only when the user asked to ignore overused fonts generally.`);\n  }\n  const config = mergeDetectorConfig(readRawDetectorConfig(cwd));\n  if (!config.ignoreRules.includes(rule)) config.ignoreRules.push(rule);\n  writeDetectorConfig(cwd, config);\n  return `Added \"${rule}\" to detector.ignoreRules. Current: ${config.ignoreRules.join(', ')}`;\n}\n\nfunction parseIgnoreFileArgs(args) {\n  const positionals = [];\n  let shared = false;\n  let local = false;\n\n  for (const raw of args) {\n    const arg = String(raw || '');\n    if (arg === '--shared') {\n      shared = true;\n    } else if (arg === '--local') {\n      local = true;","sourceCodeStart":563,"sourceCodeEnd":599,"githubUrl":"https://github.com/pbakaus/impeccable/blob/d14711ae3d1a1dd62dee61a358d27f107c51ccd0/plugin/skills/impeccable/scripts/hook-admin.mjs#L563-L599","documentation":"overused-font is a value-specific rule: a single 'overused-font' suppression is meaningful only per font family, not as a blanket rule. Adding `overused-font` to ignoreRules without `--all-values` is therefore refused, with a message pointing to the value-scoped command (ignore-value) or the explicit whole-rule form. This is a guardrail against an accidental project-wide font suppression that the user did not actually confirm.","triggerScenarios":"Running `hooks ignore-rule overused-font` with no `--all-values` flag.","commonSituations":"A user (or agent) trying to silence all overused-font findings in one shot instead of confirming a specific font; treating overused-font like any other rule id.","solutions":["If you want to ignore one confirmed font, use `hooks ignore-value overused-font <font>`.","Only if you explicitly intend to ignore overused fonts project-wide, add `--all-values`: `hooks ignore-rule overused-font --all-values`."],"exampleFix":"# before\nimpeccable hooks ignore-rule overused-font\n\n# after (per-font, preferred)\nimpeccable hooks ignore-value overused-font Inter\n\n# after (whole rule, explicit)\nimpeccable hooks ignore-rule overused-font --all-values","handlingStrategy":"validation","validationCode":"if (rule === 'overused-font' && !allValues) {\n  // route to ignore-value for a specific font, or require explicit --all-values\n  throw new Error('Use ignore-value overused-font <font>, or --all-values for the whole rule.');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat overused-font as value-specific by default; prefer ignore-value overused-font <font>.","Reserve `ignore-rule overused-font --all-values` for an explicit, confirmed project-wide suppression."],"tags":["cli","argument-parsing","detector-config"],"backgroundTag":null,"analyzedSha":"d14711ae3d1a1dd62dee61a358d27f107c51ccd0","analyzedAt":"2026-08-13T00:52:25.771Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}