Implements C++17 desktop GUI code with wxWidgets, GTK3, or Qt framework patterns and CMake build system. Use when writing C++ desktop application code, creating GUI components, or implementing framework-specific features.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add qte77/claude-code-plugins --skill implementing-cpp --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Implementing Cpp?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/qte77-implementing-cpp)More formats (shields.io, HTML) on the badges page.
---
name: implementing-cpp
description: Implements C++17 desktop GUI code with wxWidgets, GTK3, or Qt framework patterns and CMake build system. Use when writing C++ desktop application code, creating GUI components, or implementing framework-specific features.
compatibility: Designed for Claude Code
metadata:
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
argument-hint: [feature-or-component]
stability: stable
---
# C++ Desktop Implementation
**Target**: $ARGUMENTS
Implement C++ desktop GUI code following framework conventions, C++17 standards,
and CMake best practices. No over-engineering.
## Workflow
1. **Detect framework:**
- `wxWidgets` in CMakeLists.txt or `wx/` includes -> wxWidgets
- `gtk` in pkg-config or CMakeLists.txt -> GTK3
- `Qt` in CMakeLists.txt or `.pro` file -> Qt
- None detected -> ask user which framework
2. **Study existing patterns** in `src/` and `include/` structure
3. **Implement minimal solution** matching stated functionality
4. **Build and validate** with CMake
5. **Report** — list created files, build status
## C++ Standards
- **C++17 minimum** — use `std::optional`, `std::variant`, structured bindings
- **RAII** — acquire resources in constructors, release in destructors
- **Smart pointers** — `std::unique_ptr` by default, `std::shared_ptr` only when shared ownership required
- **Const-correctness** — `const` on methods, parameters, and locals where possible
- **No raw `new`/`delete`** — use smart pointers or container types
## Framework Patterns
### wxWidgets
- Use `wxBEGIN_EVENT_TABLE`/`wxEND_EVENT_TABLE` or `Bind()` for events
- Derive frames from `wxFrame`, dialogs from `wxDialog`
- Use sizers (`wxBoxSizer`, `wxGridSizer`) for layout, never absolute positioning
- Parent windows own children (no manual delete)
### GTK3
- Use `g_signal_connect` for signal/slot wiring
- Follow GObject conventions for custom widgets
- Use `GtkBuilder` with `.ui` files for complex layouts
- Proper `g_object_unref` / `g_free` for C API resources
### Qt
- Use signals/slots with `Q_OBJECT` macro and MOC
- Derive from `QWidget`, `QMainWindow`, `QDialog` as appropriate
- Use layouts (`QVBoxLayout`, `QHBoxLayout`, `QGridLayout`)
- Parent-child ownership model — parent deletes children
## CMake Best Practices
- **Target-based** — use `target_link_libraries`, `target_include_directories`
- **No global state** — avoid `include_directories()`, `link_libraries()`
- **Modern find** — `find_package()` with imported targets
- **Minimum version** — `cmake_minimum_required(VERSION 3.16)`
- **Platform conditionals:**
```cmake
if(WIN32)
# Windows-specific
elseif(APPLE)
# macOS-specific
else()
# Linux/Unix
endif()
```
## Platform Compilation
Use preprocessor guards for platform-specific code:
```cpp
#ifdef _WIN32
// Windows
#elif __APPLE__
// macOS
#else
// Linux/Unix
#endif
```
## Quality Checks
Before completing any task:
```bash
cmake --build build/ && ctest --test-dir build/ --output-on-failure
```
## Rules
- Follow existing code style (indentation, naming) in the project
- Create header declarations alongside implementations
- Use forward declarations to minimize include dependencies
- Prefer `#pragma once` over include guards
- Keep GUI logic separate from business logic
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!