.agents/skills/add-locale/SKILL.md
Adds a new language/locale to the application. Involves Strapi admin config, Next.js i18n routing, and translation files. Triggers: add language, add locale, new language, new translation, internationalization.
npx skillsauth add notum-cz/strapi-next-monorepo-starter add-localeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Add a new language/locale to the application. Involves Strapi admin config, Next.js i18n routing, and translation files.
Before proceeding, validate inputs:
de, fr, sk). Reject uppercase or invalid codes.German, French, Slovak).If invalid format provided, ask user to correct before proceeding.
Ask the user for:
de, fr, sk)German, French, Slovak)Copy apps/ui/locales/en.json to apps/ui/locales/{locale}.json.
The file structure must match en.json exactly — same keys, translated values. Initially copy as-is and mark values for translation.
Existing locales for reference: en.json, cs.json.
Edit apps/ui/src/lib/navigation.ts.
Add the new locale code to the locales array:
export const routing = defineRouting({
locales: ["cs", "en", "{locale}"],
defaultLocale: "en",
localePrefix: "as-needed",
})
Keep the array sorted alphabetically.
The i18n config at apps/ui/src/lib/i18n.ts uses dynamic imports and automatically picks up new locale files:
messages: (
await (locale === "en"
? import("../../locales/en.json")
: import(`../../locales/${locale}.json`))
).default,
No changes needed unless you want HMR support for the new locale during development (currently only en has HMR via static import).
After the automated steps complete, inform the user:
The translation file and routing config are set up. You need to manually:
- Enable locale in Strapi: Go to Settings > Internationalization > Add new locale > select {locale}
- Translate content: For each content type with i18n enabled, switch to the new locale in Strapi admin and translate
[locale] route segment in apps/ui/src/app/[locale]/ handles locale routing automatically via next-intlgenerateStaticParams in the root layout iterates routing.locales — new locale pages are generated automaticallylocalePrefix: "as-needed" setting means the default locale (en) has no prefix, all others get /{locale}/ prefixdevelopment
Creates a new page builder content component for both Strapi and the Next.js frontend. Triggers: add/create page component, new page section, page builder component, add form component.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.