agentsclimarketplace

Skillport

Skill eikonoikari1/skillport/.cursor/skills/skillport

Universal skill/rule adapter across AI coding harnesses. Converts skills, rules, and instructions between Claude Code, Cursor, Codex CLI, OpenClaw, Copilot, and Windsurf. Handles harness-specific features (hooks, subagents, allowed-tools, globs, dynamic context) with functional equivalents or annotated fallbacks. Use when asked to "port", "convert", "adapt", "translate", or "make work in" a different harness. Also use when asked to "detect" harness configs in a project.From its SKILL.md

Install
npx -y skills add eikonoikari1/skillport --skill skillport

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

2 things to look at

  • 1 stars1 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.
  • runs commandsInstructs the agent to run 5 commands, including `scripts/render-context.sh` and 4 more.

SKILL.md

5.7 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it

Note: Run scripts/render-context.sh before first use to inject dynamic context.

skillport: Universal Skill/Rule Adapter

Step 1: Understand the Request

Parse the user's prompt to extract three things:

  1. WHAT — Which skill/rule/config to convert
    • A path (e.g., .claude/skills/my-skill, CLAUDE.md, .cursor/rules/)
    • A skill name (e.g., "clearshot", "toc") — resolve to its installed path
    • "all" or "everything" — scan for all detected configs
  2. FROM — Source harness format
    • Explicit: "from claude", "from cursor", etc.
    • Implicit: auto-detect from path and file contents
  3. TO — Target harness format(s)
    • Explicit: "to cursor", "to codex and openclaw", "to all"
    • One or more of: claude, cursor, codex, openclaw, copilot, windsurf, all

Examples of natural language parsing:

User saysWHATFROMTO
"convert clearshot to cursor"clearshotauto-detectcursor
"port my claude skills to codex"all claude skillsclaudecodex
"make this cursor rule work in claude code"(ask which rule)cursorclaude
"adapt toc for all harnesses"tocauto-detectall
"what harness configs do I have?"(detect mode)

Resolution Rules:

  • If WHAT is a name (not a path), search these locations:

    • ~/.claude/skills/<name>/
    • ~/.agents/skills/<name>/
    • .claude/skills/<name>/ (project-local)
    • .agents/skills/<name>/ (project-local)
    • .cursor/skills/<name>/
    • .cursor/rules/<name>.mdc
  • If FROM is not stated, auto-detect by running the CLI:

    npx tsx ~/.claude/skills/skillport/bin/skillport.ts detect .
    
  • NEVER start conversion until WHAT, FROM, and TO are all resolved.

Step 2: Confirm Before Converting

Always show the user what you're about to do:

I'll convert:
  Skill:  <name> (<path>)
  From:   <harness> (auto-detected / specified)
  To:     <target harness(es)>

Proceed?

Wait for confirmation. If the user says "just do it" or similar, proceed.

Step 3: Run the Conversion

Execute the CLI:

npx tsx ~/.claude/skills/skillport/bin/skillport.ts convert <source-path> --to <targets> --output <dir>

For dry run (preview without writing):

npx tsx ~/.claude/skills/skillport/bin/skillport.ts convert <source-path> --to <targets> --dry-run

For project scan:

npx tsx ~/.claude/skills/skillport/bin/skillport.ts detect <dir>

Step 4: Present the Result Report

After conversion, ALWAYS present the full report to the user. The report has three mandatory sections:

Section 1: Conversion Summary

Show what was converted and where files were written:

skillport: <name> (<from> → <to>)

  Source:  <source path>
  Target:  <target path>

  Fields:  N total
    ✓  X native   (fields that mapped 1:1)
    ⚡  Y shimmed  (fields with functional approximations)
    ⚠  Z dropped  (fields with no equivalent)

Section 2: Parity Assessment

Show a percentage score and per-feature breakdown:

Parity: NN% (Full|High|Partial|Low)

  Feature Coverage:
    ✓ Core instructions       100%  Markdown body preserved
    ✓ Activation trigger      100%  description-based discovery
    ⚡ Tool restrictions        80%  Instruction text, not enforced
    ⚠ Hooks                     0%  No equivalent in target
    ...

  Verdict: <plain-English assessment>

Parity levels:

  • 95-100% Full — skill works identically
  • 80-94% High — core behavior preserved, minor features shimmed
  • 50-79% Partial — key features approximated, some lost
  • <50% Low — significant gaps, manual adaptation recommended

Section 3: Tradeoffs & Key Points

Short bullet list of the most important things to know:

Key Points:
• <what changed and why it matters>
• <what the user should watch out for>
• <round-trip safety notes>

Supported Harnesses

HarnessSkillsRulesInstructionsHooksSubagentsGlobsDynamic Context
Claude Code✓ native✓ nativeCLAUDE.md✓ 24 events✓ context:fork✓ paths✓ !cmd
Cursor✓ native✓ .mdcAGENTS.md⚡ partial✓ native (v2.0+)✓ globs✗ none
Codex CLI✓ nativevia AGENTS.mdAGENTS.md✗ none⚡ fork cmd✗ none✗ none
OpenClaw✓ nativevia skillN/A⚡ gateway✗ none✗ none⚡ preamble
Copilot✗ none✓ .instructions.mdcopilot-instructions.md✗ none✗ none✓ applyTo✗ none
Windsurf✗ rules only✓ .windsurfrules.windsurfrules✗ none✗ none✗ none✗ none

Feature Adaptation Quick Reference

  • Hooks: CC→Cursor maps PreToolUse→beforeShellExecution. Others get wrapper scripts or annotations.
  • Subagents: CC→Cursor is near-native. Codex has fork. Others get instruction annotations.
  • allowed-tools: Only CC enforces per-skill. Others get instruction text (agent may ignore).
  • Globs: CC uses paths:, Cursor uses globs:, Copilot uses applyTo:. Others get annotations.
  • Dynamic context (!cmd``): CC-only native. Others get preprocessor scripts or preamble blocks.
  • Model/effort overrides: CC-only. Dropped with annotation for others.

What ships with it: 2 files

8.6 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. 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.