Skip to content

Gemini CLI

Vendor: Google | Homepage: https://geminicli.com/docs/ | CLI Command: gemini | Version Detection: gemini --version

ComponentSupport LevelNotes
SkillsNative
MCP ServersNative
LSP ServersExperimentalTS/JS only
HooksNative11 events
AgentsExperimental.gemini/agents/ directory
CommandsNativeTOML format at .gemini/commands/
InstructionsNative
ComponentScopePath
Skillsuser~/.gemini/skills/{name}/SKILL.md
Skillsproject.gemini/skills/{name}/SKILL.md
Agentsproject.gemini/agents/{name}.md
Commandsproject.gemini/commands/{name}.toml
Instructionsuser~/.gemini/GEMINI.md
InstructionsprojectGEMINI.md
ComponentScopeFileFormatKey
Hooksuser~/.gemini/settings.jsonjsonhooks
Hooksproject.gemini/settings.jsonjsonhooks
MCP Serversuser~/.gemini/settings.jsonjsonmcpServers
MCP Serversproject.gemini/settings.jsonjsonmcpServers
LSP Serversuser~/.gemini/settings.jsonjsonlspServers
PropertyValue
FilenameGEMINI.md
Content Formatmarkdown
ScopePath
user~/.gemini/GEMINI.md
projectGEMINI.md

Type: Bundle

PropertyValue
Install Directory~/.gemini/extensions/{package}
Manifestgemini-extension.json (required: name)
Registrationdirectory-presence — ~/.gemini/extensions/

Layout:

ComponentPath
skillsskills/{name}/SKILL.md
agentsagents/{name}.md
commandscommands/{name}.toml
hookshooks.json
mcp_servers.mcp.json
Canonical EventHost Event
pre-tool-useBeforeTool
post-tool-useAfterTool
session-startSessionStart
session-endSessionEnd
notificationNotification
pre-compactPreCompress
  • BeforeAgent — Fires before an agent is invoked.
  • AfterAgent — Fires after an agent completes execution.
  • BeforeModel — Fires before a model request is sent.
  • AfterModel — Fires after a model response is received.
  • BeforeToolSelection — Fires before the tool selection step.

command

PropertyValue
Supportedtrue
Transportsstdio, sse, streamable-http
Env PrefixNone
ScopePath
user~/.gemini/settings.json
project.gemini/settings.json
PropertyValue
Default~/.gemini
Env OverrideNone
CapabilitySupported
Lazy Loadingfalse
Hot Reloadfalse
Managed Settingsfalse