| name | moai-foundation-ears |
| version | 4.0.0 |
| updated | Thu Nov 20 2025 00:00:00 GMT+0000 (Coordinated Universal Time) |
| status | stable |
| tier | foundation |
| description | EARS (Easy Approach to Requirements Syntax) format for clear requirements |
| allowed-tools | Read, Write |
EARS Format Expert
Easy Approach to Requirements Syntax
Purpose: Write clear, testable requirements
Format: 5 requirement types
Overview
EARS provides templates for writing unambiguous requirements.
5 Requirement Types
- Ubiquitous: Always true
- Event-Driven: Triggered by events
- State-Driven: Depends on system state
- Optional: May occur
- Complex: Multiple conditions
Templates
1. Ubiquitous Requirements
When: No conditions, always true.
Template: The [system] shall [action].
Examples:
- The system shall encrypt passwords using bcrypt.
- The API shall return JSON responses.
2. Event-Driven Requirements
When: Triggered by specific events.
Template: When [trigger], the [system] shall [action].
Examples:
- When user clicks "Submit", the form shall validate all fields.
- When payment succeeds, the system shall send confirmation email.
3. State-Driven Requirements
When: Depends on system state.
Template: While [state], the [system] shall [action].
Examples:
- While user is authenticated, the dashboard shall display personalized content.
- While battery is below 20%, the app shall enable power-saving mode.
4. Optional Requirements
When: Feature may or may not be used.
Template: Where [condition], the [system] shall [action].
Examples:
- Where dark mode is enabled, the UI shall use dark theme colors.
- Where GPS is available, the app shall show user location.
5. Complex Requirements
When: Multiple conditions or alternatives.
Template: If [condition], then [action], else [alternative].
Examples:
- If login succeeds, then redirect to dashboard, else display error message.
- If file size > 10MB, then compress before upload, else upload directly.
Acceptance Criteria
Each requirement should include measurable acceptance criteria:
Example:
Requirement: When user submits login form, the system shall validate credentials.
Acceptance Criteria:
✓ Email format verified (RFC 5322)
✓ Password length ≥8 characters
✓ Validation completes in <100ms
✓ Error messages are user-friendly
Anti-Patterns
❌ Avoid Ambiguity
Bad: The system should work fast.
Good: The system shall respond to API requests in <500ms (p95).
❌ Avoid Mixing Concerns
Bad: When user logs in, the system shall validate credentials and send welcome email.
Good: Split into two requirements (login validation + email notification).
Validation Checklist
- Template: Correct EARS template used?
- Testable: Can be verified with tests?
- Unambiguous: No vague terms (e.g., "fast", "user-friendly")?
- Measurable: Quantifiable criteria provided?
Related Skills
moai-foundation-specs: SPEC writingmoai-foundation-tags: Traceability
Last Updated: 2025-11-20