Skip to content

[Extension]: Add specassay-check #4057

Description

@rdryfoos

Extension ID

specassay-check

Extension Name

SpecAssay Check

Version

0.3.4

Description

Gate 2 refuses silent gaps and emits a trace-manifest (trace-manifest.json).

Author

Rik Dryfoos

Repository URL

https://github.com/rdryfoos/specassay

Download URL

https://github.com/rdryfoos/specassay/releases/download/v0.3.4/specassay-check-0.3.4.zip

License

MIT

Homepage (optional)

https://www.specassay.com

Documentation URL (optional)

https://github.com/rdryfoos/specassay/blob/main/extensions/specassay-check/README.md

Changelog URL (optional)

https://github.com/rdryfoos/specassay/blob/main/CHANGELOG.md

Required Spec Kit Version

=0.14.0

Required Tools (optional)

- bash - required
- python3 (>=3.8) - required

Number of Commands

1

Number of Hooks (optional)

1

Tags

traceability, gate, ci, governance, sdd

Key Features

  • Refuses silent acceptance-criterion gaps, invented IDs, and registry/specs/tasks drift
  • Emits trace-manifest.json on every run — including refusals — so the evidence trail survives failure
  • Honest debt (tracked-debt) and planned work (backlog) pass and stay visible
  • Thread Report: one CI briefing per PR — what moved on the thread, the touched story end to end, and changed files that sit off the thread
  • Restated-intent detection with graded re-confirm hints
  • Optional human-tick gates (offthread_ack / intent_ack) enforced via a specassay/ack commit status

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:

  • Linux (containerized), Spec Kit CLI specify 0.16.3.dev0 (installed from main)

Test project:

Test scenarios:

  1. Added the hosted install-allowed catalogs and installed by ID in a clean project
  2. Ran /speckit.specassay-check.gate on a green project (passes, emits manifest)
  3. Ran it on a broken thread (refuses, still emits manifest)
  4. Live CI demos on the repository: PR Add John Lam as contributor and release badge #1 (green Thread Report), PR Fix release workflow to work with repository rules #2 (refusal), PR doco(spec-driven): Fix small typo in spec-driven.md #4 and feat: implement in Japanese #5 (restated intent)

Example Usage

# Install extension
specify extension add specassay-check --from https://github.com/rdryfoos/specassay/releases/download/v0.3.3/specassay-check-0.3.3.zip

# Use the command (in your integration, e.g. Claude)
/speckit.specassay-check.gate
# → refuses silent gaps; writes trace-manifest.json either way

Proposed Catalog Entry

{
  "specassay-check": {
    "name": "SpecAssay Check",
    "id": "specassay-check",
    "version": "0.3.3",
    "description": "Gate 2 refuses silent gaps and emits a trace-manifest (`trace-manifest.json`).",
    "author": "Rik Dryfoos",
    "download_url": "https://github.com/rdryfoos/specassay/releases/download/v0.3.3/specassay-check-0.3.3.zip",
    "repository": "https://github.com/rdryfoos/specassay",
    "homepage": "https://www.specassay.com",
    "documentation": "https://github.com/rdryfoos/specassay/blob/main/extensions/specassay-check/README.md",
    "license": "MIT",
    "category": "visibility",
    "effect": "read-write",
    "requires": {
      "speckit_version": ">=0.14.0",
      "tools": [
        { "name": "bash", "required": true },
        { "name": "python3", "version": ">=3.8", "required": true }
      ]
    },
    "provides": {
      "commands": 1,
      "hooks": 1
    },
    "tags": ["traceability", "gate", "ci", "governance", "sdd"],
    "verified": false
  }
}

Additional Context

The emitted trace-manifest is deliberately vendor-neutral (format + schemaVersion are the contract); a v5 interop revision is in beta with a second emitter (docs/trace-manifest-v5.md). The walkthrough site (https://www.specassay.com) shows the Gate, the Thread Report, and the intent-PR behavior on live PRs in this repository. Pairs with the specassay preset, which installs the durable-ID contract the Gate enforces.

Activity

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

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