ai-developer-skill-os 9.3.1 → 10.1.0

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 (185) hide show
  1. package/.agents/AGENTS.md +60 -40
  2. package/.agents/DEV_PROFILE.md +36 -2
  3. package/.agents/registry/graph.json +95 -342
  4. package/.agents/registry/index.yaml +61 -237
  5. package/.agents/rules/coding.md +30 -12
  6. package/.agents/rules/command-safety.md +19 -8
  7. package/.agents/rules/global.md +234 -28
  8. package/.agents/rules/prompt-compiler.md +170 -0
  9. package/.agents/skills/qk-api-data-discovery/SKILL.md +470 -0
  10. package/.agents/skills/qk-backend-data/SKILL.md +190 -0
  11. package/.agents/skills/qk-bug-resolution/SKILL.md +176 -248
  12. package/.agents/skills/qk-code-cleaner/SKILL.md +250 -0
  13. package/.agents/skills/qk-code-review/SKILL.md +126 -247
  14. package/.agents/skills/qk-devops-release/SKILL.md +145 -0
  15. package/.agents/skills/qk-feature-delivery/SKILL.md +179 -247
  16. package/.agents/skills/qk-orchestrator/SKILL.md +100 -151
  17. package/.agents/skills/qk-product-spec/SKILL.md +113 -0
  18. package/.agents/skills/qk-prompt-compiler/SKILL.md +321 -0
  19. package/.agents/skills/qk-ui-engineer/SKILL.md +137 -0
  20. package/.agents/workflows/feature-delivery.yml +1 -1
  21. package/.agents/workflows/production-release.yml +1 -1
  22. package/.agents/workflows/spec-driven-development.yml +109 -87
  23. package/CHANGELOG.md +16 -0
  24. package/README.md +125 -205
  25. package/bin/install.js +337 -329
  26. package/package.json +2 -2
  27. package/.agents/README.md +0 -90
  28. package/.agents/docs/CHI_TIET_SKILLS.md +0 -126
  29. package/.agents/docs/HUONG_DAN_SU_DUNG.md +0 -120
  30. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +0 -36
  31. package/.agents/docs/MIGRATION-STATUS.md +0 -35
  32. package/.agents/docs/MIGRATION-V8.md +0 -10
  33. package/.agents/docs/ROADMAP-V8.2.md +0 -78
  34. package/.agents/docs/V8-CERTIFICATION.md +0 -27
  35. package/.agents/skills/qk-access-policy/SKILL.md +0 -206
  36. package/.agents/skills/qk-access-policy/capability.yaml +0 -23
  37. package/.agents/skills/qk-access-policy/evals/scorecard.yaml +0 -36
  38. package/.agents/skills/qk-agent-observability/SKILL.md +0 -108
  39. package/.agents/skills/qk-agent-observability/capability.yaml +0 -29
  40. package/.agents/skills/qk-agent-observability/evals/scorecard.yaml +0 -29
  41. package/.agents/skills/qk-agent-observability/references/scorecard.yaml +0 -80
  42. package/.agents/skills/qk-ai-builder/SKILL.md +0 -254
  43. package/.agents/skills/qk-ai-builder/capability.yaml +0 -23
  44. package/.agents/skills/qk-ai-builder/evals/scorecard.yaml +0 -30
  45. package/.agents/skills/qk-api-consumer/SKILL.md +0 -256
  46. package/.agents/skills/qk-api-consumer/capability.yaml +0 -21
  47. package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +0 -29
  48. package/.agents/skills/qk-api-lifecycle/SKILL.md +0 -251
  49. package/.agents/skills/qk-api-lifecycle/capability.yaml +0 -23
  50. package/.agents/skills/qk-api-lifecycle/evals/scorecard.yaml +0 -29
  51. package/.agents/skills/qk-bug-resolution/capability.yaml +0 -25
  52. package/.agents/skills/qk-code-review/capability.yaml +0 -23
  53. package/.agents/skills/qk-context-loader/SKILL.md +0 -198
  54. package/.agents/skills/qk-context-loader/capability.yaml +0 -23
  55. package/.agents/skills/qk-context-loader/evals/scorecard.yaml +0 -28
  56. package/.agents/skills/qk-data-engineer/SKILL.md +0 -253
  57. package/.agents/skills/qk-data-lifecycle/SKILL.md +0 -197
  58. package/.agents/skills/qk-data-lifecycle/capability.yaml +0 -23
  59. package/.agents/skills/qk-data-lifecycle/evals/scorecard.yaml +0 -29
  60. package/.agents/skills/qk-db-optimizer/SKILL.md +0 -210
  61. package/.agents/skills/qk-db-optimizer/capability.yaml +0 -22
  62. package/.agents/skills/qk-db-optimizer/evals/scorecard.yaml +0 -28
  63. package/.agents/skills/qk-design-system-engineering/SKILL.md +0 -193
  64. package/.agents/skills/qk-design-system-engineering/capability.yaml +0 -25
  65. package/.agents/skills/qk-design-system-engineering/evals/scorecard.yaml +0 -27
  66. package/.agents/skills/qk-devops-platform/SKILL.md +0 -198
  67. package/.agents/skills/qk-devops-platform/capability.yaml +0 -29
  68. package/.agents/skills/qk-devops-platform/evals/scorecard.yaml +0 -28
  69. package/.agents/skills/qk-docs/SKILL.md +0 -193
  70. package/.agents/skills/qk-docs/capability.yaml +0 -23
  71. package/.agents/skills/qk-docs/evals/scorecard.yaml +0 -27
  72. package/.agents/skills/qk-engineering-standard/SKILL.md +0 -89
  73. package/.agents/skills/qk-engineering-standard/capability.yaml +0 -23
  74. package/.agents/skills/qk-engineering-standard/evals/scorecard.yaml +0 -28
  75. package/.agents/skills/qk-engineering-standard/references/anti-patterns.md +0 -121
  76. package/.agents/skills/qk-engineering-standard/rules/backend.md +0 -122
  77. package/.agents/skills/qk-engineering-standard/rules/database.md +0 -3
  78. package/.agents/skills/qk-engineering-standard/rules/frontend.md +0 -152
  79. package/.agents/skills/qk-engineering-standard/rules/security.md +0 -3
  80. package/.agents/skills/qk-engineering-standard/rules/testing.md +0 -3
  81. package/.agents/skills/qk-fe-api-integration/SKILL.md +0 -704
  82. package/.agents/skills/qk-fe-api-integration/capability.yaml +0 -21
  83. package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +0 -29
  84. package/.agents/skills/qk-feature-delivery/capability.yaml +0 -24
  85. package/.agents/skills/qk-frontend-architecture/SKILL.md +0 -127
  86. package/.agents/skills/qk-frontend-architecture/capability.yaml +0 -28
  87. package/.agents/skills/qk-frontend-architecture/evals/scorecard.yaml +0 -28
  88. package/.agents/skills/qk-help/SKILL.md +0 -107
  89. package/.agents/skills/qk-help/capability.yaml +0 -20
  90. package/.agents/skills/qk-help/evals/scorecard.yaml +0 -13
  91. package/.agents/skills/qk-orchestrator/capability.yaml +0 -22
  92. package/.agents/skills/qk-product-specification/SKILL.md +0 -187
  93. package/.agents/skills/qk-product-specification/capability.yaml +0 -27
  94. package/.agents/skills/qk-product-specification/evals/scorecard.yaml +0 -27
  95. package/.agents/skills/qk-production-release/SKILL.md +0 -188
  96. package/.agents/skills/qk-production-release/capability.yaml +0 -27
  97. package/.agents/skills/qk-production-release/evals/scorecard.yaml +0 -28
  98. package/.agents/skills/qk-project-audit/SKILL.md +0 -174
  99. package/.agents/skills/qk-project-bootstrap/SKILL.md +0 -372
  100. package/.agents/skills/qk-project-bootstrap/capability.yaml +0 -23
  101. package/.agents/skills/qk-project-bootstrap/evals/scorecard.yaml +0 -28
  102. package/.agents/skills/qk-project-health/SKILL.md +0 -202
  103. package/.agents/skills/qk-project-health/capability.yaml +0 -23
  104. package/.agents/skills/qk-project-health/evals/scorecard.yaml +0 -27
  105. package/.agents/skills/qk-project-memory/SKILL.md +0 -303
  106. package/.agents/skills/qk-project-memory/capability.yaml +0 -23
  107. package/.agents/skills/qk-project-memory/evals/scorecard.yaml +0 -27
  108. package/.agents/skills/qk-refactor/SKILL.md +0 -243
  109. package/.agents/skills/qk-refactor/capability.yaml +0 -26
  110. package/.agents/skills/qk-refactor/evals/scorecard.yaml +0 -27
  111. package/.agents/skills/qk-security-audit/SKILL.md +0 -280
  112. package/.agents/skills/qk-security-audit/capability.yaml +0 -29
  113. package/.agents/skills/qk-security-audit/evals/scorecard.yaml +0 -27
  114. package/.agents/skills/qk-system-evolution/SKILL.md +0 -625
  115. package/.agents/skills/qk-system-evolution/capability.yaml +0 -24
  116. package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +0 -26
  117. package/.agents/skills/qk-test-engineering/SKILL.md +0 -215
  118. package/.agents/skills/qk-test-engineering/capability.yaml +0 -28
  119. package/.agents/skills/qk-test-engineering/evals/scorecard.yaml +0 -26
  120. package/.agents/skills/qk-ui-audit/SKILL.md +0 -175
  121. package/.agents/skills/qk-ui-audit/capability.yaml +0 -23
  122. package/.agents/skills/qk-ui-audit/evals/scorecard.yaml +0 -26
  123. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  124. package/.agents/skills/qk-ui-builder/SKILL.md +0 -521
  125. package/.agents/skills/qk-ui-builder/capability.yaml +0 -29
  126. package/.agents/skills/qk-ui-builder/evals/scorecard.yaml +0 -26
  127. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +0 -295
  128. package/.agents/skills/qk-ui-builder/references/color.md +0 -115
  129. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +0 -458
  130. package/.agents/skills/qk-ui-builder/references/copy.md +0 -250
  131. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
  132. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +0 -111
  133. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
  134. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
  135. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
  136. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
  137. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
  138. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
  139. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
  140. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
  141. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
  142. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
  143. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
  144. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
  145. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
  146. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
  147. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
  148. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
  149. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
  150. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
  151. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
  152. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
  153. package/.agents/skills/qk-ui-builder/references/macrostructures.md +0 -38
  154. package/.agents/skills/qk-ui-builder/references/motion.md +0 -95
  155. package/.agents/skills/qk-ui-builder/references/responsive.md +0 -115
  156. package/.agents/skills/qk-ui-builder/references/slop-test.md +0 -135
  157. package/.agents/skills/qk-ui-builder/references/structure.md +0 -280
  158. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
  159. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +0 -52
  160. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
  161. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +0 -52
  162. package/.agents/skills/qk-ui-builder/references/themes/garden.md +0 -52
  163. package/.agents/skills/qk-ui-builder/references/themes/hum.md +0 -52
  164. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +0 -52
  165. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +0 -52
  166. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
  167. package/.agents/skills/qk-ui-builder/references/themes/playful.md +0 -52
  168. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +0 -52
  169. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +0 -52
  170. package/.agents/skills/qk-ui-builder/references/typography.md +0 -129
  171. package/.agents/skills/qk-ui-system-builder/SKILL.md +0 -183
  172. package/.agents/skills/qk-ui-system-builder/capability.yaml +0 -25
  173. package/.agents/skills/qk-ui-system-builder/evals/scorecard.yaml +0 -26
  174. package/.agents/skills/qk-upgrade/SKILL.md +0 -301
  175. package/.agents/skills/qk-upgrade/capability.yaml +0 -24
  176. package/.agents/skills/qk-upgrade/evals/scorecard.yaml +0 -26
  177. package/.agents/skills/qk-validation-gate/SKILL.md +0 -88
  178. package/.agents/skills/qk-validation-gate/capability.yaml +0 -23
  179. package/.agents/skills/qk-validation-gate/evals/scorecard.yaml +0 -26
  180. package/.agents/skills/qk-web-quality-gate/SKILL.md +0 -197
  181. package/.agents/skills/qk-web-quality-gate/capability.yaml +0 -24
  182. package/.agents/skills/qk-web-quality-gate/evals/scorecard.yaml +0 -26
  183. package/.agents/workflows/research.yml +0 -75
  184. package/.agents/workflows/skill-evolution.yml +0 -97
  185. package/tooling/fix-refactor.js +0 -8
@@ -1,704 +0,0 @@
1
- ---
2
- # ── Identity ───────────────────────────────────────────────
3
- name: qk-fe-api-integration
4
- version: 9.1.0
5
- status: stable
6
- description: "Consume API Backend, quản lý State, bind vào UI — tuân thủ kiến trúc Base dự án"
7
- platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
-
9
- # ── V9: Classification ─────────────────────────────────────
10
- type: capability
11
-
12
- intent:
13
- - api-integration
14
- - frontend-development
15
-
16
- complexity:
17
- level: medium
18
- criteria:
19
- files_affected: "1-5"
20
- has_behavior_change: true
21
- has_external_dependency: true
22
- has_breaking_change: false
23
-
24
- triggers:
25
- - "tích hợp api"
26
- - "gọi api"
27
- - "fetch data"
28
- - "consume api"
29
-
30
- # ── V8: References ─────────────────────────────────────────
31
- workflow: feature-delivery
32
-
33
- rules:
34
- - global
35
- - coding
36
-
37
- tools:
38
- - filesystem
39
- - terminal
40
-
41
- related_skills:
42
- - qk-api-lifecycle
43
- - qk-ui-builder
44
-
45
- knowledge_scope:
46
- owns:
47
- - api-integration
48
- - state-management
49
- references:
50
- - architecture
51
-
52
- # ── V8: Verification ───────────────────────────────────────
53
- verification:
54
- required: true
55
- strategy: feature
56
-
57
- selection:
58
- priority: medium
59
- confidence_threshold: 0.80
60
-
61
- examples: []
62
- learnings: []
63
-
64
- # ── V7 Runtime ─────────────────────────────────────────────
65
- execution_mode: deterministic
66
- cost: medium
67
- latency: medium
68
- risk: low
69
- side_effects: edit_files
70
- produces: [code]
71
- consumes: [json-payload, context-graph]
72
-
73
- token_budget:
74
- max_files_read: 3
75
- max_lines_per_read: 100
76
- max_shell_commands: 1
77
- stop_early: true
78
-
79
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
80
- ---
81
-
82
- # qk-fe-api-integration — Frontend API Consumer
83
-
84
- > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
85
-
86
- ---
87
-
88
- ## Memory Workflow
89
-
90
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
91
- - Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
92
- - **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
93
- - **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
94
-
95
- ---
96
-
97
- ### Pre-flight Retrieve (Trước khi thực thi)
98
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
99
- bắt buộc tra cứu:
100
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
101
-
102
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
103
- - Architecture
104
- - Hard Bug
105
- - Convention
106
- - Pattern
107
- - Tech Debt Pattern
108
- - 👉 *Domain Focus:* Pattern / Convention (vd: cách quản lý state TanStack Query/Zustand, binding chuẩn).
109
-
110
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
111
- Không được xem Memory là Source of Truth.
112
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
113
-
114
- ---
115
-
116
- ### Learning Flow (AI tự học có kiểm soát)
117
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
118
- - Hard Bug có khả năng tái diễn.
119
- - Pattern làm việc lặp lại trong dự án.
120
- - Convention hoặc quy tắc kiến trúc mới.
121
- - Quyết định Architecture quan trọng.
122
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
123
- - 👉 *Domain Harvest:* Pattern mới (vd: quy tắc cache/revalidate dữ liệu tầng Frontend).
124
-
125
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
126
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
127
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
128
-
129
- ---
130
-
131
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
132
- Sau khi hoàn thành task:
133
- - AI đánh giá các Candidate Memory đã tạo.
134
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
135
- - Đề xuất người dùng xem xét.
136
- - Gửi yêu cầu phê duyệt thông qua:
137
- - `/learn`
138
- - `qk-project-memory`
139
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
140
-
141
- ```
142
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
143
- ```
144
-
145
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
146
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
147
-
148
- ---
149
-
150
- ### Ignore (Không đưa vào Memory)
151
- Không lưu:
152
- - Trace log của một session đơn lẻ.
153
- - Temporary debugging data.
154
- - Output của một lần chạy test/scan.
155
- - Report health tạm thời của một đợt kiểm tra.
156
- - Lỗi nhỏ chỉ xảy ra một lần.
157
- - Thông tin không có khả năng tái sử dụng.
158
- - 👉 *Domain Ignore:* Logic call API của 1 component riêng rẽ.
159
-
160
- ---
161
-
162
- ### Golden Rule
163
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
164
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
165
-
166
- ---
167
-
168
-
169
-
170
- ### 0. Self-Init Protocol (Khởi Tạo Bộ Nhớ Local & Gitignore)
171
- - Trước khi tra cứu hoặc lưu trữ tri thức, BẮT BUỘC kiểm tra sự tồn tại của thư mục `.ai-local/` tại gốc dự án:
172
- - **Tự động tạo mới:** Nếu `.ai-local/` chưa tồn tại, AI phải tự động tạo cấu trúc thư mục `.ai-local/knowledge/` (và file `index.yaml` nếu cần thiết) cùng `.ai-local/candidates/`. Tuyệt đối không ngưng chạy hay hỏi ý kiến người dùng về thao tác khởi tạo tiêu chuẩn này.
173
- - **Bảo mật Gitignore:** BẮT BUỘC kiểm tra file `.gitignore` của dự án, nếu chưa có dòng `.ai-local/` thì phải tự động thêm vào để tuyệt đối bảo mật tri thức cá nhân và tránh lộ lọt lên Git.
174
-
175
- ---
176
-
177
- ### Pre-flight Retrieve (Trước khi thực thi)
178
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
179
- bắt buộc tra cứu:
180
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
181
-
182
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
183
- - Architecture
184
- - Hard Bug
185
- - Convention
186
- - Pattern
187
- - Tech Debt Pattern
188
- - 👉 *Domain Focus:* Pattern / Convention (vd: cách quản lý state TanStack Query/Zustand, binding chuẩn).
189
-
190
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
191
- Không được xem Memory là Source of Truth.
192
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
193
-
194
- ---
195
-
196
- ### Learning Flow (AI tự học có kiểm soát)
197
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
198
- - Hard Bug có khả năng tái diễn.
199
- - Pattern làm việc lặp lại trong dự án.
200
- - Convention hoặc quy tắc kiến trúc mới.
201
- - Quyết định Architecture quan trọng.
202
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
203
- - 👉 *Domain Harvest:* Pattern mới (vd: quy tắc cache/revalidate dữ liệu tầng Frontend).
204
-
205
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
206
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
207
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
208
-
209
- ---
210
-
211
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
212
- Sau khi hoàn thành task:
213
- - AI đánh giá các Candidate Memory đã tạo.
214
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
215
- - Đề xuất người dùng xem xét.
216
- - Gửi yêu cầu phê duyệt thông qua:
217
- - `/learn`
218
- - `qk-project-memory`
219
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
220
-
221
- ```
222
- .ai-local/candidates/ ──(Approve)──> .ai-local/knowledge/index.yaml
223
- ```
224
-
225
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
226
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
227
-
228
- ---
229
-
230
- ### Ignore (Không đưa vào Memory)
231
- Không lưu:
232
- - Trace log của một session đơn lẻ.
233
- - Temporary debugging data.
234
- - Output của một lần chạy test/scan.
235
- - Report health tạm thời của một đợt kiểm tra.
236
- - Lỗi nhỏ chỉ xảy ra một lần.
237
- - Thông tin không có khả năng tái sử dụng.
238
- - 👉 *Domain Ignore:* Logic call API của 1 component riêng rẽ.
239
-
240
- ---
241
-
242
- ### Golden Rule
243
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
244
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
245
-
246
- ---
247
-
248
-
249
-
250
- ### Pre-flight Retrieve (Trước khi thực thi)
251
- - Trước các task có tính lặp lại, debug, refactor, kiến trúc hoặc rủi ro cao:
252
- bắt buộc tra cứu:
253
- - `.agents/knowledge/index.yaml` (Shared Project Knowledge)
254
- - `.ai-local/knowledge/index.yaml` (Private Local Knowledge)
255
-
256
- - Ưu tiên sử dụng các Knowledge đang có trạng thái `Active` thuộc:
257
- - Architecture
258
- - Hard Bug
259
- - Convention
260
- - Pattern
261
- - Tech Debt Pattern
262
- - 👉 *Domain Focus:* Pattern / Convention (vd: cách quản lý state TanStack Query/Zustand, binding chuẩn).
263
-
264
- - Memory chỉ đóng vai trò **Navigator (bản đồ chỉ đường)**.
265
- Không được xem Memory là Source of Truth.
266
- Luôn xác minh lại bằng source code, configuration và trạng thái hiện tại của dự án trước khi áp dụng.
267
-
268
- ---
269
-
270
- ### Learning Flow (AI tự học có kiểm soát)
271
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
272
- - Hard Bug có khả năng tái diễn.
273
- - Pattern làm việc lặp lại trong dự án.
274
- - Convention hoặc quy tắc kiến trúc mới.
275
- - Quyết định Architecture quan trọng.
276
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
277
- - 👉 *Domain Harvest:* Pattern mới (vd: quy tắc cache/revalidate dữ liệu tầng Frontend).
278
-
279
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
280
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
281
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
282
-
283
- ---
284
-
285
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
286
- Sau khi hoàn thành task:
287
- - AI đánh giá các Candidate Memory đã tạo.
288
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
289
- - Đề xuất người dùng xem xét.
290
- - Gửi yêu cầu phê duyệt thông qua:
291
- - `/learn`
292
- - `qk-project-memory`
293
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
294
-
295
- ```
296
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
297
- ```
298
-
299
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
300
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
301
-
302
- ---
303
-
304
- ### Ignore (Không đưa vào Memory)
305
- Không lưu:
306
- - Trace log của một session đơn lẻ.
307
- - Temporary debugging data.
308
- - Output của một lần chạy test/scan.
309
- - Report health tạm thời của một đợt kiểm tra.
310
- - Lỗi nhỏ chỉ xảy ra một lần.
311
- - Thông tin không có khả năng tái sử dụng.
312
- - 👉 *Domain Ignore:* Logic call API của 1 component riêng rẽ.
313
-
314
- ---
315
-
316
- ### Golden Rule
317
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
318
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
319
-
320
- ---
321
- ---
322
-
323
- ### Learning Flow (AI tự học có kiểm soát)
324
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
325
- - Hard Bug có khả năng tái diễn.
326
- - Pattern làm việc lặp lại trong dự án.
327
- - Convention hoặc quy tắc kiến trúc mới.
328
- - Quyết định Architecture quan trọng.
329
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
330
- - 👉 *Domain Harvest:* Pattern mới (vd: quy tắc cache/revalidate dữ liệu tầng Frontend).
331
-
332
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
333
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
334
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
335
-
336
- ---
337
-
338
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
339
- Sau khi hoàn thành task:
340
- - AI đánh giá các Candidate Memory đã tạo.
341
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
342
- - Đề xuất người dùng xem xét.
343
- - Gửi yêu cầu phê duyệt thông qua:
344
- - `/learn`
345
- - `qk-project-memory`
346
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
347
-
348
- ```
349
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
350
- ```
351
-
352
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
353
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
354
-
355
- ---
356
-
357
- ### Ignore (Không đưa vào Memory)
358
- Không lưu:
359
- - Trace log của một session đơn lẻ.
360
- - Temporary debugging data.
361
- - Output của một lần chạy test/scan.
362
- - Report health tạm thời của một đợt kiểm tra.
363
- - Lỗi nhỏ chỉ xảy ra một lần.
364
- - Thông tin không có khả năng tái sử dụng.
365
- - 👉 *Domain Ignore:* Logic call API của 1 component riêng rẽ.
366
-
367
- ---
368
-
369
- ### Golden Rule
370
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
371
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
372
-
373
- ---
374
- ---
375
-
376
- ### Learning Flow (AI tự học có kiểm soát)
377
- - Trong quá trình làm việc, AI được phép tự phát hiện và tạo **Candidate Memory** khi nhận thấy:
378
- - Hard Bug có khả năng tái diễn.
379
- - Pattern làm việc lặp lại trong dự án.
380
- - Convention hoặc quy tắc kiến trúc mới.
381
- - Quyết định Architecture quan trọng.
382
- - Tech Debt Pattern hoặc Code Smell có tính hệ thống.
383
- - 👉 *Domain Harvest:* Pattern mới (vd: quy tắc cache/revalidate dữ liệu tầng Frontend).
384
-
385
- - Candidate Memory chỉ là bản nháp quan sát, chưa phải tri thức chính thức.
386
- - Candidate Memory có thể lưu tạm tại: `.ai-local/candidates/`
387
- - AI không được tự động Promote Candidate Memory thành Project Knowledge.
388
-
389
- ---
390
-
391
- ### Post-flight Harvest (Đề xuất → Phê duyệt)
392
- Sau khi hoàn thành task:
393
- - AI đánh giá các Candidate Memory đã tạo.
394
- - Nếu phát hiện tri thức có giá trị tái sử dụng:
395
- - Đề xuất người dùng xem xét.
396
- - Gửi yêu cầu phê duyệt thông qua:
397
- - `/learn`
398
- - `qk-project-memory`
399
- - Chỉ sau khi được phê duyệt, Candidate Memory mới được chuyển thành Knowledge chính thức:
400
-
401
- ```
402
- .ai-local/candidates/ ──(Approve)──> .agents/knowledge/index.yaml
403
- ```
404
-
405
- - Project Knowledge phải được xem như tài sản kỹ thuật của dự án:
406
- - Có thể review, cập nhật, loại bỏ và có lịch sử thay đổi.
407
-
408
- ---
409
-
410
- ### Ignore (Không đưa vào Memory)
411
- Không lưu:
412
- - Trace log của một session đơn lẻ.
413
- - Temporary debugging data.
414
- - Output của một lần chạy test/scan.
415
- - Report health tạm thời của một đợt kiểm tra.
416
- - Lỗi nhỏ chỉ xảy ra một lần.
417
- - Thông tin không có khả năng tái sử dụng.
418
- - 👉 *Domain Ignore:* Logic call API của 1 component riêng rẽ.
419
-
420
- ---
421
-
422
- ### Golden Rule
423
- > **AI được phép học, nhưng không được tự quyết định tri thức chính thức.**
424
- > **AI quan sát → Đề xuất → Con người phê duyệt → Dự án tiến hóa.**
425
-
426
- ---
427
- ---
428
- ---
429
- ---
430
-
431
- ## Preconditions
432
- - [ ] Backend JSON payload hoặc API endpoint schema được cung cấp
433
- - [ ] Project's API client pattern được xác định (Axios wrapper, RTK Query, React Query, etc.)
434
-
435
- ```
436
- On missing precondition:
437
- EXIT: BLOCKED
438
- Message: "Cần cung cấp: JSON response mẫu VÀ xác nhận API client pattern hiện tại của dự án."
439
- ```
440
-
441
- ---
442
-
443
- ## Scope
444
- - ✅ Identify existing API client pattern (NEVER default to raw fetch if wrapper exists)
445
- - ✅ Generate strict TypeScript interfaces from JSON payload
446
- - ✅ Implement service layer (API calls separated from UI)
447
- - ✅ Handle all 3 UI states: Loading, Success, Error
448
- - ✅ Map backend payload → DTO before injecting into UI components
449
-
450
- ## Non-Goals
451
- - ❌ Hardcode API Base URLs in UI components — use env vars or centralized config
452
- - ❌ Inject API logic inside presentational (dumb) components
453
- - ❌ Introduce new state management libraries without explicit user approval
454
- - ❌ Hallucinate data fields not in provided JSON payload
455
- - ❌ Create Node.js/Python scripts to patch — edit files directly
456
- - ❌ Read entire files > 100 lines — use targeted reads
457
- - ❌ Default to raw fetch if wrapper exists — ALWAYS reuse existing client
458
-
459
- ---
460
-
461
- ## Priority Order
462
-
463
- | Priority | Task | Skip Threshold |
464
- |----------|------|----------------|
465
- | P1 | Identify existing API client (grep package.json, src/api/) | Never |
466
- | P2 | Generate TypeScript interfaces from JSON payload | Never |
467
- | P3 | Implement service layer (API calls) | Never |
468
- | P4 | Bind to UI with Loading + Success + Error states | Budget < 30% |
469
- | P5 | Cache invalidation after mutations (POST/PUT/DELETE) | Budget < 60% |
470
- | P6 | DTO mapping (backend payload → clean UI data) | Budget < 70% |
471
-
472
- ---
473
-
474
- ## Workflow
475
-
476
- ### Phase 1 — Identify Base Architecture
477
-
478
- **Steps:**
479
- 1. `grep_search` in `package.json` → identify: axios, react-query, rtk-query, swr, or custom
480
- 2. `view_file[src/api/]` (first 30 lines) → confirm wrapper pattern
481
- 3. Identify: base URL config, auth header injection, error interceptor location
482
-
483
- **Decision:**
484
- ```
485
- IF wrapper/client found (e.g., apiClient.ts, axiosInstance.ts)
486
- → Use it. Ưu tiên bọc (wrap) bằng TanStack Query (useQuery/useMutation) nếu có thể. NEVER bypass with raw fetch/axios in components.
487
- → Confidence: HIGH → go to Phase 2
488
-
489
- ELSE IF no wrapper found
490
- → Confirm with user: "Dùng raw fetch hay tạo wrapper mới?"
491
- → Confidence: MEDIUM → go to Phase 2
492
-
493
- ELSE IF conflicting patterns found (mix of fetch + axios + rtk)
494
- → EXIT: BLOCKED — ask which pattern to follow
495
- ```
496
-
497
- **Exit When:**
498
- - API client pattern identified → go to Phase 2
499
- - `max_files_read` reached → go to Phase 2 with MEDIUM confidence
500
-
501
- ---
502
-
503
- ### Phase 2 — Generate Types & Validation
504
-
505
- **Steps:**
506
- 1. Parse provided JSON payload → extract all fields
507
- 2. Generate **Zod schema** (`z.object({...})`) for runtime validation
508
- 3. Export TypeScript interface via inferred Zod type (`export type Response = z.infer<typeof schema>`)
509
- 4. Flag any field that could be `null` or optional with `.nullable()` or `.optional()`
510
-
511
- **Decision:**
512
- ```
513
- IF all fields clearly typed from JSON
514
- → Khởi tạo Zod schema chính xác.
515
- → Confidence: HIGH → go to Phase 3
516
-
517
- ELSE IF some fields ambiguous (null | undefined)
518
- → Mark as optional in Zod (`.optional()`) + add comment "// verify with backend"
519
- → Confidence: MEDIUM → go to Phase 3
520
-
521
- ELSE IF nested objects contain mixed null/non-null patterns
522
- → EXIT: BLOCKED — cannot safely generate types without backend clarification
523
- ```
524
-
525
- ---
526
-
527
- ### Phase 3 — Implement Service + UI Binding
528
-
529
- **Steps:**
530
- 1. Create/update service file: Viết API fetcher function.
531
- 2. Viết Custom Hook bọc fetcher function bằng **TanStack Query** (`useQuery` hoặc `useMutation`).
532
- 3. Bind to component: Dùng các states từ hook (`isLoading`, `isPending`, `isError`, `data`) thay vì tự tạo `useEffect`.
533
- 4. Bind Error state: handle HTTP errors per table below.
534
- 5. Kiểm duyệt ranh giới an toàn (R-SEC-04): Validate dữ liệu API trả về bằng Zod Schema ở (2) trước khi render.
535
-
536
- **HTTP Error Handling (mandatory for ALL integrations):**
537
- ```
538
- 401 Unauthorized → redirect to login or show auth error toast
539
- 403 Forbidden → show permission error toast
540
- 404 Not Found → show empty state component (not a crash)
541
- 422 Validation → map field errors to form fields
542
- 500 Server Error → show generic error toast + retry button
543
- Network Error → show offline banner or retry prompt
544
- ```
545
-
546
- **Decision:**
547
- ```
548
- IF all 3 states (Loading, Success, Error) implemented + service created → go to Phase 4
549
- ELSE IF error state incomplete → EXIT: PARTIAL — missing HTTP error handling
550
- ELSE → EXIT: BLOCKED — cannot complete binding
551
- ```
552
-
553
- **Exit When:**
554
- - All 3 states implemented + service created → go to Phase 4
555
-
556
- ---
557
-
558
- ### Phase 4 — Self-Audit
559
-
560
- **Steps:**
561
- 1. Re-read service file: confirm no hardcoded URLs, no UI logic
562
- 2. Re-read component: confirm no API calls inside JSX
563
- 3. Verify cache invalidation if mutation (POST/PUT/DELETE)
564
-
565
- **Decision:**
566
- ```
567
- IF all audit points pass → EXIT: SUCCESS
568
- ELSE IF 1–2 minor issues → fix inline → EXIT: SUCCESS
569
- ELSE IF architectural violation found → fix → EXIT: PARTIAL
570
- ELSE IF hardcoded URL (http://localhost, 127.0.0.1) found → EXIT: FAILED — do not ship
571
- ```
572
-
573
- ---
574
-
575
- ## Confidence Model
576
-
577
- | Level | Condition | Action |
578
- |-------|-----------|--------|
579
- | HIGH | API client found, JSON payload complete, all types inferred | Implement directly |
580
- | MEDIUM | Some fields ambiguous, wrapper partially identified | Note assumptions, proceed |
581
- | LOW | No JSON payload provided OR conflicting API patterns OR nested nulls unresolved | EXIT: BLOCKED |
582
-
583
- ---
584
-
585
- ## Severity
586
-
587
- | Level | Definition | Example |
588
- |-------|-----------|---------|
589
- | CRITICAL | Security data leakage from improper DTO mapping | Auth token in dumb component |
590
- | HIGH | Missing error state causes white screen of death | No 500 handler |
591
- | MEDIUM | Hardcoded URL breaks in production | `axios.get("http://localhost:3000/api")` |
592
- | LOW | Missing cache invalidation after mutation | Stale data after POST |
593
-
594
- ---
595
-
596
- ## Evidence Format
597
-
598
- ```
599
- [SEVERITY] path/to/component.tsx:LINE
600
- Issue: [specific violation]
601
- Confidence: [HIGH|MEDIUM|LOW]
602
- Fix: [one-line suggestion]
603
- ```
604
-
605
- **Example:**
606
- ```
607
- [HIGH] src/pages/Dashboard.tsx:45
608
- Issue: API call `axios.get('/api/data')` inside JSX render — violates smart/dumb separation
609
- Confidence: HIGH
610
- Fix: Move to `src/services/dashboard.service.ts`, inject via hook
611
- ```
612
-
613
- ---
614
-
615
- ## Retry Policy
616
-
617
- ```
618
- API call fails (runtime verification)
619
- └─ Check error type
620
- ├─ Network error → show retry button (user-triggered retry, not auto)
621
- ├─ 401/403 → do NOT retry — redirect or show permission error
622
- ├─ 500 → auto-retry once after 1s delay
623
- │ └─ Still fails → show error toast with "Try again" button
624
- └─ Never auto-retry more than 1 time (avoid hammering server)
625
-
626
- Skill execution fails
627
- └─ Check failure type
628
- ├─ Syntax error in generated code → fix and retry once
629
- └─ Architectural mismatch → EXIT: FAILED, do NOT retry
630
- ```
631
-
632
- ---
633
-
634
- ## Escalation Rules
635
-
636
- ```
637
- BLOCKED: Cannot determine API client pattern
638
- Missing:
639
- - package.json contents OR
640
- - Location of existing API client file (e.g., src/lib/api.ts)
641
- Questions:
642
- 1. Dự án dùng thư viện nào để gọi API? (axios / fetch / react-query / rtk-query)
643
- 2. Có file API wrapper/client nào sẵn không? (ví dụ: src/api/client.ts)
644
- Recommended Assumptions (if proceeding):
645
- - Create new Axios instance with interceptors for auth + error handling
646
- ```
647
-
648
- ---
649
-
650
- ## Handoff Contract
651
-
652
- ### Consumes
653
- ```json
654
- {
655
- "from": "user or qk-context-loader",
656
- "required_fields": ["json_payload_sample", "api_endpoint"],
657
- "optional_fields": ["existing_api_client_path", "component_to_bind"]
658
- }
659
- ```
660
-
661
- ### Produces
662
- ```json
663
- {
664
- "to": "user",
665
- "output_fields": ["types_file", "service_file", "component_file", "states_implemented", "exit_code"]
666
- }
667
- ```
668
-
669
- ---
670
-
671
- ## Output Format
672
-
673
- ```
674
- 🔌 FE API Integration
675
- ─────────────────────────────────────────────────
676
- API Client: [identified — axiosInstance.ts | created new]
677
- Types: [src/types/[resource].types.ts]
678
- Service: [src/services/[resource].service.ts]
679
-
680
- States implemented:
681
- ✅ Loading (skeleton/spinner)
682
- ✅ Success (data rendered)
683
- ✅ Error (toast/empty state per HTTP code)
684
- ⚠️ [any state skipped — reason]
685
-
686
- Assumptions:
687
- - [any assumption made]
688
-
689
- Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
690
- ```
691
-
692
- ---
693
-
694
- ## Exit Codes
695
-
696
- | Code | Meaning | When |
697
- |------|---------|------|
698
- | SUCCESS | Types + service + UI binding complete with all 3 states | Full integration |
699
- | PARTIAL | Integration done, missing error/loading state or cache invalidation | Follow-up needed |
700
- | BLOCKED | No JSON payload or conflicting API patterns | Ask user |
701
- | FAILED | Cannot integrate without breaking existing architecture | Escalate |
702
-
703
- ---
704
-