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
| Command | Description |
|---|---|
make run | Run locally (go run ./cmd/nclaw) |
make lint | Run golangci-lint (golangci-lint run ./...) |
make test | Run tests (CGO_ENABLED=1 go test ./...) |
make docker | Build 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):
- Lint — golangci-lint
- Test —
go test -v ./... - 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.