From harness-claude
Injects i18n considerations into brainstorming, planning, and review workflows. Adapts enforcement based on harness.config.json: gentle prompts or gate-mode validation.
npx claudepluginhub intense-visions/harness-engineering --plugin harness-claudeThis skill uses the workspace's default tool permissions.
> Cognitive mode: **advisory-guide**. Inject i18n considerations into brainstorming, planning, and review workflows. Adapt enforcement based on project configuration — gentle prompts when unconfigured, gate-mode validation when enabled.
Verifies i18n compliance by detecting hardcoded strings, missing translations, locale-sensitive formatting, RTL issues, and concatenation anti-patterns across web, mobile, and backend codebases.
Safely extracts and mass-converts hardcoded strings to i18n t() calls in frontend codebases using multi-pass batching, parallel language dispatch, 8 audit gates, and HTML integrity checks. For >10 strings.
Share bugs, ideas, or general feedback.
Cognitive mode: advisory-guide. Inject i18n considerations into brainstorming, planning, and review workflows. Adapt enforcement based on project configuration — gentle prompts when unconfigured, gate-mode validation when enabled.
on_new_feature triggers fire and the feature may touch user-facing stringson_review triggers fire to validate i18n was considered in specs, plans, or codeMake i18n impossible to forget.
This skill does not scan code or manage translations. It ensures that i18n is considered at every stage of the development process — before code is written, while it is being planned, and when it is being reviewed. It operates in two modes:
i18n.enabled: true in harness.config.json. The strictness level (permissive, standard, strict) controls whether missing i18n produces informational notes, warnings, or blocking errors.If you find yourself scanning source code for hardcoded strings, STOP. That is harness-i18n's job. This skill operates on artifacts (specs, plans, reviews), not source code.
Read harness configuration. Check harness.config.json for the i18n block:
i18n.enabled: true exists: enter gate mode. Load i18n.strictness (default: standard).i18n.enabled: false exists: enter prompt mode with reduced frequency. The team explicitly disabled i18n — respect that, but still nudge on obviously international features.i18n block exists: enter prompt mode. The team has not considered i18n yet — this is where the skill adds the most value.Load context from configuration (gate mode only). When in gate mode, read:
i18n.targetLocales — which locales are supported. Use this to provide specific guidance (e.g., "You are targeting Arabic — have you considered RTL layout for this feature?").i18n.platforms — which platforms are in scope. Only validate i18n for relevant platforms.i18n.industry — load industry-specific i18n guidance from agents/skills/shared/i18n-knowledge/industries/{industry}.yaml if configured.i18n.strictness — determines enforcement level:
permissive: informational notes only, never blockstandard: warnings for missing i18n in user-facing features, do not blockstrict: errors that block progression when i18n is unaddressedDetermine the current workflow context. Identify which workflow triggered this skill:
on_new_feature during harness-brainstorming): inject during Phase 2 EVALUATE.on_new_feature during harness-planning): inject during task decomposition.on_review during harness-code-review or harness-pre-commit-review): inject during review checklist.Inject non-blocking i18n consideration prompts at the appropriate workflow point. These are suggestions, not requirements. Present them as questions the team should consider.
During brainstorming (Phase 2 EVALUATE):
Add the following consideration to the evaluation criteria:
i18n Consideration
==================
For this feature, which user-facing strings will need translation?
Consider:
- UI labels, button text, placeholder text, error messages
- Email or notification content
- API error responses shown to users
- Date, number, and currency formatting
- Text that may expand significantly in other languages (+35% for German, +60% for Finnish)
- Content that may need right-to-left layout (Arabic, Hebrew)
If this feature will be used by an international audience, consider enabling i18n:
Run `harness skill run harness-i18n-workflow` to set up translation infrastructure.
During planning (task decomposition):
Suggest adding i18n tasks to the plan:
i18n Tasks to Consider
======================
If this feature includes user-facing strings, consider adding these tasks:
- [ ] Extract user-facing strings into translation keys
- [ ] Update translation files for all target locales
- [ ] Run pseudo-locale testing to check for text overflow and truncation
- [ ] Verify date/number/currency formatting uses locale-aware APIs
- [ ] Test RTL layout if targeting RTL locales
During code review:
Add i18n items to the review checklist:
i18n Review Checklist
=====================
- [ ] No new hardcoded user-facing strings (should use translation keys)
- [ ] Date/number/currency formatting uses Intl APIs or framework equivalents
- [ ] No string concatenation for user-facing messages (use interpolation)
- [ ] New UI elements have adequate space for text expansion
- [ ] lang and dir attributes are set appropriately
Validate that the artifact under review addresses i18n requirements. The enforcement level depends on i18n.strictness.
During brainstorming (Phase 2 EVALUATE):
Check whether the feature evaluation discusses locale considerations. If the feature involves user-facing content and does not mention i18n:
permissive: add an informational note suggesting locale considerationsstandard: add a warning: "This feature involves user-facing strings but does not discuss i18n requirements. Consider which strings need translation and which locales are affected."strict: add an error: "This feature involves user-facing strings but does not address i18n. Add a locale requirements section before proceeding."When target locales are configured, provide specific guidance based on locale profiles from agents/skills/shared/i18n-knowledge/locales/:
ar or he in target locales: "This feature needs RTL layout consideration."de or fi in target locales: "Expect 35-60% text expansion. Verify UI can accommodate longer strings."ja, zh-Hans, or ko in target locales: "CJK scripts may need different font sizing and line-break rules."During planning (task decomposition):
Validate that the plan includes i18n-related tasks for features that touch user-facing content. Check for:
If missing:
permissive: note suggesting i18n tasksstandard: warning: "Plan for a user-facing feature does not include i18n tasks. Add tasks for string extraction, translation file updates, and locale testing."strict: error: "Plan for a user-facing feature is missing required i18n tasks. Add at minimum: string extraction task, translation update task. Plan cannot proceed without i18n coverage."During code review:
Validate that the review artifact addresses i18n considerations. Do NOT scan source code directly — that is harness-i18n's responsibility. Instead, check the review context:
harness-i18n run as part of the review?If the review does not address i18n for a user-facing change:
permissive: informational note suggesting i18n review itemsstandard: warning: "PR touches user-facing code but i18n was not addressed in the review. Recommend running harness-i18n on the changed files."strict: error: "PR touches user-facing code and i18n review is required. Run harness-i18n on the changed files before merging."After the inject phase, verify that the output artifact addresses i18n.
Check the spec document for i18n coverage:
Gate mode enforcement:
permissive: log result, do not blockstandard: warn if missing but allow progressionstrict: block progression if the spec lacks an i18n section and the feature touches user-facing contentCheck the plan document for i18n tasks:
Gate mode enforcement:
permissive: log result, do not blockstandard: warn if no i18n tasks found for user-facing featurestrict: block progression if no i18n tasks existCheck the review output:
Gate mode enforcement:
permissive: log result, do not blockstandard: warn if i18n checklist was not completedstrict: block if new hardcoded strings exist without explicit acceptanceOutput a summary of the i18n validation:
i18n Process Validation
=======================
Mode: gate (standard)
Workflow: planning
Artifact: docs/changes/checkout-redesign/plans/2026-03-20-checkout-redesign-plan.md
Checks:
[PASS] Plan contains i18n-related task (Task 7: "Extract checkout strings")
[PASS] Plan includes translation file update task (Task 8: "Update locale files")
[WARN] Plan does not include pseudo-locale testing task
Result: PASS with warnings
harness-brainstorming — Injects i18n considerations during Phase 2 (EVALUATE). In prompt mode, adds a suggestion block. In gate mode, validates that locale requirements are discussed.harness-planning — Injects i18n task suggestions during task decomposition. In gate mode, validates that the plan includes i18n tasks for user-facing features.harness-code-review / harness-pre-commit-review — Adds i18n checklist items to the review. In gate mode, validates that no new hardcoded strings are introduced.harness-i18n — The process skill defers detailed code scanning to the core i18n skill. During review, the process skill does a lightweight check; the full scan is harness-i18n's responsibility.harness-i18n-workflow — The process skill recommends running the workflow skill when i18n is not yet configured. In prompt mode, it suggests harness skill run harness-i18n-workflow for setup.agents/skills/shared/i18n-knowledge/ — Locale profiles provide specific guidance for configured target locales. Industry profiles provide domain-specific i18n prompts.harness.config.json — The i18n block drives mode selection and enforcement level. When the config changes, the skill automatically adapts its behavior.i18n.enabled: true and strictness: "standard", specs/plans missing i18n handling produce a warningi18n.enabled: true and strictness: "strict", specs/plans missing i18n handling produce an error that blocks progressionharness validate passes after all changesContext: Team is brainstorming a new checkout flow. Project has no i18n configuration.
Phase 1: CHECK-CONFIG
No i18n block found in harness.config.json. Entering prompt mode.
Phase 2: INJECT (brainstorming EVALUATE)
i18n Consideration
==================
For the checkout flow, which user-facing strings will need translation?
Consider:
- Payment form labels ("Card number", "Expiry date", "CVV")
- Error messages ("Invalid card number", "Payment declined")
- Order summary text ("Subtotal", "Tax", "Total")
- Currency formatting (not all locales use $ or decimal points)
- Address form fields (vary significantly by country)
If this feature will be used by an international audience, consider enabling i18n:
Run `harness skill run harness-i18n-workflow` to set up translation infrastructure.
Phase 3: VALIDATE
i18n Process Validation
=======================
Mode: prompt (unconfigured)
Workflow: brainstorming
Result: Suggestion provided (non-blocking)
Context: E-commerce project with i18n enabled, targeting es, fr, de, ja, ar. Planning a new product review feature.
Phase 1: CHECK-CONFIG
i18n config loaded:
enabled: true
strictness: standard
targetLocales: [es, fr, de, ja, ar]
platforms: [web]
industry: ecommerce
Entering gate mode (standard).
Phase 2: INJECT (planning task decomposition)
Scanning plan for i18n tasks... Found 0 i18n-related tasks in the plan.
[WARN] i18n Tasks Missing
=========================
This plan covers a user-facing feature (product reviews) but includes no i18n tasks.
Your project targets 5 locales: es, fr, de, ja, ar.
Required i18n tasks for this feature:
- Extract review form labels and messages into translation keys
- Update translation files for es, fr, de, ja, ar
- Verify RTL layout for Arabic locale (review cards, rating display, text input)
- Test text expansion for German (+35%) on review form labels
- Add pseudo-locale testing for overflow detection
Industry note (ecommerce): Product reviews often contain user-generated content.
Ensure the review display component handles mixed-direction text (user reviews
in Arabic within an English UI, or vice versa).
Phase 3: VALIDATE
i18n Process Validation
=======================
Mode: gate (standard)
Workflow: planning
Artifact: docs/changes/product-reviews/plans/2026-03-20-product-reviews-plan.md
Checks:
[FAIL] No i18n-related tasks found in plan
[FAIL] No translation file update tasks
[FAIL] No locale testing tasks
Result: WARNING -- plan should include i18n tasks before execution
Context: SaaS project with strictness: "strict". Reviewing a PR that adds a new settings page.
Phase 1: CHECK-CONFIG
Entering gate mode (strict).
Phase 2: INJECT (code review)
i18n Review Validation
======================
Checking review context for i18n coverage...
PR: "Add settings page" (#142)
Changed files: src/components/Settings.tsx, src/components/SettingsForm.tsx
PR description mentions: new UI components, form fields, toast notifications
i18n review status:
- PR description does not mention i18n impact: MISSING
- harness-i18n scan not referenced in review: MISSING
- Review checklist does not include i18n items: MISSING
[ERROR] PR touches user-facing code and i18n review is required.
Run `harness-i18n` on the changed files before merging.
Recommended: harness skill run harness-i18n --scope file --path src/components/Settings.tsx src/components/SettingsForm.tsx
Phase 3: VALIDATE
i18n Process Validation
=======================
Mode: gate (strict)
Workflow: review
Result: BLOCKED -- i18n review not conducted for user-facing PR
Action: Run harness-i18n scan on changed files, address findings, then re-review
| Rationalization | Reality |
|---|---|
| "I can see hardcoded strings in the component the user is discussing — I'll flag them now as part of the process review." | This skill operates on artifacts (specs, plans, review context), never on source code. Scanning source files is harness-i18n's responsibility. Running Grep on component files from within this skill violates the skill boundary, regardless of how convenient it seems. |
| "The feature clearly has no user-facing strings — it's a background job. I'll skip injection entirely without checking." | The skill must assess whether injection is applicable before skipping. Background jobs can produce user-facing output via notifications, emails, and error responses. A deliberate "not applicable" decision requires reading the feature description, not assuming. |
| "The team is in prompt mode and has dismissed the suggestion twice — I'll escalate to gate mode enforcement to make sure they take i18n seriously." | Escalating to gate mode is a configuration decision the team must make explicitly. Prompt mode is always dismissible. Unilaterally enforcing gate-mode behavior overrides a team's deliberate choice and violates the skill's core operating contract. |
| "The plan has one task called 'polish and cleanup' — that probably includes i18n work. I'll mark the i18n check as passing." | In gate mode, i18n task presence must be verified by keyword match (i18n, translation, locale, localization, l10n), not inferred from vague task names. Ambiguous tasks must be flagged as missing, not assumed to cover the requirement. |
| "The spec mentions 'multi-language support' in passing — that counts as addressing i18n, so I won't require a dedicated section." | A passing mention is not an i18n section. The validation check requires the spec to identify which strings are user-facing, which locales are affected, and any formatting requirements. A vague reference satisfies none of these. |
These are hard stops. Violating any gate means the process has broken down.
.tsx files to find hardcoded strings, STOP. That is harness-i18n's job. During the review phase, check the review artifact (PR description, checklist, whether harness-i18n was run) — never scan the code directly.i18n.enabled: false, do not enforce gate-mode validation. If i18n.enabled: true, do not downgrade to prompt mode. The team made a configuration choice -- honor it.permissive never blocks. standard warns but does not block. strict blocks. Do not escalate or de-escalate the enforcement level.harness skill run harness-i18n-workflow to configure."i18n.strictness to standard or permissive.