@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.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/bin/index.js +12 -1
- package/commands/debug.md +436 -436
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +350 -345
- package/commands/define-product.tmpl +69 -64
- package/commands/dev-gen-test.md +365 -365
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +376 -376
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +341 -341
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +403 -403
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +513 -513
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +481 -483
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +497 -497
- package/commands/generate-design-spec.tmpl +220 -220
- package/commands/generate-prd.md +452 -400
- package/commands/generate-prd.tmpl +50 -200
- package/commands/generate-spec-manifest.md +340 -340
- package/commands/generate-spec-manifest.tmpl +59 -59
- package/commands/generate-tech-docs.md +365 -365
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +347 -347
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +322 -322
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +335 -335
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +323 -324
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +304 -304
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +297 -297
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +302 -302
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +298 -298
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +337 -337
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +428 -430
- package/commands/refine-prd.tmpl +62 -62
- package/commands/report-bug.md +351 -351
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +364 -364
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +578 -580
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +427 -427
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +239 -239
- package/commands/setup-ai-first.tmpl +133 -133
- package/commands/sync.md +145 -145
- package/commands/sync.tmpl +93 -93
- package/commands/update-framework.md +88 -88
- package/commands/update-framework.tmpl +36 -36
- package/commands/validate-traces.md +381 -381
- package/commands/validate-traces.tmpl +100 -100
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +436 -436
- package/core/commands/define-product.md +350 -345
- package/core/commands/dev-gen-test.md +365 -365
- package/core/commands/dev-run-test.md +376 -376
- package/core/commands/dev-smoke-test.md +341 -341
- package/core/commands/fix-bug.md +403 -403
- package/core/commands/generate-bdd.md +513 -513
- package/core/commands/generate-code.md +481 -483
- package/core/commands/generate-design-spec.md +497 -497
- package/core/commands/generate-prd.md +452 -400
- package/core/commands/generate-spec-manifest.md +340 -340
- package/core/commands/generate-tech-docs.md +365 -365
- package/core/commands/learn.md +347 -347
- package/core/commands/map-testids.md +322 -322
- package/core/commands/propose-scenario.md +335 -335
- package/core/commands/qc-analyze.md +323 -324
- package/core/commands/qc-design-test.md +304 -304
- package/core/commands/qc-plan.md +297 -297
- package/core/commands/qc-report.md +302 -302
- package/core/commands/qc-review.md +298 -298
- package/core/commands/qc-run-test.md +337 -337
- package/core/commands/refine-prd.md +428 -430
- package/core/commands/report-bug.md +351 -351
- package/core/commands/review-code.md +364 -364
- package/core/commands/review-context.md +578 -580
- package/core/commands/review-tech-docs.md +427 -427
- package/core/commands/setup-ai-first.md +239 -239
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +381 -381
- package/core/skills/code/SKILL.md +389 -389
- package/core/skills/debug/SKILL.md +391 -391
- package/core/skills/design-spec/SKILL.md +318 -318
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +80 -80
- package/core/skills/spec/SKILL.md +178 -178
- package/core/skills/test/SKILL.md +604 -604
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +175 -175
- package/core/steps/gate.md +54 -54
- package/core/steps/report-footer.md +52 -52
- package/core/steps/review-fanout.md +85 -87
- package/core/steps/spawn-agent.md +45 -45
- package/core/steps/trace-mirror.md +21 -21
- package/core/templates/architecture.template.md +37 -37
- package/core/templates/design-spec.template.md +77 -77
- package/core/templates/platform-guide.template.md +47 -47
- package/core/templates/prd.template.md +107 -232
- package/core/templates/product-definition.template.md +101 -88
- package/core/templates/project-context.yaml +2 -2
- package/docs/01-getting-started/core-concepts.md +1 -1
- package/docs/01-getting-started/quickstart.md +7 -7
- package/docs/02-guides/developer/bdd-and-trace.md +1 -1
- package/docs/02-guides/developer/scenarios.md +5 -5
- package/docs/02-guides/product-owner/handoff-checklist.md +1 -1
- package/docs/02-guides/product-owner/scenarios.md +23 -23
- package/docs/02-guides/tester/bug-reporting.md +2 -2
- package/docs/02-guides/tester/reading-specs.md +2 -2
- package/docs/02-guides/tester/scenarios.md +1 -1
- package/docs/02-guides/tester/spec-manifest.md +3 -3
- package/docs/02-guides/tester/workflow.md +1 -1
- package/docs/03-concepts/architecture.md +3 -3
- package/docs/03-concepts/pipeline.md +3 -3
- package/docs/04-operations/publishing.md +20 -3
- package/docs/04-operations/sync-and-update.md +5 -5
- package/docs/05-reference/command-cheatsheet.md +2 -2
- package/docs/05-reference/commands.md +8 -8
- package/package.json +1 -1
- package/scripts/migrate-specs.js +5 -3
- package/scripts/rename-prd-files.js +174 -0
- package/skills/code/SKILL.md +389 -389
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +391 -391
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +318 -318
- package/skills/design-spec/SKILL.tmpl +37 -37
- package/skills/discovery/SKILL.md +7 -547
- package/skills/discovery/SKILL.tmpl +7 -140
- package/skills/prd/SKILL.md +298 -394
- package/skills/prd/SKILL.tmpl +40 -151
- package/skills/setup-ai-first/SKILL.md +80 -80
- package/skills/setup-ai-first/SKILL.tmpl +28 -28
- package/skills/spec/SKILL.md +178 -178
- package/skills/spec/SKILL.tmpl +20 -20
- package/skills/test/SKILL.md +604 -604
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +175 -175
- package/steps/gate.md +54 -54
- package/steps/report-footer.md +52 -52
- package/steps/review-fanout.md +85 -87
- package/steps/spawn-agent.md +45 -45
- package/steps/trace-mirror.md +21 -21
- package/templates/architecture.template.md +37 -37
- package/templates/design-spec.template.md +77 -77
- package/templates/platform-guide.template.md +47 -47
- package/templates/prd.template.md +107 -232
- package/templates/product-definition.template.md +101 -88
- package/templates/project-context.yaml +2 -2
package/skills/test/SKILL.tmpl
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Sinh unit và integration test từ BDD spec, chạy test suite và report kết quả, hoặc dev-smoke-test các API endpoint live trên service đang chạy. Trigger when: "/dev-gen-test", "/dev-run-test", "/dev-smoke-test", "tạo test", "viết test", "chạy test", "generate tests", "run tests", "test kết quả", "smoke test", "test API", "kiểm tra endpoint đang chạy".
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# Test Skills — Generate, Run & Smoke Test
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Skill này xử lý ba lệnh: `/dev-gen-test`, `/dev-run-test`, và `/dev-smoke-test`.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -15,13 +15,13 @@ This skill handles three commands: `/dev-gen-test`, `/dev-run-test`, and `/dev-s
|
|
|
15
15
|
<!-- Directory: specs/*/*/bdd/*.feature — or pass UC-ID/class path as argument -->
|
|
16
16
|
{{include:steps/gate.md}}
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
- `.feature`
|
|
20
|
-
-
|
|
18
|
+
Cũng đọc:
|
|
19
|
+
- File `.feature` để hiểu các behavior kỳ vọng
|
|
20
|
+
- Tìm file cần test: Controller có `@trace.implements={UC-ID}`, Service implementation, Facade implementation (nếu áp dụng)
|
|
21
21
|
|
|
22
22
|
### CHECKPOINT — Test Plan
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Trước khi sinh, trình bày plan:
|
|
25
25
|
|
|
26
26
|
```
|
|
27
27
|
Test Plan — {UC-ID}:
|
|
@@ -40,7 +40,7 @@ Total: {N} test classes, ~{M} test cases
|
|
|
40
40
|
Proceed? (Y/N)
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Chờ xác nhận.
|
|
44
44
|
|
|
45
45
|
### Generate
|
|
46
46
|
|
|
@@ -112,7 +112,7 @@ class {Resource}ControllerTest {
|
|
|
112
112
|
|
|
113
113
|
### File Placement
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
Theo cấu trúc test của dự án từ CLAUDE.md. Điển hình:
|
|
116
116
|
```
|
|
117
117
|
src/test/{language}/{package}/
|
|
118
118
|
├── service/impl/{Resource}ServiceImplTest.{ext}
|
|
@@ -122,11 +122,11 @@ src/test/{language}/{package}/
|
|
|
122
122
|
|
|
123
123
|
### Self-Review Checklist
|
|
124
124
|
|
|
125
|
-
- [ ] `@trace.verifies`
|
|
126
|
-
- [ ]
|
|
127
|
-
- [ ]
|
|
128
|
-
- [ ] Test
|
|
129
|
-
- [ ]
|
|
125
|
+
- [ ] Tag `@trace.verifies` trên mỗi test class
|
|
126
|
+
- [ ] Mỗi scenario trong .feature có ít nhất một test
|
|
127
|
+
- [ ] Chỉ mock đúng layer (không mock repo trong controller test)
|
|
128
|
+
- [ ] Test name theo pattern `methodName_whenCondition_shouldOutcome`
|
|
129
|
+
- [ ] Không có debug print trong test
|
|
130
130
|
|
|
131
131
|
### Output
|
|
132
132
|
|
|
@@ -147,8 +147,8 @@ src/test/{language}/{package}/
|
|
|
147
147
|
|
|
148
148
|
{{include:steps/context-loader.md}}
|
|
149
149
|
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
Xác định service/module từ argument (UC-ID hoặc tên service).
|
|
151
|
+
Đọc `conventions.test_command` từ project context đã nạp.
|
|
152
152
|
|
|
153
153
|
### Run
|
|
154
154
|
|
|
@@ -165,7 +165,7 @@ Read `conventions.test_command` from the loaded project context.
|
|
|
165
165
|
|
|
166
166
|
### Analyze Results
|
|
167
167
|
|
|
168
|
-
####
|
|
168
|
+
#### Khi test PASS
|
|
169
169
|
|
|
170
170
|
```
|
|
171
171
|
✅ Tests passed
|
|
@@ -174,18 +174,18 @@ Read `conventions.test_command` from the loaded project context.
|
|
|
174
174
|
- Duration: {X}s
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
####
|
|
177
|
+
#### Khi test FAIL — Debug Mode
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
Đọc stack trace và phân tích:
|
|
180
180
|
|
|
181
|
-
| Error Pattern |
|
|
181
|
+
| Error Pattern | Nguyên nhân thường gặp | Suggested Fix |
|
|
182
182
|
|---|---|---|
|
|
183
|
-
| NullPointerException
|
|
184
|
-
| Bean/dependency not found |
|
|
185
|
-
| Expected 200 but got 403 |
|
|
186
|
-
| Expected 200 but got 400 | Request body
|
|
187
|
-
| LazyInitializationException | Lazy collection
|
|
188
|
-
| Mapper/mapper implementation not found | Code generator (
|
|
183
|
+
| NullPointerException trong test | Thiếu setup mock | Kiểm tra setup `given(...)` cho dependency null |
|
|
184
|
+
| Bean/dependency not found | Thiếu khai báo mock/stub | Thêm mock cho dependency thiếu |
|
|
185
|
+
| Expected 200 but got 403 | Thiếu setup auth trong test | Thêm auth user/role vào test context |
|
|
186
|
+
| Expected 200 but got 400 | Request body fail validation | Kiểm tra field bắt buộc trong request DTO |
|
|
187
|
+
| LazyInitializationException | Lazy collection truy cập ngoài transaction | Thêm `@Transactional` trên test hoặc dùng eager fetch |
|
|
188
|
+
| Mapper/mapper implementation not found | Code generator (vd MapStruct) chưa chạy | Chạy compile trước khi test |
|
|
189
189
|
|
|
190
190
|
### Output
|
|
191
191
|
|
|
@@ -212,32 +212,32 @@ Duration: {X}s
|
|
|
212
212
|
|
|
213
213
|
## /dev-smoke-test — Test Live API Endpoints
|
|
214
214
|
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
Dùng khi service **đang chạy sẵn** để verify endpoint hoạt động đúng.
|
|
216
|
+
Khác `/dev-run-test` (chạy unit/integration test không cần live server).
|
|
217
217
|
|
|
218
218
|
### Phase 1 — Find Service URL
|
|
219
219
|
|
|
220
220
|
{{include:steps/context-loader.md}}
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
Đọc `conventions.service_run` từ project context đã nạp để tìm port.
|
|
223
223
|
Default: `http://localhost:8080`
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
Kiểm tra service đang chạy:
|
|
226
226
|
```bash
|
|
227
227
|
curl -s http://localhost:{port}/health
|
|
228
228
|
# or /actuator/health for Spring Boot
|
|
229
229
|
```
|
|
230
230
|
|
|
231
|
-
|
|
231
|
+
Nếu chưa chạy: "Service is not running. Start it with: `{RUN_COMMAND}` from your project root."
|
|
232
232
|
|
|
233
233
|
### Phase 2 — Identify Endpoints
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
-
|
|
235
|
+
Từ UC-ID → tìm Controller có `@trace.implements={UC-ID}`:
|
|
236
|
+
- Liệt kê: method, path, auth/role bắt buộc
|
|
237
237
|
|
|
238
|
-
### Phase 3 — Get Auth Token (
|
|
238
|
+
### Phase 3 — Get Auth Token (nếu cần)
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
Nếu endpoint yêu cầu auth, hỏi:
|
|
241
241
|
```
|
|
242
242
|
This endpoint requires authentication. Options:
|
|
243
243
|
1. Paste your Bearer token (from Postman / browser DevTools / test login)
|
|
@@ -261,17 +261,17 @@ curl -s -X POST "http://localhost:{port}/v1/{resource}" \
|
|
|
261
261
|
|
|
262
262
|
### Phase 5 — Interpret Results
|
|
263
263
|
|
|
264
|
-
| Result |
|
|
264
|
+
| Result | Ý nghĩa |
|
|
265
265
|
|--------|---------|
|
|
266
|
-
| 200/201 +
|
|
267
|
-
| 200 +
|
|
268
|
-
| 400 | Request body
|
|
269
|
-
| 401 | Token
|
|
270
|
-
| 403 |
|
|
271
|
-
| 500 + stacktrace | Server error →
|
|
272
|
-
| Connection refused | Service
|
|
273
|
-
|
|
274
|
-
|
|
266
|
+
| 200/201 + đúng data | ✅ OK |
|
|
267
|
+
| 200 + sai data | ⚠️ Logic bug → dùng `/debug` |
|
|
268
|
+
| 400 | Request body sai → kiểm tra field bắt buộc |
|
|
269
|
+
| 401 | Token hết hạn hoặc sai realm |
|
|
270
|
+
| 403 | Sai role → kiểm tra auth config |
|
|
271
|
+
| 500 + stacktrace | Server error → dán vào `/debug` |
|
|
272
|
+
| Connection refused | Service chưa chạy hoặc sai port |
|
|
273
|
+
|
|
274
|
+
Nếu có lỗi trong log:
|
|
275
275
|
```bash
|
|
276
276
|
tail -n 100 {LOG_FILE_PATH}
|
|
277
277
|
```
|
package/steps/capture-lesson.md
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
# Capture Lesson —
|
|
1
|
+
# Capture Lesson — Ghi lại lỗi lặp lại thành một Guardrail
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Quy trình tái sử dụng để lưu một "lesson" nhằm tránh AI lặp lại lỗi trong dự án này.
|
|
4
|
+
Dùng bởi `/learn` (thủ công) và được đề xuất bởi `/review-code`, `/fix-bug`, `/debug` (tự động).
|
|
5
5
|
|
|
6
|
-
> **
|
|
7
|
-
>
|
|
8
|
-
>
|
|
6
|
+
> **Bộ nhớ dự án, không phải huấn luyện model.** Một lesson là văn bản thuần được inject vào context ở
|
|
7
|
+
> đầu mỗi lệnh (context-loader Bước 6.7). Về mặt chức năng, điều này chặn việc lặp lại — AI thấy
|
|
8
|
+
> guardrail trước khi sinh nội dung. Không có trọng số model nào thay đổi.
|
|
9
9
|
|
|
10
|
-
## L1 —
|
|
10
|
+
## L1 — Phân giải file lessons
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
1. `paths.lessons_file`
|
|
14
|
-
2.
|
|
15
|
-
3.
|
|
12
|
+
Phân giải `lessons_path` theo thứ tự sau:
|
|
13
|
+
1. `paths.lessons_file` từ context đã nạp (có thể bị service override ở chế độ umbrella, Bước 1.6)
|
|
14
|
+
2. Mặc định `specs/domain-knowledge/lessons-learned.md` (single-service)
|
|
15
|
+
3. Ở chế độ umbrella/service (khi `service_root` được set) mặc định `{service_root}/.agent/project-lessons.md`
|
|
16
16
|
|
|
17
|
-
## L2 —
|
|
17
|
+
## L2 — Dựng lesson
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
(
|
|
19
|
+
Thu thập các field sau — từ `$ARGUMENTS` (cho `/learn`) hoặc từ findings của lệnh gọi
|
|
20
|
+
(cho `/review-code`, `/fix-bug`, `/debug`):
|
|
21
21
|
|
|
22
|
-
| Field |
|
|
22
|
+
| Field | Ý nghĩa |
|
|
23
23
|
|-------|---------|
|
|
24
|
-
| `category` |
|
|
25
|
-
| `title` |
|
|
26
|
-
| `mistake` |
|
|
27
|
-
| `rule` |
|
|
28
|
-
| `scope` |
|
|
29
|
-
| `source` |
|
|
24
|
+
| `category` | một trong: `code-gen` \| `bdd` \| `tech-docs` \| `tests` \| `prd` \| `general` |
|
|
25
|
+
| `title` | cụm từ ngắn đặt tên cho lỗi |
|
|
26
|
+
| `mistake` | cụ thể, AI đã làm sai điều gì |
|
|
27
|
+
| `rule` | câu sửa mệnh lệnh — "Luôn …" / "Không bao giờ …" — testable, không mơ hồ |
|
|
28
|
+
| `scope` | phạm vi áp dụng: một domain, một file glob (vd `*Controller.*`), hoặc `all` |
|
|
29
|
+
| `source` | cách ghi nhận: `/learn` \| `/review-code {UC-ID}` \| `/fix-bug {TICKET}` \| `/debug` |
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Nếu `rule` mơ hồ (vd "cẩn thận"), viết lại thành chỉ dẫn cụ thể, kiểm tra được trước khi lưu.
|
|
32
32
|
|
|
33
|
-
## L3 —
|
|
33
|
+
## L3 — Khử trùng lặp
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
- **
|
|
35
|
+
Đọc các lesson hiện có trong `lessons_path`. Nếu đã có một lesson cùng lỗi:
|
|
36
|
+
- **Tinh chỉnh** entry đó (siết chặt Rule, mở rộng/thu hẹp Scope, cập nhật Date, thêm Source mới) — KHÔNG thêm bản trùng.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Nếu không, gán id kế tiếp `L-{NNN}` = (số lớn nhất hiện có + 1), pad 0 đủ 3 chữ số.
|
|
39
39
|
|
|
40
|
-
## L4 —
|
|
40
|
+
## L4 — Ghi
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Nếu `lessons_path` chưa tồn tại, tạo file với header sau trước:
|
|
43
43
|
|
|
44
44
|
```markdown
|
|
45
45
|
# Project Lessons — Learned Guardrails
|
|
46
46
|
|
|
47
|
-
>
|
|
48
|
-
>
|
|
49
|
-
>
|
|
50
|
-
> Commit
|
|
47
|
+
> Các lỗi AI KHÔNG được lặp lại trong dự án này. Được nạp bởi context-loader ở đầu
|
|
48
|
+
> mỗi lệnh và coi như ràng buộc cứng (cùng mức ưu tiên với coding standards trong CLAUDE.md).
|
|
49
|
+
> Thêm bằng /learn, hoặc chấp nhận prompt trong /review-code, /fix-bug, /debug.
|
|
50
|
+
> Commit file này để cả team dùng chung guardrail.
|
|
51
51
|
|
|
52
|
-
| Category |
|
|
52
|
+
| Category | Áp dụng cho |
|
|
53
53
|
|----------|-----------|
|
|
54
|
-
| code-gen | /generate-code
|
|
55
|
-
| bdd | /generate-bdd
|
|
56
|
-
| tech-docs | /generate-tech-docs
|
|
57
|
-
| tests | /dev-gen-test
|
|
58
|
-
| prd | /generate-prd, /refine-prd
|
|
59
|
-
| general |
|
|
54
|
+
| code-gen | output của /generate-code |
|
|
55
|
+
| bdd | output của /generate-bdd |
|
|
56
|
+
| tech-docs | output của /generate-tech-docs |
|
|
57
|
+
| tests | output của /dev-gen-test |
|
|
58
|
+
| prd | output của /generate-prd, /refine-prd |
|
|
59
|
+
| general | mọi lệnh |
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
Chèn lesson mới ngay dưới dấu phân cách `---` (**mới nhất lên đầu**), theo đúng dạng:
|
|
65
65
|
|
|
66
66
|
```markdown
|
|
67
67
|
### L-{NNN} — [{category}] {title}
|
|
68
|
-
- **Date**: {
|
|
68
|
+
- **Date**: {hôm nay YYYY-MM-DD}
|
|
69
69
|
- **Scope**: {scope}
|
|
70
70
|
- **Mistake**: {mistake}
|
|
71
71
|
- **Rule**: {rule}
|
|
@@ -73,7 +73,7 @@ Insert the new lesson directly under the `---` separator (**newest first**), in
|
|
|
73
73
|
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
## L5 —
|
|
76
|
+
## L5 — Xác nhận
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
In: `📝 Đã ghi lesson {id} → {lessons_path} ([{category}] {title})`
|
|
79
|
+
Rồi nhắc: `Commit {lessons_path} để cả team dùng chung guardrail này.`
|