applyTo: "keyboards/**" excludeAgent:
This document provides automated review guidance based on the QMK PR Checklist and it is intended only for use by GitHub Copilot code-review agent during pull request reviews.
Scope: This review applies only to changes within the
keyboards/folder. Changes outsidekeyboards/(e.g., core code, quantum, platforms, drivers) must be flagged and deferred to a QMK Collaborator — do not review them.
master branch
master branch as sourcemaster branch (new folders under keyboards/)develop branch:*.c and *.h filesFormat: Check for proper GPL2+ header or SPDX identifier
// Copyright 2024 Your Name (@yourgithub)
// SPDX-License-Identifier: GPL-2.0-or-later
Exception: Simple assignment-only rules.mk files don't need headers
Flag: Missing or ambiguous license headers (blocks merge)
Scope: These rules apply to files within keyboards/*/keymaps/* subdirectories.
default (e.g., default_clueboard, via) is a non-default keymap#include QMK_KEYBOARD_H preferred over specific board files#defines for layers (soft suggestion only)QK_USERScope: These rules apply to keyboard-level files in keyboards/* directories, excluding files within the keymaps/ subdirectories. This includes:
info.json or keyboard.json (keyboard root or variant level)readme.md (keyboard level)rules.mk (keyboard level)config.h (keyboard level, not keymap level)<keyboard>.c and <keyboard>.h fileshalconf.h, mcuconf.h, chconf.h)master branch
keyboards/ folder submit to masterdevelop branch
data/mappings/keyboard_aliases.hjson is updated for movesdevelop to reduce merge conflictsdevelopinfo.json and keyboard.json files are valid JSON (no syntax errors, no trailing commas, properly closed brackets)url field is present and begins with http:// or https://maintainer field is present and non-emptyusb.vid and usb.pid fields are present and match the 0x hexadecimal format (e.g. "vid": "0x1234", "pid": "0xFEED")usb.device_version field is presentlayout array must include a "matrix" property (e.g. {"label": "L01", "matrix": [0, 0], "x": 0, "y": 0})LAYOUT or match LAYOUT_* patternLAYOUT_all plus at least one alternate name:flash at endhttps://i.imgur.com/<id>.<ext>), not the preview page (i.e. not https://imgur.com/<id>)(-/+size)#define DESCRIPTION#include "config_common.h"<keyboard>.c<keyboard>.c file is present in the PR, flag it as possible advanced code requiring QMK Collaborator review<keyboard>.h#include "quantum.h" at topLAYOUT macros are present, suggest moving them to info.json or keyboard.jsonScope: These rules specifically apply to files within keyboards/*/keymaps/default/ directories.
keymap.c contains anything beyond the keymaps[] array, or if the default keymap folder contains additional .c or .h files, flag this as possible advanced code requiring QMK Collaborator reviewQMKBEST/QMKURL macroslayer_on/off() + update_tri_layer()encoder_update_user() may not be presentkeyboards/<folder>/ directory
keyboards/mykeyboard1/ and keyboards/mykeyboard2/) — each keyboard must be a separate PRdrivers/sensors/pmw3360.c)wilba_tech/wt_main.c) only when keyboard exists in the same enclosing vendor folder (e.g. a wilba_tech keyboard)⚠️ This PR appears to be submitted from your own `master` branch. For future PRs, we recommend using feature branches instead of committing to your `master`. This makes it easier to keep your fork updated and manage multiple PRs.
See: [Best Practices: Your Fork's Master](https://docs.qmk.fm/newbs_git_using_your_master_branch)
❌ This PR targets the wrong branch:
- **New keyboard additions** should target `master`
- **Keyboard updates/refactors/moves** should target `develop`
Please change the target branch accordingly.
❌ Missing GPL-compatible license headers on the following files:
- [list files]
Please add GPL2+ headers (GPL2/GPL3 recommended). Example:
\`\`\`c
// Copyright 2024 Your Name (@yourgithub)
// SPDX-License-Identifier: GPL-2.0-or-later
\`\`\`
❌ The following files/directories must be lowercase:
- [list files]
Exception: Only valid if from upstream sources (LUFA, ChibiOS) or justified by core consistency.
⚠️ Found prohibited config.h elements:
- [list specific issues: `#define DESCRIPTION`, `#include "config_common.h"`, comment blocks, commented-out defines]
Please remove these and refer to [Data Driven Configuration](https://docs.qmk.fm/data_driven_config).
⚠️ info.json or keyboard.json needs attention:
- [list missing mandatory fields]
- Please run: \`qmk format-json -i path/to/info.json\` (or keyboard.json)
- Validate with: \`qmk lint -kb <keyboard_name>\`
⚠️ Default keymap requires collaborator review:
The default `keymap.c` contains code beyond the `keymaps[]` array. The following was detected:
- [describe: extra functions/definitions in keymap.c, or additional .c/.h files in the default keymap folder]
A QMK Collaborator must review this before merging.
⚠️ Non-default keymap detected: `keyboards/[path]/keymaps/[name]/`
This keymap requires a QMK Collaborator to review its content. No automated review of its code was performed.
<keyboard>.c detected:⚠️ `<keyboard>.c` file detected: `keyboards/[path]/[keyboard].c`
This file may contain advanced hardware configuration. A QMK Collaborator must review this before merging.
keyboards/ folder. Flag any changes outside keyboards/ and defer to a QMK Collaborator without reviewing them.<keyboard>.c content in detail — flag its presence and defer to a QMK CollaboratorThis is meant as a first-pass review to catch common issues before human review. Complex architectural decisions, code quality, and subjective assessments still require human QMK Collaborator review.