spec-lite 1.4.5 → 1.4.6

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/README.md CHANGED
@@ -7,7 +7,7 @@ Bộ skills spec-driven development cho Claude Code — phỏng vấn có cấu
7
7
  ## Cài đặt
8
8
 
9
9
  ```bash
10
- npx spec-lite install
10
+ npx spec-lite@latest install
11
11
  ```
12
12
 
13
13
  Lệnh này copy `skills/` và `templates/` vào thư mục `.claude/` của project.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-lite",
3
- "version": "1.4.5",
3
+ "version": "1.4.6",
4
4
  "description": "Spec-driven development kit for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -191,14 +191,14 @@ Các entities sau được dùng bởi nhiều components.
191
191
  Apply cascade proposals vào domain.md? [y/n/edit]
192
192
  ```
193
193
 
194
- Nếu `y` → update `.specs/main/domain.md` Shared Entities section, đồng thời append entry vào `## Change History` của domain.md (theo `conventions.md` §5.5):
194
+ Nếu `y` → update `.specs/main/domain.md` Shared Entities section — mỗi entity [NEW] dùng heading `### E-XXX {Entity Name}`, cấp ID tuần tự theo quy ước `domain-template.md` (max E-XXX đã từng cấp trong `domain.md` + 1, quét cả heading lẫn Change History; ID không tái sử dụng) — đồng thời append entry vào `## Change History` của domain.md (theo `conventions.md` §5.5):
195
195
 
196
196
  ```markdown
197
197
  ### {YYYY-MM-DD} — manual — update
198
198
 
199
199
  - **Shared Entities**:
200
- - [NEW] Order — owner C-003-payment, used by inventory (detected từ /spec-brownfield-component scan)
201
- - [NEW] User — owner C-001-auth, used by user/notification
200
+ - [NEW] E-001 Order — owner C-003-payment, used by inventory (detected từ /spec-brownfield-component scan)
201
+ - [NEW] E-002 User — owner C-001-auth, used by user/notification
202
202
  ```
203
203
 
204
204
  Nếu `edit` → hỏi chỉnh sửa từng entity trước khi apply.
@@ -204,6 +204,7 @@ Cấm: định nghĩa mơ hồ, hoặc nhét term thực ra là tên feature/com
204
204
  - **Entity *nằm ở component nào* (`Owner`) là *thiết kế hệ thống* (HOW)** → thuộc architect, điền ở `/spec-sad` (hoặc `/spec-new` khi carve). `/spec-frd` **không carve component** nên **không** quyết `Owner`.
205
205
 
206
206
  Vì vậy khi seed entity vào domain Shared Entities:
207
+ - **Cấp Entity ID `E-XXX`** theo quy ước của `domain-template.md`: ID tiếp theo = max ID đã từng cấp trong `domain.md` + 1 (quét cả heading hiện có lẫn Change History — ID của entity đã remove không tái sử dụng). Heading entity: `### E-XXX {Entity Name}`.
207
208
  - Điền đầy đủ definition + attributes từ frd.
208
209
  - Để **`Owner: TBD (điền ở /spec-sad — design time)`** và **`Used by: TBD`**. Không phải vì entity "chưa chắc có thật", mà vì ownership là quyết định thiết kế chưa tới lượt.
209
210
  - Entity rõ ràng chỉ là cấu trúc dữ liệu kỹ thuật nội bộ (không phải vocabulary nghiệp vụ) → không thuộc domain; bỏ qua, để lộ ra ở `crd.md` lúc carve.
@@ -287,7 +288,7 @@ Và append Change History entry vào prd.md (theo `conventions.md` §5.5):
287
288
  **7b''. (Chỉ khi Bước 4b/6 BA đã confirm vocabulary)** Cascade lên `.specs/main/domain.md`:
288
289
 
289
290
  - **Glossary** → append row `[NEW]` cho mỗi term đã confirm: `| {term} | {định nghĩa} | {example/context} |`.
290
- - **Shared Entities** → cho mỗi entity đã confirm, thêm một entry mới theo template với definition + attributes đầy đủ, để `**Owner:** TBD (điền ở /spec-sad — design time)` và `**Used by:** TBD`.
291
+ - **Shared Entities** → cho mỗi entity đã confirm, thêm một entry mới theo template với heading `### E-XXX {Entity Name}` (ID cấp ở Bước 4b — tuần tự, không tái sử dụng), definition + attributes đầy đủ, để `**Owner:** TBD (điền ở /spec-sad — design time)` và `**Used by:** TBD`. Trong frd, reference entity theo dạng `E-XXX {Entity Name}` để trace về domain.md.
291
292
 
292
293
  Append **một** Change History entry vào `domain.md`, operation = `manual` (author trực tiếp ngoài integration — cùng quy ước với 7b, theo `conventions.md` §5.5):
293
294
 
@@ -297,7 +298,7 @@ Append **một** Change History entry vào `domain.md`, operation = `manual` (au
297
298
  - **Glossary**:
298
299
  - [NEW] {term} — {mô tả ngắn} (qua /spec-frd F-XXX)
299
300
  - **Shared Entities**:
300
- - [NEW] {Entity} — định nghĩa + attributes; Owner TBD chờ /spec-sad (qua /spec-frd F-XXX)
301
+ - [NEW] E-XXX {Entity} — định nghĩa + attributes; Owner TBD chờ /spec-sad (qua /spec-frd F-XXX)
301
302
  ```
302
303
 
303
304
  (Nếu domain.md đang là skeleton create lần đầu thì entry vẫn `manual`/`update` — file đã được `/spec-prd` scaffold với operation `create` từ trước.) Atomic với 7a: domain cascade fail → rollback cả frd. `Owner` của entity do `/spec-sad`/`/spec-new` cascade bổ sung sau (HOW phase) qua `[MODIFY Owner]`.
@@ -258,9 +258,10 @@ Tạo block nếu integration:
258
258
 
259
259
  Tạo block nếu integration:
260
260
  - Giới thiệu glossary term mới → row [NEW] trong Glossary
261
- - Giới thiệu shared entity mới (entity sẽ được dùng bởi 2+ component) → entity [NEW] với `Owner: C-XXX` (component đã carve trong integration này); component chưa carve → `Owner: TBD`, `/spec-sad` gán sau (xem two-phase cascade `conventions.md` §5.5)
262
- - Gán owner cho entity còn `Owner: TBD` (do pha mô tả seed) → entity [MODIFY Owner] `TBD → C-XXX`
263
- - Sửa định nghĩa entity hiện có → entity [MODIFY ...]
261
+ - Giới thiệu shared entity mới (entity sẽ được dùng bởi 2+ component) → entity [NEW] với heading `### E-XXX {Entity Name}` (auto-pick `E-XXX` next available — quy ước `domain-template.md`: max ID đã từng cấp trong `domain.md` + 1, quét cả heading lẫn Change History; ID không tái sử dụng) và `Owner: C-XXX` (component đã carve trong integration này); component chưa carve → `Owner: TBD`, `/spec-sad` gán sau (xem two-phase cascade `conventions.md` §5.5)
262
+ - Gán owner cho entity còn `Owner: TBD` (do pha mô tả seed) → entity [MODIFY Owner] `TBD → C-XXX` (giữ nguyên `E-XXX`)
263
+ - Sửa định nghĩa entity hiện có → entity [MODIFY ...] (giữ nguyên `E-XXX`)
264
+ - Remove entity → [REMOVE] kèm lý do — ID của entity đã remove vẫn giữ chỗ, không cấp lại
264
265
 
265
266
  **`sad.md`**
266
267
 
@@ -428,7 +428,7 @@ Component shared (vẫn còn feature khác dùng):
428
428
  - {term} [REMOVE] — unique to F-XXX, no other reference
429
429
 
430
430
  #### Shared Entities
431
- - {Entity} [REMOVE] — orphan after F-XXX removal, no other component owns
431
+ - E-XXX {Entity} [REMOVE] — orphan after F-XXX removal, no other component owns. ID `E-XXX` của entity đã remove **vẫn giữ chỗ** (ghi trong Change History) — không bao giờ cấp lại cho entity mới (quy ước `domain-template.md`)
432
432
 
433
433
  ## Out of Scope
434
434
  - {Migration của reverse-dep features tới alternative — separate integration nếu có}
@@ -154,8 +154,8 @@ Tổng hợp và viết draft `tech.md`:
154
154
  ### domain.md
155
155
 
156
156
  Đề xuất cập nhật nếu integration này:
157
- - Thay đổi shared entity (entity được dùng bởi 2+ component)
158
- - Thêm shared entity mới phát sinh từ thiết kế kỹ thuật
157
+ - Thay đổi shared entity (entity được dùng bởi 2+ component) — giữ nguyên `E-XXX` đã cấp
158
+ - Thêm shared entity mới phát sinh từ thiết kế kỹ thuật — heading `### E-XXX {Entity Name}`, cấp ID theo quy ước `domain-template.md`: max E-XXX đã từng cấp trong `domain.md` + 1 (quét cả heading lẫn Change History); ID không tái sử dụng
159
159
 
160
160
  ### component/{C-XXX}-{component-name}/cdd.md
161
161
 
@@ -119,7 +119,7 @@ Thường là update — thêm glossary term, thêm shared entity, sửa entity
119
119
  - Row [NEW]: `Refund — số tiền hoàn lại cho user sau khi order bị hủy`
120
120
 
121
121
  #### Shared Entities
122
- - Entity [NEW]: `Refund (Owner: C-005-refund-processor)` — { fields, relationships }
122
+ - Entity [NEW]: `E-XXX Refund (Owner: C-005-refund-processor)` — { fields, relationships } — E-XXX = next available trong domain.md (tuần tự theo thứ tự seed, không tái sử dụng — xem domain-template.md)
123
123
  -->
124
124
 
125
125
  ### sad.md *(bỏ nếu không có thay đổi)*
@@ -34,7 +34,12 @@ Entity ở mức vocabulary nghiệp vụ chung. Hai phần thông tin tới t
34
34
 
35
35
  Entity rõ ràng nội bộ một component (không phải vocabulary chung) không vào đây — chúng nằm trong `crd.md` của component đó.
36
36
 
37
- ### {Entity Name}
37
+ **Entity ID (`E-XXX`):** mỗi shared entity được cấp một ID tuần tự khi seed lần đầu, theo thứ tự được thêm vào file này.
38
+ - ID tiếp theo = **max ID đã từng cấp + 1** — quét cả heading hiện có **và** Change History (entity đã `[REMOVE]` vẫn giữ chỗ ID của nó).
39
+ - ID **không bao giờ tái sử dụng** và **không đánh lại** khi entity bị remove hoặc đổi tên.
40
+ - Reference từ artifact khác (frd/crd/spec/tech) dùng dạng `E-XXX {Entity Name}`.
41
+
42
+ ### E-XXX {Entity Name}
38
43
 
39
44
  **Owner:** `{C-XXX}-{component-name}` *(component sở hữu canonical definition; `TBD` nếu chưa carve — `/spec-sad` điền)*
40
45