Skip to content
Back to skills

Prepare Chatgpt App Submission

ASecurity

Prepare a reviewed chatgpt-app-submission.json draft for a ChatGPT Apps MCP server by delegating to OpenAI Developers' official chatgpt-app-submission skill, checking tool annotations, test coverage, sensitive inputs, and submission gates. Use when a user asks to submit an MCP server to ChatGPT, fill the ChatGPT Apps form, generate submission JSON, or add Codex-managed OpenAI app submission support.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentgogitdocumentation

Works with

  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add khadinakbarlabs/expo-mobile-app-builder --skill prepare-chatgpt-app-submission --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prepare Chatgpt App Submission?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Prepare Chatgpt App Submission
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khadinakbarlabs-prepare-chatgpt-app-submission/badge)](https://www.skillsdirectory.com/skills/khadinakbarlabs-prepare-chatgpt-app-submission)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "prepare-chatgpt-app-submission"
description: "Prepare a reviewed chatgpt-app-submission.json draft for a ChatGPT Apps MCP server by delegating to OpenAI Developers' official chatgpt-app-submission skill, checking tool annotations, test coverage, sensitive inputs, and submission gates. Use when a user asks to submit an MCP server to ChatGPT, fill the ChatGPT Apps form, generate submission JSON, or add Codex-managed OpenAI app submission support."
---

# Prepare a ChatGPT App submission

Use this skill as the Codex-facing guardrail around OpenAI Developers' official
`chatgpt-app-submission` skill. The official skill understands the current
`chatgpt-app-submission.json` schema; this wrapper makes sure it is run against
the right repository, reviewed before upload, and never mistaken for a generic
static plugin or a permission to submit.

For current platform terminology and availability, verify the official [Plugins
in ChatGPT and Codex](https://help.openai.com/en/articles/20001256) guidance and
[Apps SDK](https://developers.openai.com/apps-sdk/) documentation. OpenAI's
current directory model packages new app submissions inside plugins.

## Preconditions

1. Inspect the current working directory before writing anything.
2. Confirm that it is an actual ChatGPT Apps MCP server repository. Look for a
   server entry point, MCP SDK dependency, `.mcp.json`, tool registrations,
   tool descriptors, resource/widget metadata, or a documented MCP endpoint.
3. If the repository is only a static Agent Skills/plugin package, stop. Do not
   generate an empty or invented `tools` object. Report that a ChatGPT Apps
   submission requires a real MCP server and ask for the correct MCP repository
   or an approved plan to build one.
4. Keep the generated JSON in a temporary or owner-selected submission staging
   directory by default. Do not commit it to a public repository unless the
   user explicitly asks for that artifact to be public and a safety review finds
   no private values.

## Required workflow

### 1. Delegate to the official OpenAI skill

When the OpenAI Developers plugin is available, invoke its
`chatgpt-app-submission` skill in the MCP server repository. Do not silently
reimplement or “improve” its schema from memory. If the official plugin is not
available, tell the user to install it or explicitly approve a separately
validated fallback; never fabricate a portal payload.

Use a prompt like:

```text
Use $chatgpt-app-submission in this MCP server repository. Inspect the real tool
implementations, annotations, output schemas, widget metadata, and side effects.
Generate chatgpt-app-submission.json in the approved submission staging folder.
Do not upload or submit it. Report every review finding and missing outputSchema
warning, and keep credentials, private paths, local logs, and account data out
of the JSON.
```

### 2. Inspect behavior, not names

Before accepting the generated file, verify each exposed tool against its real
implementation and reachable helpers. Record whether it reads, computes,
creates, updates, deletes, sends, publishes, enqueues, or changes an external
system. Confirm all three Apps SDK review annotations explicitly:

- `readOnlyHint` is true only when the tool cannot mutate state;
- `destructiveHint` is true for deletion, overwrite, revocation, irreversible
  transactions, or destructive parameter modes;
- `openWorldHint` is true when the tool changes public internet state or an
  external third-party system.

If a hint is missing, null, stale, or ambiguous, stop before generating a
misleading submission. List the tool, observed behavior, current value, and
recommended value, then ask for approval to update the MCP source. Do not infer
behavior from a tool name or from a default annotation.

### 3. Review the generated JSON

Check the file without exposing its contents in chat or committing it:

- filename is exactly `chatgpt-app-submission.json`;
- `$schema` and `schema_version` are present;
- `app_info` is factual, concise, and uses a functional subtitle of 30 or fewer
  characters;
- category is one of the schema-supported values;
- every tool has explicit `readOnlyHint`, `openWorldHint`, and
  `destructiveHint` values plus one-sentence justifications;
- there are exactly five positive and exactly three negative test cases;
- positive `tools_triggered` values use exact MCP action names;
- negative cases cover nearby but unsupported requests;
- no tokens, credentials, account identifiers, private source, local absolute
  paths, request IDs, stack traces, customer data, or signing material appear;
- descriptions and test expectations do not promise approval, uptime, legal
  compliance, current policy facts, or a review timeline.

Missing `outputSchema` is a warning to report, not a reason to invent a schema.
Name each affected tool and recommend adding an output schema so models can use
the result more reliably.

### 4. Review portal readiness separately

The JSON fills parts of the Apps submission form; it is not the submission
itself. Confirm the public MCP endpoint, privacy policy, terms, support contact,
product identity, app icon, screenshots or demo evidence, domain/CSP settings,
authentication description, and reviewer test account requirements from the
current official OpenAI submission surface. Keep reviewer credentials in the
portal's approved mechanism, never in this repository or the JSON draft.

### 5. Gate upload and submission

Show the user the generated app-info summary, tool count, test counts, warnings,
and every review finding before upload. Upload only after the user confirms the
exact file and destination. Submit for review only after a separate, explicit
owner instruction such as `SUBMIT FOR REVIEW`; a request to draft, inspect, or
upload does not automatically authorize final submission. Publication after
approval is a separate decision.

## Static-plugin boundary

This skill can live inside a static Agent Skills package, but a static package is
not itself a ChatGPT Apps MCP server. A plugin manifest, GitHub repository,
`skills/` directory, or `.codex-plugin/plugin.json` does not provide MCP tools,
an endpoint, widget resources, or a submission-ready app. When this skill is
triggered in such a repository, return the blocker and point the user to the
MCP server repository instead of producing fake submission JSON.

## Expected handoff

Return:

```text
Repository classification: MCP server / static plugin / ambiguous
Submission staging path: [path, if generated]
App info summary: [display name, subtitle, category]
Tools covered: [count and exact names]
Positive test cases: [must be 5]
Negative test cases: [must be 3]
Missing outputSchema warnings: [tools or none]
Review findings: [sensitive inputs, data use, naming, CSP, or none]
Upload status: not uploaded / uploaded with target evidence
Submission status: not submitted / submitted with portal evidence
Next owner action: [exact review or confirmation needed]
```

Never call a draft “approved” or “published” without live evidence from the
official OpenAI surface.

Files in this skill

  • SKILL.md6.9 KB
  • agents/openai.yaml253 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…