qt-canvas2d
Applies Qt Canvas2D (QtCanvas2D / Qt Canvas Painter, Qt 6.12+) best practices when producing or working with Canvas2D QML source…
Invoke when the user asks to review, check, audit, or look over Qt6 C++ code — or suggest before committing. Runs deterministic linting (60+ rules) then deep-analysis agents (scaled to the size of the change) covering model contracts, ownership, threading, API correctness, error
Claude Code
$ npx -y skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review --agent claude-code
Codex
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a codex -y
Cursor
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a cursor -y
Gemini CLI
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a gemini-cli -y
GitHub Copilot
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a github-copilot -y
OpenCode
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a opencode -y
Windsurf
$ npx skills add TheQtCompanyRnD/agent-skills --skill qt-cpp-review -a windsurf -y
name: qt-cpp-review description: >- Invoke when the user asks to review, check, audit, or look over Qt6 C++ code — or suggest before committing. Runs deterministic linting (60+ rules) then deep-analysis agents (scaled to the size of the change) covering model contracts, ownership, threading, API correctness, error handling, and performance. Reports only high-confidence issues (>80/100) with structured mitigations. Read-only — never modifies code. license: LicenseRef-Qt-Commercial OR BSD-3-Clause compatibility: Designed for Claude Code, GitHub Copilot, and similar agents. disable-model-invocation: false metadata: author: qt-ai-skills version: "3.0" qt-version: "6.x" category: review argument-hint: "[framework]"
Read-only review of Qt6 C++ code: a deterministic Python linter first, then agent-driven deep analysis across six rule domains, then one consolidated report.
"code review", "sanity check"
(binary compatibility, exports, d-pointers, qdoc, QML versioning)
Enable when `$ARGUMENTS` contains "framework". Otherwise, if the lint run or a quick Grep shows **two or more** of these signals, suggest framework mode to the user but do not enable it yourself: `QT_BEGIN_NAMESPACE`, any `Q_*_EXPORT` macro, `<QtModule/private/*_p.h>` includes, `Q_DECLARE_PRIVATE`/`Q_D()`/`Q_Q()`, `qt_internal_add_module` in CMakeLists.txt, `sync.profile` or `.qmake.conf` at the repo root.
When enabled: pass `--framework` to the linter, and name `references/qt-framework-checklist.md` in the prompts of the agents covering A2 or A4 (they apply it as mapped at the end of `agent-rules.md`). In diff scope, also check the commit message against the FW-CMT rules yourself; load only that section with `sed -n '/^## Commit Message/,$p' references/qt-framework-checklist.md`.
**Diff scope** — "this commit", "these changes", "the diff", "what I changed", "staged changes", "before I commit". The range is `HEAD` (working tree plus index), `--cached` for staged changes only, or `HEAD~1..HEAD` for "this commit". Do not load the diff itself: the linter's `--diff` mode (Phase 1) lists the changed files with their changed-line counts and reports only findings on changed lines.
**Codebase scope** — "review the codebase", "audit src/", or an explicit path with no commit language. Glob `*.cpp`, `*.h`, `*.hpp` under the path.
These rules exist to keep the review cheap. Follow them.
1. **Do not load the reference files into the main context.** Agents read `references/agent-rules.md` themselves; you pass its absolute path and the section IDs. Only an inline run (Phase 2) reads it in the main context. Lint messages are self-describing; the checklists are for humans. 2. **Pass lint results in `--summary` form** (grouped by rule, paths relative to a root printed once), never the raw per-line listing. 3. **Point agents at content, never paste it.** Every token you write into a prompt is output on the orchestrating model, the most expensive tokens in the review. Prompts carry paths, commands and section IDs; the agents load the rules, the files and the diff. In diff scope an agent gets the `git diff -U50 <range> -- <files>` command instead of the hunks, and reads other files only to trace a specific symbol. 4. **Scale the agent count to the scope** (see Phase 2). Launch no agents for a small scope and split a large one into shards of about equal line count. 5. **Use the dedicated review agent where the harness has one.** If the `cpp-review-agent` definition (listed as `qt-development-skills:cpp-review-agent` when installed with the plugin, plain `cpp-review-agent` when copied by hand) is available, launch the agents with it (read-only, tools limited to Read, Grep, Glob and read-only Bash); otherwise use the harness's general-purpose agent. The definition lives in the plugin's `agents/` directory, outside this skill, so it is missing when the skill was copied on its own or the harness does not install `agents/`. Then add one line to each prompt: read-only (Bash only for `cat`, `grep`, `awk`, `git diff`, `git show`); take `file:line` from the printed numbers; in diff scope do not re-read the files; Grep or Read other files only to trace a symbol; prefer few confirmed findings over many guesses.
Never skip a phase.
# codebase scope python3 <skill>/references/lint-scripts/qt_review_lint.py --summary [--framework] <files...> # diff scope, run inside the repository; no file arguments python3 <skill>/references/lint-scripts/qt_review_lint.py --summary [--framework] --diff=<range> # fall back to `python` if python3 is not found
Python 3.7+, no dependencies. If Python is unavailable, warn and continue (in diff scope, take the file list from `git diff --stat <range>`). The linter is authoritative; do not second-guess its output. Rule families: INC, DEP, PAT, MDL, ERR, LCY, API, ENM, TMO, CND, VAL, HDR, TRN, VAR (60+ checks). Exit code 1 simply means findings exist; 2 means a usage or git error.
The six sections of `references/agent-rules.md` are the analysis. Agents read it themselves; read it yourself only when running inline:
| Section | Mission | |---|---| | A1 | Model Contracts | | A2 | Ownership & Lifecycle | | A3 | Thread Safety | | A4 | API, Naming & C++ Correctness | | A5 | Error Handling & Validation | | A6 | Performance & Code Quality |
Choose the fan-out from the scope size. Count the lines of the files in scope (the changed lines in diff scope), taken from
Official agentic skills for Qt software development and quality assurance, designed for use with AI coding tools such as Claude Code, Codex CLI, and GitHub Copilot. Skills have been tested with frontier LLMs from the Claude, Gemini, and GPT model families.
Applies Qt Canvas2D (QtCanvas2D / Qt Canvas Painter, Qt 6.12+) best practices when producing or working with Canvas2D QML source…
Use to generate or update Qt 6 CMake projects or edit CMakeLists.txt, add sources/resources or define targets (executable, QML…
Generates standalone Markdown reference documentation for any Qt/C++ source files — Qt Widgets classes, Qt Quick backends, Qt/C++…
Extract component metadata from a Figma design system and generate production-ready QML controls. Use this skill whenever someone…
Extract design tokens, text styles, and variables from a Figma design system and produce a design-tokens.json plus ready-to-use…
Generates standalone Markdown reference documentation for QML components and applications. Use this skill whenever you want to…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.