-
Notifications
You must be signed in to change notification settings - Fork 0
development Contributing
Phil Hennel edited this page Oct 20, 2025
·
1 revision
Guidelines for contributing to COPIMA CLI Crawler.
We welcome contributions of all kinds: bug reports, feature requests, documentation improvements, and code contributions.
Found a bug? Create an issue.
Include:
- COPIMA version (
copima-cli-crawler --version) - GitLab version
- Steps to reproduce
- Expected vs actual behavior
- Error messages and logs
Have an idea? Open a feature request.
Describe:
- What you want to accomplish
- Why it's useful
- How it should work
- Possible alternatives
Documentation improvements are always welcome:
- Fix typos or unclear explanations
- Add examples
- Expand guides
- Translate content
See Development Setup to get started.
- Check existing issues
- Comment that you'd like to work on it
- Wait for maintainer feedback
# Fork on GitHub, then:
git clone https://github.com/YOUR_USERNAME/copima-cli-crawler.git
cd copima-cli-crawler
git remote add upstream https://github.com/pdiegmann/copima-cli-crawler.gitgit checkout -b feature/my-feature
# or
git checkout -b fix/bug-descriptionBranch Naming:
-
feature/- New features -
fix/- Bug fixes -
docs/- Documentation -
refactor/- Code refactoring -
test/- Test additions
Follow our Code Style guidelines.
Best Practices:
- Make small, focused commits
- Write clear commit messages
- Add tests for new features
- Update documentation
- Keep changes minimal
# Run tests
bun run test
# Run linter
bun run lint
# Test CLI
bun run dev <command>
# Run E2E tests
bun run test:e2e:basicgit add .
git commit -m "Brief description of changes"Commit Message Format:
type: Brief description (50 chars or less)
More detailed explanation if needed. Wrap at 72 characters.
- List changes if helpful
- Reference issues: Fixes #123
Types:
-
feat:- New feature -
fix:- Bug fix -
docs:- Documentation -
style:- Formatting, no code change -
refactor:- Code restructuring -
test:- Test additions -
chore:- Maintenance
git push origin feature/my-featureThen create a pull request on GitHub.
Use the commit message format:
feat: Add support for custom rate limits
fix: Handle expired OAuth2 tokens correctly
docs: Add authentication troubleshooting guide
Include:
## Description
Brief summary of changes
## Motivation
Why this change is needed
## Changes
- List of changes
- Bullet points
## Testing
How you tested this
## Checklist
- [ ] Tests pass
- [ ] Linter passes
- [ ] Documentation updated
- [ ] CHANGELOG.md updated (if applicable)- Automated checks run (tests, lint)
- Maintainer reviews code
- Feedback addressed
- Approved and merged
Review Timeline:
- Small PRs: 1-3 days
- Large PRs: 1 week
- Documentation: 1-2 days
Use these libraries (don't add alternatives):
- Stricli - CLI framework
- Winston - Logging
- js-yaml - YAML handling
- picocolors - Terminal colors
- treeify - Tree formatting
- Extend existing files, don't create variants
- Reuse existing functions
- Check if library exists before implementing
- Prefer simple solutions
- Avoid over-engineering
- Write readable code
- All new features need tests
- Bug fixes need regression tests
- Aim for >80% coverage
# Unit tests (required)
src/myFeature.test.ts
# Integration tests (if applicable)
src/__tests__/integration/
# E2E tests (for major features)
examples/test-configs/import { describe, it, expect } from '@jest/globals';
describe('MyFeature', () => {
it('should do something correctly', () => {
const result = myFunction();
expect(result).toBe(expected);
});
it('should handle errors gracefully', () => {
expect(() => myFunction(invalid)).toThrow();
});
});/**
* Brief description of function.
*
* @param param1 - Description of param1
* @param param2 - Description of param2
* @returns Description of return value
*
* @example
* ```typescript
* const result = myFunction('value');
* ```
*/
export function myFunction(param1: string, param2: number): boolean {
// Implementation
}Update these when relevant:
-
README.md- For user-facing changes -
wiki/- For detailed documentation -
CHANGELOG.md- For release notes - Code comments - For complex logic
- Tokens or credentials
- API keys
- Private keys
- User data
- Input validation
- Secrets handling
- File operations
- Network requests
Before submitting:
- Code follows style guide
- Tests added and passing
- Linter passes
- Documentation updated
- CHANGELOG updated (if needed)
- Commit messages clear
- No debug code left in
- No commented-out code
- No console.log statements
- Security reviewed
- Questions: Open a GitHub Discussion
- Issues: Check existing issues first
- Chat: Comment on related issue
- Email: Contact maintainers
Contributors are recognized in:
- GitHub Contributors page
- CHANGELOG.md (for significant contributions)
- Release notes
Thank you for contributing! 🎉
Last Updated: 2025-10-20