← Files CrowdinARCHIVED FILE

plugin.json

5.2 KB · Nov 3, 2026 · 19:19 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "crowdin",
  "version": "1.8.0",
  "description": "Crowdin connects ChatGPT and Codex to your own Crowdin localization projects. Everything runs inside your account, in projects you already have access to.",
  "author": {
    "name": "Crowdin O\u00dc",
    "url": "https://crowdin.com"
  },
  "homepage": "https://crowdin.com",
  "keywords": [
    "crowdin",
    "localization",
    "i18n",
    "translation"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Crowdin",
        "shortDescription": "Localize products with Crowdin",
        "longDescription": "Crowdin connects ChatGPT and Codex to your own Crowdin localization projects. Everything runs inside your account, in projects you already have access to.\n\nWhat you can do:\n- Check translation progress by language\n- Find source strings and their translations\n- Look up glossary terms and translation memory\n- Review tasks, reports, labels, and comments\n- Make bounded changes: add labels, upload source files, start a translation build \u2013 the agent confirms before writing\n\nWith the bundled Codex skills, you can also set up localization in a code repository, keep files in sync through the Crowdin CLI and GitHub Action, and write translator context and glossaries.\n\nWho it's for:\nLocalization managers, product managers, and developers who already use Crowdin and want answers without switching tabs \u2013 how far along a language is, where a source string is used, whether a term is in the glossary, what a report says \u2013 or who want Codex to set up localization in a repo and keep it in sync.",
        "developerName": "Crowdin O\u00dc",
        "category": "Business & Operations",
        "websiteURL": "https://crowdin.com",
        "supportURL": "https://support.crowdin.com",
        "privacyPolicyURL": "https://support.crowdin.com/privacy-policy/",
        "termsOfServiceURL": "https://support.crowdin.com/terms/",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png"
      },
      "review": {
        "demo_recording_url": "https://www.youtube.com/watch?v=1Kie7g7ythM",
        "test_cases": {
          "positive": [
            {
              "description": "List the projects the signed-in user can access.",
              "prompt": "Show me my Crowdin projects.",
              "tools_triggered": "list_projects",
              "expected_behavior": "A list of the user\u2019s Crowdin projects with names and identifiers, enough to pick one for follow-up questions."
            },
            {
              "description": "Report translation progress per language and single out the laggards.",
              "prompt": "Which languages in Crowdin project 123456 are below 80% translated?",
              "tools_triggered": "get_language_progress",
              "expected_behavior": "Per-language translation and approval percentages for the project, with the languages under 80% called out."
            },
            {
              "description": "Find source strings by text.",
              "prompt": "Find the source strings in project 123456 that mention \"checkout\".",
              "tools_triggered": "search_strings",
              "expected_behavior": "Matching source strings with identifiers, text and context; no strings are modified."
            },
            {
              "description": "Read glossary terminology without changing it.",
              "prompt": "What glossaries does project 123456 use, and what terms are in them?",
              "tools_triggered": "list_glossaries",
              "expected_behavior": "The glossaries attached to the project and their terms, read-only."
            },
            {
              "description": "A bounded, non-destructive write confirmed with the user.",
              "prompt": "Add a label called \"checkout\" to project 123456.",
              "tools_triggered": "add_label",
              "expected_behavior": "The assistant confirms the project and label name, creates the label, and reports its identifier; nothing else in the project changes."
            }
          ],
          "negative": [
            {
              "description": "Ad-hoc translation of pasted text is not a Crowdin project operation.",
              "prompt": "Translate \"Your order has shipped\" into German and French for me.",
              "expected_behavior": "The assistant translates the sentence itself; no Crowdin tool is invoked because no project, file or string in Crowdin is involved."
            },
            {
              "description": "Requests about other issue trackers or tools stay out of scope.",
              "prompt": "Show me my open Jira tickets for this sprint.",
              "expected_behavior": "The app is not invoked; Crowdin tools do not access Jira or other third-party systems."
            },
            {
              "description": "Unrelated everyday questions must not trigger the app.",
              "prompt": "What is the weather in Kyiv tomorrow?",
              "expected_behavior": "The assistant answers without calling any Crowdin tool."
            }
          ]
        },
        "commerce": false
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: c840e5326a679509c7eb0ac16167909ab27da638199fee749610d862f1f65c6e