Skip to content

[Preset]: Add Closed Vocabulary Check #4192

Description

@yunusdim

Preset ID

closed-vocabulary

Preset Name

Closed Vocabulary Check

Version

1.0.1

Description

Adds a pass to /speckit.analyze that flags closed sets of values enumerated more than once with different members, and reports its own coverage.

Author

Diego Gabriel Impieri

Repository URL

https://github.com/yunusdim/spec-kit-preset-closed-vocabulary

Download URL

https://github.com/yunusdim/spec-kit-preset-closed-vocabulary/archive/refs/tags/v1.0.1.zip

Documentation URL

https://github.com/yunusdim/spec-kit-preset-closed-vocabulary/blob/main/README.md

License

MIT

Required Spec Kit Version

=0.8.0

Required Extensions (optional)

No response

Templates Provided

None

Commands Provided

  • speckit.analyze.md — appends a closed-set divergence pass via the append composition strategy (core untouched); reports on divergent enumerations of the same named set and its own coverage (declarations inspected vs. recognised); warning only, never blocks

Number of Scripts (optional)

No response

Tags

analysis, consistency, vocabulary, verification

Key Features

  • Flags closed sets of values (statuses, categories, admissible kinds) that are enumerated more than once across a spec with different members
  • Groups declarations by the name preceding the introducer, not by content similarity, to avoid false matches
  • Reports the difference in both directions for every divergent group — what each side omits
  • Reports its own coverage on every run (declarations inspected vs. recognised), so a zero-divergence result is never silently read as "clean"
  • Runs as a warning only — it never blocks the analyze pass
  • Uses strategy: append, so it carries no copy of the core analyze.md and does not need to track upstream changes to it
  • Ships with 3 fixtures: one positive control (must fire) and two negative controls — formatting variance and a declared-subset relation — verifying the check stays quiet when it should

Testing Checklist

  • Preset installs successfully via specify preset add
  • Template resolution works correctly after installation
  • Documentation is complete and accurate
  • Tested on at least one real project

Submission Requirements

  • Valid preset.yml manifest included
  • Linked README (Documentation URL) explains how to use this preset and includes a valid specify preset add ... command (preferably specify preset add --from <download-url> using the exact download URL)
  • LICENSE file included
  • GitHub release created with version tag
  • Preset ID follows naming conventions (lowercase-with-hyphens)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions