Skip to content

[Extension]: Add EARS Requirements Syntax #3395

Description

@v-dhruv

Extension ID

ears

Extension Name

EARS Requirements Syntax

Version

1.0.0

Description

Author, lint, and convert requirements using EARS (Easy Approach to Requirements Syntax) - the five industry-standard sentence patterns for unambiguous, testable requirements.

Author

dhruv-15-03

Repository URL

https://github.com/dhruv-15-03/spec-kit-ears

Download URL

https://github.com/dhruv-15-03/spec-kit-ears/archive/refs/tags/v1.0.0.zip

License

MIT

Homepage (optional)

https://github.com/dhruv-15-03/spec-kit-ears

Documentation URL (optional)

https://github.com/dhruv-15-03/spec-kit-ears/blob/main/README.md

Changelog URL (optional)

https://github.com/dhruv-15-03/spec-kit-ears/blob/main/CHANGELOG.md

Required Spec Kit Version

=0.9.0

Required Tools (optional)

None - this extension only reads/writes Markdown files under .specify/ears/<slug>/ and has no external tool dependencies.

Number of Commands

3

Number of Hooks (optional)

0

Tags

ears, requirements, specification, quality

Key Features

  • speckit.ears.author - drafts requirements for a feature directly in EARS format, classified by pattern with stable requirement IDs.
  • speckit.ears.lint - audits existing requirements for EARS conformance and ambiguity, producing a read-only lint report with suggested rewrites (never modifies source files).
  • speckit.ears.convert - rewrites free-form requirements into EARS patterns and produces a traceability matrix from originals to EARS statements.
  • All commands communicate through Markdown files in a single per-topic directory (.specify/ears/<slug>/), keeping EARS work self-contained and optional relative to the default Spec Kit workflow.

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Tested on: Windows 11 with a local Spec Kit checkout (specify CLI from this repo's main).

Test project: A scratch Spec Kit project initialized with specify init.

Test scenarios:

  1. Downloaded the v1.0.0 release archive and verified its SHA-256 checksum matches the value published in the release.
  2. Confirmed the archive extracts to a directory containing a valid extension.yml, README.md, LICENSE, CHANGELOG.md, and all three command files referenced in the manifest.
  3. Ran specify extension add --dev against a local checkout of the extension and confirmed the three commands (speckit.ears.author, speckit.ears.lint, speckit.ears.convert) install and register correctly.
  4. Exercised all three commands end-to-end against a sample feature (drafting EARS requirements, linting an existing spec, and converting free-form requirements), confirming output files are written only under .specify/ears/<slug>/ as documented.

Example Usage

# Install extension
specify extension add ears --from https://github.com/dhruv-15-03/spec-kit-ears/archive/refs/tags/v1.0.0.zip

# 1. Author EARS requirements from a feature idea
/speckit.ears.author "A kanban task board where users drag tasks between columns" slug=task-board

# 2. Audit an existing spec's requirements for EARS conformance
/speckit.ears.lint .specify/specs/001-task-board/spec.md slug=task-board

# 3. Convert free-form requirements into EARS with traceability
/speckit.ears.convert slug=task-board

Proposed Catalog Entry

{
  "ears": {
    "name": "EARS Requirements Syntax",
    "id": "ears",
    "description": "Author, lint, and convert requirements using EARS - the five industry-standard sentence patterns for unambiguous, testable requirements",
    "author": "dhruv-15-03",
    "version": "1.0.0",
    "download_url": "https://github.com/dhruv-15-03/spec-kit-ears/archive/refs/tags/v1.0.0.zip",
    "sha256": "182e7234f220e11a1b89b919e46d60ecd208d6ecf8a3d012d97f33e2541d3998",
    "repository": "https://github.com/dhruv-15-03/spec-kit-ears",
    "homepage": "https://github.com/dhruv-15-03/spec-kit-ears",
    "documentation": "https://github.com/dhruv-15-03/spec-kit-ears/blob/main/README.md",
    "changelog": "https://github.com/dhruv-15-03/spec-kit-ears/blob/main/CHANGELOG.md",
    "license": "MIT",
    "requires": {
      "speckit_version": ">=0.9.0"
    },
    "provides": {
      "commands": 3,
      "hooks": 0
    },
    "tags": ["ears", "requirements", "specification", "quality"],
    "verified": false,
    "downloads": 0,
    "stars": 0,
    "created_at": "2026-07-07T00:00:00Z",
    "updated_at": "2026-07-07T00:00:00Z"
  }
}

Additional Context

This supersedes PR #3324 ("feat(extensions): add EARS requirements syntax extension"), which originally proposed bundling this extension directly into the core spec-kit repository. Per maintainer feedback on that PR (#3324 (comment)), the same extension is now delivered as a standalone community extension per the Extension Publishing Guide. PR #3324 is being closed in favor of this submission.

Posted by GitHub Copilot on behalf of @dhruv-15-03.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions