spec-lite 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-lite",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "Spec-driven development kit for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -43,6 +43,31 @@ Skill này là cặp greenfield đối xứng với `/spec-brownfield-feature` (
43
43
 
44
44
  ## Process
45
45
 
46
+ ### Pre-flight: chuẩn bị nhánh Git (chạy TRƯỚC Bước 0)
47
+
48
+ Mục tiêu: không bao giờ author frd ngay trên nhánh hiện tại của user (có thể là một nhánh đang làm dở) — luôn bắt đầu từ **nhánh chính mới nhất** rồi tách một **nhánh làm việc riêng**.
49
+
50
+ **Trước tiên, thông báo cho user toàn bộ việc Git skill sẽ làm** (để user biết trước, đúng tinh thần "agent làm các việc này"):
51
+
52
+ > Trước khi author frd, mình sẽ:
53
+ > 1. Pull code mới nhất từ nhánh chính (`{main}`).
54
+ > 2. Tạo & checkout một nhánh mới tách từ `{main}` để làm việc.
55
+ >
56
+ > (Bạn đang ở nhánh `{current}`.)
57
+
58
+ **1. Xác định nhánh chính (`{main}`).**
59
+ - Không phải git repo → bỏ qua toàn bộ pre-flight, note cho user rồi tiếp Bước 0.
60
+ - Có nhánh `develop` → mặc định `{main}` = `develop`. Không có `develop` nhưng có `main`/`master` → dùng nó.
61
+ - Mơ hồ (tồn tại cả `develop` lẫn `main`, hoặc remote default khác) → **hỏi user** nhánh nào là nhánh chính. KHÔNG đoán.
62
+
63
+ **2. Kiểm tra working tree sạch.** `git status` còn thay đổi chưa commit → **DỪNG**, báo user commit/stash trước. KHÔNG tự ý stash/discard.
64
+
65
+ **3. Checkout + pull nhánh chính:** `git checkout {main}` rồi `git pull`. Pull fail (conflict, không có upstream…) → **DỪNG**, surface lỗi cụ thể, để user xử lý.
66
+
67
+ **4. Tạo nhánh làm việc mới off `{main}`.** Cần slug để đặt tên → thực hiện **ngay sau khi xác định feature mục tiêu ở Bước 1c** (xem nhắc ở đó): đề xuất `git checkout -b spec/{F-XXX}-{slug}`, cho user sửa tên rồi tạo. Mọi việc author/cascade từ Bước 2 trở đi diễn ra trên nhánh này.
68
+
69
+ ---
70
+
46
71
  ### Bước 0: Nạp nguồn yêu cầu (tùy chọn)
47
72
 
48
73
  Giống `/spec-prd` Bước 0. Xác định có nguồn baseline cho feature không (proposal, mô tả feature, ghi chú họp, wireframe note):
@@ -106,7 +131,7 @@ Chọn feature để author frd:
106
131
 
107
132
  Kiểm tra `.specs/main/feature/{F-XXX}-*/frd.md`.
108
133
 
109
- - **Chưa tồn tại** → tiếp Bước 2 (author mới).
134
+ - **Chưa tồn tại** → **tạo nhánh làm việc** (Pre-flight bước 4): `git checkout -b spec/{F-XXX}-{slug}` off `{main}` (đề xuất tên, cho user sửa), rồi tiếp Bước 2 (author mới).
110
135
  - **Đã tồn tại** → **DỪNG**, redirect `/spec-new`:
111
136
  > frd.md cho {F-XXX} đã tồn tại. Mọi thay đổi feature đã được spec phải đi qua `/spec-new` — skill đó phân tích delta, cascade lên frd/crd/prd/domain, và kéo theo việc kỹ thuật/test (`/spec-tech`, `/spec-test`).
112
137
  > Chạy: `/spec-new {F-XXX}` (hoặc `/spec-new <mô tả thay đổi>`).
@@ -355,6 +380,7 @@ Bước tiếp theo:
355
380
 
356
381
  ## Verification
357
382
 
383
+ - [ ] **Pre-flight Git**: đã thông báo plan cho user; xác định đúng nhánh chính (hỏi nếu mơ hồ); working tree sạch; đã `checkout {main}` + `pull`; tạo nhánh làm việc mới off `{main}` trước khi author
358
384
  - [ ] `prd.md` tồn tại
359
385
  - [ ] **Single-feature gate**: nguồn liên quan đúng 1 feature; nếu >1 đã DỪNG và mô tả rõ lý do tách + redirect `/spec-prd`
360
386
  - [ ] **Create-only gate**: frd.md của feature mục tiêu CHƯA tồn tại; nếu đã có đã redirect `/spec-new`
@@ -27,6 +27,31 @@ Tạo `spec.md` cho một integration mới trong `.specs/integrations/{NNN}-{sl
27
27
 
28
28
  ## Process
29
29
 
30
+ ### Bước 0 · Pre-flight: chuẩn bị nhánh Git (chạy TRƯỚC Bước 1)
31
+
32
+ Mục tiêu: không bao giờ tạo spec/cascade ngay trên nhánh hiện tại của user (có thể là một nhánh đang làm dở) — luôn bắt đầu từ **nhánh chính mới nhất** rồi tách một **nhánh làm việc riêng** cho integration.
33
+
34
+ **Trước tiên, thông báo cho user toàn bộ việc Git skill sẽ làm** (để user biết trước, đúng tinh thần "agent làm các việc này"):
35
+
36
+ > Trước khi tạo spec, mình sẽ:
37
+ > 1. Pull code mới nhất từ nhánh chính (`{main}`).
38
+ > 2. Tạo & checkout một nhánh mới tách từ `{main}` để làm integration này.
39
+ >
40
+ > (Bạn đang ở nhánh `{current}`.)
41
+
42
+ **1. Xác định nhánh chính (`{main}`).**
43
+ - Không phải git repo → bỏ qua toàn bộ pre-flight, note cho user rồi tiếp Bước 1.
44
+ - Có nhánh `develop` → mặc định `{main}` = `develop`. Không có `develop` nhưng có `main`/`master` → dùng nó.
45
+ - Mơ hồ (tồn tại cả `develop` lẫn `main`, hoặc remote default khác) → **hỏi user** nhánh nào là nhánh chính. KHÔNG đoán.
46
+
47
+ **2. Kiểm tra working tree sạch.** `git status` còn thay đổi chưa commit → **DỪNG**, báo user commit/stash trước. KHÔNG tự ý stash/discard.
48
+
49
+ **3. Checkout + pull nhánh chính:** `git checkout {main}` rồi `git pull`. Pull fail (conflict, không có upstream…) → **DỪNG**, surface lỗi cụ thể, để user xử lý.
50
+
51
+ **4. Tạo nhánh làm việc mới off `{main}`.** Cần `{NNN}-{slug}` để đặt tên → thực hiện **ngay sau khi xác định slug + số thứ tự ở Bước 4** (xem nhắc ở đó): đề xuất `git checkout -b feat/{NNN}-{slug}`, cho user sửa tên rồi tạo. Mọi việc ghi spec + auto-cascade từ Bước 5/7 diễn ra trên nhánh này.
52
+
53
+ ---
54
+
30
55
  ### Bước 1: Xác định input
31
56
 
32
57
  **Nếu có ARGUMENT** → đây là raw requirement, chuyển sang Bước 2.
@@ -156,6 +181,8 @@ Xác định số thứ tự (`NNN`):
156
181
 
157
182
  Output path: `.specs/integrations/{NNN}-{slug}/spec.md`
158
183
 
184
+ **Tạo nhánh làm việc** (Pre-flight bước 4) — giờ đã có `{NNN}-{slug}`: `git checkout -b feat/{NNN}-{slug}` off `{main}` (đề xuất tên, cho user sửa). Bỏ qua nếu không phải git repo (pre-flight đã note).
185
+
159
186
  ---
160
187
 
161
188
  ### Bước 5: Write — sinh draft
@@ -429,6 +456,7 @@ Bước tiếp theo:
429
456
 
430
457
  Trước khi user confirm (Bước 6), kiểm tra:
431
458
 
459
+ - [ ] **Pre-flight Git**: đã thông báo plan cho user; xác định đúng nhánh chính (hỏi nếu mơ hồ); working tree sạch; đã `checkout {main}` + `pull`; tạo nhánh làm việc mới off `{main}` trước khi cascade
432
460
  - [ ] Problem Statement từ góc nhìn user/business, không mention tech
433
461
  - [ ] Mỗi Acceptance Criterion dùng cú pháp GIVEN / WHEN / THEN, có thể test được
434
462
  - [ ] Out of Scope có ít nhất 1 item