Use this skill when creating content for the C++ Fundamentals course. Provides course-specific context including target audience (junior developers), technical stack (GCC/Clang, CMake), modern C++ focus (C++17/20), and content style guidelines. Trigger when user mentions "C++ course", "C++ fundamentals", "cpp-fundamentals", or "C++ for junior developers".
Provides course-specific context for C++ Fundamentals content creation. Triggers when user mentions "C++ course", "C++ fundamentals", "cpp-fundamentals", or "C++ for junior developers".
/plugin marketplace add NathanJGaul/plugins/plugin install dev-course-builder@njg-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Course: C++ Fundamentals for Junior Developers Level: Beginner to Intermediate Duration: 12-16 weeks
A comprehensive introduction to C++ for junior developers who want to deepen their understanding of low-level programming, memory management, and systems-level thinking. This course builds a strong foundation in C++ without relying on frameworks, focusing on the language itself and the standard library.
Primary: Junior developers (1-2 years experience) looking to:
Prerequisites:
Not assumed:
Build Understanding from the Ground Up
Modern C++ First
Compile-Run-Debug Cycle
No Framework Dependency
Professional Practices Throughout
<iostream> - I/O operations<string> - String handling<vector>, <array> - Containers<memory> - Smart pointers<algorithm> - Standard algorithms<filesystem> - File operations (C++17)<optional>, <variant> - Modern type handling#include statements// filename: example.cpp
// Compile: g++ -std=c++20 -Wall -o example example.cpp
// Run: ./example
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers{1, 2, 3, 4, 5};
for (const auto& n : numbers) {
std::cout << n << " ";
}
std::cout << "\n";
return 0;
}
Output:
1 2 3 4 5
Always show common errors with full compiler output:
// Common mistake: using uninitialized variable
int x;
std::cout << x; // Undefined behavior!
Compiler warning (with -Wall):
warning: 'x' is used uninitialized [-Wuninitialized]
this pointerstd::vector in depthstd::array vs C arraysstd::string operationsunique_ptr, shared_ptrstd::optional for nullable typesstd::expected (C++23) / error handling patternsDuration: 90 minutes Format: Individual or pair programming
Before finalizing any content:
-std=c++20 -Wall -Wextra -WerrorContainer Name: course-sandbox-cpp-fundamentals
Template: C++ Sandbox (Ubuntu 24.04)
# Build sandbox image
docker build -t course-sandbox-cpp-fundamentals:latest -f .sandbox/Dockerfile .
# Create and start container
docker run -d \
--name course-sandbox-cpp-fundamentals \
-v "$(pwd):/workspace" \
-w /workspace \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--memory=2g \
--cpus=2 \
--network=none \
course-sandbox-cpp-fundamentals:latest \
tail -f /dev/null
| Tool | Version | Purpose |
|---|---|---|
| GCC | 13+ | Primary compiler |
| Clang | 17+ | Alternative compiler |
| CMake | 3.20+ | Build system |
| GDB | Latest | Debugger |
| LLDB | 17 | Alternative debugger |
| Valgrind | Latest | Memory checking |
| clang-tidy | 17 | Static analysis |
| clang-format | 17 | Code formatting |
| cppcheck | Latest | Additional analysis |
| Google Test | Latest | Unit testing |
| Catch2 | Latest | Alternative testing |
# Compile single file
docker exec course-sandbox-cpp-fundamentals \
g++ -std=c++20 -Wall -Wextra -o /tmp/prog /workspace/example.cpp
# Run program
docker exec course-sandbox-cpp-fundamentals /tmp/prog
# Compile with sanitizers
docker exec course-sandbox-cpp-fundamentals \
g++ -std=c++20 -fsanitize=address,undefined -g -o /tmp/prog /workspace/example.cpp
# Run tests
docker exec course-sandbox-cpp-fundamentals \
bash -c "cd /workspace && cmake -B build && cmake --build build && ctest --test-dir build --output-on-failure"
# Lint code
docker exec course-sandbox-cpp-fundamentals \
clang-tidy /workspace/example.cpp -- -std=c++20
# Memory check
docker exec course-sandbox-cpp-fundamentals \
valgrind --leak-check=full /tmp/prog
# Debug session
docker exec -it course-sandbox-cpp-fundamentals gdb /tmp/prog
Before publishing any content:
Run validation on all examples:
/validate-examples cpp-fundamentals
Check specific chapter:
/validate-examples cpp-fundamentals chapter-05
Lint all code for style:
/lint-code src/
Run with sanitizers for memory safety:
/debug-code example.cpp sanitize
Use these throughout content:
Important: Critical concept or common mistake
> **Important:** Always initialize your variables in C++. Unlike some languages,
> C++ does not automatically initialize local variables to zero.
Why This Matters: Connect to real-world relevance
> **Why This Matters:** Understanding the stack vs heap distinction is crucial
> for writing efficient C++ code and avoiding memory leaks.
Coming From [Language]: Help students transfer knowledge
> **Coming From Python:** Unlike Python lists, C++ vectors store elements
> contiguously in memory, which makes random access O(1) but insertions O(n).
Under the Hood: Deeper technical explanation
> **Under the Hood:** When you call a function, the compiler generates code
> that pushes parameters onto the stack, jumps to the function address, and
> sets up a new stack frame.
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.