Thank you for your interest in contributing to SecureShell! We welcome contributions from the community.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Clear title and description
- Steps to reproduce the problem
- Expected behavior vs actual behavior
- Environment details (OS, Python/Node version, SecureShell version)
- Code samples if applicable
Enhancement suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the proposed feature
- Explain why this enhancement would be useful
- Include code examples if applicable
- Fork the repo and create your branch from
main - Make your changes
- Add tests if applicable
- Update documentation
- Ensure tests pass
- Submit your pull request
# Clone the repository
git clone https://github.com/divagr18/secureshell.git
cd secureshell
# Install in development mode
pip install -e .
# Install development dependencies
pip install -e ".[dev,test]"
# Run tests
pytest# Navigate to TypeScript SDK
cd secureshell-ts
# Install dependencies
npm install
# Build
npm run build
# Run type checking
npm run typecheck- Update Documentation: Ensure README and relevant docs are updated
- Add Tests: New features should include tests
- Follow Style Guidelines: See below
- Update CHANGELOG: Add your changes to the appropriate section
- One Feature Per PR: Keep pull requests focused
- Descriptive Commits: Use clear, descriptive commit messages
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Example:
feat(gatekeeper): add support for custom risk thresholds
Added configuration option to customize risk threshold levels
for different deployment environments.
Closes #123
- Follow PEP 8
- Use Black for formatting
- Use type hints where applicable
- Maximum line length: 100 characters
- Write docstrings for all public functions/classes
def evaluate_command(command: str, reasoning: str) -> GatekeeperResponse:
"""
Evaluate a command for security risks.
Args:
command: The shell command to evaluate
reasoning: The agent's reasoning for running the command
Returns:
GatekeeperResponse with decision and reasoning
"""
pass- Follow the existing code style
- Use ESLint configuration
- Use TypeScript strict mode
- Write JSDoc comments for public APIs
- Maximum line length: 100 characters
/**
* Evaluate a command for security risks
* @param command - The shell command to evaluate
* @param reasoning - The agent's reasoning for running the command
* @returns Promise resolving to GatekeeperResponse
*/
async evaluateCommand(command: string, reasoning: string): Promise<GatekeeperResponse> {
// implementation
}To add support for a new LLM provider:
- Create
secureshell/providers/yourprovider.py - Implement
BaseLLMProviderinterface - Add configuration in
SecureShellConfig - Add example in
cookbook/providers/ - Update documentation
- Create
src/providers/yourprovider.ts - Implement
BaseLLMProviderinterface - Export from
src/index.ts - Add example in
cookbook/secureshell-ts/providers/ - Update documentation
# Run all tests
pytest
# Run with coverage
pytest --cov=secureshell
# Run specific test file
pytest tests/test_gatekeeper.py# Run tests (when added)
npm test
# Type checking
npm run typecheck- Update README.md for user-facing changes
- Update API documentation for new features
- Add examples for new functionality
- Keep CHANGELOG.md up to date
Feel free to:
- Open an issue for discussion
- Join our Discussions
- Reach out to maintainers
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to SecureShell!