i18n-array-groq-query-migration

द्वारा sanity-io

Detect and update legacy GROQ patterns where language is read from _key for sanity-plugin-internationalized-array when users mention v4 to v5 migration, or…

npx skills add https://github.com/sanity-io/plugins --skill i18n-array-groq-query-migration

Internationalized Array GROQ Migration

Goal

Help users find GROQ queries that still read locale from _key and rewrite them safely for v5.

When To Use

Use this skill when a user asks to:

  • migrate sanity-plugin-internationalized-array from v4 to v5
  • migrate @sanity/document-internationalization from v5 to v6 alongside sanity-plugin-internationalized-array language field changes
  • find queries that still use _key for language lookup
  • update GROQ filters like _key == "en" or _key == $language

Detection Workflow

Detection commands below use grep. If your environment differs, use your editor's global search with equivalent patterns.

  1. Search for direct language comparisons on _key:
grep -REn --exclude-dir=node_modules "_key[[:space:]]*==[[:space:]]*(\"[^\"]+\"|'[^']+'|\\$[A-Za-z_][A-Za-z0-9_]*)" .
  1. Search for any localized-array filters that mention _key:
grep -REn --exclude-dir=node_modules "\[[^]]*_key[^]]*\]" .
  1. Prioritize matches that look like localized-value reads, for example:
  • field[_key == ...][0].value
  • select(...) branches that compare _key to a language value
  1. Check for uses of groq and verify if they use _key as the language, if it is using it, update them.

  2. Explicitly check for template-interpolated language expressions and keep the same operand, for example:

    • _key == "${language}"
    • _key == "${locale}"
  3. Review each match to avoid false positives where _key is used for unrelated array item identity.

Rewrite Rules

Use the same language operand from the original query. The language operand can be a string literal (for example "en"), a variable (for example $language), or a template-interpolated expression (for example "${language}").

  • Before data migration is executed (backwards compatible):
    • _key == <languageExpr> -> language == <languageExpr> || _key == <languageExpr>
  • After migration is complete:
    • language == <languageExpr> || _key == <languageExpr> -> language == <languageExpr>

Examples

Legacy:

*[_type == "person"]{
  "greeting": greeting[_key == $language][0].value
}

Backwards compatible:

*[_type == "person"]{
  "greeting": greeting[language == $language || _key == $language][0].value
}

Post-migration final form:

*[_type == "person"]{
  "greeting": greeting[language == $language][0].value
}

Response Template

When reporting findings to a user:

  1. List each query location that still uses _key as language source.
  2. Show the exact replacement using the same language expression.
  3. Label each replacement as:
    • backwards-compatible (pre-migration), or
    • final (post-migration complete).
  4. Label each match category as runtime, docs/example, or ambiguous.
  5. Call out any ambiguous _key usage that needs manual review.

sanity-io की और Skills

performance-optimization
sanity-io
एप्लिकेशन के प्रदर्शन को अनुकूलित करता है। इसका उपयोग तब करें जब प्रदर्शन आवश्यकताएं हों, जब आपको प्रदर्शन में गिरावट का संदेह हो, या जब कोर वेब वाइटल्स या लोड समय...
official
rxjs-like-a-pro
sanity-io
यह कौशल आपको ऐसा RxJS कोड लिखने में मदद करता है जो स्वाभाविक, संयोजनीय और सामान्य कमियों से मुक्त हो। मुख्य दर्शन: तर्क को ऑब्ज़र्वेबल श्रृंखला में रखें। जब भी आप .subscribe() का उपयोग करने जाएं, तो पूछें कि क्या वह कार्य .pipe() के अंदर एक रूपांतरण के रूप में व्यक्त किया जा सकता है।
official
find-skills
sanity-io
उपयोगकर्ताओं को एजेंट कौशल खोजने और स्थापित करने में मदद करता है जब वे ऐसे प्रश्न पूछते हैं जैसे "मैं X कैसे करूं", "X के लिए कोई कौशल खोजें", "क्या कोई ऐसा कौशल है जो...", या व्यक्त करते हैं...
official
next-cache-components
sanity-io
Next.js 16 कैश घटक - PPR, use cache निर्देश, cacheLife, cacheTag, updateTag
official
vercel-react-best-practices
sanity-io
React और Next.js प्रदर्शन अनुकूलन दिशानिर्देश Vercel Engineering से। इस कौशल का उपयोग React/Next.js को लिखने, समीक्षा करने या रीफैक्टर करते समय किया जाना चाहिए…
official
frontend-design
sanity-io
उच्च डिज़ाइन गुणवत्ता के साथ विशिष्ट, उत्पादन-स्तर के फ्रंटएंड इंटरफ़ेस बनाएं। इस कौशल का उपयोग तब करें जब उपयोगकर्ता वेब घटकों, पृष्ठों या... बनाने के लिए कहे।
official
plugin-transfer
sanity-io
एजेंटों को कॉपी-प्लगइन जनरेटर वर्कफ़्लो के साथ मौजूदा प्लगइन को इस मोनोरिपो में स्थानांतरित करने का मार्गदर्शन देता है।
official
test-studio-script-runner
sanity-io
dev/test-studio स्क्रिप्ट रनर टूल की व्याख्या करता है। इसका उपयोग तब करें जब dev/test-studio/src/script-runner में स्क्रिप्ट जोड़ना, संपादित करना, चलाना या दस्तावेज़ीकरण करना हो, या जब...
official