Files
porterskyandQwen 3.8 27B 38473eb734 docs(agents): add cpp-code-review skill
Add a code review skill with reference files for memory safety,
concurrency, correctness idioms, false positives, cppreference
lookup, and report format. Move the coding conventions from
AGENTS.md into the skill's project-style reference so reviews
enforce them.

Co-authored-by: Qwen 3.8 27B <qwen3.8_27b-q3_k_xl@lmstudio.local>
2026-10-06 08:02:45 +02:00

60 lines
2.9 KiB
Markdown

---
name: cpp-code-review
description: >-
Review C++ (and C interop) code and PRs for undefined behavior, memory/
lifetime bugs, concurrency, error handling and modern idioms. Use whenever
reviewing or auditing C++ code.
---
# C++ Code Review
Review C++ changes for real bugs first, style last. Be concise and cite
file:line.
## Workflow
1. **Scope**: identify what changed (diff, PR, or files). Check the build files
(`CMakeLists.txt`, etc.) for the C++ standard (`-std=`/ `CMAKE_CXX_STANDARD`)
and compiler. Don't suggest features newer than the project's standard.
2. **Tooling**: if you can run commands, run what's available and fold results
in (don't re-report what they catch):
- Build with `-Wall -Wextra -Wpedantic` (or `/W4` on MSVC)
- `clang-tidy` (with `bugprone-*`, `cppcoreguidelines-*`, `modernize-*`)
- Tests under sanitizers: `-fsanitize=address,undefined`; separately
`-fsanitize=thread` for threaded code
3. **Review by priority**: read only the reference files that apply:
| Change touches | Read |
| ------------------------------------------------------------------------------- | ---------------------------------- |
| Raw pointers, `new`/`delete`, buffers, casts, C APIs, references to temporaries | `references/memory-ub.md` |
| Threads, atomics, mutexes, `std::async`, coroutines | `references/concurrency.md` |
| Exceptions, error codes, classes, templates, API design, integer types | `references/correctness-idioms.md` |
| Naming, signatures, includes, class layout, conventions | `references/project-style.md` |
| Unsure whether a finding is real | `references/false-positives.md` |
| Need to explain or verify a language/library rule | `references/cppreference.md` |
4. **Report**: use `references/report-template.md`.
## Priorities (in order)
1. Undefined behavior and memory safety (overflow, use-after-free, dangling,
out-of-bounds)
2. Security (untrusted input reaching buffers, format strings, integer
conversions)
3. Concurrency bugs (data races, deadlocks)
4. Resource leaks and exception safety
5. API/correctness and performance (copies, allocations)
6. Modern idioms and readability
## Rules
- Only flag issues you can explain concretely. No speculation.
- Don't comment on formatting (whitespace, line breaks); that is
`clang-format`'s job. Do enforce the project's coding conventions; see
`references/project-style.md`.
- Suggest a fix with a short code snippet when possible.
- Before asserting a language or library rule (e.g. iterator invalidation, UB,
which header declares a type), verify it on cppreference. Link the page in the
finding instead of writing a long explanation. See
`references/cppreference.md` for how to look things up.