Telvine Learn

How to Create a ChatGPT Plugin

Learn how to create a ChatGPT plugin: define a workflow, write a Skill, package it, test it, and publish and measure releases with Telvine.

To create a ChatGPT plugin, choose a repeatable job, package the instructions and integrations it needs, and test the installed result. Treat the plugin as a product with an owner, a version, and a clear promise to its users.

1. Choose one useful workflow

Start with a task you can judge: prepare a weekly project update, review a document against a checklist, or turn meeting notes into an action list. Write down the input, expected output, and conditions under which the plugin should ask for more information.

For a first release, a project-update plugin could accept notes and produce decisions, blockers, and next actions. Keep the workflow narrow enough to test with several examples before sharing it.

2. Write the Skill capability

A Skill contains the reusable task instructions. Place this example in skills/project-update/SKILL.md inside your plugin:

---
name: project-update
description: Use when the user asks to prepare a weekly project update from notes.
---
 
# Project update
1. Read the notes the user provides.
2. Identify progress, decisions, blockers, and next actions.
3. Mark missing owners or dates as unknown.
4. Return a concise update with an action table.
5. Ask before sending the update to anyone.

Add reference templates when they improve consistency. Use scripts for deterministic checks, and add a connector only when the workflow needs access to another system. See our Skill template guide.

3. Package the plugin

OpenAI's packaging guide recommends a root plugin.json for new portable packages. A minimal layout is:

my-plugin/
├── plugin.json
└── skills/
    └── project-update/
        └── SKILL.md

Create plugin.json:

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "project-update",
  "version": "0.1.0",
  "description": "Prepare weekly project updates from notes."
}

Existing .codex-plugin/plugin.json packages remain supported as a compatibility fallback. Keep the Skill and plugin identities clear even when adapting an older package.

4. Test the installed workflow

Follow the desktop testing guide to expose your package through a local marketplace. Try complete notes, missing dates, conflicting owners, and a request outside the plugin's purpose. Check that the Skill triggers for the intended task and that it asks for missing information appropriately.

5. Publish and improve with Telvine

Use Telvine to publish the plugin as a managed product:

npm i -g @telvine/cli
telvine login
telvine publish ./my-plugin

Keep eval scenarios alongside the release. Use skill.* events for Skill behavior and plugin.component.invoked or plugin.component.error for other components. Never emit prompts, file contents, connector payloads, tool arguments, or model outputs.

Publishing to Telvine manages your Telvine plugin release. Listing in OpenAI's public directory follows its separate submission process.

Frequently asked questions

Do I need an MCP server? Only when the capability needs callable tools or external system access. A workflow based on supplied notes can start with a Skill.

Can I create a plugin without writing code? OpenAI provides a conversational creation path when Plugin Creator is available in your workspace. See Build plugins. You still need to review and test the result.

Next steps

On this page