Skip to content
ears-author logo

ears-author

Interactive EARS pattern authoring assistant. Guides through pattern selection and requirement construction.

SKILL.md

Full skill instructions

EARS Pattern Authoring

Interactive assistant for creating requirements using EARS (Easy Approach to Requirements Syntax) patterns.

EARS Patterns Overview

PatternUse WhenTemplate
UbiquitousAlways trueThe system SHALL [action]
Event-DrivenTriggered by eventWHEN [event], the system SHALL [action]
State-DrivenDepends on stateWHILE [state], the system SHALL [action]
UnwantedHandle failuresIF [condition], THEN the system SHALL [action]
OptionalFeature-dependentWHERE [feature], the system SHALL [action]
ComplexMultiple conditionsCombination of above

Workflow

  1. Gather Context

    • If argument provided, analyze the requirement description
    • If --interactive, prompt for requirement details
  2. Pattern Selection

    • Spawn spec-author ears agent
    • Agent guides through pattern selection based on:
      • Is this always true? → Ubiquitous
      • Triggered by an event? → Event-Driven
      • Depends on system state? → State-Driven
      • Handling an error/​failure? → Unwanted
      • Optional feature? → Optional
      • Multiple conditions? → Complex
  3. Construct Requirement

    • Fill in pattern template
    • Validate EARS syntax
    • Check for common anti-patterns
  4. Generate Acceptance Criteria

    • Create Given/​When/​Then scenarios
    • Cover happy path and edge cases
  5. Output

    • Display formatted requirement
    • Optionally append to specification file

Arguments

  • $ARGUMENTS - Requirement description to convert to EARS
  • --interactive - Step-by-step guided authoring
  • --append - Append to specification file
  • --pattern - Force specific pattern (ubiquitous, event, state, unwanted, optional, complex)

Examples

# From description
/​spec-driven-development:ears-author "User can log in with email and password"

# Interactive mode
/​spec-driven-development:ears-author --interactive

# Force pattern
/​spec-driven-development:ears-author "Handle timeout errors" --pattern unwanted

# Append to spec
/​spec-driven-development:ears-author "Session expires after 30 minutes" --append .specs/​auth/​spec.md

Pattern Selection Guide

                    ┌─────────────────────┐
                    │ What triggers this? │
                    └─────────┬───────────┘
                              │
           ┌──────────────────┼──────────────────┐
           │                  │                  │
           ▼                  ▼                  ▼
    ┌──────────┐       ┌──────────┐       ┌──────────┐
    │ Nothing  │       │ An event │       │ A state  │
    │(always)  │       │          │       │          │
    └────┬─────┘       └────┬─────┘       └────┬─────┘
         │                  │                  │
         ▼                  ▼                  ▼
    Ubiquitous         Event-Driven       State-Driven


    ┌─────────────────────────────────────────────┐
    │ Is this handling an error or failure case? │
    └─────────────────────┬───────────────────────┘
                          │
                    ┌─────┴─────┐
                    │    Yes    │
                    └─────┬─────┘
                          │
                          ▼
                      Unwanted

Output Format

## FR-X: [Generated Title]

WHEN the user submits valid login credentials,
the system SHALL authenticate the user
AND create a session token.

### Acceptance Criteria

- [ ] AC-X.1: Given valid email and password, when submitted, then user is authenticated
- [ ] AC-X.2: Given valid credentials, when authenticated, then session token is returned
- [ ] AC-X.3: Given invalid password, when submitted, then authentication fails with error

Related Commands

  • /​spec-driven-development:ears-convert - Convert between EARS and other formats
  • /​spec-driven-development:gherkin-author - Create Gherkin scenarios
  • /​spec-driven-development:specify - Generate full specification