Skip to content

fix: reclassify geminicli as native skill with global support#975

Open
mrfelton wants to merge 2 commits intodyoshikawa:mainfrom
LN-Zap:fix/geminicli-native-skills
Open

fix: reclassify geminicli as native skill with global support#975
mrfelton wants to merge 2 commits intodyoshikawa:mainfrom
LN-Zap:fix/geminicli-native-skills

Conversation

@mrfelton
Copy link

@mrfelton mrfelton commented Feb 6, 2026

Summary

Fixes #974 — Reclassifies the geminicli target from a "simulated" skill to a native ToolSkill, reflecting Gemini CLI's native skills support.

Problem

GeminiCliSkill currently extends SimulatedSkill and is marked with supportsSimulated: true, which means:

  • Without simulateSkills: true, geminicli is excluded from skill generation
  • .gemini/skills/ never gets populated by default
  • The source comment "Since Gemini CLI doesn't have native skill support" is outdated

Changes

src/features/skills/geminicli-skill.ts

  • Complete rewrite from SimulatedSkillToolSkill (native base class)
  • New GeminiCliSkillFrontmatterSchema (zod/mini looseObject with name + description)
  • Proper constructor with global mode support
  • Full native lifecycle: validate(), getFrontmatter(), getBody(), toRulesyncSkill(), fromRulesyncSkill(), fromDir(), forDeletion(), isTargetedByRulesyncSkill(), getSettablePaths()
  • Both project (.gemini/skills/) and global (~/.gemini/skills/) modes supported

src/features/skills/skills-processor.ts

  • Updated geminicli factory metadata: supportsSimulated: false, supportsGlobal: true

src/features/skills/geminicli-skill.test.ts

  • Comprehensive test rewrite covering: constructor, validation, schema (including loose object behavior), fromDir, getSettablePaths (project + global), conversion (toRulesyncSkill, fromRulesyncSkill, fromRulesyncSkill with global), isTargetedByRulesyncSkill, forDeletion

src/features/skills/skills-processor.test.ts

  • Updated getToolTargets() assertions: geminicli now appears in default/native target lists
  • Removed geminicli from simulated target list assertions
  • Added geminicli to global target list assertions

Evidence

Gemini CLI officially supports the Agent Skills open standard:

Testing

All existing tests pass with the changes. Test suite: 139 files, 3696 tests passing.

Gemini CLI now has native skill support: it reads .gemini/skills/
directories with SKILL.md files out of the box.

Changes:
- Convert GeminiCliSkill from SimulatedSkill to ToolSkill (native)
- Add proper frontmatter schema, validation, and toRulesyncSkill()
- Enable global mode support (~/.gemini/skills/)
- Update skills-processor metadata: supportsSimulated=false, supportsGlobal=true
- Rewrite tests for native skill behavior

Closes dyoshikawa#974
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.

geminicli target should be native, not simulated — Gemini CLI has native skills support

1 participant