agentsclimarketplace

Port project claude

Skill ada-ggf25/AI-Tools/global/claude/skills/port-project-claude

A cross-device synced catalog for Claude and Codex skills, agents, and workflows.

Install
npx -y skills add ada-ggf25/AI-Tools --skill port-project-claude

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Scans the current project's .agents/skills/ and .codex/agents/ directories for items missing from the project's .claude/skills/ and .claude/agents/ directories, presents the gap list for approval, adapts each approved item to Claude Code format, and writes to the project-local .claude/ directory. Never writes to global ~/.claude/ or modifies .agents/ or .codex/. Trigger when the user says "port project claude", "port-project-claude", "replicate project codex skills for claude", "sync project codex to claude", "bring codex skills into claude", "copy project codex", or "port project skills to claude".

SKILL.md

5.0 KB, as published. Nobody here has run it

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:

# 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:

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 not proceed without explicit per-item approval.

3. Adapt skills (for each approved skill)

Read .agents/skills/<name>/SKILL.md, then apply these substitutions:

FindReplace
AGENTS.md / AGENTS.override.mdCLAUDE.md
$<skill-name> invocation syntax/<skill-name>
where-agents-md cross-referenceswhere-claude
audit-agent-docs cross-referencesaudit-claude-md
Personal Codex config paths (~/.codex/, $CODEX_HOME)Personal Claude config paths (~/.claude/)
Project Codex skill paths (.agents/skills/)Project Claude skill paths (.claude/skills/)
Project Codex agent paths (.codex/agents/)Project Claude agent paths (.claude/agents/)
"Codex" when referring to the product"Claude Code"
"AGENTS" as a generic concept for instruction files"CLAUDE.md"

Show the adapted content to the user and require approval before writing.

Create .claude/skills/<name>/ directory if needed, then write .claude/skills/<name>/SKILL.md.

4. Adapt agents (for each approved agent)

Locate the source TOML at .codex/agents/<name>.toml.

Read it and extract:

  • name — convert underscores to hyphens (kebab-case)
  • description — use as-is
  • developer_instructions — becomes the Markdown body (apply the same Codex→Claude product reference fixes from step 3)
  • sandbox_mode = "read-only" → explicit tools list (Read, Glob, Grep; add WebSearch/WebFetch only if the instructions reference web access)
  • model_reasoning_effort = "medium"model: haiku; "high" → omit (defaults to Sonnet)

Write .claude/agents/<name>.md in this shape:

---
name: <kebab-name>
description: <description from TOML>
tools:
  - Read
  - Glob
  - Grep
---

<developer_instructions content, with Codex→Claude product references fixed>

Flag the output explicitly as a lossy TOML→Markdown conversion and require human review before writing.

5. Wrap up

Report:

  • Items ported with their destination paths
  • Items skipped and the reason (already exists, user declined, conversion flagged)
  • Remind the user to restart Claude Code for new /commands to appear in autocomplete

Guardrails

  • Never overwrite an existing file in .claude/ — skip with a per-item warning if the target already exists.
  • Never modify any file under .agents/ or .codex/ — they are read-only sources.
  • Never write to global ~/.claude/ paths — only to the project-local .claude/ directory.
  • Always show the adapted content and get per-item approval before writing.
  • TOML→Markdown agent conversion is lossy: flag it explicitly; do not claim it is complete.
  • Cross-references that differ between products (where-agents-md vs where-claude, audit-agent-docs vs audit-claude-md) must be noted — do not rename silently.
  • Create target directories (.claude/skills/<name>/, .claude/agents/) as needed.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.