plugin-creator validator rejects valid hook manifests and optional metadata
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 58/100
Research direction
Start with codex-rs/skills/src/assets/samples/plugin-creator/scripts/test_validate_plugin.py and the validator it exercises, then compare its behavior with the current Rust ingestion contract and plugin documentation. Run the focused unittest module and quick_validate.py while covering the listed manifest, path, hook, and metadata cases. Done means all 11 tests and git diff --check pass without accessing real plugin state.
Written by the indexing model from the issue text.
Description
Problem
The bundled plugin-creator validator diverges from the current plugin
ingestion contract and official plugin documentation.
It currently:
- requires
authorandinterface, although manifest fields other than
name,version, anddescriptionare optional; - rejects
hooks, although plugin manifests support a path, path array,
inline hooks object, or array of inline objects; - validates only the default
skills/location instead of resolving declared
skill destinations from the plugin root.
As a result, a valid manifest such as the following fails validation:
{
"name": "synthetic-plugin",
"version": "1.0.0",
"description": "Synthetic reproduction.",
"skills": "./custom/skills/",
"hooks": "./custom/hooks/hooks.json"
}
Documentation alignment
The expected behavior follows:
- https://developers.openai.com/codex/plugins/build#plugin-structure
- https://developers.openai.com/codex/plugins/build#manifest-fields
- https://developers.openai.com/codex/plugins/build#path-rules
- https://developers.openai.com/codex/plugins/build#bundled-mcp-servers-and-lifecycle-hooks
The current Rust ingestion code also supports the four documented hook forms,
optional interface metadata, declared skill paths, and optional default
discovery.
Proposed correction
- make
authorandinterfaceoptional while retaining their validation when
present; - validate all four documented
hooksforms without executing handlers; - resolve declared skill and hook paths relative to the plugin root;
- reject absolute paths, traversal, symlink escapes, missing destinations, and
invalid hook companions; - keep absent default
skills/andhooks/hooks.jsonoptional.
Synthetic coverage
A focused unittest module covers:
- the official minimal manifest;
- declared skill destinations;
- all four hook forms;
- optional defaults;
- invalid hook JSON and shapes;
- absolute paths, traversal, and symlink escapes;
- optional rich metadata;
- compatibility with existing scaffold output;
- confinement to synthetic temporary plugin state with network access blocked.
Validation completed successfully:
python3 -m unittest codex-rs/skills/src/assets/samples/plugin-creator/scripts/test_validate_plugin.py
— 11 tests passed;python3 codex-rs/skills/src/assets/samples/skill-creator/scripts/quick_validate.py codex-rs/skills/src/assets/samples/plugin-creator
—Skill is valid!;git diff --check— passed.
No skill was installed and no personal config, cache, trust, authentication,
marketplace, or real plugin state was read or modified.
A focused implementation is available if the maintainers consider the issue
appropriate and invite a pull request.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- Avg merge
- 1m
- Merged PRs (30d)
- 1k
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from openai/codex
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
bug CLI windows-os
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
macOS sandbox blocks hw.optional.arm64 sysctl, causing Flutter to misdetect Apple Silicon as x64 Openbug CLI sandbox
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
bug CLI TUI
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
CLI config enhancement skills
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
A-linter
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxc-project/oxc#26863 ·