← Files globalize.nowARCHIVED FILE

.codex-plugin/plugin.json

7.71 KB · Nov 14, 2026 · 12:10 UTC

↓ Download file

{
  "author": {
    "name": "globalize.now SIA"
  },
  "description": "globalize.now is localization infrastructure for React, Next.js and Vue apps. Connect it to manage your globalize.now projects from ChatGPT or Codex: see your projects and target languages, add languages, start and track translation jobs, check job status and cost, and sync finished translations back to your GitHub repo. Translations live in your repository as locale files, not in a runtime widget. Converting hardcoded strings into i18n keys happens in the globalize.now app or agent skills; this plugin handles everything after that.",
  "interface": {
    "capabilities": [],
    "category": "Developer Tools",
    "defaultPrompt": [
      "Show my globalize.now projects and their target languages",
      "Add German and Japanese to my storefront project",
      "What did my last translation job cost and did it open a pull request?"
    ],
    "developerName": "globalize.now SIA",
    "displayName": "globalize.now",
    "longDescription": "globalize.now is localization infrastructure for React, Next.js and Vue apps. Connect it to manage your globalize.now projects from ChatGPT or Codex: see your projects and target languages, add languages, start and track translation jobs, check job status and cost, and sync finished translations back to your GitHub repo. Translations live in your repository as locale files, not in a runtime widget. Converting hardcoded strings into i18n keys happens in the globalize.now app or agent skills; this plugin handles everything after that.",
    "privacyPolicyURL": "https://globalize.now/en/privacy/",
    "shortDescription": "Translate and localize apps",
    "supportURL": "https://help.globalize.now",
    "termsOfServiceURL": "https://globalize.now/en/terms/",
    "websiteURL": "https://globalize.now/en/developers/",
    "logo": "./assets/logo.png",
    "composerIcon": "./assets/logo.png"
  },
  "name": "globalize-now",
  "version": "1.0.1",
  "mcpServers": "./.mcp.json",
  "extensions": {
    "com.openai": {
      "publication": {
        "release_notes": "Resubmission. No functional change; the reviewer test account's plan has been fixed so it no longer expires."
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Project discovery. Sign in with the dedicated reviewer account in its test workspace. This case must also handle an empty workspace without inventing projects.",
              "prompt": "Show my globalize.now projects and their source and target languages.",
              "tools_triggered": "list_projects, get_project",
              "expected_behavior": "Call list_projects. Use get_project where language details are not present in the list response. Report only projects accessible to the signed-in account, with their returned names and language labels. If no projects exist, state that plainly without inventing a project."
            },
            {
              "description": "Create a reviewer-owned test project. Resolve supported language IDs from list_languages; use a new project name if OpenAI review demo already exists. Keep the returned project ID for subsequent cases.",
              "prompt": "Create a new globalize.now project called OpenAI review demo with English as its source language and Spanish as its target language.",
              "tools_triggered": "list_languages, create_project",
              "expected_behavior": "Resolve English and Spanish using list_languages, then call create_project with the requested name and resolved source/target IDs. Report the returned project ID and confirm English source and Spanish target from the response. Do not report creation if the tool returns an error."
            },
            {
              "description": "Add a target language. Run the project-creation case first and use the returned project ID. German should not already be configured; if it is, report that existing state rather than adding a duplicate.",
              "prompt": "Add German as another target language to the OpenAI review demo project.",
              "tools_triggered": "list_projects, list_languages, add_project_language, get_project",
              "expected_behavior": "Resolve the intended project and German language ID, add German with add_project_language when absent, and verify using get_project. The final project retains English as source and Spanish as target, and also includes German. Report the actual resulting state."
            },
            {
              "description": "Persist project context. Run the project-creation case first and use its returned project ID. This writes only to the dedicated reviewer test project.",
              "prompt": "Set the OpenAI review demo project context to: A friendly storefront for everyday shoppers. Use a clear, informal tone. Keep the brand name Northwind unchanged. Then show me the saved context.",
              "tools_triggered": "list_projects, set_project_context, get_project",
              "expected_behavior": "Resolve the reviewer test project, call set_project_context with the supplied text, then get_project. Show the saved context from the returned project. Confirm persistence only when the returned value matches the requested text."
            },
            {
              "description": "Translate a small JSON file and retrieve the real job result. Run the project-creation case first, optionally the German-language and context cases. The account needs an active plan and sufficient translation allowance. Input messages/en.json contains {\"greeting\":\"Hello, {userName}!\",\"checkout\":\"Checkout\",\"brand\":\"Northwind\"}.",
              "prompt": "Translate this messages/en.json file for the target languages of OpenAI review demo and show me the translated JSON when the job finishes: {\"greeting\":\"Hello, {userName}!\",\"checkout\":\"Checkout\",\"brand\":\"Northwind\"}",
              "tools_triggered": "list_projects, get_project, translate_files, get_translation",
              "expected_behavior": "Resolve the test project and configured target languages. Submit the supplied filename and JSON content through translate_files; use its returned jobId to poll get_translation. Distinguish processing/review from completed. On completion, show the returned files for the configured targets. JSON remains valid, all three keys and the {userName} placeholder remain, and Northwind remains unchanged under the saved context. Do not fabricate completed files, costs or a pull request."
            }
          ],
          "negative": [
            {
              "description": "Internationalization conversion is outside this MCP plugin. Explain that extracting hardcoded strings and refactoring application code requires the separate app or skills workflow. Do not invoke MCP tools or claim the source code was converted.",
              "prompt": "Convert my hardcoded React UI strings into translation keys and refactor the components to use them."
            },
            {
              "description": "A certified legal translation is outside the software localization workflow. Explain that this plugin cannot certify documents or attest legal validity; do not invoke its MCP tools or claim a certified translation has been produced.",
              "prompt": "Translate my birth certificate into German and certify it for use by the immigration authorities."
            },
            {
              "description": "Sending funds is outside the project, translation-job and cost-reporting tools. Explain that this plugin cannot execute a payment; do not invoke its MCP tools or claim funds were transferred.",
              "prompt": "Pay our external translator \u20ac200 from my globalize.now account balance."
            }
          ]
        }
      }
    }
  },
  "apps": "./.app.json"
}

SHA-256: 3d15c0de7d8f7868b58ede907d9dbeebe6772f9b7cb1709dabdf957c08cc7805