Skip to content

[Feature]: Add specify integration doctor diagnostic command #2671

@PascalThuet

Description

@PascalThuet

Problem Statement

Spec Kit now supports richer integration state: default integration selection,
controlled multi-install, per-integration settings, manifests, shared
infrastructure, and integration-specific command/context directories.

When something looks wrong, users and coding agents still have to infer project
state by manually inspecting files such as .specify/integration.json,
.specify/integrations/*.manifest.json, and generated agent command
directories. This makes it hard to distinguish between:

  • an outdated CLI;
  • a missing or malformed integration state file;
  • a default integration mismatch;
  • missing or modified managed files;
  • an unsafe multi-install combination;
  • stale files left behind after an integration upgrade or switch.

A first-class diagnostic command would make integration issues easier to report,
debug, and safely fix.

Proposed Solution

Add a diagnostic command:

specify integration doctor

The command should inspect the current project and print a concise health report
for integration state.

Example output:

Integration state: OK
Default integration: claude
Installed integrations: claude, codex
Multi-install safe: yes
Shared templates aligned to: claude
Modified managed files: none
Missing managed files: none

For unhealthy state, it should explain the problem and suggest the safest next
command, for example specify integration use <key>,
specify integration upgrade <key>, or specify integration upgrade --force
only when appropriate.

Suggested Checks

  • Project contains .specify/ and is a Spec Kit project.
  • .specify/integration.json exists and matches the expected schema.
  • Default integration is set and is among installed integrations.
  • Installed integrations exist in the registry for the running CLI.
  • Per-integration settings are readable.
  • Manifest files exist for installed integrations where expected.
  • Manifest-tracked files are present.
  • Manifest-tracked files that changed locally are reported, not overwritten.
  • Shared infrastructure manifest is readable where expected.
  • Installed integrations are multi-install safe, or unsafe combinations are clearly reported.
  • Command/context directories do not have obvious collisions between installed integrations.

JSON Output

A machine-readable form would be useful for coding agents and CI:

specify integration doctor --json

Potential shape:

{
  "status": "ok",
  "default_integration": "claude",
  "installed_integrations": ["claude", "codex"],
  "multi_install_safe": true,
  "findings": []
}

Acceptance Criteria

  • specify integration doctor exits 0 for a healthy Spec Kit project.
  • It reports the default integration and installed integrations.
  • It reports malformed or missing .specify/integration.json without a traceback.
  • It reports missing manifest-tracked files.
  • It reports modified managed files without changing them.
  • It reports unsafe multi-install combinations.
  • It gives non-destructive guidance first (use / upgrade before switch / uninstall).
  • --json emits stable machine-readable diagnostics.
  • Tests cover healthy state, missing state, malformed state, missing files, modified files, and unsafe combinations.

Suggested Tests

pytest tests/integrations/test_integration_subcommand.py tests/integrations/test_manifest.py -v

Context

This is a follow-up to the integration discoverability and multi-install work
tracked around #2498 / #2519 / #2548 / #2549 / #2574. It is separate from the
active specify self upgrade work in #2475.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions