🤝Contributing
Thank you for your interest in contributing to NeurosLink AI! We welcome contributions from the community and are excited to work with you.
📋 Table of Contents
📜 Code of Conduct
Please read and follow our Code of Conduct. We are committed to providing a welcoming and inclusive environment for all contributors.
🚀 How to Contribute
Reporting Issues
Check existing issues - Before creating a new issue, check if it already exists
Use issue templates - Use the appropriate template for bugs, features, or questions
Provide details - Include reproduction steps, environment details, and expected behavior
Suggesting Features
Open a discussion - Start with a GitHub Discussion to gather feedback
Explain the use case - Help us understand why this feature would be valuable
Consider alternatives - What workarounds exist today?
Contributing Code
Fork the repository - Create your own fork of the project
Create a feature branch -
git checkout -b feature/your-feature-nameMake your changes - Follow our coding standards
Write tests - Ensure your changes are tested
Submit a pull request - Follow our PR template
🛠️ Development Setup
Prerequisites
Node.js 18+ and npm 9+
Git
At least one AI provider API key (OpenAI, Google AI, etc.)
Local Development
Running Examples
📁 Project Structure
Key Components
BaseProvider - Abstract base class all providers inherit from
ProviderRegistry - Central registry for provider management
CompatibilityFactory - Handles provider creation and compatibility
MCP Integration - Built-in and external tool support
💻 Coding Standards
TypeScript Style Guide
Best Practices
Use the factory pattern - All providers should extend BaseProvider
Type everything - No implicit
anytypesHandle errors gracefully - Use try-catch and provide meaningful errors
Document public APIs - Use JSDoc comments for all public methods
Keep functions small - Single responsibility principle
Write tests first - TDD approach encouraged
Naming Conventions
Files:
kebab-case.ts(e.g.,baseProvider.ts)Classes:
PascalCase(e.g.,OpenAIProvider)Interfaces:
PascalCase(e.g.,GenerateOptions)Functions:
camelCase(e.g.,createProvider)Constants:
UPPER_SNAKE_CASE(e.g.,DEFAULT_TIMEOUT)
🧪 Testing Guidelines
Test Structure
Testing Requirements
Unit tests - For all public methods
Integration tests - For provider interactions
Mock external calls - Don't hit real APIs in tests
Test edge cases - Empty inputs, timeouts, errors
Maintain coverage - Aim for >80% code coverage
Running Tests
🔄 Pull Request Process
Before Submitting
Update documentation - Keep docs in sync with code changes
Add tests - New features need tests
Run checks -
npm run lint && npm run type-check && npm testUpdate CHANGELOG - Add your changes under "Unreleased"
PR Template
Review Process
Automated checks - CI/CD must pass
Code review - At least one maintainer approval
Documentation review - Docs team review if needed
Testing - Manual testing for significant changes
📚 Documentation
Documentation Standards
Keep it current - Update docs with code changes
Show examples - Every feature needs examples
Explain why - Not just what, but why
Test code snippets - Ensure examples actually work
Update the matrix - Mark coverage in
docs/tracking/FEATURE-DOC-MATRIX.mdwhen new user-facing work lands.
Documentation Structure
API Reference - Generated from TypeScript types
Guides - Step-by-step tutorials
Examples - Working code samples
Architecture - System design documentation
Writing Documentation
🌟 Community
Getting Help
GitHub Discussions - Ask questions and share ideas
Issues - Report bugs and request features
Discord - Join our community chat (coming soon)
Ways to Contribute
Code - Fix bugs, add features
Documentation - Improve guides and examples
Testing - Add test coverage
Design - UI/UX improvements
Community - Help others, answer questions
Recognition
We value all contributions! Contributors are:
Listed in our Contributors page
Mentioned in release notes
Given credit in the changelog
🎯 Current Focus Areas
We're particularly interested in contributions for:
Provider Support - Adding new AI providers
Tool Integration - MCP external server activation
Performance - Optimization and benchmarking
Documentation - Tutorials and guides
Testing - Increasing test coverage
📝 License
By contributing to NeurosLink AI, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to NeurosLink AI! 🚀
Last updated
Was this helpful?

