# Wobkey RGB CLI — Implementation Plan ## Status - ✅ Go module initialized (`github.com/wobkey/rgb`) - ✅ `git init` + AGENTS.md + README.md - ✅ Directory structure: `cmd/wobkey/`, `internal/device/`, `internal/hid/`, `internal/rgb/`, `internal/via/` - ✅ Pure-Go HID layer: reads `/dev/hidraw*`, `/sys/class/hidraw/*/report_descriptor`, and HID metadata (no cgo, no libudev) - ✅ Keyboard discovery: detects Impact 80 (VID `0x36B0`, PID `0x309F`) and Rainy 75 - ✅ All 8 RGB subcommands implemented (effect, brightness, speed, color, mode, enable, disable, info) - ✅ `go build` ✅ `go vet` ✅ `go test ./...` ✅ `gofmt` clean - ✅ QMK v12 Raw HID protocol: custom set/get values with 32-byte reports and response validation - ✅ Impact 80 three-zone lighting control (logo, backlight, side) - ✅ `keyboards.json` with decimal VID/PID ## Open Issues ### 1. Impact 80 Effect Mapping The keyboard's official VIA definition uses model-specific effect IDs for its three lighting zones. The generic QMK effect list in `internal/rgb/effects.go` does not yet map names such as `rainbow` to those IDs. ### 2. Cross-Platform HID Backends The current transport is Linux-specific (`/dev/hidraw*` and Linux syscalls). macOS and Windows builds need platform-specific HID backends or a shared library. ### 3. Documentation and Release Artifacts Keep protocol documentation, keyboard metadata, and generated graph outputs synchronized with the implementation. ## Quick Commands for Next Session ```bash # Rebuild with latest code go build -o /tmp/wobkey ./cmd/wobkey/ # Discover the QMK Raw HID interface /tmp/wobkey keyboard info # Test RGB state /tmp/wobkey rgb disable /tmp/wobkey rgb info # Run all checks gofmt -w . go vet ./... go test ./... ```