Implementing cpp
Skill qte77/claude-code-plugins/plugins/cpp-desktop/skills/implementing-cpp
A Claude Code plugin marketplace providing skills, rules, and scripts extracted from a production development workflow.
npx -y skills add qte77/claude-code-plugins --skill implementing-cppAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
3.3 KB, as published. Nobody here has run it
C++ Desktop Implementation
Target: $ARGUMENTS
Implement C++ desktop GUI code following framework conventions, C++17 standards, and CMake best practices. No over-engineering.
Workflow
- Detect framework:
wxWidgetsin CMakeLists.txt orwx/includes -> wxWidgetsgtkin pkg-config or CMakeLists.txt -> GTK3Qtin CMakeLists.txt or.profile -> Qt- None detected -> ask user which framework
- Study existing patterns in
src/andinclude/structure - Implement minimal solution matching stated functionality
- Build and validate with CMake
- 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_ptrby default,std::shared_ptronly when shared ownership required - Const-correctness —
conston 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_TABLEorBind()for events - Derive frames from
wxFrame, dialogs fromwxDialog - Use sizers (
wxBoxSizer,wxGridSizer) for layout, never absolute positioning - Parent windows own children (no manual delete)
GTK3
- Use
g_signal_connectfor signal/slot wiring - Follow GObject conventions for custom widgets
- Use
GtkBuilderwith.uifiles for complex layouts - Proper
g_object_unref/g_freefor C API resources
Qt
- Use signals/slots with
Q_OBJECTmacro and MOC - Derive from
QWidget,QMainWindow,QDialogas 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:
if(WIN32) # Windows-specific elseif(APPLE) # macOS-specific else() # Linux/Unix endif()
Platform Compilation
Use preprocessor guards for platform-specific code:
#ifdef _WIN32
// Windows
#elif __APPLE__
// macOS
#else
// Linux/Unix
#endif
Quality Checks
Before completing any task:
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 onceover include guards - Keep GUI logic separate from business logic