$npx -y skills add human-avatar/skills-for-humanity --skill s4h-design-simplicityApplies the design principle of removing rather than adding — finding the form that does exactly what is needed, nothing more. Triggers: 'simplify this', 'remove what's unnecessary', 'it's too complicated', 'what can we cut', 'reduce the design', 'it's bloated', 'make it simpler'
| 1 | # Design: Simplicity |
| 2 | |
| 3 | The hardest design work is not adding — it is knowing what to remove. Every element that is added must justify its presence. Every element that remains without justification is waste: it adds cognitive load, maintenance burden, visual noise, and the implicit message that the designer didn't finish the job. |
| 4 | |
| 5 | Dieter Rams' tenth principle is the most demanding: good design is as little design as possible. He doesn't mean sparse aesthetics. He means form that is completely fit for purpose without excess — nothing that doesn't do work, nothing that does work that isn't needed. Rams reached this point by removing things from Braun products until removing anything more would break function. The test is not "is this minimal?" but "is this necessary?" |
| 6 | |
| 7 | Edward Tufte applies the same principle to information design: data-ink ratio. Of all the ink on the page, what fraction encodes actual data? Everything else is chartjunk — it consumes attention without transferring information. Remove it. The principle extends to every designed artefact: of all the elements in this design, what fraction serves the function? The rest can go. |
| 8 | |
| 9 | The difficulty is that subtraction feels destructive. Features that were added with reasons seem like they should stay. This skill provides the discipline to test each element against function and remove what doesn't pass. |
| 10 | |
| 11 | --- |
| 12 | |
| 13 | ## Your Process |
| 14 | |
| 15 | **Step 1: Enumerate Every Element** |
| 16 | List every element in the current design. Be exhaustive. For a product: features, controls, labels, states. For a document: sections, headings, callouts, annotations, formatting choices. For a UI: screens, interactions, fields, error states, modals, navigation items. For a system: components, interfaces, parameters, configurations. |
| 17 | |
| 18 | If the list is long, group by layer or component before enumerating. |
| 19 | |
| 20 | **Framing check:** Confirm the design and the purpose it should serve before continuing. State what you've identified — the thing being simplified and its primary function — in one sentence, then use `AskUserQuestion`: |
| 21 | - **Question:** "I'm reading this as: [your one-sentence framing of the design and its purpose]. Is that right?" |
| 22 | - **Header:** "Framing" |
| 23 | - **Options:** |
| 24 | - **Yes — proceed** — framing is correct |
| 25 | - **Adjust** — one element is off; user will correct it before you continue |
| 26 | - **Reframe** — different situation than read; incorporate the correction before proceeding |
| 27 | |
| 28 | **Step 2: Define the Function** |
| 29 | State the primary function precisely: what is this design for? What job does it do? Everything else is subordinate to this. An element that serves a secondary function at the cost of obscuring the primary function is removing value, not adding it. |
| 30 | |
| 31 | Also define: who is the user, what is the context of use, and what does success look like? These define the evaluation frame for every element. |
| 32 | |
| 33 | **Step 3: Test Each Element** |
| 34 | For every element identified in Step 1, apply this test: |
| 35 | |
| 36 | **The removal test:** If this element were removed, would the design fail to perform its primary function? |
| 37 | - **Yes:** Load-bearing — keep it. |
| 38 | - **No:** Candidate for removal — mark it. |
| 39 | |
| 40 | For candidates, also ask: |
| 41 | - Does it serve a genuine secondary function that is worth its cost in complexity? |
| 42 | - Is it serving the user, or serving the designer's desire to seem thorough? |
| 43 | - Would a user notice it was gone? Would they care? |
| 44 | |
| 45 | **Step 4: Identify Complexity Sources** |
| 46 | Some elements are individually justifiable but collectively produce unnecessary complexity. Identify: |
| 47 | - **Redundant elements:** two elements that do the same job |
| 48 | - **Over-specified elements:** an element that is more elaborate than its function requires |
| 49 | - **Fear-driven elements:** elements added because removing them felt risky, not because they're needed (extra confirmation dialogs, backup modes, fallback text, explanatory labels for things that should be self-evident) |
| 50 | - **Legacy elements:** things that existed for a reason that no longer applies |
| 51 | |
| 52 | **Step 5: Apply Subtraction** |
| 53 | Remove. Start with the clearest candidates — elements that fail the removal test and have no secondary function. Then move to the more difficult calls: elements that have marginal secondary value but add meaningful complexity. |
| 54 | |
| 55 | For each removal, state what it was doing and why it's not needed. This is the reasoning that prevents the elements from drifting back in future iterations. |
| 56 | |
| 57 | **Step 6: Test the Simplified Form** |
| 58 | State what the simplified design consists of. Apply the function test: does it still do the primary job completely? If not, identify which removal went too far and restore only that element. |
| 59 | |
| 60 | Th |