Thank you for your interest in contributing to TN CLI! This guide will help you get started with contributing to the project.
Our project is built on the principles of collaboration, quality, and respect. We believe that:
- Attribution Matters: Everyone gets credit for their work
- Knowledge Sharing: Improvements benefit the entire community
- Quality Focus: Prioritize well-crafted solutions over quantity
- Practical Application: Solutions should address real-world challenges
- Bash or Zsh shell
- Git
justcommand runner (installed automatically with TN CLI)
-
Clone the repository
git clone https://github.com/thinknimble/tn-cli.git cd tn-cli -
Install TN CLI locally for development
./install.sh
-
Test your installation
tn
You should see a list of available recipes.
- Use the GitHub issue tracker to report bugs
- Provide clear descriptions and steps to reproduce
- Include relevant error messages and system information
- Fork the repository and create a feature branch
- Write clear, concise commit messages
- Test your commands thoroughly
- Update documentation as needed
- Submit a pull request with a clear description
- Fix typos and clarify existing documentation
- Add examples and use cases
- Document new commands in the README
- Add new useful commands to the
justfile - Follow existing naming conventions
- Include helpful documentation comments
- Consider cross-platform compatibility
- Use descriptive command names with hyphens (e.g.,
aws-make-s3-bucket) - Group related commands with comment headers
- Include helpful descriptions using
#comments - Use consistent parameter naming conventions
- Provide sensible defaults for optional parameters
- Follow POSIX shell conventions where possible
- Use clear variable names
- Include error handling
- Test on both macOS and Linux when possible
- Use clear, descriptive commit messages
- Start with a verb in the present tense (e.g., "Add", "Fix", "Update")
- Reference issue numbers when applicable
- ✅ Give credit to others
- ✅ Use respectful language
- ✅ Accept constructive feedback
- ✅ Focus on community benefits
- ✅ Thoroughly test contributions
- ❌ Include sensitive information or credentials
- ❌ Submit untested commands
- ❌ Remove others' attribution
- ❌ Use aggressive communication
- ❌ Submit duplicate or low-effort contributions
-
Test your command locally:
just -f justfile <your-command>
-
Test with the installed CLI:
tn <your-command>
-
Test on different platforms (macOS, Linux) if possible
-
Verify tab completions work correctly
- Ensure commands handle errors gracefully
- Test with various input parameters
- Verify cross-platform compatibility
- Check that help text is clear and accurate
When adding new commands to the justfile:
- Choose the right section: Place your command in the appropriate category or create a new one
- Document thoroughly: Include a description comment above your recipe
- Handle parameters: Use sensible defaults and validate inputs
- Consider dependencies: Document any required tools or setup
- Update README: Add your command to the Commands Reference section
Example recipe structure:
# Description of what this command does
command-name param1 optional_param='default':
#!/usr/bin/env bash
set -euo pipefail
# Your command implementation hereThe install script at https://nimbl.sh/install is served via GitHub Pages.
- Domain:
nimbl.shpoints to GitHub Pages via A records (192.30.252.153,192.30.252.154) - Source: GitHub Pages serves from the root of the
gh-pagesbranch - Important:
gh-pagesis not automatically updated whenmainchanges. Theinstallfile must be manually kept in sync.
After merging changes to install on main, update gh-pages:
git checkout gh-pages
git checkout main -- install
git commit -m "Sync install script from main"
git push origin gh-pages
git checkout mainGitHub Pages will rebuild within a minute or two and the updated script will be live at https://nimbl.sh/install.
By contributing to TN CLI, you agree that your contributions will be licensed under the Apache License 2.0.
We value all contributions to the project. Contributors will be:
- Listed in the project's contributor list
- Credited in release notes for significant contributions
- Acknowledged in the documentation for major features
If you need help or have questions:
- Check the existing documentation
- Search through existing issues
- Ask in discussions or create a new issue
- Contact the maintainers
- Find an issue labeled "good first issue" or identify a command you'd like to add
- Fork the repository and create a feature branch
- Make your changes to the
justfile - Test your changes locally
- Update the README.md if you've added new commands
- Submit a pull request
Thank you for contributing to TN CLI!