Overview

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

Development Setup

Prerequisites

# Required software
Node.js 18+ (LTS recommended)
npm 9+ or yarn 1.22+
Git 2.30+

# Recommended tools
VS Code with extensions:
- TypeScript and JavaScript Language Features
- ESLint
- Prettier
- Jest Runner
- GitLens

# System resources
RAM: 8GB minimum (16GB recommended)
Storage: 10GB free space for development
OS: macOS, Linux, or Windows with WSL2

Development Workflow

Code Contribution Guidelines

Code Standards

// Use strict TypeScript configuration
// Always define explicit types for public APIs

interface AgentConfig {
  name: string;
  version: string;
  capabilities: AgentCapability[];
  tools: ToolDefinition[];
}

// Use generic types when appropriate
class 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...
}

Performance Guidelines

Feature Development Process

Planning and Design

  1. Create GitHub Issue
    • Use feature request template
    • Describe the problem and proposed solution
    • Include user stories and acceptance criteria
    • Add relevant labels and milestones
  2. Design Discussion
    • Participate in design discussions
    • Consider backwards compatibility
    • Review impact on existing features
    • Get maintainer approval before starting
  3. Technical Design
    • Create technical design document if complex
    • Consider architecture implications
    • Plan testing strategy
    • Identify potential risks and mitigations

Quality Assurance

Agent Development

Creating New Agents

// src/cli/automation/agents/my-custom-agent.ts
import { BaseAgent, AgentCapability, AgentResult } from './base-agent';
import { ToolRegistry } from '../tools/tool-registry';

export class MyCustomAgent extends BaseAgent {
  constructor() {
    super({
      id: 'my-custom-agent',
      name: 'My Custom Agent',
      description: 'Specialized agent for custom tasks',
      version: '1.0.0',
      capabilities: [
        AgentCapability.CODE_GENERATION,
        AgentCapability.CODE_REVIEW,
        AgentCapability.TESTING
      ],
      specializations: ['custom-framework', 'domain-specific'],
      tools: [
        'file_operations',
        'code_analysis', 
        'custom_validator'
      ]
    });
  }
  
  async execute(task: AgentTask): Promise<AgentResult> {
    try {
      // Validate task requirements
      this.validateTask(task);
      
      // Process task with domain expertise
      const result = await this.processCustomTask(task);
      
      // Validate result quality
      await this.validateResult(result);
      
      return {
        success: true,
        result: result,
        confidence: this.calculateConfidence(result),
        suggestions: this.generateSuggestions(result)
      };
    } catch (error) {
      return this.handleError(error, task);
    }
  }
  
  private async processCustomTask(task: AgentTask): Promise<any> {
    // Custom processing logic
    const context = await this.analyzeContext(task.context);
    const solution = await this.generateSolution(task.description, context);
    return await this.refineSolution(solution, task.requirements);
  }
  
  protected getSystemPrompt(): string {
    return `
    You are a specialized agent expert in custom framework development.
    You have deep knowledge of:
    - Custom framework patterns and best practices
    - Domain-specific architecture patterns  
    - Performance optimization techniques
    - Testing strategies for custom frameworks
    
    Always provide:
    - Clean, maintainable code
    - Comprehensive documentation
    - Appropriate test coverage
    - Performance considerations
    `;
  }
}

Agent Best Practices

Documentation Contributions

Writing Guidelines

Structure: Follow established patterns and organization
---
title: 'Clear, Descriptive Title'
description: 'Concise description of the content'
icon: 'relevant-icon'
---

## Overview
Brief 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
# 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

Documentation Review Process

Community Guidelines

Code of Conduct

We are committed to fostering an inclusive and welcoming community. All contributors must adhere to our Code of Conduct. Key Principles:
  • Be respectful: Treat all community members with respect and kindness
  • Be collaborative: Work together constructively and share knowledge
  • Be inclusive: Welcome contributors from all backgrounds and experience levels
  • Be patient: Help newcomers learn and grow
  • Focus on what’s best for the community: Make decisions that benefit everyone

Getting Help

Discord Community

Join our active Discord for real-time discussions
  • General discussion and questions
  • Development help and code review
  • Feature planning and feedback
  • Community events and updates

GitHub Discussions

Participate in structured discussions
  • Feature requests and proposals
  • Architecture discussions
  • Best practices sharing
  • Q&A and troubleshooting

Office Hours

Join weekly maintainer office hours
  • Every Tuesday 2PM EST / 7PM GMT
  • Open forum for questions and discussion
  • Feature demos and roadmap updates
  • New contributor onboarding

Mentorship Program

Get paired with experienced contributors
  • 1-on-1 guidance for new contributors
  • Code review and feedback
  • Career development support
  • Open source best practices

Recognition

We believe in recognizing and celebrating our contributors:
  • Contributor Hall of Fame: Featured on our documentation site
  • Annual Awards: Recognition for outstanding contributions
  • Speaking Opportunities: Conference and meetup speaking invitations
  • Swag and Rewards: Exclusive contributor merchandise
  • Resume Support: LinkedIn recommendations and references

Next Steps

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!