find-unwrapped-strings

Installation
SKILL.md

Find Unwrapped Strings

When to run this

  • After a Lingui setup or a migration onto Lingui — both wrap what they touch, and neither proves the rest of the codebase was touched.
  • When the report is "the build is green and the catalogs are full, but this screen still shows English in every locale."
  • As a periodic coverage audit on a project where i18n is already established.

The misses are systematic, not random. Strings in JSX get wrapped because they look like UI; what survives is display copy that doesn't — inside data modules (export const products = [{ name: "AeroPress Go" }]), message maps in toast and error helpers, labels in config objects.

The scan is over-inclusive by design. Precision comes from judging each hit against the skip-list, never from tuning the scanner until it goes quiet. A quiet scanner is indistinguishable from a clean codebase, and only one of those is worth having.

Judge by role, never by language. The scanner flags string literals structurally and the skip-list decides which are user-facing — what natural language a string appears to be written in is not an input to that decision, and working it out is pure overhead.

Step 1 — Ensure the guardrail

Install eslint-plugin-lingui and enable no-unlocalized-strings at warn with the tuned options from references/eslint-config.md:

Installs
76
Repository
lingui/skills
GitHub Stars
9
First Seen
Aug 15, 2026
find-unwrapped-strings — lingui/skills