pbakaus/impeccable · error · Error

overused-font is value-specific by default. Use ${IMPECCABLE

Error message

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.

What it means

Thrown by addIgnoreRule as a safety guard when the user tries to ignore the `overused-font` rule without --all-values. overused-font is value-specific by default: the intent is to ignore a *confirmed specific font*, not to disable the whole rule. The error points to the correct command for each intent. This prevents the common footgun of silencing all overused-font findings when only one font was meant to be excepted.

Source

Thrown at skill/scripts/hook-admin.mjs:581

    } else if (arg.startsWith('--')) {
      throw new Error(`Unknown ignore-rule flag: ${arg}`);
    } else {
      positionals.push(arg);
    }
  }

  return {
    rule: normalizeRuleId(positionals[0]),
    allValues,
  };
}

function addIgnoreRule(cwd, args) {
  const parsed = parseIgnoreRuleArgs(args);
  const rule = parsed.rule;
  if (!rule) throw new Error(`Pass a rule id, e.g. ${IMPECCABLE_COMMAND} hooks ignore-rule side-tab`);
  if (rule === 'overused-font' && !parsed.allValues) {
    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.`);
  }
  const config = mergeDetectorConfig(readRawDetectorConfig(cwd));
  if (!config.ignoreRules.includes(rule)) config.ignoreRules.push(rule);
  writeDetectorConfig(cwd, config);
  return `Added "${rule}" to detector.ignoreRules. Current: ${config.ignoreRules.join(', ')}`;
}

function parseIgnoreFileArgs(args) {
  const positionals = [];
  let shared = false;
  let local = false;

  for (const raw of args) {
    const arg = String(raw || '');
    if (arg === '--shared') {
      shared = true;
    } else if (arg === '--local') {
      local = true;

View on GitHub (pinned to d14711ae3d)

Solutions

  1. If you want to allow a specific confirmed font: `impeccable hooks ignore-value overused-font <font-name>`.
  2. Only if you explicitly want to disable overused-font detection entirely: `impeccable hooks ignore-rule overused-font --all-values`.
  3. Confirm the font name before ignoring (use the exact family name the detector reported).

Example fix

# before (too broad — disables the whole rule)
impeccable hooks ignore-rule overused-font

# after (allow one specific font)
impeccable hooks ignore-value overused-font Inter
# or, only if you really mean all fonts:
impeccable hooks ignore-rule overused-font --all-values
Defensive patterns

Strategy: validation

Validate before calling

// Route overused-font to the value-specific command unless --all-values is explicit.
function routeOverusedFont({ rule, allValues, value }) {
  if (rule !== 'overused-font') return null;
  if (allValues) return ['ignore-rule', rule, '--all-values'];
  if (value) return ['ignore-value', rule, value];
  throw new Error('overused-font needs a value (ignore-value) or --all-values (ignore-rule)');
}

Prevention

When it happens

Trigger: Running `impeccable hooks ignore-rule overused-font` (no --all-values); a user who actually wanted to allow one font but reached for the rule-level command.

Common situations: A user seeing repeated overused-font findings for a single font and trying to mute the rule wholesale; copy-pasting a generic ignore-rule invocation.

Related errors


AI-assisted analysis of pbakaus/impeccable@d14711ae3d (2026-08-13). Data as JSON: /api/errors/184db5bb5c93a7e8. Report an issue: GitHub.