When to load: Before creating any page spec, component definition, or scenario documentation
If I can't explain it logically, it's not ready to specify.
Gaps in logic become bugs in code. Clear specifications = confident implementation.
Before you write any specification, ask:
"Can I explain WHY this exists and HOW it works without hand-waving?"
If you can't explain it clearly, stop and think deeper.
Area Labels follow a consistent hierarchical pattern to identify UI locations across sketch, specification, and code.
These define the page architecture and visual grouping:
{page-name}-page - Top-level page wrapper{page-name}-header - Header section container{page-name}-main - Main content area{page-name}-form - Form element wrapper{page-name}-{section}-section - Section containers{page-name}-{section}-header-bar - Section header barsPurpose: Organize page structure, enable Figma layer naming (via aria-label), support testing selectors (via id attribute)
These identify specific interactive elements:
{page-name}-{section}-{element} - Standard pattern{page-name}-input-{field} - Form inputs{page-name}-button-{action} - Buttons{page-name}-error-{field} - Error messagesPurpose: Enable user interaction, form validation, accessibility, and location tracking across design and code
Note: Area Labels become both id and aria-label attributes in HTML implementation.
Name components by FUNCTION, not CONTENT
hero-headline - Describes its role on the pageprimary-cta - Describes its function in the flowfeature-benefit-section - Describes what it doesform-validation-error - Describes when it appearswelcome-message - What if the message changes?blue-button - What if we change colors?first-paragraph - Position isn't purposeemail-error-text - Too specific, not reusableWhy this matters:
Every component needs a clear job description:
### [Component Name]
**Purpose:** [What job does this do?]
**Triggers:** [What user action/state causes this?]
**Serves:** [Which driving force or goal?]
**Success:** [How do we know it worked?]
### Primary CTA Button
**Purpose:** Initiate account creation flow
**Triggers:** User clicks after reading value proposition
**Serves:** User's desire to "feel prepared" (positive driving force)
**Success:** User enters email and moves to step 2
Understand the WHOLE before detailing the PARTS
{page}-page, {page}-header, etc.{page}-{section}-{element}Result: Logical flow, no gaps, confident specifications, complete Area Label coverage
{page}-page){page}-header){page}-main){page}-form){page}-{section}-section){page}-{section}-header-bar){page}-{section}-{element})Never design in one language only
#### Hero Headline
**Content:**
- EN: "Stop losing clients to poor proposals"
- SE: "Sluta förlora kunder på dåliga offerter"
- NO: "Slutt å miste kunder på dårlige tilbud"
**Purpose:** Hook Problem Aware users by validating frustration
Before marking a spec "complete":
{page}-{section}-{element} pattern?🚩 Vague language: "Something here to help users understand..."
🚩 Content-based names: "blue-box", "top-paragraph"
🚩 Missing purpose: "There's a button... because buttons are good?"
🚩 Illogical flow: "This section comes after that one... because?"
🚩 English-only: "We'll translate later..."
🚩 Gaps in logic: "Users will just know what to do here"
🚩 Missing accessibility: "We'll add ARIA labels during development..."
🚩 No alt text: Images without descriptive alternatives
🚩 Unlabeled inputs: Form fields without associated labels
🚩 No SEO section: Public page without URL slug, keywords, or meta content
When you spot these, pause and dig deeper.
Imagine handing your spec to a developer who:
Could they build this confidently?
../../workflows/00-system/FILE-NAMING-CONVENTIONS.md../../workflows/00-system/language-configuration-guide.md../../workflows/wds-4-ux-design/templates/page-specification.template.mdQuality specifications are the foundation of confident implementation.