A boilerplate extension for Claude Code and Gemini CLI.
.
├── gemini-extension.json # Gemini CLI extension manifest
├── GEMINI.md # Skill includes injected into Gemini context
├── pyproject.toml # Python package (uv)
├── src/
│ └── workshop_extension/
│ └── mcp/
│ ├── __init__.py # FastMCP app + tool registration
│ ├── __main__.py # Entry point: python -m workshop_extension.mcp
│ └── hello.py # Example tool (replace with yours)
├── agents/
│ └── workshop.md # Agent definition (Claude Code subagent)
├── skills/
│ └── hello-world/
│ └── SKILL.md # Skill definition
└── hooks/
├── hooks.json # SessionStart / SessionEnd hook config
├── run-hook.cmd # Cross-platform hook runner (Windows + Unix)
├── session-start # Runs on session start
└── session-end # Runs on session end
Add to your ~/.claude/settings.json (or project .claude/settings.json):
{
"mcpServers": {
"workshop-extension": {
"command": "uv",
"args": ["run", "--directory", "/path/to/24-880-workshop", "python", "-m", "workshop_extension.mcp"],
"env": {
"PYTHONPATH": "/path/to/24-880-workshop/src",
"WORKSHOP_PROJECT_DIR": "${workspacePath}"
}
}
}
}gemini extension install /path/to/24-880-workshopThe gemini-extension.json manifest is picked up automatically.
# Install dependencies
uv sync
# Run the MCP server directly (for testing)
uv run python -m workshop_extension.mcp- Create
src/workshop_extension/mcp/my_tool.pywith aregister_my_tool(app)function - Import and register it in
src/workshop_extension/mcp/__init__.py - Add a corresponding skill in
skills/my-skill/SKILL.md - Reference the skill in
GEMINI.mdwith@./skills/my-skill/SKILL.md