|
|
@@ -1,39 +1,63 @@
|
|
|
# Graph Report - qmk-rgb (2026-09-27)
|
|
|
|
|
|
## Corpus Check
|
|
|
-- Corpus is ~29,342 words - fits in a single context window. You may not need a graph.
|
|
|
+- 56 files · ~31,956 words
|
|
|
+- Verdict: corpus is large enough that graph structure adds value.
|
|
|
+- Unclassified: 3 file(s) not represented in the graph (top: (none) 3)
|
|
|
|
|
|
## Summary
|
|
|
-- 242 nodes · 675 edges · 13 communities (11 shown, 2 thin omitted)
|
|
|
-- Extraction: 87% EXTRACTED · 13% INFERRED · 0% AMBIGUOUS · INFERRED: 90 edges (avg confidence: 0.85)
|
|
|
+- 432 nodes · 919 edges · 30 communities (22 shown, 8 thin omitted)
|
|
|
+- Extraction: 88% EXTRACTED · 12% INFERRED · 0% AMBIGUOUS · INFERRED: 106 edges (avg confidence: 0.85)
|
|
|
- Token cost: 0 input · 0 output
|
|
|
|
|
|
+## Graph Freshness
|
|
|
+- Built from commit: `0557d9ac`
|
|
|
+- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
|
|
+- Run `graphify update .` after code changes (no API cost).
|
|
|
+
|
|
|
## Community Hubs (Navigation)
|
|
|
-- Zones and Effects
|
|
|
-- CLI and Commands
|
|
|
-- Protocol and State
|
|
|
-- Color and Effects Parsing
|
|
|
-- Root and Device Discovery
|
|
|
-- HID Access Layer
|
|
|
-- Zone Operations
|
|
|
-- Effect Command
|
|
|
-- Info Subsystem
|
|
|
-- Graphify Docs
|
|
|
-- Skill Instructions
|
|
|
-- Impact 80 Effects
|
|
|
-- Zone Helpers
|
|
|
+- testing.T
|
|
|
+- Zone
|
|
|
+- LEDType
|
|
|
+- profile.go
|
|
|
+- rgb_test.go
|
|
|
+- hid.go
|
|
|
+- effects.go
|
|
|
+- What You Must Do When Invoked
|
|
|
+- effect_test.go
|
|
|
+- info.go
|
|
|
+- graphify.js
|
|
|
+- opencode.json
|
|
|
+- netdome.biz/paul/impact-80
|
|
|
+- Agent Guidelines — QMK RGB Tool
|
|
|
+- QMK RGB Tool
|
|
|
+- Impact 80 Zone-Aware Lighting Effects Design
|
|
|
+- /qmk-rgb
|
|
|
+- Review Focus
|
|
|
+- Wobkey RGB CLI — Implementation Plan
|
|
|
+- graphify reference: extra exports and benchmark
|
|
|
+- graphify reference: query, path, explain
|
|
|
+- graphify reference: add a URL and watch a folder
|
|
|
+- graphify reference: commit hook and native CLAUDE.md integration
|
|
|
+- graphify reference: incremental update and cluster-only
|
|
|
+- fakeTransport
|
|
|
+- graphify reference: GitHub clone and cross-repo merge
|
|
|
+- graphify reference: transcribe video and audio
|
|
|
+- CLAUDE.md
|
|
|
+- .claude/CLAUDE.md
|
|
|
+- extraction-spec.md
|
|
|
|
|
|
## God Nodes (most connected - your core abstractions)
|
|
|
1. `Zone` - 29 edges
|
|
|
2. `LEDType` - 23 edges
|
|
|
3. `selectedZones()` - 18 edges
|
|
|
4. `AllZones()` - 16 edges
|
|
|
-5. `OpenDevice()` - 15 edges
|
|
|
-6. `ResolveEffect()` - 15 edges
|
|
|
-7. `init()` - 13 edges
|
|
|
-8. `zoneProtocol` - 11 edges
|
|
|
-9. `resolveEffectTargets()` - 10 edges
|
|
|
-10. `readInfo()` - 9 edges
|
|
|
+5. `ResolveEffect()` - 15 edges
|
|
|
+6. `OpenDevice()` - 14 edges
|
|
|
+7. `QMK RGB Tool` - 14 edges
|
|
|
+8. `init()` - 13 edges
|
|
|
+9. `Agent Guidelines — QMK RGB Tool` - 13 edges
|
|
|
+10. `Impact 80 Zone-Aware Lighting Effects Design` - 13 edges
|
|
|
|
|
|
## Surprising Connections (you probably didn't know these)
|
|
|
- `NewColorCmd()` --calls--> `ParseHexColor()` [EXTRACTED]
|
|
|
@@ -50,71 +74,115 @@
|
|
|
## Import Cycles
|
|
|
- None detected.
|
|
|
|
|
|
-## Communities (13 total, 2 thin omitted)
|
|
|
+## Communities (30 total, 8 thin omitted)
|
|
|
|
|
|
-### Community 0 - "Zones and Effects"
|
|
|
-Cohesion: 0.09
|
|
|
-Nodes (31): TestInfoCommandPrintsJSONBeforeReturningError(), TestInfoErrorRecord(), TestInfoSuccessfulRecord(), newRootCommand(), TestRootCommandSuppressesCobraErrorAndUsage(), lightingEnabled(), TestDeviceFlagIsInheritedByCommands(), TestLightingEnabledRequiresActiveEffectAndBrightness() (+23 more)
|
|
|
+### Community 0 - "testing.T"
|
|
|
+Cohesion: 0.07
|
|
|
+Nodes (61): TestInfoCommandPrintsJSONBeforeReturningError(), TestInfoErrorRecord(), TestInfoSuccessfulRecord(), runRealKeyboardInfo(), stubDiscovery(), TestKeyboardInfoEmitsEmptyArrayNotNull(), TestKeyboardInfoEmitsIndentedJSON(), TestKeyboardInfoPropagatesDiscoveryError() (+53 more)
|
|
|
|
|
|
-### Community 1 - "CLI and Commands"
|
|
|
-Cohesion: 0.13
|
|
|
-Nodes (27): TestZoneChannels(), zoneChannels(), AllZones(), DefaultEffect(), EffectName(), Impact80EffectName(), impact80EffectNames(), ParseImpact80Effect() (+19 more)
|
|
|
+### Community 1 - "Zone"
|
|
|
+Cohesion: 0.11
|
|
|
+Nodes (37): TestSelectedChannelOperations(), disableLightingOnZones(), enableLightingOnZones(), forEachSelectedZone(), setBrightnessOnZones(), setColorOnZones(), setModeOnZones(), setSpeedOnZones() (+29 more)
|
|
|
|
|
|
-### Community 2 - "Protocol and State"
|
|
|
+### Community 2 - "LEDType"
|
|
|
Cohesion: 0.12
|
|
|
Nodes (10): TestSelectedChannelStopsOnFirstError(), LEDType, Protocol, New(), commandReport, fakeInfoProtocol, fakeZoneProtocol, infoKey (+2 more)
|
|
|
|
|
|
-### Community 3 - "Color and Effects Parsing"
|
|
|
+### Community 3 - "profile.go"
|
|
|
Cohesion: 0.18
|
|
|
-Nodes (25): NewBrightnessCmd(), NewColorCmd(), NewDisableCmd(), NewEnableCmd(), NewInfoCmd(), init(), NewModeCmd(), applyProfileToProfile() (+17 more)
|
|
|
+Nodes (14): applyProfileToProfile(), DeleteProfile(), hexToHSV(), ListProfiles(), LoadProfile(), loadProfileFromDevice(), NewProfileDeleteCmd(), NewProfileListCmd() (+6 more)
|
|
|
|
|
|
-### Community 4 - "Root and Device Discovery"
|
|
|
-Cohesion: 0.18
|
|
|
-Nodes (15): Execute(), main(), go_pkg_encoding_json, go_pkg_fmt, go_pkg_github_com_spf13_cobra, go_pkg_os, go_pkg_path_filepath, Discover() (+7 more)
|
|
|
+### Community 4 - "rgb_test.go"
|
|
|
+Cohesion: 0.13
|
|
|
+Nodes (31): NewBrightnessCmd(), NewColorCmd(), NewDisableCmd(), listAllEffects(), NewEffectCmd(), runEffectSet(), NewEnableCmd(), NewInfoCmd() (+23 more)
|
|
|
|
|
|
-### Community 5 - "HID Access Layer"
|
|
|
+### Community 5 - "hid.go"
|
|
|
Cohesion: 0.18
|
|
|
Nodes (12): go_pkg_github_com_sstallion_go_hid, go_pkg_sync, go_pkg_time, Device, DeviceInfo, DevicesInfo, DiscoverAll(), ensureInit() (+4 more)
|
|
|
|
|
|
-### Community 6 - "Zone Operations"
|
|
|
-Cohesion: 0.16
|
|
|
-Nodes (13): go_pkg_math, go_pkg_strconv, ParseEffect(), ParseHexColor(), TestColorToHSV(), TestEffectString(), TestParseEffect(), TestParseHexColor() (+5 more)
|
|
|
+### Community 6 - "effects.go"
|
|
|
+Cohesion: 0.17
|
|
|
+Nodes (12): go_pkg_math, ParseEffect(), ParseHexColor(), TestColorToHSV(), TestEffectString(), TestParseEffect(), TestParseHexColor(), TestQMKValueIDs() (+4 more)
|
|
|
+
|
|
|
+### Community 7 - "What You Must Do When Invoked"
|
|
|
+Cohesion: 0.08
|
|
|
+Nodes (24): For /graphify add and --watch, For /graphify query, For the commit hook and native CLAUDE.md integration, For --update and --cluster-only, /graphify, Honesty Rules, Interpreter guard for subcommands, Part A - Structural extraction for code files (+16 more)
|
|
|
|
|
|
-### Community 7 - "Effect Command"
|
|
|
+### Community 8 - "effect_test.go"
|
|
|
Cohesion: 0.31
|
|
|
-Nodes (11): TestSelectedChannelOperations(), disableLightingOnZones(), enableLightingOnZones(), forEachSelectedZone(), setBrightnessOnZones(), setColorOnZones(), setModeOnZones(), setSpeedOnZones() (+3 more)
|
|
|
+Nodes (10): resolveEffectTargets(), executeEffectCommand(), TestEffectCommandRejectsBeforeOpeningProtocol(), TestEffectCommandSuppressesSuccessAfterLaterWriteFailure(), TestEffectCommandWarnsForSkippedZones(), TestResolveEffectTargetsBacklightOnly(), TestResolveEffectTargetsBreathing(), TestResolveEffectTargetsExplicitUnsupported() (+2 more)
|
|
|
|
|
|
-### Community 8 - "Info Subsystem"
|
|
|
-Cohesion: 0.23
|
|
|
-Nodes (14): listAllEffects(), NewEffectCmd(), resolveEffectTargets(), runEffectSet(), executeEffectCommand(), TestEffectCommandRejectsBeforeOpeningProtocol(), TestEffectCommandSuppressesSuccessAfterLaterWriteFailure(), TestEffectCommandWarnsForSkippedZones() (+6 more)
|
|
|
+### Community 9 - "info.go"
|
|
|
+Cohesion: 0.36
|
|
|
+Nodes (9): getInfoValue(), readInfo(), readZoneInfo(), lightingEnabled(), TestLightingEnabledRequiresActiveEffectAndBrightness(), infoColor, infoGetter, infoOutput (+1 more)
|
|
|
|
|
|
-### Community 9 - "Graphify Docs"
|
|
|
-Cohesion: 0.50
|
|
|
-Nodes (7): getInfoValue(), readInfo(), readZoneInfo(), infoColor, infoGetter, infoOutput, zoneInfo
|
|
|
-
|
|
|
-### Community 10 - "Skill Instructions"
|
|
|
+### Community 10 - "graphify.js"
|
|
|
Cohesion: 0.40
|
|
|
Nodes (3): IMPORTANT: keep the reminder string free of backticks and $(...) constructs., ref_fs, ref_path
|
|
|
|
|
|
+### Community 13 - "Agent Guidelines — QMK RGB Tool"
|
|
|
+Cohesion: 0.09
|
|
|
+Nodes (21): Agent Guidelines — QMK RGB Tool, Architecture, CLI Interface, Code vs Documentation, Concurrency, Consistency, Constraints, Device Selection (+13 more)
|
|
|
+
|
|
|
+### Community 14 - "QMK RGB Tool"
|
|
|
+Cohesion: 0.10
|
|
|
+Nodes (19): Architecture, CLI Reference, Compatibility Aliases, Effect Behavior, Features, Impact 80 Zones and Effects, Installation, Known Keyboards (+11 more)
|
|
|
+
|
|
|
+### Community 15 - "Impact 80 Zone-Aware Lighting Effects Design"
|
|
|
+Cohesion: 0.14
|
|
|
+Nodes (13): Acceptance criteria, CLI behavior, Component boundaries, Effect catalog, Error handling, Goals, Impact 80 Zone-Aware Lighting Effects Design, Info output (+5 more)
|
|
|
+
|
|
|
+### Community 16 - "/qmk-rgb"
|
|
|
+Cohesion: 0.17
|
|
|
+Nodes (11): 1. First, get the tool's own help, 2. If the tool is not built or no keyboard is connected, 3. When a user wants to change something, 4. Profiles, Compatibility aliases, How to answer, Known limitations, /qmk-rgb (+3 more)
|
|
|
+
|
|
|
+### Community 17 - "Review Focus"
|
|
|
+Cohesion: 0.18
|
|
|
+Nodes (10): Execution Handoff — 2026-09-25, Global Constraints, Impact 80 Zone-Aware Lighting Effects Implementation Plan, Review Focus, Task 1: Build the Zone and Effect Profile Domain, Task 2: Add Zone Selection to the RGB Command Layer, Task 3: Make Effect Resolution Zone-Aware, Task 4: Route All RGB Commands Through the Selected Zones (+2 more)
|
|
|
+
|
|
|
+### Community 18 - "Wobkey RGB CLI — Implementation Plan"
|
|
|
+Cohesion: 0.18
|
|
|
+Nodes (10): Continue With Hardware, Cross-Platform HID Backends, Effect Families, Handoff Status, Hardware Environment, Open Issues, Status, Verification (+2 more)
|
|
|
+
|
|
|
+### Community 19 - "graphify reference: extra exports and benchmark"
|
|
|
+Cohesion: 0.22
|
|
|
+Nodes (8): graphify reference: extra exports and benchmark, Step 6b - Wiki (only if --wiki flag), Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag), Step 7a - FalkorDB export (only if --falkordb or --falkordb-push flag), Step 7b - SVG export (only if --svg flag), Step 7c - GraphML export (only if --graphml flag), Step 7d - MCP server (only if --mcp flag), Step 8 - Token reduction benchmark (only if total_words > 5000)
|
|
|
+
|
|
|
+### Community 20 - "graphify reference: query, path, explain"
|
|
|
+Cohesion: 0.33
|
|
|
+Nodes (5): For /graphify explain, For /graphify path, graphify reference: query, path, explain, Step 0 — Constrained query expansion (REQUIRED before traversal), Step 1 — Traversal
|
|
|
+
|
|
|
+### Community 21 - "graphify reference: add a URL and watch a folder"
|
|
|
+Cohesion: 0.50
|
|
|
+Nodes (3): For /graphify add, For --watch, graphify reference: add a URL and watch a folder
|
|
|
+
|
|
|
+### Community 22 - "graphify reference: commit hook and native CLAUDE.md integration"
|
|
|
+Cohesion: 0.50
|
|
|
+Nodes (3): For git commit hook, For native CLAUDE.md integration, graphify reference: commit hook and native CLAUDE.md integration
|
|
|
+
|
|
|
+### Community 23 - "graphify reference: incremental update and cluster-only"
|
|
|
+Cohesion: 0.50
|
|
|
+Nodes (3): For --cluster-only, For --update (incremental re-extraction), graphify reference: incremental update and cluster-only
|
|
|
+
|
|
|
## Knowledge Gaps
|
|
|
-- **4 isolated node(s):** `$schema`, `plugin`, `netdome.biz/paul/impact-80`, `LEDParam`
|
|
|
- These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 32 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
|
|
|
-- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
|
|
+- **117 isolated node(s):** `$schema`, `plugin`, `netdome.biz/paul/impact-80`, `LEDParam`, `graphify` (+112 more)
|
|
|
+ These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 163 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
|
|
|
+- **8 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
|
|
|
|
|
## Suggested Questions
|
|
|
_Questions this graph is uniquely positioned to answer:_
|
|
|
|
|
|
-- **Why does `LEDType` connect `Protocol and State` to `CLI and Commands`, `Color and Effects Parsing`, `Effect Command`, `Info Subsystem`, `Graphify Docs`?**
|
|
|
- _High betweenness centrality (0.084) - this node is a cross-community bridge._
|
|
|
-- **Why does `Zone` connect `CLI and Commands` to `Info Subsystem`, `Graphify Docs`, `Color and Effects Parsing`, `Effect Command`?**
|
|
|
- _High betweenness centrality (0.050) - this node is a cross-community bridge._
|
|
|
+- **Why does `LEDType` connect `LEDType` to `info.go`, `profile.go`, `rgb_test.go`, `Zone`?**
|
|
|
+ _High betweenness centrality (0.029) - this node is a cross-community bridge._
|
|
|
+- **Why does `Zone` connect `Zone` to `effect_test.go`, `info.go`, `profile.go`, `rgb_test.go`?**
|
|
|
+ _High betweenness centrality (0.017) - this node is a cross-community bridge._
|
|
|
- **Are the 3 inferred relationships involving `Zone` (e.g. with `TestImpact80DefaultEffects()` and `TestImpact80LogoAndSideCatalog()`) actually correct?**
|
|
|
_`Zone` has 3 INFERRED edges - model-reasoned connections that need verification._
|
|
|
- **Are the 14 inferred relationships involving `selectedZones()` (e.g. with `NewBrightnessCmd()` and `NewColorCmd()`) actually correct?**
|
|
|
_`selectedZones()` has 14 INFERRED edges - model-reasoned connections that need verification._
|
|
|
-- **Are the 4 inferred relationships involving `AllZones()` (e.g. with `TestAllImpact80Zones()` and `TestImpact80ResolveAliases()`) actually correct?**
|
|
|
- _`AllZones()` has 4 INFERRED edges - model-reasoned connections that need verification._
|
|
|
- **What connects `$schema`, `plugin`, `netdome.biz/paul/impact-80` to the rest of the system?**
|
|
|
- _4 weakly-connected nodes found - possible documentation gaps or missing edges._
|
|
|
-- **Should `Zones and Effects` be split into smaller, more focused modules?**
|
|
|
- _Cohesion score 0.0931174089068826 - nodes in this community are weakly interconnected._
|
|
|
+ _117 weakly-connected nodes found - possible documentation gaps or missing edges._
|
|
|
+- **Should `testing.T` be split into smaller, more focused modules?**
|
|
|
+ _Cohesion score 0.06881287726358148 - nodes in this community are weakly interconnected._
|
|
|
+- **Should `Zone` be split into smaller, more focused modules?**
|
|
|
+ _Cohesion score 0.10730804810360776 - nodes in this community are weakly interconnected._
|