Agent skill

Skill Porter

by jduncan-rva in jduncan-rva/skill-porter

Converts Claude Code skills to Gemini CLI extensions and vice versa.

MITAuto-check: notesAgent Workflows

Install Skill Porter

skills CLI
$ npx skills add jduncan-rva/skill-porter --skill skill-porter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jduncan-rva/skill-porter skill-porter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
skill-porter
GitHub stars
191
Token cost
~2k tokens
SKILL.md length
736 words
Files
50
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Converts Claude Code skills to Gemini CLI extensions and vice versa.

  • Works in 7 steps: Analyze the source directory structure → Detect which platform it's built for → Extract metadata, MCP configuration, and… → …
  • The user wants to make a skill cross-platform compatible
  • SKILL.md covers Core Capabilities, Conversion Process, Platform Differences Handled and Usage Examples, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Skill Porter is an agent skill from jduncan-rva/skill-porter. Converts Claude Code skills to Gemini CLI extensions and vice versa. Use when the user wants to make a skill cross-platform compatible, port a skill between platforms, or create a universal extension that works on both Claude Code and Gemini CLI.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 55 other files (for example `.claude-plugin/marketplace.json`, `CONTRIBUTING.md` and `GEMINI.md`).

It sits in Agent Workflows. It works with Model Context Protocol. The repository describes itself as: Universal tool to convert Claude Code skills to Gemini CLI extensions and vice versa. The licence is MIT.

When your agent uses it

  • The user wants to make a skill cross-platform compatible
  • Port a skill between platforms
  • Create a universal extension that works on both Claude Code and Gemini CLI

Example prompts

  • “Use the skill-porter skill to convert Claude Code skills to Gemini CLI extensions and vice versa”
  • “/skill-porter”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Analyze the source directory structure
  2. Detect which platform it's built for
  3. Extract metadata, MCP configuration, and documentation
  4. Transform the data to target platform format
  5. Generate required files for target platform
  6. Validate output meets all requirements
  7. Report what was converted and any manual steps needed

What it can do on your machine

Read from SKILL.md and the folder at commit 7ad93ec. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Skill Porter loads about 2k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 736 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from jduncan-rva/skill-porter at commit 7ad93ec, republished under its MIT licence (© jduncan-rva). 736 words, ~2,029 tokens.

Download SKILL.mdSave it as .claude/skills/skill-porter/SKILL.md (or your agent's skills folder). This skill also uses 49 other files; get the full folder from GitHub.
name
skill-porter
description
Converts Claude Code skills to Gemini CLI extensions and vice versa. Use when the user wants to make a skill cross-platform compatible, port a skill between platforms, or create a universal extension that works on both Claude Code and Gemini CLI.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash

Skill Porter - Cross-Platform Skill Converter

This skill automates the conversion between Claude Code skills and Gemini CLI extensions, enabling true cross-platform AI tool development.

Core Capabilities

Bidirectional Conversion

Convert skills and extensions between platforms while preserving functionality:

Example requests:

  • "Convert this Claude skill to work with Gemini CLI"
  • "Make my Gemini extension compatible with Claude Code"
  • "Create a universal version of this skill that works on both platforms"
  • "Port the database-helper skill to Gemini"
Smart Platform Detection

Automatically analyzes directory structure to determine source platform:

Detection criteria:

  • Claude: Presence of SKILL.md with YAML frontmatter or .claude-plugin/marketplace.json
  • Gemini: Presence of gemini-extension.json or GEMINI.md context file
  • Universal: Has both platform configurations

Example requests:

  • "What platform is this skill built for?"
  • "Analyze this extension and tell me what needs to be converted"
  • "Is this a Claude skill or Gemini extension?"
Metadata Transformation

Intelligently converts between platform-specific formats:

Conversions handled:

  • YAML frontmatter ↔ JSON manifest
  • allowed-tools (whitelist) ↔ excludeTools (blacklist)
  • Environment variables ↔ settings schema
  • MCP server configuration paths
  • Platform-specific documentation formats

Example requests:

  • "Convert the metadata from this Claude skill to Gemini format"
  • "Transform the allowed-tools list to Gemini's exclude pattern"
  • "Generate a settings schema from these environment variables"
MCP Server Preservation

Maintains Model Context Protocol server configurations across platforms:

Example requests:

  • "Ensure the MCP server config works on both platforms"
  • "Update the MCP server paths for Gemini's ${extensionPath} variable"
  • "Validate that the MCP configuration is compatible"
Validation & Quality Checks

Ensures converted output meets platform requirements:

Validation checks:

  • Required files present (SKILL.md, gemini-extension.json, etc.)
  • Valid YAML/JSON syntax
  • Correct frontmatter structure
  • MCP server paths resolve correctly
  • Tool restrictions are valid
  • Settings schema is complete

Example requests:

  • "Validate this converted skill"
  • "Check if this Gemini extension meets all requirements"
  • "Is this conversion ready to install?"

Conversion Process

When you request a conversion, I will:

  1. Analyze the source directory structure
  2. Detect which platform it's built for
  3. Extract metadata, MCP configuration, and documentation
  4. Transform the data to target platform format
  5. Generate required files for target platform
  6. Validate output meets all requirements
  7. Report what was converted and any manual steps needed

Platform Differences Handled

File Structure
  • Claude: SKILL.md + .claude-plugin/marketplace.json
  • Gemini: GEMINI.md + gemini-extension.json
  • Universal: Both sets of files + shared documentation
Metadata Format
  • Claude: YAML frontmatter in SKILL.md
  • Gemini: JSON manifest file
  • Conversion: Bidirectional YAML ↔ JSON transformation
Tool Restrictions
  • Claude: allowed-tools (whitelist - only listed tools permitted)
  • Gemini: excludeTools (blacklist - listed patterns blocked)
  • Conversion: Logic inversion with intelligent mapping
Configuration
  • Claude: Environment variables (user sets before running)
  • Gemini: Settings schema (prompted during installation)
  • Conversion: Infer schema from env vars or generate env var docs
MCP Server Paths
  • Claude: Relative paths from skill directory
  • Gemini: Uses ${extensionPath} variable substitution
  • Conversion: Automatic path transformation
Show full SKILL.md (291 more words)Show less

Usage Examples

Convert Claude Skill to Gemini
User: "I have a Claude skill at ./database-helper. Convert it to Gemini."
Claude: I'll analyze the skill and convert it to Gemini format...
- Detected Claude skill (found SKILL.md with frontmatter)
- Extracted metadata and MCP configuration
- Generated gemini-extension.json and GEMINI.md
- Transformed allowed-tools to excludeTools
- Created settings schema from environment variables
✓ Conversion complete! Ready to install with: gemini extensions install ./database-helper
Convert Gemini Extension to Claude
User: "Port my Gemini extension to Claude Code"
Claude: I'll convert this Gemini extension to a Claude skill...
- Detected Gemini extension (found gemini-extension.json)
- Extracted manifest and context file
- Generated SKILL.md with YAML frontmatter
- Created .claude-plugin/marketplace.json
- Converted excludeTools to allowed-tools
✓ Conversion complete! Install with: cp -r ./extension ~/.claude/skills/
Create Universal Extension
User: "Make this skill work on both platforms"
Claude: I'll create a universal extension structure...
- Analyzing current configuration
- Generating both Claude and Gemini files
- Moving shared content to shared/ directory
- Updating MCP server paths for both platforms
✓ Universal extension created! Works with both Claude Code and Gemini CLI

Advanced Features

Pull Request Generation

Create a PR to add dual-platform support to the parent repository:

Example requests:

  • "Convert this skill and create a PR to add Gemini support"
  • "Generate a pull request with the universal version"
Fork and Dual Setup

Create a fork with both platform configurations:

Example requests:

  • "Fork this repo and set it up for both platforms"
  • "Create a dual-platform fork I can use with both CLIs"
Validation Only

Check compatibility without converting:

Example requests:

  • "Validate this skill's conversion to Gemini"
  • "Check if this extension can be ported to Claude"
  • "What needs to change to make this universal?"

Configuration

This skill operates directly on filesystem directories and doesn't require external configuration. It uses:

  • File system access to read and write skill/extension files
  • Git operations for PR and fork features
  • GitHub CLI (gh) for repository operations

Safety Features

  • Non-destructive: Creates new files, doesn't modify source unless explicitly requested
  • Validation: Checks output before completion
  • Reporting: Clear summary of changes made
  • Rollback friendly: All changes are standard file operations

Limitations

Some aspects may require manual review:

  • Custom slash commands (platform-specific syntax)
  • Complex MCP server configurations with multiple servers
  • Platform-specific scripts that don't translate directly
  • Edge cases in tool restriction mapping

These will be flagged in the conversion report.

Technical Details

Tool Restriction Conversion

Claude → Gemini (Whitelist → Blacklist):

  • Analyze allowed-tools list
  • Generate exclude patterns for all other tools
  • Special handling for wildcard permissions

Gemini → Claude (Blacklist → Whitelist):

  • List all available tools
  • Remove excluded tools
  • Generate allowed-tools list
Settings Inference

When converting Claude → Gemini, environment variables in MCP config become settings:

javascript
// MCP env var
"env": { "DB_HOST": "${DB_HOST}" }

// Becomes Gemini setting
"settings": [{
  "name": "DB_HOST",
  "description": "Database host",
  "default": "localhost"
}]
Path Transformation

Claude uses relative paths, Gemini uses variables:

javascript
// Claude
"args": ["mcp-server/index.js"]

// Gemini
"args": ["${extensionPath}/mcp-server/index.js"]

For implementation details, see the repository at https://github.com/jduncan-rva/skill-porter

© jduncan-rva, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 49 other files in the repository root of jduncan-rva/skill-porter.

  • SKILL.md
  • .claude-plugin/marketplace.json
  • .gitignore
  • CONTRIBUTING.md
  • GEMINI.md
  • LICENSE
  • README.md
  • TEST_RESULTS.md
  • examples/README.md
  • examples/api-connector-gemini/GEMINI.md
  • examples/api-connector-gemini/gemini-extension.json
  • examples/before-after/api-connector-converted/.claude-plugin/marketplace.json
  • examples/before-after/api-connector-converted/GEMINI.md
  • examples/before-after/api-connector-converted/SKILL.md
  • examples/before-after/api-connector-converted/gemini-extension.json
  • … and 35 more

Open the folder on GitHubat commit 7ad93ec

Compare with similar skills

Skill Porter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Skill Porter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Skill Porter this skilljduncan-rva/skill-porter191—~2kAutomated safety check: NotesMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official38k11 repos~3.1kAutomated safety check: PassApache-2.0
MemPalace Memory SearchMemPalace/mempalace60k—~1.4kAutomated safety check: PassMIT
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    38k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • MemPalace Memory Search

    MemPalace/mempalace

    Mines project files and conversation exports into a local, searchable memory palace and recalls past work by semantic search through the mempalace CLI.

    60k GitHub stars~1.4k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated today
    Agent WorkflowsAuto-check passed

Categories

Questions about Skill Porter

What does Skill Porter do?

Converts Claude Code skills to Gemini CLI extensions and vice versa. Skill Porter is an agent skill from jduncan-rva/skill-porter. Converts Claude Code skills to Gemini CLI extensions and vice versa.

When should I use Skill Porter?

Skill Porter fits situations like: the user wants to make a skill cross-platform compatible; port a skill between platforms; create a universal extension that works on both Claude Code and Gemini CLI.

How do I install Skill Porter in Claude Code?

Run `npx skills add jduncan-rva/skill-porter --skill skill-porter -a claude-code`. Or copy the skill folder (the jduncan-rva/skill-porter repository) into .claude/skills/skill-porter in your project. Claude Code loads it when a task matches its description.

How do I install Skill Porter in Codex?

Run `npx skills add jduncan-rva/skill-porter --skill skill-porter -a codex`. Or copy the skill folder (the jduncan-rva/skill-porter repository) into .agents/skills/skill-porter in your project. Codex loads it when a task matches its description.

Can I use Skill Porter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jduncan-rva/skill-porter --skill skill-porter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-porter, .gemini/skills/skill-porter, .github/skills/skill-porter and .opencode/skills/skill-porter in your project.

What does Skill Porter need to run?

SKILL.md names no scripts, command-line tools or credentials: Skill Porter is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash.

Does Skill Porter access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Skill Porter safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Skill Porter use?

Skill Porter is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Skill Porter use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Skill Porter?

Skills that share tags, products or a category with Skill Porter: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and MemPalace Memory Search (MemPalace/mempalace, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Skill Porter?

jduncan-rva (a GitHub user) maintains it in jduncan-rva/skill-porter, which has 191 GitHub stars. The repository was last updated on December 2, 2025.

Source: jduncan-rva/skill-porter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.