← ClaudeAtlas

sync-claude-permissionslisted

Translates current-project Codex permission rules (.codex/rules/default.rules prefix_rule blocks only, not personal ~/.codex rules) into Claude Code permission entries (.claude/settings.local.json), computes the gap against already-present rules, and presents portable rules for per-rule approval grouped by category before writing. Global and project-agnostic. Trigger when the user says "sync claude permissions", "sync-claude-permissions", "port project codex rules to claude", "translate project codex permissions", "replicate project codex allow rules", or "bring project codex permissions into claude".
ada-ggf25/AI-Tools · ★ 2 · AI & Automation · score 66
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