OpenAI Plugins: package examples, portable formats and connection boundaries
Build a plugin inspection report that exposes migration and trust gaps
Design a read-only package-review tool that reports selected overlays, missing references and untested capabilities without installing or executing plugins.
What you will learn
- Make the first tool read-only and explicit
- Separate mechanical findings from security conclusions
- Design failure cases before adding live integration
Before you start
- Basic JSON and directory-path knowledge
- Understanding of skills and external-service permissions
Distinguish source examples from current format guidance and inspect a package without confusing metadata with runtime proof.
Key takeaways
- A read-only inspector can reveal configuration gaps without executing plugins.
- Mechanical validity is not a security verdict.
- Live installation needs a separate authorization and test design.
Make the first tool read-only and explicit
A useful learning project is an inspector over synthetic package records. It can display layout type, portable identity, the selected OpenAI settings object and referenced resources. This is our proposed extension, not a tool claimed to ship in openai/plugins. Its first version should not install packages, edit profiles or run hooks.
Start with a manifest containing an inline OpenAI object and a compatibility overlay containing different fields. The report should explain that the inline object wins wholesale, not show a merged result. That example makes a migration gap visible before someone mistakes missing inherited settings for a host bug.
Separate mechanical findings from security conclusions
The companion model checks a small selection contract, not the complete Agent Plugins schema. A future file inspector would need safe path resolution, symlink handling, schema validation and bounded resource reads. A present file is not necessarily safe, and a declared capability is not proof of authenticated or authorized execution.
Label each finding as a configuration observation, missing reference, untested runtime behavior or human review requirement. Avoid a single safe badge based on JSON validity. Preserve the package revision and evidence so another reviewer can reproduce the report without trusting a screenshot of a green checkmark.
Design failure cases before adding live integration
Test an empty inline object, an absent overlay, attempted portable-path override and an unrecognized schema. Then add cases for broken paths and unsafe references when real file inspection is implemented. The executed tests in this series cover only the synthetic selection model; they do not certify a live installer.
A table and a compact overlay diagram convey these relationships more clearly than a mandatory three-dimensional scene. Keep any future visualization accessible without animation. Only after the read-only report is reliable should installation or service tests be added as separate, explicitly authorized workflows.
Decision guide
| Criterion | Option A | Option B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
Implementation steps
- 1
Create synthetic portable and compatibility records.
- 2
Show which settings object wins and why.
- 3
Test missing, empty and conflicting inputs.
- 4
Keep execution and installation outside the first milestone.
Copy-ready example
{
"proposal": true,
"input": "synthetic manifests",
"install": false,
"executeHooks": false,
"connectServices": false,
"reportUnknowns": true,
"fullSchemaValidator": false
}Frequently asked questions
Is this inspector already provided by the repository?
No. It is a learning extension proposed here.
Does the model implement the full manifest schema?
No. It demonstrates a limited selection contract and excludes runtime loading.
Sources
- OpenAI Plugins / plugins/figma/.codex-plugin/plugin.jsonSource checked 2026-09-14
- OpenAI — Package your plugin (checked 2026-09-14)Source checked 2026-09-14