sync-claude-permissionslisted
Install: claude install-skill ada-ggf25/AI-Tools
# Sync Project Codex Permissions To Claude Code
Global, project-agnostic skill. Reads only the current project's
`.codex/rules/default.rules`, translates `prefix_rule(...)` entries to Claude Code
`Bash(...)` permission syntax, diffs against `.claude/settings.local.json`, and writes
only the user-approved new entries. Every proposed rule requires explicit per-rule
approval before any write.
This skill intentionally syncs project-local rules only. Do not read or fall back to
`${CODEX_HOME:-~/.codex}/rules/default.rules`: personal/global Codex rules may affect the
active Codex session, but they are outside this project-local sync workflow.
Complements `setup-permissions` (which predicts rules from the stack) by operating on
**already-written** project-local Codex rules rather than generating from scratch. Treat
`.codex/rules/default.rules` as the source for this operation even when its rules were
originally adapted from Claude Code settings.
---
## Translation reference
### Pattern → Claude rule
Reconstruct the longest unambiguous prefix from the `pattern` array:
| Codex `pattern` | Claude rule(s) |
|---|---|
| `["git", "status"]` | `Bash(git status:*)` |
| `["git", ["status", "diff", "log"]]` | `Bash(git status:*)`, `Bash(git diff:*)`, `Bash(git log:*)` |
| `["git", "-C", "/repo", ["status", "log"]]` | `Bash(git -C /repo status:*)`, `Bash(git -C /repo log:*)` |
| `["npm", "run", "test"]` | `Bash(npm run test:*)` |
| `["./install.sh"]` | `Bash(./install.sh:*)` |
When a