We welcome contributions to gh-manager-cli! This document provides guidelines for contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Coding Standards
- Testing
- Documentation
- Issue Guidelines
- Pull Request Guidelines
This project adheres to a code of conduct adapted from the Contributor Covenant. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment
- Create a branch for your changes
- Make your changes
- Test your changes
- Submit a pull request
- Node.js 18 or higher
- pnpm (recommended) or npm
- Git
# Clone your fork
git clone https://github.com/YOUR_USERNAME/gh-manager-cli.git
cd gh-manager-cli
# Install dependencies
pnpm install
# Build the project
pnpm build
# Run the CLI
node dist/index.js
# or link for development
pnpm link
gh-manager-clisrc/- Source codeui/- React/Ink UI componentsgithub.ts- GitHub API integrationconfig.ts- Configuration managementtypes.ts- TypeScript type definitions
dist/- Built output (gitignored).github/- GitHub Actions workflowsAGENTS.md- Project architecture and development guideTODOs.md- Project roadmap and task tracking
Use descriptive branch names:
feat/add-repository-actions- New featuresfix/sorting-bug- Bug fixesdocs/update-readme- Documentation changesrefactor/github-client- Code refactoring
We use Conventional Commits for automatic versioning and changelog generation:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat- New featurefix- Bug fixdocs- Documentation changesstyle- Code style changes (formatting, etc.)refactor- Code refactoringperf- Performance improvementstest- Adding or updating testsbuild- Build system changesci- CI/CD changeschore- Other changes
Examples:
feat: add repository deletion with confirmation modal
fix: resolve terminal rendering issues in SSH environments
docs: update installation instructions
refactor: extract GitHub API client to separate module
- Test thoroughly - Ensure your changes work across different terminals
- Update documentation - Update AGENTS.md if changing architecture
- Check TODOs.md - Mark relevant items as complete
- Follow code standards - Ensure TypeScript strict mode compliance
- Test terminal compatibility - Verify in multiple terminal apps
- Create a clear title - Will be auto-formatted to conventional commits
- Describe your changes - Explain what and why
- Reference issues - Link to related issues if applicable
- Update tests - Add or update tests for new functionality
- Check CI - Ensure all automated checks pass
- Use strict TypeScript - no
anytypes without justification - Provide comprehensive type definitions
- Use functional components with hooks for React/Ink
- Follow existing code patterns and conventions
- Terminal compatibility - Test in multiple terminal emulators
- Color usage - Use chalk for pre-coloring to avoid nested Text issues
- Performance - Keep terminal UIs fast and responsive
- Accessibility - Ensure keyboard navigation works intuitively
- Ink rendering - Use Box components for layout, avoid nested Text
- Terminal differences - Account for SSH vs native terminal rendering
- Virtualization - Consider performance with large repository lists
- API limits - Respect GitHub rate limits and provide clear feedback
- Test in multiple terminals (iTerm2, Terminal.app, SSH/Termius)
- Test with different window sizes
- Test with large numbers of repositories
- Test API error scenarios (network issues, invalid tokens)
- Test keyboard navigation thoroughly
- Verify sorting works correctly
- Test filtering functionality
Currently, the project relies primarily on manual testing. Automated testing contributions are welcome:
- Unit tests for utility functions
- Integration tests for GitHub API
- Snapshot tests for UI components (where feasible)
- AGENTS.md - For architectural changes or new development patterns
- README.md - For user-facing changes or installation updates
- TODOs.md - Mark completed items, add new planned features
- CONTRIBUTING.md - For process or guideline changes
- Keep README concise, point to detailed docs
- Use AGENTS.md for comprehensive technical documentation
- Maintain TODOs.md as the single source of truth for roadmap
- Include code examples where helpful
Include:
- Operating system and terminal app
- Node.js version
- Steps to reproduce
- Expected vs actual behavior
- Error messages or screenshots
Include:
- Use case and motivation
- Proposed solution or behavior
- Alternative solutions considered
- Impact on existing functionality
- Check AGENTS.md and README.md first
- Search existing issues
- Provide context about what you're trying to achieve
- Branch is up to date with main
- Commit messages follow conventional format
- Code follows TypeScript strict mode
- Changes tested in multiple terminals
- Documentation updated if needed
- TODOs.md updated if applicable
- No merge conflicts
- Automated checks - CI must pass
- Manual review - Code quality and architecture
- Testing - Functionality verification
- Documentation - Completeness check
- Merge - Squash merge with conventional commit title
# Start development mode with auto-rebuild
pnpm dev
# Build for production
pnpm build
# Test the built CLI
node dist/index.js
# Link for global testing
pnpm link
gh-manager-cliReleases are automated via semantic-release:
- Merge to main branch
- GitHub Actions runs semantic-release
- Version calculated from conventional commits
- CHANGELOG.md generated automatically
- GitHub release created with notes
- Check AGENTS.md for technical details
- Review TODOs.md for planned work
- Open an issue for questions or discussions
- Review existing issues and pull requests
Contributors will be recognized in:
- GitHub contributors list
- Release notes for significant contributions
- AGENTS.md for architectural contributions
Thank you for contributing to gh-manager-cli! 🚀