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
- The agent file is the role source of truth.
~/.codex/config.toml is 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 by agent_type)
description (short, human-readable purpose)
developer_instructions
model (recommend gpt-5.3-codex unless requested)
model_reasoning_effort (none|minimal|low|medium|high|xhigh)
- role scope (
global or project)
- output TOML path (canonical absolute path preferred)
- whether to include
nickname_candidates and 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.
name is the spawn identifier and source of truth.
description + developer_instructions define behavior and usage boundaries.
nickname_candidates is 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>.toml
project → <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
tomlq or tomlq -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/
Source: am-will/codex-skills → skills/role-creator/SKILL.md
1---2name: role-creator3description: Create and update Codex custom agents using standalone custom-agent TOML files.4---5
6
7# Role Creator
8
9## Overview
10
11Use this skill to author, update, or troubleshoot custom Codex agents as standalone TOML files.
12
13Current behavior:
14- Each custom agent is defined by one file:
15 - Global: `~/.codex/agents/<agent-name>.toml`
16 - Project: `<project>/.codex/agents/<agent-name>.toml`
17- The agent file is the role source of truth.
18- `~/.codex/config.toml` is only for global/runtime settings (for example `[agents]` thread limits), not per-role registration.
19
20## Non-Negotiable Inputs
21
22Step 1 is required before writing files:
23
24- `name` (role identifier used by `agent_type`)
25- `description` (short, human-readable purpose)
26- `developer_instructions`
27- `model` (recommend `gpt-5.3-codex` unless requested)
28- `model_reasoning_effort` (`none|minimal|low|medium|high|xhigh`)
29- role scope (`global` or `project`)
30- output TOML path (canonical absolute path preferred)
31- whether to include `nickname_candidates` and exact values
32
33Execution rule:
34- Do not infer required values.
35- Do not write until required inputs are explicitly confirmed.
36
37## Role file contract (current)
38
39From Codex custom agent docs (`/codex/subagents`):
40- Required keys: `name`, `description`, `developer_instructions`.
41- Optional keys: `nickname_candidates`, `model`, `model_reasoning_effort`, `sandbox_mode`, `web_search`, `mcp_servers`, `skills.config`, etc.
42- `name` is the spawn identifier and source of truth.
43- `description` + `developer_instructions` define behavior and usage boundaries.
44- `nickname_candidates` is optional and used only for display.
45
46`nickname_candidates` requirements:
47- Must be a non-empty list of unique values when present.
48- Allowed characters: ASCII letters, digits, spaces, hyphens, underscores.
49
50## Default policy for optional settings
51
52- Do not add sandboxing/MCP/web-search/model extras unless requested.
53- Keep generated files minimal by default.
54- If the user says "inherit defaults", omit optional keys instead of setting explicit values.
55
56## Workflow
57
581. Collect and confirm required inputs.
592. Resolve output path:
60 - `global` → `~/.codex/agents/<name>.toml`
61 - `project` → `<project>/.codex/agents/<name>.toml`
623. Create or update the file directly with required keys.
634. Validate TOML parse and required keys.
645. Return a ready-to-run example call:
65
66```json
67{"agent_type":"<name>","message":"<task>"}
68```
69
70## Commands
71
72```bash
73# 1) Write a standalone custom-agent file
74/home/willr/Applications/skills/skills/role-creator/scripts/write_role_config.sh \
75 --output ~/.codex/agents/reviewer.toml \
76 --role-name reviewer \
77 --description "PR reviewer focused on correctness, security, and risk." \
78 --model gpt-5.4 \
79 --reasoning high \
80 --developer-instructions "Review code like an owner. Lead with concrete findings and residual risks."
81
82# Optional: include nickname candidates for display
83/home/willr/Applications/skills/skills/role-creator/scripts/write_role_config.sh \
84 --output ~/.codex/agents/reviewer.toml \
85 --role-name reviewer \
86 --description "PR reviewer focused on correctness, security, and risk." \
87 --model gpt-5.4 \
88 --reasoning high \
89 --developer-instructions "Review code like an owner. Lead with concrete findings and residual risks." \
90 --nickname-candidates "Atlas,Delta,Echo" \
91 --sandbox-mode read-only \
92 --web-search disabled
93```
94
95## Guardrails
96
97- If runtime returns `unknown agent_type`, verify the active scope and confirm the file exists at the expected path.
98- Check syntax first with `tomlq` or `tomlq -C`.
99- Keep role instructions operational and narrowly scoped to avoid drift.
100
101## References
102
103- Codex subagents docs: `https://developers.openai.com/codex/subagents`
104- Display nicknames: `https://developers.openai.com/codex/subagents#display-nicknames`
105- Reusable templates: `templates/`
106
107---
108
109**Source:** [`am-will/codex-skills`](https://github.com/am-will/codex-skills) → `skills/role-creator/SKILL.md`