Welcome to supercli! We're excited that you're interested in contributing. This guide will help you understand how to contribute effectively.
supercli is a universal capability router that bridges humans and AI agents to multiple CLI tools, APIs, MCP servers, and workflows. We welcome contributions in many forms:
- Code improvements - Bug fixes, new features, performance improvements
- Documentation - Improving guides, examples, and API references
- Plugin development - Creating new harnesses for CLI tools
- Issue reporting - Helping us identify and reproduce problems
- Community support - Answering questions and helping others
Before contributing, ensure you have:
- Node.js (LTS version recommended)
- npm or pnpm
- Git for version control
- Any CLI tools you want to create plugins for
# Fork the repository on GitHub
# Clone your fork
git clone https://github.com/YOUR_USERNAME/supercli.git
cd supercli
# Install dependencies
npm install
# Copy environment configuration
cp .env.example .env
# Run tests to verify setup
npm test- Check the Issues for bugs and feature requests
- Look for issues tagged with
good first issuefor beginner-friendly contributions - Review the Project Board for planned work
- Propose new features by opening a discussion
When reporting bugs, include:
- Clear title describing the issue
- Steps to reproduce - Be specific and detailed
- Expected vs actual behavior - What you expected vs what happened
- Environment details - OS, Node.js version, supercli version
- Relevant logs - Error messages, stack traces
- Minimal reproduction - If possible, a small code snippet that reproduces the issue
For new features:
- Describe the feature - What should happen and why it's useful
- Use cases - Who benefits and how they'll use it
- Alternatives considered - What other approaches did you consider?
- Implementation suggestions - If you have ideas, share them
## Description
[A clear description of the issue or feature request]
## Steps to Reproduce (for bugs)
1. Run '...'
2. Execute '...'
3. See error
## Expected Behavior
[What you expected to happen]
## Actual Behavior
[What actually happened]
## Environment
- OS: [e.g., macOS 14.0]
- Node.js: [e.g., v20.10.0]
- supercli: [e.g., v1.2.3]
## Additional Context
[Any other relevant information, logs, or screenshots]main- Stable release branchfeature/*- New featuresfix/*- Bug fixesdocs/*- Documentation improvements
# Create a feature branch
git checkout -b feature/my-new-feature
# Make your changes
# Write tests for new functionality
# Run tests before committing
npm test
# Commit with clear messages
git commit -m "feat: add support for new CLI tool X"
# Push and create PR
git push origin feature/my-new-featureWe follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat- New featurefix- Bug fixdocs- Documentation changesstyle- Code style (formatting, no logic change)refactor- Code refactoringtest- Adding or updating testschore- Maintenance tasks
Examples:
feat(plugins): add support for new CLI wrapper
fix(docker): resolve container listing timeout
docs(readme): update installation instructions
- Ensure tests pass - Run
npm testlocally - Update documentation - If adding features, update relevant docs
- Follow code style - Use existing patterns in the codebase
- Write meaningful PR description - Explain what and why
- Respond to feedback - Be responsive to review comments
For reviewers:
- Review code for correctness, not style (let linters handle formatting)
- Test the changes locally when possible
- Provide constructive, actionable feedback
- Focus on the code, not the person
For contributors:
- Keep PRs focused and reasonably sized
- Respond to feedback promptly
- Ask for clarification if feedback is unclear
/docs/- Main documentation directory/docs/plugins-how-to.md- Plugin development guide/docs/skills/- Skill system documentation/README.md- Project overview and quick start- Plugin-specific docs in
/plugins/*/README.md
- Use clear, concise language
- Include practical examples
- Keep code snippets up to date
- Use consistent formatting
When creating or updating plugins:
- Add a
README.mdin the plugin directory - Include installation instructions
- Document available commands
- Provide usage examples
- Reference the upstream CLI documentation
New bundled plugins use an isolated file convention — no shared file edits needed.
See our detailed Plugin Harness Development Guide for:
- Isolated plugin structure (
plugin.json+meta.json) - Command wrapping vs passthrough patterns
- Argument mapping configuration
- Testing and debugging tips
Before submitting a plugin for inclusion:
- Plugin has a valid
plugin.jsonmanifest - Plugin has a
meta.jsonwith description, tags, and optional has_learn - Binary dependency checks are configured
- Commands have clear descriptions
- JSON output is supported where applicable
- Plugin README includes installation and usage instructions
- Tests pass (if applicable)
- No hardcoded credentials or secrets
- No edits to
plugins/plugins.jsonorcli/plugin-install-guidance.js
Once your plugin is ready:
# Install locally for testing
supercli plugins install ./plugins/my-plugin
# Test functionality
supercli my-plugin --help
# Publish to community registry
supercli plugins publish ./my-pluginWe are committed to providing a welcoming, inclusive environment. By participating, you agree to:
- Be respectful and inclusive
- Welcome newcomers and help others learn
- Accept constructive criticism professionally
- Focus on what's best for the community
- Discussions - Use GitHub Discussions for questions
- Issues - For bugs and feature requests
- Documentation - Check docs/ before asking
- Answer questions in discussions
- Help newcomers get started
- Share your experience and knowledge
By contributing to supercli, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to supercli! Your help makes this project better for everyone.