A comprehensive extension for Gemini CLI that enables project-specific skill development via a slash command interface.
- Slash Command System: Robust
/create-skilland other commands for skill management - Modular Templates: Customizable skill templates with parameters for different languages and frameworks
- Seamless Integration: Works with existing Gemini CLI workflows and dependency resolution
- Error Handling: Comprehensive validation and user-friendly error messages
- Performance Optimized: Lazy-loading and caching for frequently used templates
- Interactive & Headless Modes: Supports both guided creation and CI/CD automation
- Plugin System: Extensible architecture for third-party skill contributions
- Cross-Platform: Compatible with Linux, macOS, and Windows
- Node.js 16.0.0 or higher
- Gemini CLI installed
# Clone the repository
git clone https://github.com/involvex/gemini-cli-skill-creator
cd gemini-cli-skill-creator
# Install dependencies
npm install
# Build the extension
npm run build
# Install the extension to Gemini CLI
npm run install-extFor automated installation and verification:
# Run the installation script
npm run verifyThis will build the project, run tests, and verify the installation.
# Interactive mode (recommended for first-time users)
skill-creator create my-skill
# With options
skill-creator create my-skill --template basic --description "A custom skill" --author "Your Name"skill-creator list-templatesskill-creator validate my-skillOnce installed, you can use slash commands directly in Gemini CLI:
/create-skill my-skill
/list-templates
/validate-skill my-skill
Create your own skill templates by adding them to the templates/ directory:
templates/
├── my-template/
│ ├── template.json # Template configuration
│ ├── SKILL.md # Template for SKILL.md file
│ ├── scripts/ # Scripts directory
│ ├── references/ # Documentation
│ └── assets/ # Additional resources
Example template.json:
{
"description": "My custom skill template",
"parameters": [
{
"name": "framework",
"type": "choice",
"description": "Target framework",
"required": true,
"choices": ["react", "vue", "angular"]
}
]
}Extend the extension with custom plugins. Create a plugin in the plugins/ directory:
// plugins/my-plugin/index.js
class MyPlugin {
async activate(context) {
// Register custom commands
context.registerCommand("my-command", async args => {
return "Custom command executed!";
});
}
async deactivate() {
// Cleanup
}
}
module.exports = MyPlugin;Skills created by this extension follow the standard Gemini CLI skill format:
my-skill/
├── SKILL.md # Skill metadata and instructions (required)
├── scripts/ # Executable scripts and tools
├── references/ # Documentation and examples
└── assets/ # Templates and binary resources
---
name: my-skill
description: What this skill does and when to use it
author: Your Name
language: javascript
---
# My Skill
Detailed instructions for using this skill...
## Usage
1. When to activate this skill
2. Required inputs
3. Expected outputs
4. ExamplesThe extension can be configured via environment variables:
LOG_LEVEL: Set logging level (error, warn, info, debug)NODE_ENV: Set to 'production' to disable console loggingSKILL_TEMPLATES_DIR: Custom templates directorySKILL_CACHE_DIR: Custom cache directory
npm run buildnpm testnpm run lint├── src/
│ ├── index.ts # Main entry point
│ ├── SkillCreatorExtension.ts # Core extension class
│ ├── commands/
│ │ └── CommandRegistry.ts # Command management
│ ├── templates/
│ │ └── SkillTemplateManager.ts # Template handling
│ ├── plugins/
│ │ └── PluginManager.ts # Plugin system
│ └── utils/
│ ├── Logger.ts # Logging utility
│ └── ErrorHandler.ts # Error handling
├── templates/ # Built-in templates
├── plugins/ # Extension plugins
├── bin/
│ └── skill-creator.js # CLI interface
├── dist/ # Compiled output
├── package.json
├── tsconfig.json
└── README.md
Main class for the extension.
const extension = new SkillCreatorExtension(config);
// Execute commands
const result = await extension.executeCommand("create-skill", ["my-skill"]);
// Shutdown
await extension.shutdown();Templates support the following parameter types:
string: Text inputnumber: Numeric inputboolean: True/false valueschoice: Selection from predefined options
- Template not found: Ensure the template name is correct and exists in
templates/ - Permission errors: Check file permissions and ensure write access to skill directories
- Build failures: Ensure all dependencies are installed with
npm install - Command not recognized: Verify the extension is properly installed in Gemini CLI
TEMPLATE_NOT_FOUND: Specified template doesn't existMISSING_REQUIRED_PARAMETERS: Required parameters not providedSKILL_ALREADY_EXISTS: Skill with that name already existsINVALID_PARAMETER_TYPE: Parameter value doesn't match expected typeFILESYSTEM_ERROR: File system operation failedVALIDATION_ERROR: Skill configuration validation failed
- Check the logs in
logs/combined.log - Run
skill-creator --helpfor command usage - Use
/helpin Gemini CLI for available slash commands
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
- Follow TypeScript best practices
- Add comprehensive tests for new features
- Update documentation for API changes
- Ensure cross-platform compatibility
- Use semantic commit messages
MIT License - see LICENSE file for details.
- Initial release
- Basic skill creation functionality
- Template system
- Plugin architecture
- CLI interface
- Cross-platform support