Skip to content

feat: add multi-skill plugin conversion support#1

Open
arakasi1 wants to merge 10 commits into
jduncan-rva:mainfrom
arakasi1:feature/multi-skill-plugin-support
Open

feat: add multi-skill plugin conversion support#1
arakasi1 wants to merge 10 commits into
jduncan-rva:mainfrom
arakasi1:feature/multi-skill-plugin-support

Conversation

@arakasi1

@arakasi1 arakasi1 commented Jan 9, 2026

Copy link
Copy Markdown

Summary

Adds support for converting Claude Code plugins with multiple skills, commands, and agents to Gemini CLI format.

  • Multi-skill plugins: Convert skills/*/SKILL.md directories with multiple skills
  • Commands conversion: Convert commands/*.md to Gemini's commands/*.toml format
  • Agents conversion: Convert agents/*.md to Gemini commands (Gemini has no native agent system)
  • Universal documentation: Add CLAUDE.md symlink so documentation works on both platforms
  • Format reference: Add Gemini skills format documentation

Changes

File Description
src/converters/claude-to-gemini.js Multi-skill detection, commands/agents extraction and conversion
src/converters/gemini-to-claude.js Handle multi-skill Gemini extensions
src/analyzers/detector.js Detect plugin structure (multi-skill vs single)
src/analyzers/validator.js Validate multi-skill output
src/cli.js, src/index.js CLI integration
README.md, SKILL.md, GEMINI.md Documentation updates
CLAUDE.md Symlink to GEMINI.md for universal support
GEMINI_SKILLS_FORMAT.md Format reference documentation

Test plan

  • Convert a single-skill Claude skill to Gemini
  • Convert a multi-skill Claude plugin to Gemini
  • Verify commands are converted to TOML format
  • Verify agents are converted to commands
  • Test with --legacy flag for older Gemini CLI versions
  • Install converted extension and verify skills are discovered

Generated with Claude Code

arakasi1 and others added 10 commits January 9, 2026 16:13
- Convert Claude plugins with multiple skills (skills/*/SKILL.md)
- Convert commands/*.md to Gemini commands/*.toml format
- Convert agents/*.md to Gemini commands (no native agent support)
- Add CLAUDE.md symlink for universal platform documentation
- Add Gemini skills format reference documentation
- Update package description for native skills support

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove version headers (v2.0, v2.1) from documentation
- Keep original "Claude:" labels in examples
- Focus documentation on feature additions only
- Let maintainer control versioning

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix null reference when accessing frontmatter.name in multi-skill mode
- Fall back to single-skill mode when all skills in skills/ are invalid
- Fix empty description edge case in agent conversion
- Fix template path resolution for global npm install
- Fix false positive warning for missing GEMINI.md in native-skill format
- Use js-yaml for proper multi-line YAML parsing in validation
- Include all Gemini platform variants in metadata extraction

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace inline escaping logic with the centralized _safeTomlDescription
helper in both agent and command conversion code paths. This ensures
consistent truncation-before-escaping behavior, preventing broken escape
sequences from mid-character truncation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Claude commands reference skills with namespace "plugin-name:skill-name"
(e.g., "superpowers:brainstorming"), but Gemini CLI requires just the
skill name. Store plugin name during metadata extraction and strip
the namespace prefix from command prompts during conversion.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant