kiss-principle
Apply the K.I.S.S principle (Keep It Simple, Stupid) to reduce complexity, improve maintainability, and solve problems elegantly. Use when designing systems, writing code, planning solutions, creating documentation, architecting features, or making decisions where simplicity drives quality and efficiency.
What this skill does
# K.I.S.S Principle Orchestration Skill This skill helps you apply the K.I.S.S principle—"Keep It Simple, Stupid"—to systematically reduce unnecessary complexity while maintaining functionality and effectiveness. Simplicity is not about removing necessary features; it's about eliminating unnecessary complications. ## Quick Reference: When to Load Which Resource | Your Situation | Load Resource | Why | |---|---|---| | Need to understand KISS fundamentals and why simplicity matters | `resources/kiss-fundamentals.md` | Learn core concepts, history, and empirical benefits | | Reviewing code, design, or system for unnecessary complexity | `resources/complexity-analysis.md` | Identify complexity sources, anti-patterns, red flags | | Want proven strategies to simplify solutions | `resources/simplification-strategies.md` | Learn 10+ actionable techniques with software/UX examples | | Building or designing something new with KISS in mind | `resources/kiss-driven-design.md` | Apply KISS during design, architecture, feature planning | | Comparing simple vs complex approaches | `resources/decision-frameworks.md` | Use frameworks to evaluate tradeoffs, make smart choices | | Seeing worked examples of effective simplification | `resources/case-studies.md` | Real cases: code refactoring, API design, UX improvements | ## Core Principle **Simplicity is the ultimate sophistication.** — Leonardo da Vinci The K.I.S.S principle states that most systems work better when kept simple rather than made complex. Unnecessary complexity: - Increases bugs and maintenance burden - Makes systems harder to understand and modify - Reduces performance and reliability - Wastes development time and resources - Creates cognitive overload for users and developers **The Goal:** Solve problems with the minimum necessary complexity while preserving correctness and user value. ## Orchestration Protocol ### Phase 1: Assess Your Situation Quickly identify what you're simplifying and why: **Context Type:** - **Code Review/Refactoring**: Existing code has unnecessary complexity → Load complexity-analysis.md - **Feature Design**: Planning new functionality → Load kiss-driven-design.md - **Architecture/System Design**: Building infrastructure or large systems → Load simplification-strategies.md - **Problem-Solving**: Finding solution to technical challenge → Load decision-frameworks.md - **UX/Documentation**: Improving clarity and usability → Load simplification-strategies.md - **Learning**: Understanding KISS principles → Load kiss-fundamentals.md **Complexity Level:** - **Light**: Minor improvements, small scope → Use simplification-strategies.md directly - **Medium**: Significant redesign needed, moderate scope → Use complexity-analysis.md + decision-frameworks.md - **Heavy**: Major architectural changes, system-wide complexity → Use all resources systematically **Action:** Load appropriate resource file(s) based on situation. ### Phase 2: Analyze and Plan Based on context, follow these steps: | Step | What to Do | Resource | |---|---|---| | **1. Identify complexity** | What makes this complex? What's unnecessary? | complexity-analysis.md | | **2. Understand tradeoffs** | What are we gaining/losing with each approach? | decision-frameworks.md | | **3. Select strategies** | Which simplification techniques apply here? | simplification-strategies.md | | **4. Design simply** | How would we design this with KISS in mind? | kiss-driven-design.md | | **5. Verify value** | Does the simple solution meet requirements? | decision-frameworks.md | | **6. Reference examples** | How have others solved this simply? | case-studies.md | ### Phase 3: Execution & Validation **Before Simplifying:** - Preserve core functionality and requirements - Document why current complexity exists - Identify what stakeholders actually need vs. want - Create rollback plan if needed **During Simplification:** 1. Remove one layer of complexity at a time 2. Verify functionality after each change 3. Measure improvement (LOC, cyclomatic complexity, performance) 4. Document decisions and rationale **After Simplification:** - Test thoroughly (more bugs often hide in complexity) - Gather feedback from team and users - Monitor performance and stability - Document simpler approach for future reference ## Complexity Assessment Framework Quickly evaluate if something is too complex: **Red Flags - This is Too Complex:** - ❌ You can't explain it in 2-3 sentences - ❌ It requires extensive documentation to understand - ❌ New team members struggle to modify it for weeks - ❌ It has many interdependencies and side effects - ❌ Performance problems correlate with feature addition - ❌ Bugs consistently appear in this component - ❌ It has deeply nested conditionals (>3 levels) - ❌ Multiple abstractions on top of each other - ❌ Over-engineered for current and foreseeable needs **Green Flags - This is Appropriately Simple:** - ✅ You can explain it clearly in 1-2 minutes - ✅ New developers understand it quickly - ✅ It does one thing well (single responsibility) - ✅ Dependencies are explicit and minimal - ✅ It's stable with few bugs - ✅ Code is readable and self-documenting - ✅ It serves current needs without speculation ## KISS vs Over-Engineering | Aspect | KISS | Over-Engineering | |---|---|---| | **Scope** | Solves current problem | Anticipates future needs | | **Code** | ~100-200 LOC | ~500+ LOC | | **Time to Ship** | 1-2 weeks | 4-8+ weeks | | **Maintenance** | Easy to modify | Complex to change | | **Performance** | Good enough | Highly optimized | | **Bugs** | Few, obvious | Many, hidden | | **Approach** | Add complexity when needed | Remove complexity as possible | ## Key Principles to Remember 1. **Necessity Test**: Does every component, line, and feature serve a current user need? 2. **Clarity First**: Clear code beats clever code 3. **Single Responsibility**: Each function/module does one thing well 4. **Minimal Dependencies**: Fewer connections = fewer failure points 5. **Explicit Better Than Implicit**: Code should be obvious, not magical 6. **Measure Before Optimizing**: Don't optimize prematurely 7. **Refactor Incrementally**: Simplify gradually, test continuously ## Common Complexity Anti-Patterns See `resources/complexity-analysis.md` for detailed analysis of: - Over-abstraction (too many layers) - Premature optimization (optimizing before profiling) - Gold plating (adding nice-to-haves) - Speculative generalization (over-generalizing) - Feature creep (scope expansion) - Accidental complexity vs essential complexity - Technical debt accumulation ## Simplification Strategies See `resources/simplification-strategies.md` for 10+ proven techniques: - Constraint-based design - Default assumptions - Removing features - Consolidating logic - Flattening architecture - Eliminating abstractions - Standardizing approaches - And more... ## Resource Files Summary ### `resources/kiss-fundamentals.md` Foundation and philosophy: - KISS principle definition and history - Why simplicity matters (empirical evidence) - Simplicity vs complexity tradeoffs - Principles of effective simplification - Common misconceptions ### `resources/complexity-analysis.md` Identifying and understanding complexity: - Complexity sources and types - Measuring complexity (cyclomatic, LOC, coupling) - Identifying unnecessary complexity - Recognizing over-engineering - Red flags and anti-patterns ### `resources/simplification-strategies.md` Actionable techniques for simplifying: - 10+ proven simplification strategies - When to apply each strategy - Code examples in multiple languages - UX simplification approaches - Architecture simplification patterns ### `resources/kiss-driven-design.md` Applying KISS from the start: - Designing for simplicity - Requirements gathering with KISS in mind - Architecture patterns that promote simplicity - Feature design principles - Documentation and communication ### `resources/decision-frameworks.md` Making
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.