Skip to content

feat: Register "What-if Analysis" community extension#2182

Open
DevAbdullah90 wants to merge 5 commits intogithub:mainfrom
DevAbdullah90:feat/what-if-analysis
Open

feat: Register "What-if Analysis" community extension#2182
DevAbdullah90 wants to merge 5 commits intogithub:mainfrom
DevAbdullah90:feat/what-if-analysis

Conversation

@DevAbdullah90
Copy link
Copy Markdown

@DevAbdullah90 DevAbdullah90 commented Apr 11, 2026

This pull request registers the "What-if Analysis" extension in the community catalog.

View Migration Details

Following maintainer feedback, the implementation has been moved to a standalone repository to comply with community hosting standards.

Changes:

  • Removed local code: Deleted the internal implementation from extensions/whatif.
  • Alphabetical Catalog: Added whatif to extensions/catalog.community.json in the correct alphabetical order (before worktree).
  • README Update: Added "What-if Analysis" to the community extensions table in the root README.md.

All script paths in the standalone command have been adjusted to work correctly when the extension is installed via specify extension add.

@DevAbdullah90 DevAbdullah90 requested a review from mnriem as a code owner April 11, 2026 22:09
Copy link
Copy Markdown
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.

Please deliver this as an extension as per https://github.com/github/spec-kit/tree/main/extensions

@mnriem mnriem self-assigned this Apr 13, 2026
@DevAbdullah90
Copy link
Copy Markdown
Author

I have refactored the implementation to deliver the "what-if" analysis as a standalone extension rather than a core feature.

Changes in this PR:

  • Moved to Extension: All "what-if" logic has been moved to a new directory: extensions/whatif/.
  • Core Reversion: Reverted changes to core files (README.md, src/specify_cli/__init__.py, and agent integrations) to keep the core codebase clean and modular.
  • Extension Manifest: Added extensions/whatif/extension.yml defining the speckit.whatif.analyze command.
  • Modular Design: The analysis logic is now contained in extensions/whatif/commands/analyze.md, and I've added a dedicated README.md for the extension.

The feature is now fully optional and can be added via specify extension add whatif. Ready for another look!

@mnriem mnriem self-requested a review April 13, 2026 14:15
Copy link
Copy Markdown
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.

Community extensions are hosted in your own GitHub repository. Once you have it there you we can include it in the community catalog and list it on the README.

If you need more information let me know.

Thanks!

@DevAbdullah90
Copy link
Copy Markdown
Author

Hi @mnriem,

I have completed the migration of the What-if Analysis extension to a standalone repository as you suggested.

Changes in this PR:

  1. Extracted Extension: Moved all "what-if" logic to its own repository: DevAbdullah90/spec-kit-whatif
  2. Catalog Registration: Added the extension to extensions/catalog.community.json pointing to the new host.
  3. README Update: Added "What-if Analysis" to the community extensions table in the root README.md.
  4. Cleanup: Removed the local extensions/whatif directory from this repository.

I've also updated the command metadata in the standalone repo to ensure script paths work correctly when installed into a .specify project structure.

Please let me know if there are any further adjustments needed. Thanks!

Copy link
Copy Markdown
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

This PR publishes the “What-if Analysis” community extension by adding it to the community extension catalog and listing it in the README’s Community Extensions table.

Changes:

  • Add “What-if Analysis” to extensions/catalog.community.json.
  • Add “What-if Analysis” to the Community Extensions table in README.md.
Show a summary per file
File Description
README.md Adds the new extension to the Community Extensions table.
extensions/catalog.community.json Registers the new “whatif” extension in the community catalog.

Copilot's findings

Tip

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

Comments suppressed due to low confidence (2)

extensions/catalog.community.json:1922

  • The new extension entry is missing download_url, which is required for installing extensions from the catalog. Without it, specify extension add whatif will fail with “has no download URL”. Add a HTTPS ZIP download_url (typically a GitHub release asset URL) to make the catalog entry installable.
    "whatif": {
      "name": "What-if Analysis",
      "id": "whatif",
      "description": "Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them.",
      "author": "DevAbdullah90",
      "version": "1.0.0",
      "repository": "https://github.com/DevAbdullah90/spec-kit-whatif",
      "homepage": "https://github.com/DevAbdullah90/spec-kit-whatif",
      "documentation": "https://github.com/DevAbdullah90/spec-kit-whatif/blob/main/README.md",
      "license": "MIT",

extensions/catalog.community.json:1916

  • When adding a new extension to extensions/catalog.community.json, the Extension Publishing Guide requires bumping the top-level updated_at to the current time. This PR adds a new entry but leaves the catalog updated_at unchanged, so consumers can’t rely on it for freshness.
    "whatif": {
      "name": "What-if Analysis",
      "id": "whatif",
      "description": "Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them.",
  • Files reviewed: 2/2 changed files
  • Comments generated: 2

Copy link
Copy Markdown
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 the new “What-if Analysis” community extension to Spec Kit’s extension discovery surfaces (community catalog + README listing) so users can find/install it and see it documented alongside other extensions.

Changes:

  • Added a whatif entry to extensions/catalog.community.json.
  • Added a “What-if Analysis” row to the community extensions table in README.md.
Show a summary per file
File Description
extensions/catalog.community.json Registers the whatif extension in the community catalog (metadata, requirements, tags).
README.md Documents the new extension in the community extensions list.

Copilot's findings

Tip

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

  • Files reviewed: 2/2 changed files
  • Comments generated: 3

Comment on lines +1905 to +1907
"stars": 0,
"created_at": "2026-04-13T00:00:00Z",
"updated_at": "2026-04-13T00:00:00Z"
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

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

Since this file was edited to add a new extension entry, the top-level updated_at field should be bumped to the current timestamp as required by the Extension Publishing Guide; otherwise the catalog metadata becomes stale.

Copilot uses AI. Check for mistakes.
Comment on lines 242 to 244
| Verify Tasks Extension | Detect phantom completions: tasks marked [X] in tasks.md with no real implementation | `code` | Read-only | [spec-kit-verify-tasks](https://github.com/datastone-inc/spec-kit-verify-tasks) |
| What-if Analysis | Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them | `visibility` | Read-only | [spec-kit-whatif](https://github.com/DevAbdullah90/spec-kit-whatif) |
| Worktree Isolation | Spawn isolated git worktrees for parallel feature development without checkout switching | `process` | Read+Write | [spec-kit-worktree](https://github.com/Quratulain-bilal/spec-kit-worktree) |
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

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

The PR description/title claim this PR "implements" the new /speckit.whatif command and template generation, but the changes shown here only add an extension catalog entry + README row. If the implementation lives in the external extension repository, please adjust the PR title/description to reflect that this PR is publishing/registering the extension in the community catalog (and link the implementation repo/tag).

Copilot uses AI. Check for mistakes.
"id": "whatif",
"description": "Preview the downstream impact (complexity, effort, tasks, risks) of requirement changes before committing to them.",
"author": "DevAbdullah90",
"version": "1.0.0",
Copy link

Copilot AI Apr 13, 2026

Choose a reason for hiding this comment

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

This new catalog entry is missing download_url. The CLI requires download_url for any installable extension and will raise Extension '<id>' has no download URL when attempting to add it. Add an HTTPS download_url (typically the GitHub tag ZIP for v1.0.0).

Suggested change
"version": "1.0.0",
"version": "1.0.0",
"download_url": "https://github.com/DevAbdullah90/spec-kit-whatif/archive/refs/tags/v1.0.0.zip",

Copilot uses AI. Check for mistakes.
@DevAbdullah90 DevAbdullah90 changed the title feat: implement read-only what-if analysis command feat: Register "What-if Analysis" community extension Apr 13, 2026
@mnriem mnriem self-requested a review April 13, 2026 16:36
Copy link
Copy Markdown
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.

Please address Copilot feedback

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