github / github/spec-kit

[Feature]: Add `specify init --dry-run` preview

Đang mở
#4,311 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
137k
Fork
12.3k
Merge trung bình
2 ngày 12 giờ
Pull request đã merge (30 ngày)
159

Mô tả

## Context

This issue supersedes [#1035](https://github.com/github/spec-kit/issues/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:

```text
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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu từ lệnh `specify init` hiện có và lần theo đường đi phân giải và lập kế hoạch của lệnh, vì issue không nêu tệp hoặc test nào. So sánh việc lập kế hoạch trong dry-run với một lần khởi tạo thực tế, sau đó bổ sung phạm vi kiểm thử hồi quy cho đầu ra dễ đọc đối với con người và đầu ra JSON, bao gồm một assertion xác nhận không có thao tác ghi nào; hoàn tất khi tất cả các nguồn artifact được liệt kê và các kết quả mở rộng URL đều được thể hiện mà không có thay đổi nào trên hệ thống tệp.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
cli
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Sôi nổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.