626Labs · Claude Code plugin

Localize your app's UI without corrupting its logic.

vibe-lingual is the i18n-retrofit layer for vibe-coded apps. It classifies every user-facing string by kind, audits the stack for the gotchas that bite localization retrofits, then runs a confidence-routed extract → wire → translate → guard loop that mutates only with per-file backups and idempotent re-runs — deep on next-intl + App Router, honest about the rest.

v0.1.0·5 commands·next-intl·MIT

Includes5 commands · 10 skills

vibe-lingual ~
$ /vibe-lingual:scan
[vibe-lingual] Classifying user-facing strings... done
720 strings across ~67 components, by kind
→ readiness brief written — read-only, nothing changed
 
$ /vibe-lingual:localize
[vibe-lingual] extract → wire → translate → guard...
→ per-file backups written · idempotent re-run safe
→ catalog parity: clean · jsx-no-literals ratchet: +12
01 · What it does

Five commands across the localization retrofit.

From a read-only readiness scan to the guarded mutation loop, every step is a direct call. It mutates only with per-file backups — and every re-run is idempotent.

/vibe-lingual:scan

Classify every user-facing string.

Reads the codebase and tags every user-facing string by kind — JSX text, placeholder, aria-label, title, alt, toast, locale-sensitive date — then emits a six-block readiness brief. Read-only; nothing is changed.

Reach for it before you commit to a localization pass, to see the real surface.

/vibe-lingual:audit

Catch the i18n gotchas first.

Audits the stack for the traps that bite retrofits: firebase-admin in SSR, structural-vs-presentational Intl, the timeZone decision, RTL surfaces, dynamic-route guard globs. Names them before they corrupt a render.

Reach for it when the stack is non-trivial and you want the landmines mapped.

/vibe-lingual:localize

Extract, wire, translate, guard.

The confidence-routed mutation loop: extracts strings to catalogs, wires the components, translates, and guards the result. Mutates only with per-file backups; re-runs are idempotent. Deep on next-intl + App Router.

Reach for it when the scan looks right and you're ready to move strings safely.

/vibe-lingual:vitals

Health-check the localization.

Catalog parity, the jsx-no-literals ratchet, and the guards that keep the localization honest as the app grows — so a new untranslated string shows up as a failed check, not a shipped bug.

Reach for it on every PR after the first localization pass lands.

/vibe-lingual

State-aware router.

Reads where you are — scanned, wired, translated, guarded — and recommends the right next command. Asks before launching anything.

Reach for it when you're not sure where in the retrofit you are.

02 · How it's built

Scan, audit, localize, guard — codemod-safe.

The loop runs left to right: scan classifies every user-facing string read-only and writes a six-block readiness brief, audit names the stack-specific gotchas that corrupt i18n retrofits, localize runs the confidence-routed extract → wire → translate → guard codemod, and vitals holds the line afterward with catalog-parity and jsx-no-literals guards. Every mutation writes a per-file backup first, and every re-run is idempotent — run it twice and nothing doubles.

It is deep on next-intl + App Router: cookie-driven locale, a catalog parity guard, a jsx-no-literals ratchet that tightens as you translate, and the ESM jest patch the stack needs. For everything else there is a real adapter seam that reports an honest not-yet-implemented rather than mishandling a stack it doesn't fully understand — a decline you can trust beats a silent corruption.

It earned that trust by dogfooding on Celestia3: localizing most of a live app — 720 strings across ~67 components — surfaced four of vibe-lingual's own codemod bugs, and the safety rails caught every one before it reached a green branch. Structural-green ≠ works is the throughline — the tests passing is necessary, not sufficient; the dogfood on a real app was the truth at every scale.

Mutates only with per-file backups and idempotent re-runs. Deep on next-intl + App Router; an honest not-yet-implemented for the rest, never a silent mishandle.
03 · Get it

Two channels.

Stable marketplace

Tagged releases, promoted via the Vibe Plugins marketplace.

/plugin marketplace add estevanhernandez-stack-ed/vibe-plugins
/plugin install vibe-lingual@vibe-plugins

Canary bleeding edge

Latest main from this repo.

/plugin marketplace add estevanhernandez-stack-ed/Vibe-Lingual
/plugin install vibe-lingual

Read-only scan + audit by default; the localize codemod mutates only with per-file backups and idempotent re-runs. Deep on next-intl + App Router; honest not-yet-implemented for other stacks.