Skip to content

feat(extensions): add speckit-utils extension with resume, doctor, validate#1895

Closed
mvanhorn wants to merge 1 commit intogithub:mainfrom
mvanhorn:osc/feat-sdd-utils-extension
Closed

feat(extensions): add speckit-utils extension with resume, doctor, validate#1895
mvanhorn wants to merge 1 commit intogithub:mainfrom
mvanhorn:osc/feat-sdd-utils-extension

Conversation

@mvanhorn
Copy link
Contributor

Summary

Packages three SDD utility commands as an extension, per feedback on PRs #1892, #1893, #1894 where @mnriem requested these be delivered as extensions rather than core commands.

Commands

  • speckit.speckit-utils.resume - Scan project features, detect their SDD phase (specify/plan/tasks/implement/complete), and suggest the next command to continue work
  • speckit.speckit-utils.doctor - Validate project health across five categories: templates, agent config, scripts, constitution, and feature artifacts
  • speckit.speckit-utils.validate - Verify spec-to-task traceability and check that completed tasks produced expected files

Hooks

Optional hooks into:

  • after_specify - prompts to run doctor (project health check)
  • after_plan - prompts to run validate (requirement traceability)

Structure

Follows the extension template pattern with extension.yml manifest, commands/*.md agent instruction files, config template, README, LICENSE, and CHANGELOG.

Testing

Manually verified extension structure matches the template and selftest patterns. Markdown lint is excluded for extensions per the lint workflow config.

This contribution was developed with AI assistance (Claude Code).

…lidate

Packages three SDD utility commands as an extension per maintainer
feedback on PRs github#1892, github#1893, github#1894.

Commands:
- speckit.speckit-utils.resume: detect feature state, suggest next command
- speckit.speckit-utils.doctor: validate project health (templates, agent
  config, scripts, constitution, feature artifacts)
- speckit.speckit-utils.validate: verify spec-to-task traceability and
  check that completed tasks produced expected files

Hooks into after_specify (doctor) and after_plan (validate) optionally.

This contribution was developed with AI assistance (Claude Code).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new speckit-utils extension intended to package three SDD utility workflows (resume/doctor/validate) as extension-provided slash commands, along with optional post-command hooks and supporting documentation.

Changes:

  • Introduces extensions/speckit-utils/extension.yml defining three commands and hook declarations
  • Adds command instruction markdown files for resume, doctor, and validate
  • Adds extension docs/artifacts (README, CHANGELOG, LICENSE) and a config template

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
extensions/speckit-utils/extension.yml Declares extension metadata, provided commands, and hook definitions
extensions/speckit-utils/config-template.yml Provides a sample configuration template for the extension
extensions/speckit-utils/commands/resume.md Agent instructions for resuming SDD workflow based on feature state
extensions/speckit-utils/commands/doctor.md Agent instructions for a project “health check” workflow
extensions/speckit-utils/commands/validate.md Agent instructions for deterministic traceability + artifact validation workflow
extensions/speckit-utils/README.md End-user documentation and installation guidance
extensions/speckit-utils/CHANGELOG.md Version history for the extension
extensions/speckit-utils/LICENSE MIT license for the extension
Comments suppressed due to low confidence (1)

extensions/speckit-utils/commands/doctor.md:62

  • The constitution check looks for constitution.md or memory/constitution.md, but Spec Kit stores the constitution at .specify/memory/constitution.md by default (and templates under .specify/templates/). Update the documented paths so healthy projects aren’t flagged as missing a constitution.
### Step 5: Check constitution

Look for `constitution.md` or `memory/constitution.md` in the project root.

- Exists and has content (>10 words): PASS (show word count)
- Exists but empty: WARN ("constitution is empty")
- Not found: WARN ("no constitution found - consider creating one to guide AI decisions")

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +33 to +46
hooks:
after_specify:
command: "speckit.speckit-utils.doctor"
optional: true
prompt: "Run project health check?"
description: "Validate project health after specification generation"
condition: null

after_plan:
command: "speckit.speckit-utils.validate"
optional: true
prompt: "Validate spec-to-task traceability?"
description: "Verify requirements map to planned tasks after planning"
condition: null
file: "commands/validate.md"
description: "Verify spec-to-task traceability and check that completed tasks produced expected files"
aliases: ["speckit.validate"]

## Installation

```bash
specify extension add speckit-utils
Comment on lines +52 to +53
- `after_specify`: prompts to run doctor (project health check)
- `after_plan`: prompts to run validate (requirement traceability)
Comment on lines +39 to +46
| Condition | Phase | Next Command |
|-----------|-------|-------------|
| No `spec.md` or empty | `specify` | `/speckit.specify` |
| `spec.md` exists, no `plan.md` | `plan` | `/speckit.plan` |
| `plan.md` exists, no `tasks.md` | `tasks` | `/speckit.tasks` |
| `tasks.md` exists, some incomplete | `implement` | `/speckit.implement` |
| All tasks complete | `complete` | Review and finalize |

Comment on lines +35 to +43
Read `.specify/init-options.json` to determine the configured AI agent.

If no `init-options.json` exists: WARN ("no AI agent configured - run `specify init` to set up")

If an agent is configured (e.g., `"ai_assistant": "claude"`):
1. Check that the agent's directory exists (e.g., `.claude/`)
2. Check that command files are registered (e.g., `.claude/commands/speckit.*.md`)
3. Count registered commands

Comment on lines +21 to +27
Verify these template files exist in `templates/` and are non-empty:
- `spec-template.md`
- `plan-template.md`
- `tasks-template.md`
- `constitution-template.md`
- `checklist-template.md`

Comment on lines +6 to +8
- Added `speckit.sdd-utils.resume` command for session continuation
- Added `speckit.sdd-utils.doctor` command for project health validation
- Added `speckit.sdd-utils.validate` command for spec-to-task verification
Comment on lines +1 to +2
# SDD Utils Extension Configuration
# Copy to sdd-utils-config.yml and customize
Copy link
Collaborator

@mnriem mnriem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will have to host the extension on your own GitHub repository and then we can list it in the community catalog

@mvanhorn
Copy link
Contributor Author

Got it - will move this to a standalone repo and submit for the community catalog. Closing this PR.

@mvanhorn mvanhorn closed this Mar 18, 2026
@mvanhorn
Copy link
Contributor Author

Moved to a standalone repo: https://github.com/mvanhorn/speckit-utils

Tagged v1.0.0. Ready to submit a catalog PR to add it to catalog.community.json - should I go ahead with that, or is there anything you'd like changed first?

@mnriem
Copy link
Collaborator

mnriem commented Mar 18, 2026

No looks good. Please submit PR to community catalog and README (note they are alphabetized on extension id and first column respectively).

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants