본문으로 건너뛰기
cccskills
무료GitHub에 공개

add-app-language

Add a language or regional variant to all-api-hub, covering language selection, saved preferences, translations, browser extension resources, and date formatting. It guides integration and testing so language support works across the extension’s different runtimes.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Add a supported application language or regional locale to all-api-hub across application and extension runtimes. Not for ordinary translation-copy edits.

설치 방법 보기

이럴 때 유용합니다

  • Adding a new application language
  • Supporting a regional language variant
  • Checking language support across extension runtimes
  • Verifying translations, plurals, and date formatting

포함된 파일(2)

  • SKILL.md7.8 KB
  • agents/openai.yaml224 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Add App Language

Core principle

Treat a new language as a cross-runtime compatibility feature. Define one locale contract, then make application resources, browser manifests, auxiliary locale libraries, and tests agree with it.

Workflow

  1. Establish the current baseline and locale contract.

    • Run git status --porcelain and preserve unrelated work and index state.
    • Inspect src/constants/i18n.ts, src/utils/i18n/, src/components/LanguageSwitcher.tsx, i18next.config.ts, src/locales/, src/public/_locales/, tests/utils/i18nLocaleValidation.test.ts, and nearby language-specific tests.
    • Search for locale-keyed runtime data and fallback resolvers outside src/locales/, including public JSON. Use the owning project workflow for independently managed surfaces instead of changing their translation or fallback contract incidentally.
    • Use current code, directories, and tests as the source of truth. Treat hard-coded language or namespace counts in prose as potentially stale.
    • Decide the canonical BCP 47 application tag, accepted browser or stored aliases, language-family and regional fallback behavior, Chrome underscore locale identifiers, documentation fallback, and available Day.js, date-fns, and natural-date parser support.
    • Ask only about unresolved choices that materially affect stored preferences, regional resource sharing, manifest coverage, documentation scope, or new dependencies. Reuse user decisions and established locale conventions; continue independent work while a decision is pending.
  2. Check existing focused coverage and characterize uncovered behavior before implementation. The following are coverage targets, not a requirement to edit every test file.

    • Cover alias normalization and startup language resolution in tests/utils/i18nLanguage.test.ts.
    • Cover selection, accessible names, and persisted preference behavior in tests/components/LanguageSwitcher.test.tsx.
    • Cover resource discovery and Day.js mapping in tests/utils/i18nResources.test.ts.
    • Cover documentation routing or English fallback in tests/utils/docsLocale.test.ts.
    • Cover date-fns display localization when the picker has a matching locale. Evaluate target-language natural input by default; when the current mature parser dependency supports it, add representative valid and invalid parsing tests in the same task.
    • Extend tests/utils/i18nLocaleValidation.test.ts only for a stable invariant not already covered by its generic supported-language loops, such as required manifest aliases or locale-specific plural constraints.
  3. Implement the complete integration surface.

    • Add the canonical runtime constant and derive supported-language types from SUPPORTED_UI_LANGUAGES.
    • Normalize the agreed language aliases at the language boundary; keep downstream consumers on the canonical tag.
    • Add the switcher option and its label and accessible name in every existing application locale.
    • Create src/locales/<app-tag>/ with every current namespace and normalized key family. Preserve interpolation tokens and markup, and implement every cardinal plural category reported by Intl.PluralRules(<app-tag>).
    • Keep src/utils/i18n/resources.ts glob-driven unless the resource-loading contract itself must change.
    • Register the Day.js locale in each runtime that initializes i18n: extension pages, background, and content. Map the closest date-fns locale when the date picker supports the language.
    • Wire available locale support in the existing mature natural-date parser when runtime and bundle impact remain low. If support requires another dependency or a new parsing capability, report the limitation and recommend an option; implement it only when that expansion is authorized. Custom parsing is reserved for an authorized, reproduced gap the library cannot cover.
    • Create complete src/public/_locales/<chrome_locale>/messages.json resources. Keep application tags hyphenated and Chrome locale identifiers underscored; add regional alias directories only when the browser locale contract requires them.
    • Map documentation links to an actually shipped docs locale. Keep unsupported documentation languages on the established fallback instead of creating translated docs as part of an app-locale task.
    • Give every discovered locale-keyed production surface the intended translation or an explicit suitable fallback. Use its project skill only when that independently owned surface actually needs changes, not merely because it exists.
  4. Validate translation and integration integrity.

    • Run the focused normalization, switcher, resource, docs, and locale-validation tests. Add the date-picker suites when date behavior changed.
    • Require passing i18n:status and i18n:extract:ci evidence for the complete new locale. Reuse these checks from an imminent commit hook; run them manually when no hook will run or earlier feedback is needed, rather than requiring a duplicate pre-handoff run.
    • Inspect the task-scoped locale diff and account for every unexpected deletion, plural rewrite, empty value, source-language copy, or key-shaped translation value.
    • Run pnpm build when browser manifest resources or runtime locale imports changed, and verify the built extension contains the expected _locales directories.
    • Stage only task-scoped files and let the repository commit and push hooks select and run their owned gates. Do not manually duplicate a matching hook on an unchanged index or file tree.
  5. Close the release-readiness decisions.

    • Reuse the existing normalized-language settings telemetry when SUPPORTED_UI_LANGUAGES already feeds its privacy allow-list; add no event solely for the presence of another locale.
    • Prefer focused Vitest coverage plus a production build. Add browser E2E only when the unresolved risk depends on real extension language detection, persistence across entrypoints, or packaged manifest behavior.
    • Reuse the shared language constants, normalization boundary, resource glob, and locale validator. Keep language-specific exceptions narrow and tested.
    • Use feat(i18n): add <language> locale for a complete new supported language unless the final diff is a correction to existing support.

Completion criteria

  • The language can be selected, persisted, detected through the agreed aliases, and loaded in every extension runtime.
  • Every application namespace and manifest key is present, non-empty, structurally valid, and plural-complete.
  • Date formatting uses the closest verified locale behavior. Natural-language input uses verified mature parser support when available; any unsupported scope is explicit, and custom fallback covers only reproduced gaps.
  • Documentation links resolve to a shipped locale or the explicit fallback.
  • Locale-keyed runtime data outside i18next resolves to the intended language or a deliberate fallback.
  • Focused tests, i18n status and extraction, and the production build when applicable pass on the final task-scoped diff; hook-owned gates pass when the corresponding commit or push is performed.

Common omissions

  • Adding locale JSON without updating detection, selection, and stored-language normalization.
  • Updating Day.js in extension pages but not background or content runtimes.
  • Reusing a BCP 47 application tag as a Chrome manifest directory name.
  • Trusting structural key equality while plural values are empty, copied keys, or grammatically mismatched.
  • Accepting resolvedLanguage fallback as proof that a requested regional alias was normalized correctly.
  • Creating documentation translations when only application and manifest localization was requested.
  • Treating i18n:extract:ci as a translation-quality check rather than an extraction-integrity check.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Guide site integration work from capability discovery and authentication choices through implementation and validation. Cover account features, administrative resources, check-ins, or native editor usability, while documenting evidence, supported behavior, and paths that remain unverified.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Adding or extending account site support
  • Integrating administrative resource management
  • Adding check-in support to an existing site
qixing-jk/all-api-hub5천2026년 10월 19일 업데이트

Operate, diagnose, and test the live All API Hub extension interface on desktop or supported Android browsers. Use logged-in sessions to reproduce bugs, verify account workflows, and check development updates through browser debugging connections.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reproducing extension UI bugs in a logged-in session
  • Diagnosing an installed Android release
  • Checking extension changes with hot updates
qixing-jk/all-api-hub5천2026년 10월 19일 업데이트

Maintain sponsor listings in all-api-hub across public catalogs, README files, documentation, affiliate content, and images. It helps coordinate updates, verify operational details, and review compatibility with catalog formats that are still served.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Adding or updating sponsor listings
  • Auditing sponsor information across published surfaces
  • Coordinating listing order and display rank
qixing-jk/all-api-hub5천2026년 10월 19일 업데이트

qixing-jk의 스킬 모두 보기

이 스킬의 문제 신고