Thanks for your interest in AICLI! We welcome contributions of all kinds—code, documentation, bug reports, and feature requests.
English | 中文
- Code of Conduct
- How to contribute
- Development workflow
- Coding guidelines
- Commit message convention
- Testing requirements
- Documentation requirements
- Pull request checklist
We are committed to providing a friendly, safe, and welcoming environment for everyone.
Examples of positive behavior:
- Use welcoming and inclusive language
- Respect differing viewpoints and experiences
- Accept constructive criticism gracefully
- Focus on what is best for the community
Unacceptable behavior:
- Harassment, threats, or discriminatory language
- Sexualized language or imagery
- Publishing others’ private information without explicit permission
Before filing a new issue, please search existing issues to avoid duplicates.
When reporting a bug, include:
- A clear title
- Steps to reproduce
- Expected behavior vs. actual behavior
- Logs / screenshots if applicable
- Environment info (OS, Go version, AICLI version, LLM provider)
When requesting a feature, include:
- What you want to achieve
- Why it’s useful (use cases)
- Any ideas on implementation (optional)
- Alternatives you considered
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run tests and linters (see below)
- Commit using the convention below
- Push to your fork and open a Pull Request
# Clone your fork
git clone https://github.com/your-username/aicli.git
cd aicli
# Add upstream remote
git remote add upstream https://github.com/studyzy/aicli.git
# Sync main branch
git checkout main
git pull upstream main
# Create a feature branch
git checkout -b feature/my-new-featureRecommended branch naming:
feature/feature-namefor new featuresfix/bug-descriptionfor bug fixesdocs/doc-updatefor documentation updatesrefactor/refactor-descriptionfor refactorstest/test-descriptionfor tests
- Follow Effective Go
- Prefer the standard library where possible
- Keep code simple, clear, and testable
- Wrap errors with context (use
%w)
This project uses Conventional Commits.
Format:
<type>(<scope>): <subject>
<body>
<footer>
Common types:
feat: a new featurefix: a bug fixdocs: documentation changesrefactor: code refactoringtest: test changeschore: tooling/build changesci: CI changes
Minimum expectations:
- New code should include tests
- Target coverage depends on the package; keep business-critical logic well tested
Run locally:
make test
make lint
# or
go test ./...When adding user-visible changes:
- Update
README.md/README_CN.mdas needed - Update relevant docs under
docs/ - Add usage examples when appropriate
Before opening a PR:
- Code follows project style
- Tests pass (
go test ./...) - Code is formatted (
go fmt ./...) - Linter passes (
make lintorgolangci-lint run) - Documentation updated
- PR description clearly explains the change
- Read the development guide:
docs/development.md - Search existing issues: https://github.com/studyzy/aicli/issues
- Ask in Discussions: https://github.com/studyzy/aicli/discussions