port-project-claude — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited port-project-claude (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
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.
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.
Read .agents/skills/<name>/SKILL.md, then apply these substitutions:
| Find | Replace |
|---|---|
AGENTS.md / AGENTS.override.md | CLAUDE.md |
$<skill-name> invocation syntax | /<skill-name> |
where-agents-md cross-references | where-claude |
audit-agent-docs cross-references | audit-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.
Locate the source TOML at .codex/agents/<name>.toml.
Read it and extract:
name — convert underscores to hyphens (kebab-case)description — use as-isdeveloper_instructions — becomes the Markdown body (apply the same Codex→Claudeproduct reference fixes from step 3)
sandbox_mode = "read-only" → explicit tools list (Read, Glob, Grep; addWebSearch/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.
Report:
/commands to appear in autocomplete.claude/ — skip with a per-item warning if the target already exists..agents/ or .codex/ — they are read-only sources.~/.claude/ paths — only to the project-local .claude/ directory.where-agents-md vs where-claude,audit-agent-docs vs audit-claude-md) must be noted — do not rename silently.
.claude/skills/<name>/, .claude/agents/) as needed.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.