Files
heretek-openclaw-docs/CONTRIBUTING.md
T

5.3 KiB

Contributing to Heretek OpenClaw

Thank you for your interest in contributing to Heretek OpenClaw! This document provides guidelines and instructions for contributing.

Table of Contents

Code of Conduct

  • Be respectful and inclusive
  • Focus on constructive feedback
  • Welcome newcomers and help them learn
  • Keep discussions on topic

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
    git clone https://github.com/your-username/heretek-openclaw-docs.git
    cd heretek-openclaw-docs
    
  3. Add upstream remote
    git remote add upstream https://github.com/heretek/heretek-openclaw-docs.git
    
  4. Install dependencies
    npm install
    

Development Setup

Prerequisites

  • Node.js 20+
  • npm 9+
  • Git
  • Docker (for integration tests)

Environment Setup

# Copy environment template
cp .env.example .env

# Edit with your settings
nano .env

Running Locally

# Development mode
npm run dev

# Run tests
npm test

# Lint code
npm run lint

Making Changes

Branch Naming

Use descriptive branch names:

feature/add-new-skill
fix/gateway-memory-leak
docs/update-api-reference
refactor/improve-error-handling

Making Commits

  1. Create a branch from main

    git checkout -b feature/your-feature
    
  2. Make focused commits

    • Each commit should do one thing
    • Write clear commit messages
    • Test before committing
  3. Keep your branch updated

    git fetch upstream
    git rebase upstream/main
    

Pull Requests

Before Submitting

  • Tests pass locally
  • Code is linted
  • Documentation is updated
  • Changes are tested

PR Description

Use the PR template and include:

  • What changes are being made
  • Why the changes are needed
  • How the changes were tested
  • Related issues (if any)

Review Process

  1. Automated checks must pass
  2. Code review by maintainers
  3. Address feedback promptly
  4. Squash commits if requested

Testing

Running Tests

# All tests
npm test

# Unit tests only
npm run test:unit

# Integration tests only
npm run test:integration

# With coverage
npm run test:coverage

Writing Tests

  • Write tests for new features
  • Update tests when fixing bugs
  • Aim for meaningful coverage
  • Test edge cases

Test Types

Type Location Purpose
Unit tests/unit/ Test individual functions
Integration tests/integration/ Test component interactions
E2E tests/e2e/ Test full user flows
Skills tests/skills/ Test skill execution

Code Style

JavaScript/TypeScript

  • Use ESLint configuration provided
  • Prefer const over let
  • Use meaningful variable names
  • Add JSDoc comments for public APIs
/**
 * Calculate agent health status
 * @param {Object} agent - Agent instance
 * @returns {Object} Health status
 */
function calculateHealth(agent) {
  const metrics = collectMetrics(agent);
  return {
    status: metrics.status,
    score: metrics.score
  };
}

Formatting

  • Use Prettier for consistent formatting
  • 2 spaces for indentation
  • Single quotes for strings
  • Semicolons required
# Format code
npm run format

# Check formatting
npm run format:check

Commit Messages

Follow Conventional Commits:

<type>(<scope>): <description>

[optional body]

[optional footer]

Types

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation changes
  • style: Code style changes (formatting)
  • refactor: Code refactoring
  • test: Test additions/changes
  • chore: Build/config changes

Examples

feat(agents): add historian agent for memory management

Implements the historian agent responsible for long-term
memory consolidation and decision tracking.

Closes #123
fix(gateway): resolve WebSocket connection timeout

Increased timeout from 5s to 30s for slow connections.

Fixes #456
docs(api): update A2A protocol documentation

Added examples for new message types and clarified
error handling procedures.

Documentation

Writing Documentation

  • Use clear, concise language
  • Include examples where helpful
  • Link to related documentation
  • Keep headings hierarchical

Documentation Structure

docs/
├── getting-started/
├── architecture/
├── configuration/
├── operations/
└── api/

Release Process

Version Numbering

We use Semantic Versioning:

  • MAJOR.MINOR.PATCH
  • Breaking changes → increment MAJOR
  • New features → increment MINOR
  • Bug fixes → increment PATCH

Release Checklist

  • Update version in package.json
  • Update CHANGELOG.md
  • Create git tag
  • Publish to npm (if applicable)
  • Create GitHub release

Questions?

  • General questions: GitHub Discussions
  • Bug reports: GitHub Issues
  • Security issues: Email security@heretek.ai

Thank you for contributing to Heretek OpenClaw! 🦞