/SKILL.md
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.
npx skillsauth add acidicsoil/skill-porter skill-porterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill automates the conversion between Claude Code skills and Gemini CLI extensions, enabling true cross-platform AI tool development.
Convert skills and extensions between platforms while preserving functionality:
Example requests:
Automatically analyzes directory structure to determine source platform:
Detection criteria:
SKILL.md with YAML frontmatter or .claude-plugin/marketplace.jsongemini-extension.json or GEMINI.md context fileExample requests:
Intelligently converts between platform-specific formats:
Conversions handled:
allowed-tools (whitelist) ↔ excludeTools (blacklist)Example requests:
Maintains Model Context Protocol server configurations across platforms:
Example requests:
Ensures converted output meets platform requirements:
Validation checks:
Example requests:
When you request a conversion, I will:
SKILL.md + .claude-plugin/marketplace.jsonGEMINI.md + gemini-extension.jsonallowed-tools (whitelist - only listed tools permitted)excludeTools (blacklist - listed patterns blocked)${extensionPath} variable substitutionUser: "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
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/
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
Create a PR to add dual-platform support to the parent repository:
Example requests:
Create a fork with both platform configurations:
Example requests:
Check compatibility without converting:
Example requests:
This skill operates directly on filesystem directories and doesn't require external configuration. It uses:
gh) for repository operationsSome aspects may require manual review:
These will be flagged in the conversion report.
Claude → Gemini (Whitelist → Blacklist):
Gemini → Claude (Blacklist → Whitelist):
When converting Claude → Gemini, environment variables in MCP config become settings:
// MCP env var
"env": { "DB_HOST": "${DB_HOST}" }
// Becomes Gemini setting
"settings": [{
"name": "DB_HOST",
"description": "Database host",
"default": "localhost"
}]
Claude uses relative paths, Gemini uses variables:
// 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
development
A simple example skill for demonstration purposes
development
Formats code files using prettier and eslint. Use when the user wants to format code, fix linting issues, or clean up code style.
development
Connect to REST APIs, manage authentication, and process responses. Use for API integration tasks.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.