@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.1

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.
Files changed (141) hide show
  1. package/commands/debug.md +435 -435
  2. package/commands/debug.tmpl +111 -111
  3. package/commands/define-product.md +330 -327
  4. package/commands/define-product.tmpl +50 -47
  5. package/commands/dev-gen-test.md +364 -364
  6. package/commands/dev-gen-test.tmpl +63 -63
  7. package/commands/dev-run-test.md +375 -375
  8. package/commands/dev-run-test.tmpl +74 -74
  9. package/commands/dev-smoke-test.md +340 -340
  10. package/commands/dev-smoke-test.tmpl +60 -60
  11. package/commands/fix-bug.md +402 -402
  12. package/commands/fix-bug.tmpl +78 -78
  13. package/commands/generate-bdd.md +512 -512
  14. package/commands/generate-bdd.tmpl +211 -211
  15. package/commands/generate-code.md +480 -482
  16. package/commands/generate-code.tmpl +179 -181
  17. package/commands/generate-design-spec.md +495 -495
  18. package/commands/generate-design-spec.tmpl +219 -219
  19. package/commands/generate-prd.md +445 -396
  20. package/commands/generate-prd.tmpl +45 -198
  21. package/commands/generate-spec-manifest.md +337 -337
  22. package/commands/generate-spec-manifest.tmpl +57 -57
  23. package/commands/generate-tech-docs.md +364 -364
  24. package/commands/generate-tech-docs.tmpl +84 -84
  25. package/commands/learn.md +346 -346
  26. package/commands/learn.tmpl +22 -22
  27. package/commands/map-testids.md +321 -321
  28. package/commands/map-testids.tmpl +41 -41
  29. package/commands/propose-scenario.md +334 -334
  30. package/commands/propose-scenario.tmpl +54 -54
  31. package/commands/qc-analyze.md +322 -323
  32. package/commands/qc-analyze.tmpl +42 -43
  33. package/commands/qc-design-test.md +303 -303
  34. package/commands/qc-design-test.tmpl +23 -23
  35. package/commands/qc-plan.md +296 -296
  36. package/commands/qc-plan.tmpl +16 -16
  37. package/commands/qc-report.md +301 -301
  38. package/commands/qc-report.tmpl +21 -21
  39. package/commands/qc-review.md +297 -297
  40. package/commands/qc-review.tmpl +17 -17
  41. package/commands/qc-run-test.md +336 -336
  42. package/commands/qc-run-test.tmpl +35 -35
  43. package/commands/refine-prd.md +426 -428
  44. package/commands/refine-prd.tmpl +61 -61
  45. package/commands/report-bug.md +350 -350
  46. package/commands/report-bug.tmpl +70 -70
  47. package/commands/review-code.md +363 -363
  48. package/commands/review-code.tmpl +39 -39
  49. package/commands/review-context.md +577 -579
  50. package/commands/review-context.tmpl +212 -212
  51. package/commands/review-tech-docs.md +426 -426
  52. package/commands/review-tech-docs.tmpl +146 -146
  53. package/commands/setup-ai-first.md +237 -237
  54. package/commands/setup-ai-first.tmpl +131 -131
  55. package/commands/sync.md +145 -145
  56. package/commands/sync.tmpl +93 -93
  57. package/commands/update-framework.md +88 -88
  58. package/commands/update-framework.tmpl +36 -36
  59. package/commands/validate-traces.md +379 -379
  60. package/commands/validate-traces.tmpl +99 -99
  61. package/core/FRAMEWORK_VERSION +1 -1
  62. package/core/commands/debug.md +435 -435
  63. package/core/commands/define-product.md +330 -327
  64. package/core/commands/dev-gen-test.md +364 -364
  65. package/core/commands/dev-run-test.md +375 -375
  66. package/core/commands/dev-smoke-test.md +340 -340
  67. package/core/commands/fix-bug.md +402 -402
  68. package/core/commands/generate-bdd.md +512 -512
  69. package/core/commands/generate-code.md +480 -482
  70. package/core/commands/generate-design-spec.md +495 -495
  71. package/core/commands/generate-prd.md +445 -396
  72. package/core/commands/generate-spec-manifest.md +337 -337
  73. package/core/commands/generate-tech-docs.md +364 -364
  74. package/core/commands/learn.md +346 -346
  75. package/core/commands/map-testids.md +321 -321
  76. package/core/commands/propose-scenario.md +334 -334
  77. package/core/commands/qc-analyze.md +322 -323
  78. package/core/commands/qc-design-test.md +303 -303
  79. package/core/commands/qc-plan.md +296 -296
  80. package/core/commands/qc-report.md +301 -301
  81. package/core/commands/qc-review.md +297 -297
  82. package/core/commands/qc-run-test.md +336 -336
  83. package/core/commands/refine-prd.md +426 -428
  84. package/core/commands/report-bug.md +350 -350
  85. package/core/commands/review-code.md +363 -363
  86. package/core/commands/review-context.md +577 -579
  87. package/core/commands/review-tech-docs.md +426 -426
  88. package/core/commands/setup-ai-first.md +237 -237
  89. package/core/commands/sync.md +145 -145
  90. package/core/commands/update-framework.md +88 -88
  91. package/core/commands/validate-traces.md +379 -379
  92. package/core/skills/code/SKILL.md +388 -388
  93. package/core/skills/debug/SKILL.md +390 -390
  94. package/core/skills/design-spec/SKILL.md +316 -316
  95. package/core/skills/discovery/SKILL.md +7 -547
  96. package/core/skills/prd/SKILL.md +298 -394
  97. package/core/skills/setup-ai-first/SKILL.md +79 -79
  98. package/core/skills/spec/SKILL.md +176 -176
  99. package/core/skills/test/SKILL.md +602 -602
  100. package/core/steps/capture-lesson.md +44 -44
  101. package/core/steps/context-loader.md +174 -174
  102. package/core/steps/gate.md +54 -54
  103. package/core/steps/report-footer.md +52 -52
  104. package/core/steps/review-fanout.md +85 -87
  105. package/core/steps/spawn-agent.md +45 -45
  106. package/core/steps/trace-mirror.md +21 -21
  107. package/core/templates/architecture.template.md +37 -37
  108. package/core/templates/design-spec.template.md +77 -77
  109. package/core/templates/platform-guide.template.md +47 -47
  110. package/core/templates/prd.template.md +106 -231
  111. package/core/templates/product-definition.template.md +101 -88
  112. package/docs/04-operations/publishing.md +20 -3
  113. package/package.json +1 -1
  114. package/skills/code/SKILL.md +388 -388
  115. package/skills/code/SKILL.tmpl +56 -56
  116. package/skills/debug/SKILL.md +390 -390
  117. package/skills/debug/SKILL.tmpl +60 -60
  118. package/skills/design-spec/SKILL.md +316 -316
  119. package/skills/design-spec/SKILL.tmpl +36 -36
  120. package/skills/discovery/SKILL.md +7 -547
  121. package/skills/discovery/SKILL.tmpl +7 -140
  122. package/skills/prd/SKILL.md +298 -394
  123. package/skills/prd/SKILL.tmpl +40 -151
  124. package/skills/setup-ai-first/SKILL.md +79 -79
  125. package/skills/setup-ai-first/SKILL.tmpl +27 -27
  126. package/skills/spec/SKILL.md +176 -176
  127. package/skills/spec/SKILL.tmpl +18 -18
  128. package/skills/test/SKILL.md +602 -602
  129. package/skills/test/SKILL.tmpl +44 -44
  130. package/steps/capture-lesson.md +44 -44
  131. package/steps/context-loader.md +174 -174
  132. package/steps/gate.md +54 -54
  133. package/steps/report-footer.md +52 -52
  134. package/steps/review-fanout.md +85 -87
  135. package/steps/spawn-agent.md +45 -45
  136. package/steps/trace-mirror.md +21 -21
  137. package/templates/architecture.template.md +37 -37
  138. package/templates/design-spec.template.md +77 -77
  139. package/templates/platform-guide.template.md +47 -47
  140. package/templates/prd.template.md +106 -231
  141. package/templates/product-definition.template.md +101 -88
@@ -1,10 +1,10 @@
1
1
  ---
2
- description: Generates unit and integration tests from BDD specs, runs the test suite and reports results, or dev-smoke-tests live API endpoints on a running service. 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".
2
+ description: Sinh unit integration test từ BDD spec, chạy test suite 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
- This skill handles three commands: `/dev-gen-test`, `/dev-run-test`, and `/dev-smoke-test`.
7
+ Skill này xử ba lệnh: `/dev-gen-test`, `/dev-run-test`, `/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
- Also read:
19
- - `.feature` file to understand expected behaviors
20
- - Find files to test: Controllers with `@trace.implements={UC-ID}`, Service implementations, Facade implementations (if applicable)
18
+ Cũng đọc:
19
+ - File `.feature` để hiểu các behavior kỳ vọng
20
+ - Tìm file cần test: Controller `@trace.implements={UC-ID}`, Service implementation, Facade implementation (nếu áp dụng)
21
21
 
22
22
  ### CHECKPOINT — Test Plan
23
23
 
24
- Before generating, present plan:
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
- Wait for confirmation.
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
- Follow project test structure from CLAUDE.md. Typical:
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` tag on every test class
126
- - [ ] Every scenario in .feature has at least one test
127
- - [ ] Mock only the correct layer (no repo mocks in controller tests)
128
- - [ ] Test names follow `methodName_whenCondition_shouldOutcome` pattern
129
- - [ ] No debug print statements in tests
125
+ - [ ] Tag `@trace.verifies` trên mỗi test class
126
+ - [ ] Mỗi scenario trong .feature í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 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
- Identify service/module from argument (UC-ID or service name).
151
- Read `conventions.test_command` from the loaded project context.
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
- #### When tests PASS
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
- #### When tests FAIL — Debug Mode
177
+ #### Khi test FAIL — Debug Mode
178
178
 
179
- Read stack trace and analyze:
179
+ Đọc stack trace phân tích:
180
180
 
181
- | Error Pattern | Common Cause | Suggested Fix |
181
+ | Error Pattern | Nguyên nhân thường gặp | Suggested Fix |
182
182
  |---|---|---|
183
- | NullPointerException in test | Missing mock setup | Check `given(...)` setup for null dependency |
184
- | Bean/dependency not found | Missing mock/stub declaration | Add mock for missing dependency |
185
- | Expected 200 but got 403 | Missing auth setup in test | Add auth user/role to test context |
186
- | Expected 200 but got 400 | Request body fails validation | Check required fields in request DTO |
187
- | LazyInitializationException | Lazy collection accessed outside transaction | Add `@Transactional` on test or use eager fetch |
188
- | Mapper/mapper implementation not found | Code generator (e.g. MapStruct) not run | Run compile step before tests |
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
- Use when the service is **already running** to verify endpoints work correctly.
216
- Different from `/dev-run-test` (which runs unit/integration tests without a live server).
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
- Read `conventions.service_run` from the loaded project context to find port.
222
+ Đọc `conventions.service_run` từ project context đã nạp để tìm port.
223
223
  Default: `http://localhost:8080`
224
224
 
225
- Check if service is running:
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
- If not running: "Service is not running. Start it with: `{RUN_COMMAND}` from your project root."
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
- From UC-ID → find Controller with `@trace.implements={UC-ID}`:
236
- - List: method, path, required auth/role
235
+ Từ UC-ID → tìm Controller `@trace.implements={UC-ID}`:
236
+ - Liệt kê: method, path, auth/role bắt buộc
237
237
 
238
- ### Phase 3 — Get Auth Token (if needed)
238
+ ### Phase 3 — Get Auth Token (nếu cần)
239
239
 
240
- If endpoints require auth, ask:
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 | Meaning |
264
+ | Result | Ý nghĩa |
265
265
  |--------|---------|
266
- | 200/201 + correct data | ✅ OK |
267
- | 200 + wrong data | ⚠️ Logic bug → use `/debug` |
268
- | 400 | Request body wrongcheck required fields |
269
- | 401 | Token expired or wrong realm |
270
- | 403 | Wrong role → check auth config |
271
- | 500 + stacktrace | Server error → paste into `/debug` |
272
- | Connection refused | Service not running or wrong port |
273
-
274
- If errors in logs:
266
+ | 200/201 + đúng data | ✅ OK |
267
+ | 200 + sai data | ⚠️ Logic bug → dùng `/debug` |
268
+ | 400 | Request body saikiể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 lỗi trong log:
275
275
  ```bash
276
276
  tail -n 100 {LOG_FILE_PATH}
277
277
  ```
@@ -1,71 +1,71 @@
1
- # Capture Lesson — Record a Recurring Mistake as a Guardrail
1
+ # Capture Lesson — Ghi lại lỗi lặp lại thành một Guardrail
2
2
 
3
- Reusable procedure to persist a "lesson" so the AI does not repeat a mistake in this project.
4
- Used by `/learn` (manual) and offered by `/review-code`, `/fix-bug`, `/debug` (auto).
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) được đề xuất bởi `/review-code`, `/fix-bug`, `/debug` (tự động).
5
5
 
6
- > **Project memory, not model training.** A lesson is plain text injected into context at the
7
- > start of every command (context-loader Step 6.7). Functionally this stops the repeatthe AI
8
- > sees the guardrail before it generates. No model weights change.
6
+ > **Bộ nhớ dự án, không phải huấn luyện model.** Một lesson 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 — Resolve the lessons file
10
+ ## L1 — Phân giải file lessons
11
11
 
12
- Resolve `lessons_path` in this order:
13
- 1. `paths.lessons_file` from loaded context (may be service-overridden in umbrella mode, Step 1.6)
14
- 2. Default `specs/domain-knowledge/lessons-learned.md` (single-service)
15
- 3. In umbrella/service mode (when `service_root` is set) default `{service_root}/.agent/project-lessons.md`
12
+ Phân giải `lessons_path` theo thứ tự sau:
13
+ 1. `paths.lessons_file` từ context đã nạp ( 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 — Build the lesson
17
+ ## L2 — Dựng lesson
18
18
 
19
- Gather these fieldsfrom `$ARGUMENTS` (for `/learn`) or from the calling command's findings
20
- (for `/review-code`, `/fix-bug`, `/debug`):
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 | Meaning |
22
+ | Field | Ý nghĩa |
23
23
  |-------|---------|
24
- | `category` | one of: `code-gen` \| `bdd` \| `tech-docs` \| `tests` \| `prd` \| `general` |
25
- | `title` | short phrase naming the mistake |
26
- | `mistake` | concretely, what the AI did wrong |
27
- | `rule` | imperative correction — "Always …" / "Never …" — testable, not vague |
28
- | `scope` | where it applies: a domain, a file glob (e.g. `*Controller.*`), or `all` |
29
- | `source` | how captured: `/learn` \| `/review-code {UC-ID}` \| `/fix-bug {TICKET}` \| `/debug` |
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 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
- If `rule` is vague (e.g. "be careful"), rewrite it into a concrete, checkable instruction before saving.
31
+ Nếu `rule` 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 — De-duplicate
33
+ ## L3 — Khử trùng lặp
34
34
 
35
- Read existing lessons in `lessons_path`. If one already covers the same mistake:
36
- - **Refine** that entry (tighten the Rule, widen/narrow Scope, bump Date, append the new Source) — do NOT add a duplicate.
35
+ Đọc các lesson hiện có trong `lessons_path`. Nếu đã 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
- Otherwise assign the next id `L-{NNN}` = (highest existing number + 1), zero-padded to 3 digits.
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 — Write
40
+ ## L4 — Ghi
41
41
 
42
- If `lessons_path` does not exist, create it with this header first:
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
- > Mistakes the AI must NOT repeat in this project. Loaded by context-loader at the start of
48
- > every command and treated as hard constraints (same priority as CLAUDE.md coding standards).
49
- > Add with /learn, or accept the prompt during /review-code, /fix-bug, /debug.
50
- > Commit this file so the whole team shares the guardrails.
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 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 | Applies to |
52
+ | Category | Áp dụng cho |
53
53
  |----------|-----------|
54
- | code-gen | /generate-code output |
55
- | bdd | /generate-bdd output |
56
- | tech-docs | /generate-tech-docs output |
57
- | tests | /dev-gen-test output |
58
- | prd | /generate-prd, /refine-prd output |
59
- | general | every command |
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
- Insert the new lesson directly under the `---` separator (**newest first**), in this exact shape:
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**: {today YYYY-MM-DD}
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 — Confirm
76
+ ## L5 — Xác nhận
77
77
 
78
- Print: `📝 Lesson {id} recorded → {lessons_path} ([{category}] {title})`
79
- Then remind: `Commit {lessons_path} so the team shares this guardrail.`
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.`