{"record":{"id":"184db5bb5c93a7e8","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":"skill/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/f88b2837a7d7c3182e46307bbbb091a1ed547571/skill/scripts/hook-admin.mjs#L563-L599","documentation":"A safety interlock on the overused-font rule. Ignoring overused-font as a whole rule would suppress font findings for every font family at once, but the rule is designed to be ignored per confirmed font value. The command therefore refuses the bare form and requires either a value-scoped ignore (the default path) or an explicit --all-values opt-in for project-wide suppression.","triggerScenarios":"`hooks ignore-rule overused-font` with no --all-values; an agent relaying 'ignore that font warning' by suppressing the entire rule instead of the specific family; CI scripts blanket-ignoring rules to get a green build.","commonSituations":"Teams trying to silence a recurring Inter/Roboto warning by killing the rule; automation copying a generic ignore-rule invocation for every finding type without knowing overused-font is special-cased.","solutions":["If one specific font is the problem: `hooks ignore-value overused-font Inter` (the confirmed font family name).","If the user genuinely asked to ignore overused fonts generally: `hooks ignore-rule overused-font --all-values`.","Scope either variant to files with --file if the problem is localized."],"exampleFix":"# before\nimpeccable hooks ignore-rule overused-font\n\n# after (specific font — preferred)\nimpeccable hooks ignore-value overused-font Inter\n\n# after (project-wide, only when explicitly intended)\nimpeccable hooks ignore-rule overused-font --all-values","handlingStrategy":"validation","validationCode":"function planOverusedFontIgnore(fontName, opts = {}) {\n  if (!fontName) {\n    return ['hooks', 'ignore-rule', 'overused-font', ...(opts.allValues ? ['--all-values'] : [])];\n  }\n  return ['hooks', 'ignore-value', 'overused-font', fontName];\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default to ignore-value with the exact font family name from the finding; only reach for --all-values when the user explicitly asked for project-wide suppression.","When relaying user intent, map 'ignore this font' to ignore-value, not ignore-rule.","Treat overused-font as special-cased in any wrapper you build around the hooks CLI."],"tags":["cli","guard-rail","hook-admin","overused-font","explicit-opt-in"],"backgroundTag":"explicit-opt-in-required","analyzedSha":"f88b2837a7d7c3182e46307bbbb091a1ed547571","analyzedAt":"2026-08-18T04:58:36.608Z","contentChangedAt":"2026-08-18T04:58:36.608Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}