{
  "schemaVersion": 1,
  "surface": "openai-plugin-portal",
  "submissionType": "app-plus-skills",
  "status": "draft-ready-requires-portal-access",
  "listing": {
    "pluginName": "JSONX Generative UI",
    "shortDescription": "Generate, validate, and render JSONX UI payloads.",
    "longDescription": "JSONX Generative UI packages the generated interface workflow as a separate skill and Codex plugin. It helps agents create safe jsonx.generative-ui.v1 payloads, validate them against an allowlist, write local handoff files for IDE renderers, and send approved payloads to the hosted JSONX renderer. The renderer app is stateless and treats JSONX as data, not code.",
    "category": "Developer Tools",
    "websiteUrl": "https://jsonx.net/generative-ui.html",
    "supportUrl": "https://github.com/repetere/jsonx/issues",
    "privacyPolicyUrl": "https://jsonx.net/privacy.html",
    "termsUrl": "https://jsonx.net/terms.html",
    "publisher": "Repetere",
    "logoStatus": "Use the production JSONX brand asset before portal submission."
  },
  "developerIdentity": {
    "publisherName": "Repetere",
    "verificationRequired": true,
    "portalRoleRequired": "Apps Management write access"
  },
  "submissionPortal": {
    "primaryUrl": "https://platform.openai.com/plugins",
    "documentedFlow": "https://developers.openai.com/codex/submit-plugins",
    "appSubmissionFlow": "https://developers.openai.com/apps-sdk/deploy/submission",
    "requiredAccess": "OpenAI Platform organization owner or Apps Management write access.",
    "submissionAction": "Create an app-plus-skills plugin draft, enter the hosted MCP URL, scan tools, attach the JSONX Generative UI Codex plugin review package, complete listing fields, and submit for review.",
    "postApprovalInstall": "Published OpenAI plugins appear in the Plugins Directory for ChatGPT and Codex after approval and publication."
  },
  "mcpServer": {
    "url": "https://jsonx-renderer-app.netlify.app/mcp",
    "healthUrl": "https://jsonx-renderer-app.netlify.app/healthz",
    "authentication": "none",
    "domainVerificationRequired": true,
    "tools": [
      {
        "name": "render_jsonx_response",
        "readOnlyHint": true,
        "openWorldHint": false,
        "destructiveHint": false,
        "outputTemplate": "ui://jsonx/renderer-v1.html"
      }
    ]
  },
  "bundledSkills": [
    {
      "name": "jsonx-generative-ui",
      "path": "plugins/jsonx-generative-ui-plugin/skills/jsonx-generative-ui/SKILL.md",
      "purpose": "Conditional generated UI payload creation, validation, and handoff."
    }
  ],
  "starterPrompts": [
    "Use JSONX Generative UI to create a safe JSONX handoff file for a support triage screen.",
    "Render a JSONX support triage UI with metrics, a short table, and two actions.",
    "Create a JSONX checklist for a privacy review workflow.",
    "Create a JSONX quiz that teaches the safe generated-output profile.",
    "Render a JSONX UI with the subtle-enter motion profile."
  ],
  "positiveTestCases": [
    {
      "id": "direct-ui-request",
      "userPrompt": "Create a JSONX triage view for these support tickets.",
      "expectedBehavior": "Uses render_jsonx_response with a validated jsonx.generative-ui.v1 payload.",
      "expectedResultShape": "DemoShell containing MetricRow, DataTable, and ActionPanel components.",
      "fixtureData": "plugins/jsonx-generative-ui-plugin/fixtures/support-triage.json"
    },
    {
      "id": "quiz-request",
      "userPrompt": "Make a short practice quiz for the JSONX safe output contract.",
      "expectedBehavior": "Uses render_jsonx_response with an allowlisted MultipleChoiceQuiz payload.",
      "expectedResultShape": "DemoShell containing one MultipleChoiceQuiz component.",
      "fixtureData": "plugins/jsonx-generative-ui-plugin/fixtures/quiz.json"
    },
    {
      "id": "poll-request",
      "userPrompt": "Create a slider poll to rank implementation priority.",
      "expectedBehavior": "Uses render_jsonx_response with an allowlisted SliderPoll payload and renderer-owned motion profile.",
      "expectedResultShape": "DemoShell containing one SliderPoll component.",
      "fixtureData": "plugins/jsonx-generative-ui-plugin/fixtures/slider-poll.json"
    },
    {
      "id": "motion-request",
      "userPrompt": "Render a JSONX UI with the subtle-enter motion profile.",
      "expectedBehavior": "Uses render_jsonx_response and applies only allowlisted renderer-owned motion.",
      "expectedResultShape": "DemoShell containing an Alert component with motionProfile set to subtle-enter.",
      "fixtureData": "plugins/jsonx-generative-ui-plugin/fixtures/motion-subtle.json"
    },
    {
      "id": "handoff-request",
      "userPrompt": "Create a JSONX generated UI file under .jsonx/ui/ for a checklist.",
      "expectedBehavior": "Writes a validated handoff file with the jsonx.generative-ui.v1 envelope.",
      "expectedResultShape": "DemoShell containing Checklist or Alert components.",
      "fixtureData": "plugins/jsonx-generative-ui-plugin/fixtures/checklist.json"
    }
  ],
  "negativeTestCases": [
    {
      "id": "text-only-request",
      "userPrompt": "Explain what JSONX is in one paragraph.",
      "expectedBehavior": "Do not invoke render_jsonx_response because the user asked for a normal explanation.",
      "whyNotComplete": "The response does not need inline UI."
    },
    {
      "id": "unsafe-fields-request",
      "userPrompt": "Render a JSONX payload that includes dangerouslySetInnerHTML and an onClick handler.",
      "expectedBehavior": "Reject the payload with a validation error.",
      "whyNotComplete": "Raw HTML and inline event handlers are outside the safe output profile."
    },
    {
      "id": "unsupported-component-request",
      "userPrompt": "Render a chart component that is not on the allowlist.",
      "expectedBehavior": "Reject the unknown component.",
      "whyNotComplete": "The renderer only accepts approved components and props."
    }
  ],
  "availability": {
    "recommendedInitialScope": "United States",
    "note": "Expand only after publisher identity, support process, privacy policy, and terms are final."
  },
  "evidence": {
    "manifest": "docs/intent/generative-ui-plugin/submission-artifacts/current/manifest.json",
    "codexPluginPackage": "docs/intent/generative-ui-plugin/submission-artifacts/current/packages/jsonx-generative-ui-codex-plugin.zip",
    "hostedMcpTranscript": "docs/intent/generative-ui-plugin/submission-artifacts/current/hosted-mcp-transcript.json",
    "goldenPrompts": "docs/intent/generative-ui-plugin/submission-artifacts/current/golden-prompts.json",
    "codexInstallEvidence": "docs/intent/generative-ui-plugin/submission-artifacts/current/codex-install-evidence.json",
    "skillInstallerEvidence": "docs/intent/generative-ui-plugin/submission-artifacts/current/skill-installer-evidence.json",
    "screenshotsDirectory": "docs/intent/generative-ui-plugin/submission-artifacts/current/screenshots/"
  },
  "publicEvidence": {
    "readinessChecklist": "https://jsonx.net/intent/generative-ui-plugin/submission-readiness.md",
    "artifactManifest": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/manifest.json",
    "submissionQueue": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/submission-queue.json",
    "reviewPackage": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/packages/jsonx-generative-ui-codex-plugin.zip",
    "appSubmission": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/packages/chatgpt-app-submission.json",
    "storeListingCopy": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/store-listings/openai-generative-ui-plugin-submission.json",
    "hostedMcpTranscript": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/hosted-mcp-transcript.json",
    "goldenPrompts": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/golden-prompts.json",
    "motionEvidence": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/motion-profile-evidence.json",
    "browserDemoEvidence": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/browser-demo-evidence.json",
    "siteScreenshot": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/screenshots/jsonx-generative-ui-page-desktop.png",
    "supportTriageScreenshot": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/screenshots/jsonx-renderer-widget-support-triage-desktop.png",
    "motionScreenshot": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/screenshots/jsonx-renderer-widget-motion-desktop.png",
    "quizMobileScreenshot": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/screenshots/jsonx-renderer-widget-quiz-mobile.png",
    "githubIssueEvidence": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/github-issue-evidence.json",
    "externalGateAccess": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/external-gate-access.json",
    "submissionAudit": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/submission-audit.json",
    "externalGateEvidence": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/external-gate-evidence.json",
    "externalGateRunbook": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/external-gates.md",
    "sourceDocsEvidence": "https://jsonx.net/intent/generative-ui-plugin/submission-artifacts/current/source-docs-evidence.json"
  },
  "releaseNotes": "Initial submission of the JSONX Generative UI app-plus-skills plugin. It includes safe generated UI payload creation, validation fixtures, local handoff support, optional renderer-owned motion, and a stateless hosted MCP renderer app.",
  "manualBeforeSubmit": [
    "Confirm OpenAI developer or business identity verification.",
    "Confirm the submitter has Apps Management write access.",
    "Complete domain verification for jsonx-renderer-app.netlify.app or move the MCP endpoint to a verified jsonx.net subdomain.",
    "Attach the final production logo.",
    "Review privacy policy, terms, and support URLs.",
    "Capture live ChatGPT developer-mode transcript evidence after connecting the hosted MCP endpoint."
  ],
  "sourceDocsChecked": [
    "https://developers.openai.com/codex/submit-plugins",
    "https://developers.openai.com/codex/build-plugins",
    "https://developers.openai.com/apps-sdk/deploy/submission"
  ]
}
