Contributing to NikCLI helps build the future of AI-assisted development. Whether you’re fixing bugs, adding features, improving documentation, or creating agents, your contributions make a real difference for developers worldwide.
Getting Started
Set up your development environment and make your first contribution
Code Contributions
Guidelines for submitting high-quality code contributions
Agent Development
Create and contribute new AI agents to the ecosystem
Community
Join our vibrant community of contributors and maintainers
# Required softwareNode.js 18+ (LTS recommended)npm 9+ or yarn 1.22+Git 2.30+# Recommended toolsVS Code with extensions:- TypeScript and JavaScript Language Features- ESLint- Prettier- Jest Runner- GitLens# System resourcesRAM: 8GB minimum (16GB recommended)Storage: 10GB free space for developmentOS: macOS, Linux, or Windows with WSL2
// Use strict TypeScript configuration// Always define explicit types for public APIsinterface AgentConfig { name: string; version: string; capabilities: AgentCapability[]; tools: ToolDefinition[];}// Use generic types when appropriateclass AgentManager<T extends BaseAgent> { private agents = new Map<string, T>(); register(agent: T): void { this.agents.set(agent.id, agent); } get(id: string): T | undefined { return this.agents.get(id); }}// Document complex functions with JSDoc/** * Executes an agent task with retry logic and error handling * @param agentId - The ID of the agent to execute * @param task - The task to execute * @param options - Execution options including retry and timeout settings * @returns Promise that resolves to the task result */async function executeAgentTask( agentId: string, task: AgentTask, options: ExecutionOptions = {}): Promise<AgentResult> { // Implementation...}
# Test coverage requirements- Unit tests: 90% statement coverage minimum- Integration tests: All service interactions- End-to-end tests: Critical user workflows- Performance tests: Response time benchmarks# Running different test suitesnpm run test:unit # Fast unit testsnpm run test:integration # Service integration tests npm run test:e2e # End-to-end browser testsnpm run test:performance # Performance benchmarksnpm run test:security # Security vulnerability tests# Test in different environmentsnpm run test:node-18 # Test on Node.js 18npm run test:node-20 # Test on Node.js 20npm run test:windows # Windows-specific testsnpm run test:linux # Linux-specific testsnpm run test:macos # macOS-specific tests
Single Responsibility: Each agent should have a clear, focused purpose
Copy
// Good: Focused agentexport class ReactTestingAgent extends BaseAgent { // Specialized in React component testing only}// Avoid: Overly broad agentexport class FullStackEverythingAgent extends BaseAgent { // Tries to do too many different things}
Domain Expertise: Agents should have deep knowledge in their domain
Copy
protected getSystemPrompt(): string { return ` You are a React testing expert with deep knowledge of: - Jest and React Testing Library best practices - Component testing strategies (unit, integration) - Mock strategies for complex components - Testing hooks and context providers - Accessibility testing with jest-axe - Visual regression testing approaches `;}
Error Handling
Copy
async execute(task: AgentTask): Promise<AgentResult> { try { // Validate inputs if (!this.canHandleTask(task)) { return { success: false, error: 'This agent cannot handle the requested task type', suggestions: ['Try the universal-agent or a more appropriate specialist'] }; } // Execute with timeout protection const result = await Promise.race([ this.processTask(task), this.timeoutPromise(30000) // 30 second timeout ]); return result; } catch (error) { // Log error for debugging but don't expose internal details this.logger.error('Agent execution failed', { agentId: this.id, taskId: task.id, error }); return { success: false, error: 'An unexpected error occurred while processing the task', suggestions: [ 'Try rephrasing the request', 'Check if all required context is provided', 'Consider breaking the task into smaller parts' ] }; }}
Structure: Follow established patterns and organization
Copy
---title: 'Clear, Descriptive Title'description: 'Concise description of the content'icon: 'relevant-icon'---## OverviewBrief introduction with key benefits/features<CardGroup cols={2}> <!-- Feature highlights --></CardGroup>## Main Content Sections### Subsection<Tabs> <Tab title="Basic Usage"> <!-- Simple examples first --> </Tab> <Tab title="Advanced Usage"> <!-- Complex examples after --> </Tab></Tabs>## Next Steps<CardGroup cols={2}> <!-- Related documentation links --></CardGroup>
Code Examples: Always include working, tested examples
Copy
# Always show the actual command/agent react-expert "create a login component with validation"# Show expected output or results when helpful# ✓ Component created: src/components/LoginForm.tsx# ✓ Tests created: src/components/__tests__/LoginForm.test.tsx# ✓ Storybook story: src/stories/LoginForm.stories.tsx
Start small with documentation fixes or bug reports, then gradually work up to feature contributions. Don’t hesitate to ask questions in Discord or GitHub Discussions - our community is here to help!