skill-creator initializer generates invalid description frontmatter
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 85/100
Research direction
Start with codex-rs/skills/src/assets/samples/skill-creator/scripts/init_skill.py and inspect the SKILL.md template's description field. Run the provided init_skill.py and quick_validate.py reproduction, then confirm the generated description is parsed as a string and quick_validate.py reports "Skill is valid!" while agents/openai.yaml remains unchanged.
Written by the indexing model from the issue text.
Description
What issue are you seeing?
The bundled skill-creator initializer creates a SKILL.md whose placeholder description is parsed by YAML as a list. The bundled validator then rejects the freshly generated skill:
Description must be a string, got list
The source is:
codex-rs/skills/src/assets/samples/skill-creator/scripts/init_skill.py
At current main (ed2f985a26eee9a59cde0fdefd20f69b45bc25f5), the template contains:
description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]
Because square brackets are YAML sequence syntax, yaml.safe_load returns a list, while quick_validate.py correctly requires description to be a string.
What steps can reproduce the bug?
SKILL_CREATOR=codex-rs/skills/src/assets/samples/skill-creator
SMOKE_ROOT=$(mktemp -d)
python3 "$SKILL_CREATOR/scripts/init_skill.py" example-skill \
--path "$SMOKE_ROOT" \
--interface 'display_name=Example Skill' \
--interface 'short_description=Example generated skill' \
--interface 'default_prompt=Use $example-skill for an example.'
python3 "$SKILL_CREATOR/scripts/quick_validate.py" \
"$SMOKE_ROOT/example-skill"
Observed result:
Description must be a string, got list
What is the expected behavior?
A new skill created by the bundled initializer should pass the bundled structural validator before its TODO text is replaced.
Quoting the placeholder fixes the mismatch without changing its content:
description: "[TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]"
After this one-line change:
- the generated
descriptionparses as a string; - the generated
agents/openai.yamlremains unchanged; and quick_validate.pyreturnsSkill is valid!for the fresh package.
Additional information
- Reproduced with
codex-cli 0.145.0on macOS. - Confirmed against current
openai/codexmainated2f985a26eee9a59cde0fdefd20f69b45bc25f5. py_compilepasses for all three bundled Python utilities before and after the one-line change.git diff --checkpasses.- I can submit the one-line PR with the verified reproduction if a maintainer invites the contribution, in accordance with
docs/contributing.md.
- 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
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·
-
bug triage:deciding
Difficulty 1/5 Under an hour Newbie friendliness 88/100
open-telemetry/otel-arrow#4132 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
bitcoindevkit/bdk-ffi#1125 ·