pedagogy
Use this skill when creating programming education content. Provides pedagogical principles for code-first learning, incremental complexity, error-driven teaching, and level-appropriate content. Trigger phrases include "teaching principles", "how to teach", "pedagogical approach", "educational best practices".
What this skill does
# Programming and Development Teaching Principles General pedagogical principles for teaching programming, software development, and systems programming. ## Core Teaching Philosophy ### 1. Code-First Learning Programming is learned by writing and running code, not just reading about it: - Provide working, compilable code examples - Show the complete build-run-output cycle - Encourage experimentation and modification - Build confidence through successful compilation and execution - Learn from compiler errors and runtime failures ### 2. Mental Model Development Help students build accurate mental models of how code executes: - Visualize memory layout and data flow - Trace execution step by step - Understand the stack, heap, and program lifecycle - Connect high-level code to low-level behavior - Make the "invisible" visible through diagrams and examples ### 3. Incremental Complexity Build understanding step by step: - Start with minimal working examples - Introduce one concept at a time - Build on previously learned patterns - Avoid overwhelming with edge cases upfront - Progress from "what" to "why" to "when" ### 4. Error-Driven Learning Compiler errors and bugs are learning opportunities: - Show common errors and how to interpret them - Teach debugging strategies and tools - Normalize mistakes as part of learning - Build pattern recognition for error types - Connect symptoms to underlying causes ### 5. Professional Practice Integration Connect learning to real-world development: - Version control from the start - Testing as a development tool - Code review and readability - Documentation and comments - Build systems and toolchains ## Content Structure Guidelines ### For Chapters 1. **Start with working code** - Show what success looks like 2. **Explain the building blocks** - Break down each component 3. **Introduce variations** - Show different ways to achieve similar goals 4. **Address common pitfalls** - What can go wrong and why 5. **Practice with exercises** - Hands-on application 6. **Connect to bigger picture** - How this fits into larger programs ### For Code Examples 1. **Complete and runnable** - No pseudo-code without real implementation 2. **Well-commented** - Explain non-obvious parts 3. **Idiomatic** - Follow language conventions and best practices 4. **Progressive** - Build from simple to complex 5. **Error examples included** - Show what broken code looks like ### For Exercises 1. **Clear specifications** - Unambiguous requirements 2. **Scaffolded difficulty** - From guided to independent 3. **Real compilation required** - Not just "write on paper" 4. **Testing provided** - Help students verify their solutions 5. **Extension opportunities** - For students who finish early ### For Slides/Presentations 1. **Live coding focus** - Demonstrate in real-time 2. **Build incrementally** - Add code piece by piece 3. **Show compiler output** - Make the feedback loop visible 4. **Include think-alouds** - Model problem-solving process 5. **Interactive elements** - Have students predict outcomes ## Level Differentiation ### Beginner Developers - Assume minimal programming experience - Explain every keyword and symbol - Provide extensive scaffolding - Focus on "making it work" before optimization - Use simple, relatable examples - Celebrate small victories ### Intermediate Developers - Assume familiarity with basic concepts - Focus on language-specific features - Introduce design patterns and idioms - Compare with other languages they know - Include more complex real-world examples - Emphasize code organization ### Advanced Developers - Assume strong foundation - Focus on performance and optimization - Deep dive into language internals - Advanced patterns and techniques - System-level understanding - Research and industry best practices ## Language-Specific Guidance ### For Systems Languages (C, C++, Rust) - **Memory management is central** - Teach allocation, deallocation, ownership - **Compilation matters** - Explain the build process - **Performance awareness** - Discuss efficiency implications - **Safety considerations** - Bounds checking, undefined behavior - **Low-level concepts** - Pointers, references, memory layout ### For Managed Languages (Python, Java, C#) - **Abstraction appreciation** - What the runtime handles - **When to go lower** - Understanding what's "under the hood" - **Framework navigation** - Working with large ecosystems - **Performance considerations** - Garbage collection, JIT ### For Web Development Languages (JavaScript, TypeScript) - **Async model understanding** - Event loop, callbacks, promises - **Browser vs Node.js** - Different runtime environments - **Toolchain complexity** - Build tools, bundlers, transpilers - **Ecosystem navigation** - Package management, dependencies ## Framework Inclusion Guidelines ### When Teaching WITHOUT Frameworks - **Focus on fundamentals** - Raw language and standard library - **Build things from scratch** - Understand underlying mechanisms - **Appreciate what frameworks do** - Creates motivation for later - **Complete control** - Every line is intentional and understood ### When Teaching WITH Frameworks - **Framework as amplifier** - Build on fundamentals - **Convention understanding** - Why the framework works this way - **Escape hatches** - How to go beyond the framework when needed - **Multiple frameworks** - Principles transfer between tools ## Assessment Philosophy ### Code-Based Assessment - **Compilation required** - No partial credit for non-compiling code - **Automated testing** - Objective evaluation of correctness - **Code review component** - Style, readability, efficiency - **Debugging exercises** - Find and fix bugs in given code ### Understanding Assessment - **Trace exercises** - What does this code output? - **Error prediction** - What's wrong with this code? - **Design questions** - How would you structure this? - **Comparison questions** - Trade-offs between approaches ## Common Pitfalls to Avoid 1. **Too abstract too soon** - Build intuition before theory 2. **Perfect code only** - Show messy first drafts too 3. **Ignoring errors** - Errors are teaching moments 4. **One right way** - Usually multiple valid approaches 5. **Skipping the boring parts** - Setup, configuration matter 6. **Assuming IDE familiarity** - Teach the tools too 7. **No debugging practice** - Essential professional skill 8. **Disconnected theory** - Always connect to practical use
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.