Docsgeneric
role-creator
Create and update Codex custom agents using standalone custom-agent TOML files.
am-will/codex-skillsdevelopers.openai.com
Install
Use with your agent
Install the role-creator skill, then use it as build context. Run: npx skills add https://github.com/am-will/codex-skills --skill role-creator. Then read the installed skill.md and follow its guidance to build or refactor my project.
Role Creator
Overview
Use this skill to author, update, or troubleshoot custom Codex agents as standalone TOML files.
Current behavior:
- Each custom agent is defined by one file:
- Global:
~/.codex/agents/<agent-name>.toml - Project:
<project>/.codex/agents/<agent-name>.toml
- Global:
- The agent file is the role source of truth.
~/.codex/config.tomlis only for global/runtime settings (for example[agents]thread limits), not per-role registration.
Non-Negotiable Inputs
Step 1 is required before writing files:
name(role identifier used byagent_type)description(short, human-readable purpose)developer_instructionsmodel(recommendgpt-5.3-codexunless requested)model_reasoning_effort(none|minimal|low|medium|high|xhigh)- role scope (
globalorproject) - output TOML path (canonical absolute path preferred)
- whether to include
nickname_candidatesand exact values
Execution rule:
- Do not infer required values.
- Do not write until required inputs are explicitly confirmed.
Role file contract (current)
From Codex custom agent docs (/codex/subagents):
- Required keys:
name,description,developer_instructions. - Optional keys:
nickname_candidates,model,model_reasoning_effort,sandbox_mode,web_search,mcp_servers,skills.config, etc. nameis the spawn identifier and source of truth.description+developer_instructionsdefine behavior and usage boundaries.nickname_candidatesis optional and used only for display.
nickname_candidates requirements:
- Must be a non-empty list of unique values when present.
- Allowed characters: ASCII letters, digits, spaces, hyphens, underscores.
Default policy for optional settings
- Do not add sandboxing/MCP/web-search/model extras unless requested.
- Keep generated files minimal by default.
- If the user says "inherit defaults", omit optional keys instead of setting explicit values.
Workflow
- Collect and confirm required inputs.
- Resolve output path:
global→~/.codex/agents/<name>.tomlproject→<project>/.codex/agents/<name>.toml
- Create or update the file directly with required keys.
- Validate TOML parse and required keys.
- Return a ready-to-run example call:
{"agent_type":"<name>","message":"<task>"}
Commands
# 1) Write a standalone custom-agent file
/home/willr/Applications/skills/skills/role-creator/scripts/write_role_config.sh \
--output ~/.codex/agents/reviewer.toml \
--role-name reviewer \
--description "PR reviewer focused on correctness, security, and risk." \
--model gpt-5.4 \
--reasoning high \
--developer-instructions "Review code like an owner. Lead with concrete findings and residual risks."
# Optional: include nickname candidates for display
/home/willr/Applications/skills/skills/role-creator/scripts/write_role_config.sh \
--output ~/.codex/agents/reviewer.toml \
--role-name reviewer \
--description "PR reviewer focused on correctness, security, and risk." \
--model gpt-5.4 \
--reasoning high \
--developer-instructions "Review code like an owner. Lead with concrete findings and residual risks." \
--nickname-candidates "Atlas,Delta,Echo" \
--sandbox-mode read-only \
--web-search disabled
Guardrails
- If runtime returns
unknown agent_type, verify the active scope and confirm the file exists at the expected path. - Check syntax first with
tomlqortomlq -C. - Keep role instructions operational and narrowly scoped to avoid drift.
References
- Codex subagents docs:
https://developers.openai.com/codex/subagents - Display nicknames:
https://developers.openai.com/codex/subagents#display-nicknames - Reusable templates:
templates/