Generic checklist for reviewing DevTools CLs (your own before upload, or someone else's on Gerrit). Covers test correctness (tautological/vacuous tests, cleanup, leaks), code clarity, CL hygiene, and points to the specialized skills to consult for imports, UI, testing, strings, models, and verification. Use when asked to review a CL, a diff, a patch, or to self-review before `git cl upload`.
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
This checklist comes from recurring reviewer feedback on landed DevTools CLs. Use it for self-review before upload and for reviewing other people's CLs.
git diff origin/main...HEAD (or git show HEAD for a
single-commit branch). To learn about the branch and upload workflow, see the
devtools-version-control skill.)]}' line from each response to get JSON:
git cl diff (for the current branch), or fetch the patch set.curl -s https://chromium-review.googlesource.com/changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/comments | tail -n +2.../changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/messagesLoad the skill that matches what the diff touches, and apply its rules:
| If the diff touches… | Use skill |
|---|---|
Any import statement, or a new cross-module dependency | devtools-imports |
UI.Widget, lit-html views, components, CSS | devtools-ui-widgets |
| Migration of legacy imperative DOM to widgets or Lit | ui-eng-vision-orchestrator (and its sub-skills) |
| New or changed tests: choosing unit, API, or E2E | devtools-testing-guidance |
Tests that use describeWithEnvironment or describeWithMockConnection, or foundation modules | foundation-test-migration |
Ported Chromium web tests (web_tests/http/tests/devtools) | migrate-chromium-test |
Flaky or disabled tests, or it.skip / it.skipOnPlatforms | fix-tests |
UIStrings / user-facing text | devtools-ux-writing-refactor |
| Rendering user-controlled strings (URLs, names, console text) | devtools-unicode-escaping |
front_end/models/*, BUILD.gn, devtools_grd_files.gni, entrypoints | devtools-model-management |
Merging modules or consolidating BUILD.gn | merging-devtools-module |
Settings registrations and descriptors | devtools-setting-migration |
Stack traces, source maps, DebuggerWorkspaceBinding | devtools-source-maps |
| Building, running tests, or lint | devtools-verification |
DOM.undo that
calls removeSection() directly, followed by an assertion that the section
was removed), the test checks the mock and nothing else. Mock the boundary
instead (for example, have the CDP stub emit CSSModel.Events.StyleSheetChanged)
and let production code react to it.initialize) that skip the code path under
test. These tests pass because nothing happens.assert.isNull(pane.node()) right after pane.setNodeForTest(null). Each
assertion should verify the behavior that the test name describes.Foo.test.ts should exercise
Foo. Move logic-only tests to the model's test file (for example,
CSSMatchedStyles.test.ts). Otherwise, render the UI and assert on the DOM.<body> of the main frame.devtools-testing-guidance.aria-labels must match the
actual strings, for example "Show user agent shadow DOM" and not "User agent
shadow DOM". Check that the setting being toggled actually affects the
scenario.beforeEach singleton creation with a cleanup in afterEach
(for example, CSSWorkspaceBinding.removeInstance() or
WorkspaceImpl.removeInstance()) so that state does not leak between tests.try { … } finally { clock.restore(); }, or use the
sandbox or cleanup that the test runner provides. Keep the scope of fake
timers small.restore() first. Sinon
throws Attempted to wrap … which is already wrapped when the object is the
same instance.if (!stub.called) … in a test that stubs the method only once).TextUtils.TextRange.TextRange.fromObject(...) directly instead of going
through rule.style.range.constructor.Bug: or Fixed: trailer, or Bug: None. Keep lines under 72
characters.(13/16)).devtools-verification.de3f9ca
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.