ai-developer-skill-os 7.0.1 → 7.5.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 (189) hide show
  1. package/.agents/AGENTS.md +44 -88
  2. package/.agents/CHANGELOG.md +69 -0
  3. package/.agents/LICENSE +21 -0
  4. package/.agents/README.md +59 -0
  5. package/.agents/_template/BEHAVIOR_SPEC.md +96 -0
  6. package/.agents/_template/examples/example-en.md +49 -0
  7. package/.agents/_template/examples/example-vi.md +49 -0
  8. package/.agents/docs/CHI_TIET_SKILLS.md +125 -0
  9. package/.agents/docs/GOVERNANCE.md +40 -0
  10. package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
  11. package/.agents/docs/SPEC.md +87 -0
  12. package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
  13. package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
  14. package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
  15. package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
  16. package/.agents/docs/skill-classification.md +25 -0
  17. package/.agents/skills/qk-access-policy/SKILL.md +179 -0
  18. package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
  19. package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
  20. package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
  21. package/.agents/skills/qk-context-loader/SKILL.md +218 -0
  22. package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
  23. package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
  24. package/.agents/skills/qk-design-to-code/SKILL.md +285 -0
  25. package/.agents/skills/qk-docs/SKILL.md +198 -0
  26. package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
  27. package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
  28. package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
  29. package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
  30. package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
  31. package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
  32. package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
  33. package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
  34. package/.agents/skills/qk-help/SKILL.md +193 -0
  35. package/.agents/skills/qk-orchestrator/SKILL.md +277 -0
  36. package/.agents/skills/qk-orchestrator/references/routing-table.md +77 -0
  37. package/.agents/skills/qk-production-release/SKILL.md +284 -0
  38. package/.agents/skills/qk-project-bootstrap/SKILL.md +234 -0
  39. package/.agents/skills/qk-project-health/SKILL.md +199 -0
  40. package/.agents/skills/qk-project-memory/SKILL.md +172 -0
  41. package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
  42. package/.agents/skills/qk-ui-audit/SKILL.md +314 -0
  43. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  44. package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
  45. package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
  46. package/.agents/skills.json +819 -0
  47. package/.github/workflows/ci.yml +1 -1
  48. package/.qk-ai-skill-os/CHANGELOG.md +69 -0
  49. package/.qk-ai-skill-os/LICENSE +21 -0
  50. package/.qk-ai-skill-os/README.md +59 -0
  51. package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +96 -0
  52. package/.qk-ai-skill-os/_template/examples/example-en.md +49 -0
  53. package/.qk-ai-skill-os/_template/examples/example-vi.md +49 -0
  54. package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +125 -0
  55. package/.qk-ai-skill-os/docs/GOVERNANCE.md +40 -0
  56. package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +120 -0
  57. package/.qk-ai-skill-os/docs/SPEC.md +87 -0
  58. package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +19 -0
  59. package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +21 -0
  60. package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +20 -0
  61. package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +19 -0
  62. package/.qk-ai-skill-os/docs/skill-classification.md +25 -0
  63. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +121 -0
  64. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +179 -0
  65. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +389 -0
  66. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +96 -0
  67. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +125 -0
  68. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +213 -0
  69. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +136 -0
  70. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +175 -0
  71. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +104 -0
  72. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +96 -0
  73. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +137 -0
  74. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +140 -0
  75. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +155 -0
  76. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +133 -0
  77. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +129 -0
  78. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +146 -0
  79. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +304 -0
  80. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +68 -0
  81. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +284 -0
  82. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +280 -0
  83. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +222 -0
  84. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +140 -0
  85. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +127 -0
  86. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +152 -0
  87. package/.qk-ai-skill-os/skills/_template/SKILL.md +238 -0
  88. package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +179 -0
  89. package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +221 -0
  90. package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +176 -0
  91. package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +307 -0
  92. package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +218 -0
  93. package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +192 -0
  94. package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +196 -0
  95. package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +291 -0
  96. package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +198 -0
  97. package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +351 -0
  98. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +122 -0
  99. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +3 -0
  100. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +152 -0
  101. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +3 -0
  102. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +3 -0
  103. package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +326 -0
  104. package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +305 -0
  105. package/.qk-ai-skill-os/skills/qk-help/SKILL.md +193 -0
  106. package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +277 -0
  107. package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +77 -0
  108. package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +290 -0
  109. package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +240 -0
  110. package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +199 -0
  111. package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +172 -0
  112. package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +285 -0
  113. package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +314 -0
  114. package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  115. package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +225 -0
  116. package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +361 -0
  117. package/.qk-ai-skill-os/skills.json +819 -0
  118. package/CHANGELOG.md +5 -0
  119. package/CLAUDE.md +110 -0
  120. package/README.md +26 -4
  121. package/add_lang.js +21 -0
  122. package/add_lang.py +25 -0
  123. package/add_sections.py +53 -0
  124. package/bin/install.js +225 -170
  125. package/bin/lint.js +122 -0
  126. package/docs/CHI_TIET_SKILLS.md +26 -26
  127. package/docs/HUONG_DAN_SU_DUNG.md +3 -3
  128. package/docs/SPEC.md +70 -20
  129. package/framework/skill-schema.md +310 -0
  130. package/package.json +15 -4
  131. package/patch.js +15 -0
  132. package/patch.py +89 -0
  133. package/patch2.py +83 -0
  134. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
  135. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
  136. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
  137. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
  138. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
  139. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
  140. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
  141. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
  142. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
  143. package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
  144. package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
  145. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
  146. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
  147. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
  148. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
  149. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
  150. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
  151. package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
  152. package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
  153. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
  154. package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
  155. package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
  156. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
  157. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
  158. package/skills/_template/SKILL.md +238 -0
  159. package/skills/qk-access-policy/SKILL.md +179 -39
  160. package/skills/qk-ai-builder/SKILL.md +215 -40
  161. package/skills/qk-api-lifecycle/SKILL.md +176 -46
  162. package/skills/qk-bug-resolution/SKILL.md +307 -46
  163. package/skills/qk-context-loader/SKILL.md +218 -43
  164. package/skills/qk-data-lifecycle/SKILL.md +192 -44
  165. package/skills/qk-db-optimizer/SKILL.md +196 -41
  166. package/skills/qk-design-to-code/SKILL.md +285 -46
  167. package/skills/qk-docs/SKILL.md +198 -40
  168. package/skills/qk-engineering-standard/SKILL.md +351 -42
  169. package/skills/qk-fe-api-integration/SKILL.md +326 -0
  170. package/skills/qk-feature-delivery/SKILL.md +305 -48
  171. package/skills/qk-help/SKILL.md +178 -23
  172. package/skills/qk-orchestrator/SKILL.md +277 -42
  173. package/skills/qk-orchestrator/references/routing-table.md +77 -0
  174. package/skills/qk-production-release/SKILL.md +284 -41
  175. package/skills/qk-project-bootstrap/SKILL.md +234 -38
  176. package/skills/qk-project-health/SKILL.md +199 -40
  177. package/skills/qk-project-memory/SKILL.md +172 -40
  178. package/skills/qk-system-evolution/SKILL.md +281 -40
  179. package/skills/qk-ui-audit/SKILL.md +314 -42
  180. package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  181. package/skills/qk-ui-system-builder/SKILL.md +221 -43
  182. package/skills/qk-validation-gate/SKILL.md +359 -40
  183. package/skills.json +813 -789
  184. package/specs/fixtures/user-payload.json +12 -0
  185. package/specs/regressions/api-integration-null-fields.yaml +19 -0
  186. package/temp_fix.js +61 -0
  187. package/tests/registry.test.js +1 -1
  188. package/update_template.js +28 -0
  189. package/skills/qk-policy-engine/SKILL.md +0 -39
@@ -1,42 +1,351 @@
1
- ---
2
- name: qk-engineering-standard
3
- category: qa
4
- version: 7.0.0
5
- description: "Ép buộc áp dụng SOLID, DRY, Clean Code, chống Spaghetti code."
6
- ---
7
-
8
- # qk-engineering-standard
9
-
10
- ## Scope
11
- - Code Quality, Architecture, and Standards Enforcement (Audit)
12
-
13
- ## Verbs
14
- - `[ENFORCE]`: Reject code that violates engineering standards.
15
-
16
- ## Constraints
17
- ```yaml
18
- must:
19
- - "Enforce SOLID principles and DRY"
20
- - "Keep cyclomatic complexity low (Functions must do ONE thing)"
21
- - "Enforce strict naming conventions"
22
- must_not:
23
- - "Allow spaghetti code or mega-functions"
24
- - "Merge logic that mixes UI, State, and Network in one file"
25
- ```
26
-
27
- ## Policies
28
- ```yaml
29
- prefer:
30
- - "Composition over inheritance"
31
- - "Early returns and guard clauses"
32
- ```
33
-
34
- ## Escalation
35
- ```yaml
36
- stop:
37
- - "Cyclomatic complexity exceeds acceptable thresholds"
38
- - "Code violates V7 Anti-Slop architectural rules"
39
- ```
40
-
41
- ## Output
42
- - Refactored code or Audit rejection report.
1
+ ---
2
+ name: qk-engineering-standard
3
+ category: qa
4
+ version: 7.5.0
5
+ description: "Ép buộc SOLID, DRY, Clean Code với ngưỡng số liệu cụ thể — không có rule mơ hồ."
6
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
+ execution_mode: deterministic
8
+
9
+ cost: medium
10
+ latency: medium
11
+ risk: low
12
+ side_effects: read_only
13
+ produces: [report]
14
+ consumes: [source-code]
15
+
16
+ token_budget:
17
+ max_files_read: 5
18
+ max_lines_per_read: 150
19
+ max_shell_commands: 1
20
+ stop_early: true
21
+
22
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
23
+ skill_version: 7.5.0
24
+ runtime_version: 1
25
+ schema_version: 2
26
+ ---
27
+
28
+ # qk-engineering-standard — Code Quality Enforcer
29
+
30
+ > **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.
31
+
32
+ skill_version: 7.5.0
33
+ runtime_version: 1
34
+ schema_version: 2
35
+ ---
36
+
37
+ ## Preconditions
38
+ - [ ] Target file(s) or module(s) are specified
39
+
40
+ ```
41
+ On missing precondition:
42
+ EXIT: BLOCKED
43
+ Message: "Vui lòng chỉ định file hoặc module cần kiểm tra."
44
+ ```
45
+
46
+ skill_version: 7.5.0
47
+ runtime_version: 1
48
+ schema_version: 2
49
+ ---
50
+
51
+ ## Scope
52
+ - ✅ Detect violations with exact file:line references
53
+ - ✅ Classify by severity with concrete thresholds
54
+ - ✅ Suggest minimal, targeted refactors
55
+
56
+ ## Non-Goals
57
+ - ❌ Auto-fix code — report only (fixes go to qk-bug-resolution or qk-feature-delivery)
58
+ - ❌ Rewrite architecture
59
+ - ❌ Touch files outside the specified scope
60
+
61
+ skill_version: 7.5.0
62
+ runtime_version: 1
63
+ schema_version: 2
64
+ ---
65
+
66
+ ## Concrete Thresholds (Non-Negotiable)
67
+
68
+ ```yaml
69
+ function:
70
+ max_lines: 30 # Lines of code, excluding comments/blanks
71
+ max_cyclomatic_complexity: 10
72
+ max_parameters: 4
73
+
74
+ file:
75
+ max_lines: 300
76
+ max_public_methods_per_class: 10 # God Class threshold
77
+
78
+ dry:
79
+ violation_threshold: 3 # Same logic duplicated in ≥ 3 places
80
+
81
+ separation_of_concerns:
82
+ violation: "File mixes UI rendering + API calls + State management"
83
+
84
+ naming:
85
+ min_variable_name_length: 2 # Single-letter vars (except i,j,k in loops)
86
+ max_abbreviation_ratio: 0.3 # > 30% abbreviations in identifiers = violation
87
+
88
+ dependency:
89
+ max_imports_per_file: 15 # Beyond this: likely a God File
90
+ ```
91
+
92
+ skill_version: 7.5.0
93
+ runtime_version: 1
94
+ schema_version: 2
95
+ ---
96
+
97
+ ## Priority Order
98
+
99
+ | Priority | Check | Severity | Skip Threshold |
100
+ |----------|-------|----------|----------------|
101
+ | P1 | Security violations (hardcoded secrets, SQL injection) | CRITICAL | Never |
102
+ | P2 | God Functions > 30 lines / complexity > 10 | HIGH | Budget < 30% |
103
+ | P3 | God Files > 300 lines / God Classes | HIGH | Budget < 40% |
104
+ | P4 | DRY violations (3+ duplicates) | MEDIUM | Budget < 50% |
105
+ | P5 | Mixed concerns in single file | MEDIUM | Budget < 60% |
106
+ | P6 | Naming convention violations | LOW | Budget < 70% |
107
+ | P7 | Excessive imports / coupling | LOW | Budget < 80% |
108
+
109
+ skill_version: 7.5.0
110
+ runtime_version: 1
111
+ schema_version: 2
112
+ ---
113
+
114
+ ## Workflow
115
+
116
+ ### Phase 1 — Scan for Critical & High Violations
117
+
118
+ **Steps:**
119
+ 1. `grep_search` — search for: hardcoded secrets, `console.log`, `eval(`, `any` types
120
+ 2. `view_file[targeted]` — read function definitions to count lines and parameters
121
+ 3. Log each violation with Evidence Format
122
+
123
+ **Decision:**
124
+ ```
125
+ IF CRITICAL violation found (e.g., hardcoded API key)
126
+ → Report immediately, mark EXIT: FAILED
127
+ → Still continue scanning (don't stop at first critical)
128
+
129
+ IF function line count > 30 OR complexity > 10
130
+ → Log as [HIGH]
131
+
132
+ IF file line count > 300
133
+ → Log as [HIGH] — God File suspected
134
+ ```
135
+
136
+ **Exit When:**
137
+ - All P1+P2+P3 checks done → go to Phase 2
138
+ - Token budget < 30% → go to Phase 3 directly with PARTIAL flag
139
+
140
+ skill_version: 7.5.0
141
+ runtime_version: 1
142
+ schema_version: 2
143
+ ---
144
+
145
+ ### Phase 2 — Scan for Medium & Low Violations
146
+
147
+ **Steps:**
148
+ 1. `grep_search` — find duplicate logic patterns (copy-paste code)
149
+ 2. Check import counts per file
150
+ 3. Check naming conventions
151
+
152
+ **Decision:**
153
+ ```
154
+ IF same logic block appears ≥ 3 times
155
+ → Log as [MEDIUM] DRY violation
156
+
157
+ IF file has > 15 imports
158
+ → Log as [LOW] — potential God File or tight coupling
159
+
160
+ IF token budget < 50%
161
+ → Skip P6+P7, go to Phase 3
162
+ ```
163
+
164
+ skill_version: 7.5.0
165
+ runtime_version: 1
166
+ schema_version: 2
167
+ ---
168
+
169
+ ### Phase 3 — Score & Report
170
+
171
+ **Steps:**
172
+ 1. Count violations by severity
173
+ 2. Calculate health score: start at 100, deduct per violation
174
+ 3. Generate report
175
+
176
+ **Deduction Scale:**
177
+ ```
178
+ CRITICAL: -25 pts each
179
+ HIGH: -10 pts each
180
+ MEDIUM: -5 pts each
181
+ LOW: -2 pts each
182
+ ```
183
+
184
+ **Decision:**
185
+ ```
186
+ IF score ≥ 80 AND no CRITICAL violations
187
+ → EXIT: SUCCESS
188
+
189
+ IF score 60–79 OR any HIGH violations
190
+ → EXIT: PARTIAL — list fixes needed
191
+
192
+ IF score < 60 OR any CRITICAL violations
193
+ → EXIT: FAILED — requires immediate action
194
+ ```
195
+
196
+ skill_version: 7.5.0
197
+ runtime_version: 1
198
+ schema_version: 2
199
+ ---
200
+
201
+ ## Confidence Model
202
+
203
+ | Level | Condition | Action |
204
+ |-------|-----------|--------|
205
+ | HIGH | Direct line count, exact pattern match | Report as violation |
206
+ | MEDIUM | Inferred cyclomatic complexity without tool | Note estimate |
207
+ | LOW | Architectural smell inferred from structure | Mark as "suspected — verify manually" |
208
+
209
+ skill_version: 7.5.0
210
+ runtime_version: 1
211
+ schema_version: 2
212
+ ---
213
+
214
+ ## Severity
215
+
216
+ | Level | Definition | Example |
217
+ |-------|-----------|---------|
218
+ | CRITICAL | Security risk or data integrity | Hardcoded secret, SQL injection via string concat |
219
+ | HIGH | Technical debt that blocks scaling | Function 80 lines, God Class 15+ methods |
220
+ | MEDIUM | DRY or SoC violation, fixable in < 1 hour | Same validation logic in 3 components |
221
+ | LOW | Style/naming issue, non-blocking | Single-letter variable `x` outside loop |
222
+
223
+ skill_version: 7.5.0
224
+ runtime_version: 1
225
+ schema_version: 2
226
+ ---
227
+
228
+ ## Evidence Format
229
+
230
+ ```
231
+ [SEVERITY] path/to/file.ts:LINE
232
+ Rule: [FUNCTION_LENGTH | COMPLEXITY | DRY | SOC | NAMING | GOD_CLASS | SECRET]
233
+ Reason: [specific measurement vs threshold]
234
+ Confidence: [HIGH|MEDIUM|LOW]
235
+ Fix: [one-line suggestion]
236
+ Deduction: -N pts
237
+ ```
238
+
239
+ **Example:**
240
+ ```
241
+ [HIGH] src/services/order.service.ts:45
242
+ Rule: FUNCTION_LENGTH
243
+ Reason: Function `processOrder` is 87 lines (threshold: 30)
244
+ Confidence: HIGH
245
+ Fix: Extract payment logic to `processPayment()`, shipping to `scheduleShipment()`
246
+ Deduction: -10 pts
247
+ ```
248
+
249
+ skill_version: 7.5.0
250
+ runtime_version: 1
251
+ schema_version: 2
252
+ ---
253
+
254
+ ## Retry Policy
255
+ ```
256
+ Audit is read-only — no retry needed.
257
+ If file is inaccessible → skip and note in report as PARTIAL.
258
+ ```
259
+
260
+ skill_version: 7.5.0
261
+ runtime_version: 1
262
+ schema_version: 2
263
+ ---
264
+
265
+ ## Escalation Rules
266
+
267
+ ```
268
+ BLOCKED: No target specified
269
+ Missing:
270
+ - File path or module name to audit
271
+ Questions:
272
+ 1. Bạn muốn kiểm tra file nào hoặc toàn bộ module nào?
273
+ 2. Có ngưỡng cụ thể nào bạn muốn thay đổi không? (mặc định: 30 lines/function)
274
+ ```
275
+
276
+ skill_version: 7.5.0
277
+ runtime_version: 1
278
+ schema_version: 2
279
+ ---
280
+
281
+ ## Handoff Contract
282
+
283
+ ### Consumes
284
+ ```json
285
+ {
286
+ "from": "user or qk-orchestrator",
287
+ "required_fields": ["target_files_or_module"],
288
+ "optional_fields": ["custom_thresholds"]
289
+ }
290
+ ```
291
+
292
+ ### Produces
293
+ ```json
294
+ {
295
+ "to": "user",
296
+ "output_fields": ["health_score", "violations_list", "severity_counts", "exit_code"]
297
+ }
298
+ ```
299
+
300
+ skill_version: 7.5.0
301
+ runtime_version: 1
302
+ schema_version: 2
303
+ ---
304
+
305
+ ## Output Format
306
+
307
+ ```
308
+ ⚙️ Engineering Standard Audit
309
+ ─────────────────────────────────────────────────
310
+ Target: [file or module]
311
+
312
+ Health Score: [X/100]
313
+ CRITICAL violations: [N] (-Npts)
314
+ HIGH violations: [N] (-Npts)
315
+ MEDIUM violations: [N] (-Npts)
316
+ LOW violations: [N] (-Npts)
317
+
318
+ Violations (priority order):
319
+ [SEVERITY] file:LINE — Rule — reason — Fix — (-Xpts)
320
+
321
+ Required Actions:
322
+ 1. [Most critical fix]
323
+ 2. [Second fix]
324
+
325
+ Exit Code: [SUCCESS | PARTIAL | FAILED]
326
+ ```
327
+
328
+ skill_version: 7.5.0
329
+ runtime_version: 1
330
+ schema_version: 2
331
+ ---
332
+
333
+ ## Exit Codes
334
+
335
+ | Code | Meaning | When |
336
+ |------|---------|------|
337
+ | SUCCESS | Score ≥ 80, no CRITICAL | Code meets V7.5 standards |
338
+ | PARTIAL | Score 60–79 or incomplete scan | Some categories skipped |
339
+ | BLOCKED | No target specified | Cannot audit without scope |
340
+ | FAILED | Score < 60 or CRITICAL found | Immediate action required |
341
+
342
+ skill_version: 7.5.0
343
+ runtime_version: 1
344
+ schema_version: 2
345
+ ---
346
+
347
+ ## References
348
+ - Detailed thresholds with rationale: `references/thresholds.md`
349
+
350
+ ---
351
+
@@ -0,0 +1,326 @@
1
+ ---
2
+ name: qk-fe-api-integration
3
+ category: frontend
4
+ version: 7.5.0
5
+ description: "Consume API Backend, quản lý State, bind vào UI — tuân thủ kiến trúc Base dự án"
6
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
+ execution_mode: deterministic
8
+
9
+ cost: medium
10
+ latency: medium
11
+ risk: low
12
+ side_effects: edit_files
13
+ produces: [code]
14
+ consumes: [json-payload, context-graph]
15
+
16
+ token_budget:
17
+ max_files_read: 3
18
+ max_lines_per_read: 100
19
+ max_shell_commands: 1
20
+ stop_early: true
21
+
22
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
23
+ skill_version: 7.5.0
24
+ runtime_version: 1
25
+ schema_version: 2
26
+ ---
27
+
28
+ # qk-fe-api-integration — Frontend API Consumer
29
+
30
+ > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
31
+
32
+ ---
33
+
34
+ ## Preconditions
35
+ - [ ] Backend JSON payload hoặc API endpoint schema được cung cấp
36
+ - [ ] Project's API client pattern được xác định (Axios wrapper, RTK Query, React Query, etc.)
37
+
38
+ ```
39
+ On missing precondition:
40
+ EXIT: BLOCKED
41
+ 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."
42
+ ```
43
+
44
+ ---
45
+
46
+ ## Scope
47
+ - ✅ Identify existing API client pattern (NEVER default to raw fetch if wrapper exists)
48
+ - ✅ Generate strict TypeScript interfaces from JSON payload
49
+ - ✅ Implement service layer (API calls separated from UI)
50
+ - ✅ Handle all 3 UI states: Loading, Success, Error
51
+ - ✅ Map backend payload → DTO before injecting into UI components
52
+
53
+ ## Non-Goals
54
+ - ❌ Hardcode API Base URLs in UI components — use env vars or centralized config
55
+ - ❌ Inject API logic inside presentational (dumb) components
56
+ - ❌ Introduce new state management libraries without explicit user approval
57
+ - ❌ Hallucinate data fields not in provided JSON payload
58
+ - ❌ Create Node.js/Python scripts to patch — edit files directly
59
+ - ❌ Read entire files > 100 lines — use targeted reads
60
+ - ❌ Default to raw fetch if wrapper exists — ALWAYS reuse existing client
61
+
62
+ ---
63
+
64
+ ## Priority Order
65
+
66
+ | Priority | Task | Skip Threshold |
67
+ |----------|------|----------------|
68
+ | P1 | Identify existing API client (grep package.json, src/api/) | Never |
69
+ | P2 | Generate TypeScript interfaces from JSON payload | Never |
70
+ | P3 | Implement service layer (API calls) | Never |
71
+ | P4 | Bind to UI with Loading + Success + Error states | Budget < 30% |
72
+ | P5 | Cache invalidation after mutations (POST/PUT/DELETE) | Budget < 60% |
73
+ | P6 | DTO mapping (backend payload → clean UI data) | Budget < 70% |
74
+
75
+ ---
76
+
77
+ ## Workflow
78
+
79
+ ### Phase 1 — Identify Base Architecture
80
+
81
+ **Steps:**
82
+ 1. `grep_search` in `package.json` → identify: axios, react-query, rtk-query, swr, or custom
83
+ 2. `view_file[src/api/]` (first 30 lines) → confirm wrapper pattern
84
+ 3. Identify: base URL config, auth header injection, error interceptor location
85
+
86
+ **Decision:**
87
+ ```
88
+ IF wrapper/client found (e.g., apiClient.ts, axiosInstance.ts)
89
+ → Use it. NEVER bypass with raw fetch/axios.
90
+ → Confidence: HIGH → go to Phase 2
91
+
92
+ ELSE IF no wrapper found
93
+ → Confirm with user: "Dùng raw fetch hay tạo wrapper mới?"
94
+ → Confidence: MEDIUM → go to Phase 2
95
+
96
+ ELSE IF conflicting patterns found (mix of fetch + axios + rtk)
97
+ → EXIT: BLOCKED — ask which pattern to follow
98
+ ```
99
+
100
+ **Exit When:**
101
+ - API client pattern identified → go to Phase 2
102
+ - `max_files_read` reached → go to Phase 2 with MEDIUM confidence
103
+
104
+ ---
105
+
106
+ ### Phase 2 — Generate Types
107
+
108
+ **Steps:**
109
+ 1. Parse provided JSON payload → extract all fields with types
110
+ 2. Generate TypeScript interface (Request + Response)
111
+ 3. Flag any field that could be `null` or optional
112
+
113
+ **Decision:**
114
+ ```
115
+ IF all fields clearly typed from JSON
116
+ → Confidence: HIGH → go to Phase 3
117
+
118
+ ELSE IF some fields ambiguous (null | undefined)
119
+ → Mark as optional (?:) + add comment "// verify with backend"
120
+ → Confidence: MEDIUM → go to Phase 3
121
+
122
+ ELSE IF nested objects contain mixed null/non-null patterns
123
+ → EXIT: BLOCKED — cannot safely generate types without backend clarification
124
+ ```
125
+
126
+ ---
127
+
128
+ ### Phase 3 — Implement Service + UI Binding
129
+
130
+ **Steps:**
131
+ 1. Create/update service file (API calls only — no UI logic)
132
+ 2. Bind to component: implement Loading state (skeleton/spinner)
133
+ 3. Bind Success state: render data using generated types
134
+ 4. Bind Error state: handle HTTP errors per table below
135
+
136
+ **HTTP Error Handling (mandatory for ALL integrations):**
137
+ ```
138
+ 401 Unauthorized → redirect to login or show auth error toast
139
+ 403 Forbidden → show permission error toast
140
+ 404 Not Found → show empty state component (not a crash)
141
+ 422 Validation → map field errors to form fields
142
+ 500 Server Error → show generic error toast + retry button
143
+ Network Error → show offline banner or retry prompt
144
+ ```
145
+
146
+ **Decision:**
147
+ ```
148
+ IF all 3 states (Loading, Success, Error) implemented + service created → go to Phase 4
149
+ ELSE IF error state incomplete → EXIT: PARTIAL — missing HTTP error handling
150
+ ELSE → EXIT: BLOCKED — cannot complete binding
151
+ ```
152
+
153
+ **Exit When:**
154
+ - All 3 states implemented + service created → go to Phase 4
155
+
156
+ ---
157
+
158
+ ### Phase 4 — Self-Audit
159
+
160
+ **Steps:**
161
+ 1. Re-read service file: confirm no hardcoded URLs, no UI logic
162
+ 2. Re-read component: confirm no API calls inside JSX
163
+ 3. Verify cache invalidation if mutation (POST/PUT/DELETE)
164
+
165
+ **Decision:**
166
+ ```
167
+ IF all audit points pass → EXIT: SUCCESS
168
+ ELSE IF 1–2 minor issues → fix inline → EXIT: SUCCESS
169
+ ELSE IF architectural violation found → fix → EXIT: PARTIAL
170
+ ELSE IF hardcoded URL (http://localhost, 127.0.0.1) found → EXIT: FAILED — do not ship
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Confidence Model
176
+
177
+ | Level | Condition | Action |
178
+ |-------|-----------|--------|
179
+ | HIGH | API client found, JSON payload complete, all types inferred | Implement directly |
180
+ | MEDIUM | Some fields ambiguous, wrapper partially identified | Note assumptions, proceed |
181
+ | LOW | No JSON payload provided OR conflicting API patterns OR nested nulls unresolved | EXIT: BLOCKED |
182
+
183
+ ---
184
+
185
+ ## Severity
186
+
187
+ | Level | Definition | Example |
188
+ |-------|-----------|---------|
189
+ | CRITICAL | Security data leakage from improper DTO mapping | Auth token in dumb component |
190
+ | HIGH | Missing error state causes white screen of death | No 500 handler |
191
+ | MEDIUM | Hardcoded URL breaks in production | `axios.get("http://localhost:3000/api")` |
192
+ | LOW | Missing cache invalidation after mutation | Stale data after POST |
193
+
194
+ ---
195
+
196
+ ## Evidence Format
197
+
198
+ ```
199
+ [SEVERITY] path/to/component.tsx:LINE
200
+ Issue: [specific violation]
201
+ Confidence: [HIGH|MEDIUM|LOW]
202
+ Fix: [one-line suggestion]
203
+ ```
204
+
205
+ **Example:**
206
+ ```
207
+ [HIGH] src/pages/Dashboard.tsx:45
208
+ Issue: API call `axios.get('/api/data')` inside JSX render — violates smart/dumb separation
209
+ Confidence: HIGH
210
+ Fix: Move to `src/services/dashboard.service.ts`, inject via hook
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Retry Policy
216
+
217
+ ```
218
+ API call fails (runtime verification)
219
+ └─ Check error type
220
+ ├─ Network error → show retry button (user-triggered retry, not auto)
221
+ ├─ 401/403 → do NOT retry — redirect or show permission error
222
+ ├─ 500 → auto-retry once after 1s delay
223
+ │ └─ Still fails → show error toast with "Try again" button
224
+ └─ Never auto-retry more than 1 time (avoid hammering server)
225
+
226
+ Skill execution fails
227
+ └─ Check failure type
228
+ ├─ Syntax error in generated code → fix and retry once
229
+ └─ Architectural mismatch → EXIT: FAILED, do NOT retry
230
+ ```
231
+
232
+ ---
233
+
234
+ ## Escalation Rules
235
+
236
+ ```
237
+ BLOCKED: Cannot determine API client pattern
238
+ Missing:
239
+ - package.json contents OR
240
+ - Location of existing API client file (e.g., src/lib/api.ts)
241
+ Questions:
242
+ 1. Dự án dùng thư viện nào để gọi API? (axios / fetch / react-query / rtk-query)
243
+ 2. Có file API wrapper/client nào sẵn không? (ví dụ: src/api/client.ts)
244
+ Recommended Assumptions (if proceeding):
245
+ - Create new Axios instance with interceptors for auth + error handling
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Handoff Contract
251
+
252
+ ### Consumes
253
+ ```json
254
+ {
255
+ "from": "user or qk-context-loader",
256
+ "required_fields": ["json_payload_sample", "api_endpoint"],
257
+ "optional_fields": ["existing_api_client_path", "component_to_bind"]
258
+ }
259
+ ```
260
+
261
+ ### Produces
262
+ ```json
263
+ {
264
+ "to": "user",
265
+ "output_fields": ["types_file", "service_file", "component_file", "states_implemented", "exit_code"]
266
+ }
267
+ ```
268
+
269
+ ---
270
+
271
+ ## Output Format
272
+
273
+ ```
274
+ 🔌 FE API Integration
275
+ ─────────────────────────────────────────────────
276
+ API Client: [identified — axiosInstance.ts | created new]
277
+ Types: [src/types/[resource].types.ts]
278
+ Service: [src/services/[resource].service.ts]
279
+
280
+ States implemented:
281
+ ✅ Loading (skeleton/spinner)
282
+ ✅ Success (data rendered)
283
+ ✅ Error (toast/empty state per HTTP code)
284
+ ⚠️ [any state skipped — reason]
285
+
286
+ Assumptions:
287
+ - [any assumption made]
288
+
289
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Exit Codes
295
+
296
+ | Code | Meaning | When |
297
+ |------|---------|------|
298
+ | SUCCESS | Types + service + UI binding complete with all 3 states | Full integration |
299
+ | PARTIAL | Integration done, missing error/loading state or cache invalidation | Follow-up needed |
300
+ | BLOCKED | No JSON payload or conflicting API patterns | Ask user |
301
+ | FAILED | Cannot integrate without breaking existing architecture | Escalate |
302
+
303
+ ---
304
+
305
+ Consume backend API safely in frontend: identify existing client, generate types, implement service layer, and bind to UI with proper states.
306
+ Triggered when user needs to integrate a backend API endpoint into a frontend application. Requires JSON payload sample and knowledge of existing API client patterns.
307
+ - JSON payload sample (request/response)
308
+ - API endpoint specification
309
+ - Existing API client path (if any)
310
+ - Component to bind (if specified)
311
+ - Context graph (for existing patterns)
312
+ 1. **Identify:** Find existing API client or confirm need for new one
313
+ 2. **Generate:** Create TypeScript interfaces from JSON payload
314
+ 3. **Implement:** Build service layer with proper HTTP methods
315
+ 4. **Bind:** Connect to UI with Loading/Success/Error states
316
+ 5. **Audit:** Verify no hardcoded URLs, no API in JSX, proper error handling
317
+ - NEVER bypass existing wrapper with raw fetch/axios
318
+ - MUST generate strict TypeScript interfaces (no `any`)
319
+ - MUST handle all 3 UI states: Loading, Success, Error
320
+ - MUST NOT exceed token_budget (max 3 files, 100 lines each, 1 shell command)
321
+ - MUST stop early if confidence threshold reached
322
+ - Zero-Trust: Use existing client pattern, never invent new one without approval
323
+ - Type Safety: All API responses must have explicit TypeScript types
324
+ - Error Handling: All HTTP errors must be handled per mandatory table
325
+ - Separation: Service layer only — no API calls in presentational components
326
+ ---