Skip to content

[Feature]: Add specify init --dry-run preview #4311

Description

@darion-yaphet

Context

This issue supersedes #1035, which requested specify init . --dry-run and was automatically closed for inactivity rather than resolved.

specify init can merge into an existing directory with --force, potentially changing generated project artifacts. Users need a reliable way to inspect the exact initialization plan before allowing writes.

Proposal

Add:

specify init --dry-run

The dry-run must use the same resolution and planning path as a real initialization, but perform no project filesystem mutations. It should preview the outcome for the requested directory and the selected integration, script type, preset, and extensions.

Expected output

For every planned artifact, report:

  • action: create, overwrite, preserve, skip, or conflict;
  • project-relative path;
  • provenance: core, integration, preset, workflow, or extension.

Provide a human-readable summary and --json output for CI/tooling.

Acceptance criteria

  • specify init --dry-run never creates, modifies, deletes, or registers project files.
  • Its plan matches a subsequent real specify init invocation with the same options.
  • Existing-directory conflicts are reported without needing --force.
  • The preview accounts for core assets, integrations, presets, bundled/local extensions, and the bundled workflow.
  • URL extensions are not installed during preview; any unresolved/download-required result is reported explicitly.
  • Human-readable and JSON output have regression coverage, including a no-write assertion.

Non-goals

  • Running coding-agent commands or workflows.
  • Replacing the existing specify workflow run --dry-run behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions