$npx -y skills add ghaida/intent --skill fortifyHarden designs for real-world use by systematically identifying and designing for every condition outside the happy path. Part of the Intent design strategy system. Covers state inventories, error recovery, empty states, loading patterns, first-run experiences, stress testing, in
| 1 | # Fortify — Harden for Real-World Use |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | The happy path is a fantasy. Real users have 47-character last names, 2G connections on the subway, three-year-old phones with cracked screens, browser tabs they haven't closed in six days, and no patience for something that doesn't work the first time they try it. |
| 6 | |
| 7 | Every design starts with the ideal scenario: the user has a stable connection, reasonable data, a modern device, and follows the intended flow without deviation. That scenario accounts for maybe 60% of actual usage. The other 40% is where trust is built or destroyed — the empty state that tells the user nothing, the error message that says "Something went wrong" without explaining what or how to fix it, the loading screen that gives no indication anything is happening, the first-run experience that asks for 12 pieces of information before showing any value. |
| 8 | |
| 9 | Fortify systematically identifies every condition your users will actually encounter and ensures the design handles each one with the same care you gave the happy path. This isn't about pessimism — it's about respect for the people using what you build. |
| 10 | |
| 11 | **When to activate this skill:** Edge case reviews, error state design, empty state design, loading pattern design, first-run experience design, offline mode planning, internationalization readiness checks, stress testing, or any moment someone asks "but what happens when..." |
| 12 | |
| 13 | --- |
| 14 | |
| 15 | ## Skill family |
| 16 | |
| 17 | Fortify works alongside the full Intent skill system, with especially tight connections to skills that define the paths you stress-test: |
| 18 | |
| 19 | - **`/journey`** — Their flows define the happy path; you stress-test everything else. Every flow they design generates a set of questions: what happens when this step fails? What if the user abandons midway and returns? What if data from step 2 isn't available at step 4? Your work feeds back into their flow design as additional states and branches. |
| 20 | |
| 21 | - **`/blueprint`** — Their failure mode analysis at the system level feeds your UX-level resilience design. When they identify that a service can timeout, you design what the user sees during that timeout. When they map a dependency that can fail, you design the degraded experience. System-level failure modes become UX-level state designs. |
| 22 | |
| 23 | - **`/include`** — Accessibility and fortification overlap significantly. Designing for slow connections, small screens, one-handed use, and situational impairment is both resilience work and inclusive design. Coordinate to avoid duplication — you own the state and edge case methodology; they own the accessibility methodology and assistive tech requirements. |
| 24 | |
| 25 | - **`/evaluate`** — Their assessment identifies what's failing in the current experience; you design the fixes. When they flag missing error states, absent loading indicators, or unhelpful empty states, those findings route directly to you. Your output feeds back into their next evaluation cycle. |
| 26 | |
| 27 | - **`/specify`** — Your edge case documentation becomes part of their handoff package. Every state you design, every error recovery flow you define, every stress test result — all of it needs to be in the engineering spec. Coordinate on format: specs that list only the happy path are specs that produce broken products. |
| 28 | |
| 29 | - **`/articulate`** — Error messages, empty state copy, loading messages, first-run guidance — all of it is content that needs to be clear, helpful, and on-brand. You define what needs to be said; they define how to say it. |
| 30 | |
| 31 | - **`/philosopher`** — "What's the most embarrassing way this could fail in public?" "What assumption are we making about our users that would be humiliating if wrong?" The philosopher helps you find the failure modes that nobody's imagined yet — the ones that come from questioning assumptions, not from running checklists. |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## Core capabilities |
| 36 | |
| 37 | ### 1. State inventory |
| 38 | |
| 39 | Every screen, component, and flow has states beyond "default." Most designs only spec the default state. Fortify enumerates all of them. |
| 40 | |
| 41 | **The state catalog:** |
| 42 | |
| 43 | **Default** — The happy path with normal data. This is what the mockup shows. It's the s |