spec-lite 1.1.9 → 1.1.11
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
package/skills/build/SKILL.md
CHANGED
|
@@ -100,29 +100,35 @@ Bạn muốn build trong worktree riêng cho integration này không? (y/n)
|
|
|
100
100
|
|
|
101
101
|
**Nếu chọn "y":**
|
|
102
102
|
|
|
103
|
-
1. **
|
|
104
|
-
-
|
|
103
|
+
1. **Thêm `.claude/worktrees/` vào `.gitignore`**
|
|
104
|
+
- Kiểm tra `.gitignore` ở root repo, nếu chưa có dòng `.claude/worktrees/` thì append:
|
|
105
|
+
```bash
|
|
106
|
+
echo '.claude/worktrees/' >> .gitignore
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
2. **Tạo worktree mới** từ branch vừa tạo
|
|
110
|
+
- Đường dẫn worktree: `.claude/worktrees/{integration-slug}` (ví dụ: `.claude/worktrees/002-implement-todo`)
|
|
105
111
|
- Lệnh:
|
|
106
112
|
```bash
|
|
107
|
-
git worktree add
|
|
113
|
+
git worktree add .claude/worktrees/{slug} build/{slug}
|
|
108
114
|
```
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
3. **Detect package manager**
|
|
111
117
|
- Kiểm tra theo thứ tự: `pnpm-lock.yaml` → `yarn.lock` → `package-lock.json` → `package.json`
|
|
112
118
|
- Dùng package manager tương ứng: `pnpm install` / `yarn install` / `npm install`
|
|
113
119
|
- Nếu không có `package.json` → bỏ qua bước install.
|
|
114
120
|
|
|
115
|
-
|
|
121
|
+
4. **Copy env files**
|
|
116
122
|
- Tìm tất cả file `.env*` ở root của working directory gốc (`.env`, `.env.local`, `.env.development`, v.v.)
|
|
117
123
|
- Copy từng file vào worktree mới:
|
|
118
124
|
```bash
|
|
119
|
-
cp .env*
|
|
125
|
+
cp .env* .claude/worktrees/{slug}/
|
|
120
126
|
```
|
|
121
127
|
- Bỏ qua nếu không có file `.env*` nào.
|
|
122
128
|
|
|
123
|
-
|
|
129
|
+
5. **Chuyển working context sang worktree mới**
|
|
124
130
|
- Tất cả các bước build tiếp theo đều chạy trong đường dẫn worktree mới.
|
|
125
|
-
- Nhắc user biết đang build tại:
|
|
131
|
+
- Nhắc user biết đang build tại: `.claude/worktrees/{slug}`
|
|
126
132
|
|
|
127
133
|
### Với mỗi task pending
|
|
128
134
|
|
package/skills/review/SKILL.md
CHANGED
|
@@ -31,5 +31,139 @@ git diff $(git merge-base HEAD $BASE)...HEAD
|
|
|
31
31
|
|
|
32
32
|
## Sau khi review
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
### Chỉ Nit/Optional/FYI hoặc không có finding
|
|
35
|
+
|
|
36
|
+
Approve và thông báo tiếp tục `/build` task tiếp theo.
|
|
37
|
+
|
|
38
|
+
### Có Critical hoặc Important
|
|
39
|
+
|
|
40
|
+
**Bước 1 — Tổng hợp findings thành tasks:**
|
|
41
|
+
|
|
42
|
+
Nhóm các findings thành tasks cụ thể có thể implement được. Mỗi finding Critical/Important là ít nhất một task. Đặt tên task bắt đầu bằng động từ, mô tả rõ việc phải sửa.
|
|
43
|
+
|
|
44
|
+
**Bước 2 — Đề xuất thêm phase mới vào plan.md và todo.md:**
|
|
45
|
+
|
|
46
|
+
Hiển thị preview phase sẽ được thêm:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Phát hiện {N} Critical / {M} Important findings. Đề xuất thêm phase mới:
|
|
50
|
+
|
|
51
|
+
Phase Review: Fix review findings
|
|
52
|
+
|
|
53
|
+
T0XX · Fix {mô tả finding 1}
|
|
54
|
+
T0XY · Fix {mô tả finding 2}
|
|
55
|
+
...
|
|
56
|
+
|
|
57
|
+
Thêm phase này vào plan.md và todo.md, rồi chạy /build để fix?
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Hỏi user bằng `AskUserQuestion`:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
question: "Thêm phase Review vào plan.md/todo.md và chạy /build ngay?"
|
|
64
|
+
options:
|
|
65
|
+
- label: "Thêm phase và chạy /build"
|
|
66
|
+
description: "Thêm các tasks fix findings vào plan.md và todo.md, rồi gọi /build để thực thi"
|
|
67
|
+
- label: "Thêm phase nhưng không chạy /build"
|
|
68
|
+
description: "Chỉ cập nhật plan.md và todo.md, tự chạy /build sau"
|
|
69
|
+
- label: "Lưu vào techdebt.md"
|
|
70
|
+
description: "Ghi findings vào specs/integrations/{slug}/techdebt.md để theo dõi sau, không fix ngay"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Bước 3 — Nếu user chọn "Thêm phase" (cả hai option đầu):**
|
|
74
|
+
|
|
75
|
+
Xác định số phase tiếp theo từ plan.md (đếm số `### Phase` hiện có, cộng 1).
|
|
76
|
+
|
|
77
|
+
Xác định task ID tiếp theo từ plan.md (lấy task ID lớn nhất hiện có, cộng 1).
|
|
78
|
+
|
|
79
|
+
Append vào `plan.md` (trước section `## Definition of Done`):
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
### Phase {N}: Review Findings
|
|
83
|
+
|
|
84
|
+
#### T{XXX} · {task title — bắt đầu bằng động từ}
|
|
85
|
+
|
|
86
|
+
**Mục tiêu:** {mô tả finding cần fix}
|
|
87
|
+
|
|
88
|
+
**depends:** {task ID cuối cùng trước phase này}
|
|
89
|
+
|
|
90
|
+
**Các bước:**
|
|
91
|
+
1. {bước fix cụ thể từ finding}
|
|
92
|
+
|
|
93
|
+
**Verification:**
|
|
94
|
+
- [ ] {điều kiện verify finding đã được fix}
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Append vào `todo.md`:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
### Phase {N}: Review Findings
|
|
103
|
+
- [ ] T{XXX} — {mô tả task fix}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Bước 4 — Nếu user chọn "Thêm phase và chạy /build":**
|
|
107
|
+
|
|
108
|
+
Sau khi cập nhật xong plan.md và todo.md, invoke ngay `/build` để thực thi phase Review vừa thêm.
|
|
109
|
+
|
|
110
|
+
**Bước 4 — Nếu user chọn "Lưu vào techdebt.md":**
|
|
111
|
+
|
|
112
|
+
Lấy short SHA hiện tại: `git rev-parse --short HEAD`.
|
|
113
|
+
|
|
114
|
+
Ghi findings vào `specs/integrations/{slug}/techdebt.md`.
|
|
115
|
+
|
|
116
|
+
Nếu file chưa tồn tại, tạo mới từ `.claude/templates/integrations/techdebt-template.md`, điền `slug`, `title`, `created`.
|
|
117
|
+
|
|
118
|
+
Append section mới vào cuối file (không ghi đè section cũ):
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
|
|
122
|
+
## {YYYY-MM-DD} — {short-sha}
|
|
123
|
+
|
|
124
|
+
- [ ] **Critical** — {mô tả finding 1}
|
|
125
|
+
- [ ] **Important** — {mô tả finding 2}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Sau khi ghi xong, thông báo:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
Đã lưu {N} findings vào specs/integrations/{slug}/techdebt.md.
|
|
132
|
+
Integration được đánh dấu có tech debt chưa xử lý.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Đánh dấu techdebt đã resolved
|
|
138
|
+
|
|
139
|
+
Khi `/build` hoàn thành **thành công** một Phase Review, nó phải tìm và mark các techdebt findings tương ứng là resolved.
|
|
140
|
+
|
|
141
|
+
**Cơ chế liên kết:** Khi append Phase Review vào `plan.md` (Bước 3 ở trên), thêm field `resolves-techdebt` vào task đầu tiên của phase, trỏ đến section date trong techdebt.md:
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
#### T{XXX} · Fix {mô tả finding 1}
|
|
145
|
+
|
|
146
|
+
**Mục tiêu:** {mô tả finding cần fix}
|
|
147
|
+
|
|
148
|
+
**depends:** {task ID cuối cùng trước phase này}
|
|
149
|
+
|
|
150
|
+
**resolves-techdebt:** {YYYY-MM-DD} — {short-sha}
|
|
151
|
+
|
|
152
|
+
**Các bước:**
|
|
153
|
+
...
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Khi `/build` hoàn thành Phase Review:**
|
|
157
|
+
|
|
158
|
+
1. Đọc field `resolves-techdebt` từ task đầu tiên của Phase Review trong `plan.md`
|
|
159
|
+
2. Tìm section tương ứng trong `techdebt.md` (match theo `## {YYYY-MM-DD} — {short-sha}`)
|
|
160
|
+
3. Với mỗi dòng `- [ ]` trong section đó → đổi thành `- [x]` và append ` *(resolved by T{XXX})*`:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
## 2026-05-08 — abc1234
|
|
164
|
+
|
|
165
|
+
- [x] **Critical** — {mô tả finding 1} *(resolved by T005)*
|
|
166
|
+
- [x] **Important** — {mô tả finding 2} *(resolved by T005)*
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
4. Nếu không tìm được field `resolves-techdebt` hoặc không tìm được section trong techdebt.md → bỏ qua, không báo lỗi.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: "{slug}"
|
|
3
|
+
created: {YYYY-MM-DD}
|
|
4
|
+
referenced_by:
|
|
5
|
+
- skills/review/SKILL.md > Bước 4 — Lưu vào techdebt.md
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Tech Debt — {title}
|
|
9
|
+
|
|
10
|
+
## {YYYY-MM-DD} — {short-sha}
|
|
11
|
+
|
|
12
|
+
- [ ] **Critical** — {mô tả finding}
|
|
13
|
+
- [ ] **Important** — {mô tả finding}
|