port-project-claudelisted
Install: claude install-skill ada-ggf25/AI-Tools
# Port project-local Codex artifacts to Claude Code
Finds project-local Codex skills/agents (`.agents/skills/`, `.codex/agents/`) that have
no Claude Code counterpart in `.claude/skills/` or `.claude/agents/`, and adapts them to
Claude Code conventions with per-item approval before any write.
Source: `.agents/skills/` and `.codex/agents/` inside the current working directory.
Target: `.claude/` inside the current working directory.
Never touches global `~/.claude/` or modifies any `.agents/` or `.codex/` file.
## Procedure
### 1. Compute the gap
Run both diffs in parallel:
```bash
# Skills missing from .claude/
comm -23 \
<(ls .agents/skills/ 2>/dev/null | sort) \
<(ls .claude/skills/ 2>/dev/null | sort)
# Agents missing from .claude/ (strip .toml extension)
comm -23 \
<(ls .codex/agents/ 2>/dev/null | sed 's/\.toml$//' | sort) \
<(ls .claude/agents/ 2>/dev/null | sed 's/\.md$//' | sort)
```
Note: use two separate `ls` calls (not `ls dir1 dir2`) — the two-argument form of `ls`
prefixes output with directory headers when both dirs exist, corrupting the name list.
If both lists are empty: report "No gaps found - project .agents/, .codex/, and .claude/ are in sync." and stop.
### 2. Present the gap list
Show the user two sections:
```text
Skills to port (.agents/skills/<name>/SKILL.md -> .claude/skills/<name>/SKILL.md)
- <name>
...
Agents to port (.codex/agents/<name>.toml -> .claude/agents/<name>.md)
- <name>
...
```
Ask which items to port. Do