Development

1 min read

Instructions for local development, testing, and contributing.

Prerequisites

  • Go 1.25+
  • Docker (for deployment)
  • Claude Code (installed in container via official script)

Local Development

git clone https://github.com/nickalie/nclaw.git
cd nclaw
cp .env.example .env  # Configure your settings
make run              # go run ./cmd/nclaw

Commands

CommandDescription
make runRun locally (go run ./cmd/nclaw)
make lintRun golangci-lint (golangci-lint run ./...)
make testRun tests (CGO_ENABLED=1 go test ./...)
make dockerBuild and run in Docker

Code Style

  • golangci-lint v2 with gofmt formatter
  • Max cyclomatic complexity: 8
  • Max line length: 140
  • Keep methods small to stay under complexity limit
  • Standard Go conventions

CI/CD

GitHub Actions pipeline (.github/workflows/ci.yml):

  1. Lint — golangci-lint
  2. Testgo test -v ./...
  3. Docker — Build and push to GHCR on push to main or tagged releases

Docker Image

The runtime image (node:24-alpine based) includes:

  • Claude Code (installed via official script)
  • Go runtime
  • Node.js
  • git, GitHub CLI
  • Chromium browser
  • Python/uv

Skills (schedule, send-file, webhook) are copied into the global skills directory during build.