coding-guidance-qt — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited coding-guidance-qt (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill adds portable Qt implementation, refactoring, and review guidance for Qt C++ code with a QWidget desktop focus. Widget, dialog, model/view, Designer, and desktop-UX guidance here is specific to Widgets work; broader QObject, threading, and build guidance also applies to non-UI Qt C++ code.
This skill provides portable Qt engineering principles. Compose with:
recursive-thinking (stress-testing), security (threat modeling)
ui-design-guidance (stronger design and UX work), project-core-dev (repo-specific completion discovery and reporting when needed), project-platform-diagnose (environment-sensitive diagnosis)
Use this as the default principle skill for Qt code. Reach for coding-guidance-cpp only when the task is mostly non-Qt C++ or needs deeper general C++ design judgment than Qt-specific guidance.
Open bundled references only when the task actually needs them:
for CMake, generated-code, or Qt5/Qt6 compatibility work
for diagnosis-heavy tasks
for .ui files, Qt Widgets Designer, uic, or generated ui_*.h code
for layout, dialog, panel, and desktop-UX work
for QAbstractItemModel, roles, resets, selections, and model/view contract work
Qt-specific review hotspots and the evidence needed to support findings
Stay in the main skill when the task is broad Qt implementation or review and no single failure mode dominates yet.
eventing, object lifetime, or Qt build tooling
guidance here when it genuinely applies, and rely on a QML/Qt Quick-specific skill or repo guidance for declarative UI architecture, bindings, and scene graph concerns
needed
.ui forms, tests,and build files before editing.
affinity, layouts, and tests when the request is partially specified. Ask only when multiple plausible Qt designs would change semantics.
layout behavior, model contracts, and UI-thread rules explicit.
modern typed connect usage, minimal GUI-thread work, and narrow seams between widgets and domain logic.
existing test framework. Qt Test and QSignalSpy fit Qt signal and model contracts; preserve the existing framework for plain C++ logic. Do not add or migrate a framework merely to follow a portable preference.
smoke path the repo supports. If the change touches Qt5/Qt6 compatibility, validate each supported build variant.
Use this instead of the default implementation workflow when the task is primarily cleanup or restructuring:
affinity, layout behavior, and model or binding contracts.
duplicated object wiring, and layout hacks one step at a time.
coverage first when behavior is unclear.
easier to reason about.
When reviewing (not implementing), skip the implementation workflow and use this instead:
Critical > Important >Suggestion.
connection lifetime mistakes, GUI-thread blocking, model/view contract violations, layout breakage, Qt5/Qt6 build regressions, resource-path and platform assumptions, and missing tests.
for signal issues, thread affinity for cross-thread issues, begin/end and reset boundaries for model issues, and the visible interaction path for layout or .ui regressions.
Do not edit code or require findings to be fixed unless the user also asks for remediation.
sections.
QObject ownership, parent-child lifetime, and thread affinity as corecontracts, not cleanup details
QApplication; create it beforeany widget, QPixmap, QIcon, or other GUI object
QObject subclasses; keep lifetime and ownership explicitdeleteLater() when direct deletion could occur during event handling,from the wrong thread, or before queued work is safely drained. Direct destruction is appropriate when ownership, thread affinity, and event-loop state make it safe. Verify that the owning event loop will actually process a deferred deletion.
not outlive the receiver
connect syntax over string-based SIGNAL and SLOTmacros unless the repo is constrained by old APIs
work
structural changes with the correct begin/end calls
setGeometry() when a real layout should ownsizing and positioning
enough to test behavior without full UI setup
wide controller classes
or model logic
them; do not introduce needless conversions at every boundary
outside the change separate from regressions
A stack child is valid when its lifetime ends before its parent, as when the parent is constructed first in the same scope. Reject destruction orders that let a parent delete a still-live stack child. Do not add a second owning smart pointer to an object already owned by a QObject parent.
QPointer or a clearer ownership seam when a non-owning QObject referencecan be invalidated by queued work or callbacks.
outlives the connection.
recursive updates, and signal-chain length explicit when they affect behavior.
its ownership, children, or event handling make the move invalid.
queued callbacks, including application quit and window-close paths.
models or adapters, and keep widgets focused on presentation and local interaction.
and persistent indexes as formal compatibility contracts. Load the model/view reference for contract-heavy work.
margins, and platform-native widget semantics deliberate. Load the layout reference for detailed desktop-UX work.
.ui files, resources, translations, and claimed Qt5 orQt6 variants as source and build contracts. Never edit generated ui_*.h files; load the Designer and build references when those seams change.
edges. Prefer deterministic Qt Test or offscreen checks, and use the debugging reference plus sanitizers for diagnosis rather than guessing.
The Quick Routing references contain the detailed model/view, layout, Designer, build, review, and diagnosis checklists. Load only the reference matching the dominant failure mode.
Use these when the right choice is not obvious:
die, redesign the boundary before adding more behavior.
different thread, make that hop explicit and local.
or reset behavior, treat it as a compatibility boundary rather than a local cleanup.
magic sizes, stop and check whether the right layout type, size policy, or stretch factor would solve it cleanly.
do not hard-code one target family or test only one build.
persistence, and orchestration together, introduce a presenter/controller seam before adding more slots.
rethink the design before polishing the code.
signals and slots, widgets vs. QML, testing, or Qt version support, follow them unless they create a correctness problem.
problem. When narrowness conflicts with correctness or lifecycle safety, prefer correctness. When it conflicts with style alone, prefer narrowness unless the task is explicitly a cleanup.
for the requested change's correctness or lifecycle safety; report them separately.
model-shaping steps, or dialog flows is a pattern; before extracting, check whether a small helper, adapter, presenter, or model object is the simpler move.
identity, or Qt containers, keep it as plain testable C++ instead of forcing Qt into the core domain.
For implementation, a change is done when:
out with a concrete reason
validation path
verified when touched
For review, completion means Critical and Important findings are reported with concrete Qt-specific evidence, likely consequence, and any validation gap. Unfixed findings do not make the review incomplete.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.