Move existing Codex chats/threads into saved Codex Projects by resolving chat titles and project names, generating a safe move plan, and launching a terminal helper that quits Codex, patches local Codex state after exit, then reopens Codex. Use when the user asks to organize Codex chats by Project, move chats into Projects, re-parent projectless Codex threads, or fix chats appearing outside the intended Project.
79
99%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Use this skill to move existing Codex chats into saved Project directories when the Codex UI does not expose a direct move action. The bundled helper performs the fragile state edits only after Codex has fully exited, backs up touched files, verifies the result, and reopens Codex by default.
codex_app.list_threads and codex_app.list_projects./tmp.scripts/launch-chat-organizer.sh <plan.json> from this skill directory.Create a JSON plan with this shape:
{
"version": 1,
"codexHome": "/Users/example/.codex",
"reopenCodex": true,
"moves": [
{
"threadId": "019f0000-0000-7000-9000-000000000000",
"threadTitle": "Fix link checker CI",
"targetProjectName": "GH",
"targetCwd": "/Users/example/Documents/GH"
}
]
}Rules:
list_threads; do not guess IDs from titles.list_projects; do not infer project directories from display names.codexHome to ${CODEX_HOME} when set, otherwise ${HOME}/.codex.reopenCodex to true unless the user asks otherwise./tmp because the external terminal helper must be able to read it after Codex quits.From the skill directory:
scripts/launch-chat-organizer.sh /tmp/codex-chat-organizer-plan.jsonUseful options:
--dry-run: open a terminal and print the intended state changes without quitting Codex or editing files.--no-reopen: apply the move but leave Codex closed.CODEX_CHAT_ORGANIZER_TERMINAL: set to terminal, iterm, wezterm, or ghostty to prefer a terminal. If unset, the launcher checks ~/.codex/chat-organizer-terminal, then falls back through common macOS terminals.~/.codex/backups/codex-chat-organizer/<timestamp>/.Run scripts/test-fixture.mjs to exercise the patcher against a temporary Codex home fixture. Run the skill-creator quick_validate.py on the skill folder after edits.