ai-developer-skill-os 9.3.1 → 10.2.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 (258) hide show
  1. package/.agents/AGENTS.md +73 -40
  2. package/.agents/DEV_PROFILE.md +36 -2
  3. package/.agents/LICENSE +21 -21
  4. package/.agents/docs/ARCHITECTURE.md +56 -120
  5. package/.agents/docs/GOVERNANCE.md +3 -3
  6. package/.agents/docs/SPEC.md +137 -60
  7. package/.agents/docs/VERSIONING.md +25 -57
  8. package/.agents/docs/adr/0005-v10-platform-consolidation.md +50 -0
  9. package/.agents/docs/schemas/learning.schema.yml +22 -57
  10. package/.agents/docs/schemas/skill.schema.yml +116 -161
  11. package/.agents/docs/schemas/workflow.schema.yml +51 -26
  12. package/.agents/docs/skill-classification.md +1 -1
  13. package/.agents/registry/graph.json +193 -346
  14. package/.agents/registry/index.yaml +90 -233
  15. package/.agents/rules/coding.md +30 -12
  16. package/.agents/rules/command-safety.md +20 -9
  17. package/.agents/rules/global.md +234 -28
  18. package/.agents/rules/prompt-compiler.md +170 -0
  19. package/.agents/rules/safety.md +1 -1
  20. package/.agents/rules/security.md +1 -1
  21. package/.agents/rules/skill-quality.md +18 -3
  22. package/.agents/skills/_template/SKILL.md +238 -88
  23. package/.agents/skills/qk-api-data-discovery/SKILL.md +456 -0
  24. package/.agents/skills/qk-api-data-discovery/references/bronze-record-format.md +47 -0
  25. package/.agents/skills/qk-api-data-discovery/references/data-contract-yaml.md +72 -0
  26. package/.agents/skills/qk-api-data-discovery/references/discovery-report-template.md +110 -0
  27. package/.agents/skills/qk-backend-data/SKILL.md +339 -0
  28. package/.agents/skills/qk-bug-resolution/SKILL.md +328 -248
  29. package/.agents/skills/qk-bug-resolution/evals/scorecard.yaml +1 -1
  30. package/.agents/skills/qk-code-cleaner/SKILL.md +399 -0
  31. package/.agents/skills/qk-code-review/SKILL.md +320 -247
  32. package/.agents/skills/qk-code-review/evals/scorecard.yaml +1 -1
  33. package/.agents/skills/qk-code-review/references/ai/{v8-schema-validation.md → schema-validation.md} +2 -2
  34. package/.agents/skills/qk-code-review/references/cross-cutting/async-concurrency-patterns.md +515 -515
  35. package/.agents/skills/qk-code-review/references/cross-cutting/error-handling-principles.md +492 -492
  36. package/.agents/skills/qk-code-review/references/cross-cutting/n-plus-one-queries.md +309 -309
  37. package/.agents/skills/qk-code-review/references/cross-cutting/sql-injection-prevention.md +307 -307
  38. package/.agents/skills/qk-code-review/references/cross-cutting/xss-prevention.md +263 -263
  39. package/.agents/skills/qk-code-review/references/languages/angular.md +768 -768
  40. package/.agents/skills/qk-code-review/references/languages/c.md +890 -890
  41. package/.agents/skills/qk-code-review/references/languages/cpp.md +893 -893
  42. package/.agents/skills/qk-code-review/references/languages/css-less-sass.md +661 -661
  43. package/.agents/skills/qk-code-review/references/languages/django.md +985 -985
  44. package/.agents/skills/qk-code-review/references/languages/fastapi.md +580 -580
  45. package/.agents/skills/qk-code-review/references/languages/go.md +993 -993
  46. package/.agents/skills/qk-code-review/references/languages/java.md +409 -409
  47. package/.agents/skills/qk-code-review/references/languages/java8.md +586 -586
  48. package/.agents/skills/qk-code-review/references/languages/kotlin.md +1018 -1018
  49. package/.agents/skills/qk-code-review/references/languages/nestjs.md +593 -593
  50. package/.agents/skills/qk-code-review/references/languages/php.md +684 -684
  51. package/.agents/skills/qk-code-review/references/languages/python.md +1073 -1073
  52. package/.agents/skills/qk-code-review/references/languages/qt.md +757 -757
  53. package/.agents/skills/qk-code-review/references/languages/react.md +871 -871
  54. package/.agents/skills/qk-code-review/references/languages/ruby.md +964 -964
  55. package/.agents/skills/qk-code-review/references/languages/rust.md +846 -846
  56. package/.agents/skills/qk-code-review/references/languages/svelte.md +1064 -1064
  57. package/.agents/skills/qk-code-review/references/languages/swift.md +936 -936
  58. package/.agents/skills/qk-code-review/references/languages/typescript.md +1016 -1016
  59. package/.agents/skills/qk-code-review/references/languages/vue.md +924 -924
  60. package/.agents/skills/qk-code-review/references/languages/zig.md +440 -440
  61. package/.agents/skills/qk-devops-release/SKILL.md +294 -0
  62. package/.agents/skills/qk-feature-delivery/SKILL.md +331 -247
  63. package/.agents/skills/qk-feature-delivery/evals/scorecard.yaml +1 -1
  64. package/.agents/skills/qk-orchestrator/SKILL.md +286 -152
  65. package/.agents/skills/qk-orchestrator/evals/scorecard.yaml +1 -1
  66. package/.agents/skills/qk-orchestrator/references/routing-table.md +1 -1
  67. package/.agents/skills/qk-product-spec/SKILL.md +262 -0
  68. package/.agents/skills/qk-prompt-compiler/SKILL.md +444 -0
  69. package/.agents/skills/qk-ui-engineer/SKILL.md +286 -0
  70. package/.agents/workflows/_schema.yml +146 -146
  71. package/.agents/workflows/bug-resolution.yml +155 -121
  72. package/.agents/workflows/code-review.yml +127 -93
  73. package/.agents/workflows/context-discovery.yml +128 -94
  74. package/.agents/workflows/documentation.yml +124 -90
  75. package/.agents/workflows/feature-delivery.yml +158 -124
  76. package/.agents/workflows/production-release.yml +207 -173
  77. package/.agents/workflows/prompt-compilation.yml +126 -0
  78. package/.agents/workflows/refactor.yml +136 -102
  79. package/.agents/workflows/security-audit.yml +149 -115
  80. package/.agents/workflows/shared/quality-gate.yml +3 -1
  81. package/.agents/workflows/skin-governance.yml +149 -115
  82. package/.agents/workflows/spec-driven-development.yml +116 -87
  83. package/CHANGELOG.md +77 -0
  84. package/README.md +125 -205
  85. package/bin/install.js +324 -329
  86. package/package.json +68 -74
  87. package/tooling/build-registry.js +226 -208
  88. package/tooling/run-aar.js +55 -126
  89. package/tooling/sync-versions.js +2 -2
  90. package/tooling/validate-graph.js +100 -87
  91. package/tooling/validate-skills.js +32 -14
  92. package/.agents/README.md +0 -90
  93. package/.agents/docs/CHI_TIET_SKILLS.md +0 -126
  94. package/.agents/docs/HUONG_DAN_SU_DUNG.md +0 -120
  95. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +0 -36
  96. package/.agents/docs/MIGRATION-STATUS.md +0 -35
  97. package/.agents/docs/MIGRATION-V8.md +0 -10
  98. package/.agents/docs/ROADMAP-V8.2.md +0 -78
  99. package/.agents/docs/V8-CERTIFICATION.md +0 -27
  100. package/.agents/docs/decisions/ADR-001-v8-migration.md +0 -58
  101. package/.agents/docs/decisions/ADR-002-workflow-separation.md +0 -50
  102. package/.agents/docs/decisions/ADR-003-registry-generated.md +0 -54
  103. package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +0 -27
  104. package/.agents/registry/capability-graph.yml +0 -390
  105. package/.agents/registry/skills-index.yml +0 -305
  106. package/.agents/skills/_template/capability.yaml +0 -34
  107. package/.agents/skills/_template/evals/scorecard.yaml +0 -19
  108. package/.agents/skills/qk-access-policy/SKILL.md +0 -206
  109. package/.agents/skills/qk-access-policy/capability.yaml +0 -23
  110. package/.agents/skills/qk-access-policy/evals/scorecard.yaml +0 -36
  111. package/.agents/skills/qk-agent-observability/SKILL.md +0 -108
  112. package/.agents/skills/qk-agent-observability/capability.yaml +0 -29
  113. package/.agents/skills/qk-agent-observability/evals/scorecard.yaml +0 -29
  114. package/.agents/skills/qk-agent-observability/references/scorecard.yaml +0 -80
  115. package/.agents/skills/qk-ai-builder/SKILL.md +0 -254
  116. package/.agents/skills/qk-ai-builder/capability.yaml +0 -23
  117. package/.agents/skills/qk-ai-builder/evals/scorecard.yaml +0 -30
  118. package/.agents/skills/qk-api-consumer/SKILL.md +0 -256
  119. package/.agents/skills/qk-api-consumer/capability.yaml +0 -21
  120. package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +0 -29
  121. package/.agents/skills/qk-api-lifecycle/SKILL.md +0 -251
  122. package/.agents/skills/qk-api-lifecycle/capability.yaml +0 -23
  123. package/.agents/skills/qk-api-lifecycle/evals/scorecard.yaml +0 -29
  124. package/.agents/skills/qk-bug-resolution/capability.yaml +0 -25
  125. package/.agents/skills/qk-code-review/capability.yaml +0 -23
  126. package/.agents/skills/qk-context-loader/SKILL.md +0 -198
  127. package/.agents/skills/qk-context-loader/capability.yaml +0 -23
  128. package/.agents/skills/qk-context-loader/evals/scorecard.yaml +0 -28
  129. package/.agents/skills/qk-data-engineer/SKILL.md +0 -253
  130. package/.agents/skills/qk-data-lifecycle/SKILL.md +0 -197
  131. package/.agents/skills/qk-data-lifecycle/capability.yaml +0 -23
  132. package/.agents/skills/qk-data-lifecycle/evals/scorecard.yaml +0 -29
  133. package/.agents/skills/qk-db-optimizer/SKILL.md +0 -210
  134. package/.agents/skills/qk-db-optimizer/capability.yaml +0 -22
  135. package/.agents/skills/qk-db-optimizer/evals/scorecard.yaml +0 -28
  136. package/.agents/skills/qk-design-system-engineering/SKILL.md +0 -193
  137. package/.agents/skills/qk-design-system-engineering/capability.yaml +0 -25
  138. package/.agents/skills/qk-design-system-engineering/evals/scorecard.yaml +0 -27
  139. package/.agents/skills/qk-devops-platform/SKILL.md +0 -198
  140. package/.agents/skills/qk-devops-platform/capability.yaml +0 -29
  141. package/.agents/skills/qk-devops-platform/evals/scorecard.yaml +0 -28
  142. package/.agents/skills/qk-docs/SKILL.md +0 -193
  143. package/.agents/skills/qk-docs/capability.yaml +0 -23
  144. package/.agents/skills/qk-docs/evals/scorecard.yaml +0 -27
  145. package/.agents/skills/qk-engineering-standard/SKILL.md +0 -89
  146. package/.agents/skills/qk-engineering-standard/capability.yaml +0 -23
  147. package/.agents/skills/qk-engineering-standard/evals/scorecard.yaml +0 -28
  148. package/.agents/skills/qk-engineering-standard/references/anti-patterns.md +0 -121
  149. package/.agents/skills/qk-engineering-standard/rules/backend.md +0 -122
  150. package/.agents/skills/qk-engineering-standard/rules/database.md +0 -3
  151. package/.agents/skills/qk-engineering-standard/rules/frontend.md +0 -152
  152. package/.agents/skills/qk-engineering-standard/rules/security.md +0 -3
  153. package/.agents/skills/qk-engineering-standard/rules/testing.md +0 -3
  154. package/.agents/skills/qk-fe-api-integration/SKILL.md +0 -704
  155. package/.agents/skills/qk-fe-api-integration/capability.yaml +0 -21
  156. package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +0 -29
  157. package/.agents/skills/qk-feature-delivery/capability.yaml +0 -24
  158. package/.agents/skills/qk-frontend-architecture/SKILL.md +0 -127
  159. package/.agents/skills/qk-frontend-architecture/capability.yaml +0 -28
  160. package/.agents/skills/qk-frontend-architecture/evals/scorecard.yaml +0 -28
  161. package/.agents/skills/qk-help/SKILL.md +0 -107
  162. package/.agents/skills/qk-help/capability.yaml +0 -20
  163. package/.agents/skills/qk-help/evals/scorecard.yaml +0 -13
  164. package/.agents/skills/qk-orchestrator/capability.yaml +0 -22
  165. package/.agents/skills/qk-product-specification/SKILL.md +0 -187
  166. package/.agents/skills/qk-product-specification/capability.yaml +0 -27
  167. package/.agents/skills/qk-product-specification/evals/scorecard.yaml +0 -27
  168. package/.agents/skills/qk-production-release/SKILL.md +0 -188
  169. package/.agents/skills/qk-production-release/capability.yaml +0 -27
  170. package/.agents/skills/qk-production-release/evals/scorecard.yaml +0 -28
  171. package/.agents/skills/qk-project-audit/SKILL.md +0 -174
  172. package/.agents/skills/qk-project-bootstrap/SKILL.md +0 -372
  173. package/.agents/skills/qk-project-bootstrap/capability.yaml +0 -23
  174. package/.agents/skills/qk-project-bootstrap/evals/scorecard.yaml +0 -28
  175. package/.agents/skills/qk-project-health/SKILL.md +0 -202
  176. package/.agents/skills/qk-project-health/capability.yaml +0 -23
  177. package/.agents/skills/qk-project-health/evals/scorecard.yaml +0 -27
  178. package/.agents/skills/qk-project-memory/SKILL.md +0 -303
  179. package/.agents/skills/qk-project-memory/capability.yaml +0 -23
  180. package/.agents/skills/qk-project-memory/evals/scorecard.yaml +0 -27
  181. package/.agents/skills/qk-refactor/SKILL.md +0 -243
  182. package/.agents/skills/qk-refactor/capability.yaml +0 -26
  183. package/.agents/skills/qk-refactor/evals/scorecard.yaml +0 -27
  184. package/.agents/skills/qk-security-audit/SKILL.md +0 -280
  185. package/.agents/skills/qk-security-audit/capability.yaml +0 -29
  186. package/.agents/skills/qk-security-audit/evals/scorecard.yaml +0 -27
  187. package/.agents/skills/qk-system-evolution/SKILL.md +0 -625
  188. package/.agents/skills/qk-system-evolution/capability.yaml +0 -24
  189. package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +0 -26
  190. package/.agents/skills/qk-test-engineering/SKILL.md +0 -215
  191. package/.agents/skills/qk-test-engineering/capability.yaml +0 -28
  192. package/.agents/skills/qk-test-engineering/evals/scorecard.yaml +0 -26
  193. package/.agents/skills/qk-ui-audit/SKILL.md +0 -175
  194. package/.agents/skills/qk-ui-audit/capability.yaml +0 -23
  195. package/.agents/skills/qk-ui-audit/evals/scorecard.yaml +0 -26
  196. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  197. package/.agents/skills/qk-ui-builder/SKILL.md +0 -521
  198. package/.agents/skills/qk-ui-builder/capability.yaml +0 -29
  199. package/.agents/skills/qk-ui-builder/evals/scorecard.yaml +0 -26
  200. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +0 -295
  201. package/.agents/skills/qk-ui-builder/references/color.md +0 -115
  202. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +0 -458
  203. package/.agents/skills/qk-ui-builder/references/copy.md +0 -250
  204. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
  205. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +0 -111
  206. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
  207. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
  208. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
  209. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
  210. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
  211. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
  212. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
  213. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
  214. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
  215. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
  216. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
  217. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
  218. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
  219. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
  220. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
  221. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
  222. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
  223. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
  224. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
  225. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
  226. package/.agents/skills/qk-ui-builder/references/macrostructures.md +0 -38
  227. package/.agents/skills/qk-ui-builder/references/motion.md +0 -95
  228. package/.agents/skills/qk-ui-builder/references/responsive.md +0 -115
  229. package/.agents/skills/qk-ui-builder/references/slop-test.md +0 -135
  230. package/.agents/skills/qk-ui-builder/references/structure.md +0 -280
  231. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
  232. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +0 -52
  233. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
  234. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +0 -52
  235. package/.agents/skills/qk-ui-builder/references/themes/garden.md +0 -52
  236. package/.agents/skills/qk-ui-builder/references/themes/hum.md +0 -52
  237. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +0 -52
  238. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +0 -52
  239. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
  240. package/.agents/skills/qk-ui-builder/references/themes/playful.md +0 -52
  241. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +0 -52
  242. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +0 -52
  243. package/.agents/skills/qk-ui-builder/references/typography.md +0 -129
  244. package/.agents/skills/qk-ui-system-builder/SKILL.md +0 -183
  245. package/.agents/skills/qk-ui-system-builder/capability.yaml +0 -25
  246. package/.agents/skills/qk-ui-system-builder/evals/scorecard.yaml +0 -26
  247. package/.agents/skills/qk-upgrade/SKILL.md +0 -301
  248. package/.agents/skills/qk-upgrade/capability.yaml +0 -24
  249. package/.agents/skills/qk-upgrade/evals/scorecard.yaml +0 -26
  250. package/.agents/skills/qk-validation-gate/SKILL.md +0 -88
  251. package/.agents/skills/qk-validation-gate/capability.yaml +0 -23
  252. package/.agents/skills/qk-validation-gate/evals/scorecard.yaml +0 -26
  253. package/.agents/skills/qk-web-quality-gate/SKILL.md +0 -197
  254. package/.agents/skills/qk-web-quality-gate/capability.yaml +0 -24
  255. package/.agents/skills/qk-web-quality-gate/evals/scorecard.yaml +0 -26
  256. package/.agents/workflows/research.yml +0 -75
  257. package/.agents/workflows/skill-evolution.yml +0 -97
  258. package/tooling/fix-refactor.js +0 -8
@@ -1,215 +0,0 @@
1
- ---
2
- # ── Identity ───────────────────────────────────────────────
3
- name: qk-test-engineering
4
- version: 9.2.0
5
- status: stable
6
- description: "Thiết kế chiến lược kiểm thử toàn diện và viết bộ test tự động: Test Pyramid (Unit, Integration, E2E), Mocking strategy, Edge-case coverage, Regression testing. Dùng skill này khi user nhắc đến: viết test, test strategy, unit test, coverage, e2e, integration test, mock data, pytest, vitest, playwright — kể cả khi chỉ nói 'viết test cho module này'."
7
- platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
-
9
- # ── V9: Classification ─────────────────────────────────────
10
- type: capability
11
-
12
- intent:
13
- - testing-strategy
14
- - unit-testing
15
- - integration-testing
16
- - e2e-testing
17
- - test-automation
18
-
19
- complexity:
20
- level: high
21
- criteria:
22
- files_affected: "1-5"
23
- has_behavior_change: true
24
- has_external_dependency: true
25
- has_breaking_change: false
26
-
27
- triggers:
28
- - "viết test"
29
- - "test strategy"
30
- - "unit test"
31
- - "coverage"
32
- - "e2e"
33
- - "integration test"
34
- - "mock data"
35
- - "pytest"
36
- - "vitest"
37
- - "playwright"
38
-
39
-
40
- # ── V8: References ─────────────────────────────────────────
41
- workflow: feature-delivery
42
-
43
- rules:
44
- - global
45
- - coding
46
-
47
- tools:
48
- - filesystem
49
- - terminal
50
-
51
- related_skills:
52
- - qk-code-review
53
- - qk-bug-resolution
54
-
55
- knowledge_scope:
56
- domain:
57
- - testing-strategy
58
- - quality-assurance
59
- - unit-testing
60
- - integration-testing
61
- - e2e-testing
62
- concepts:
63
- - test-pyramid
64
- - mock-strategy
65
- - arrange-act-assert
66
- references:
67
- - architecture
68
- - vitest
69
- - pytest
70
- - playwright
71
-
72
- # ── V8: Verification ───────────────────────────────────────
73
- verification:
74
- required: true
75
- strategy: feature
76
-
77
- selection:
78
- priority: high
79
- confidence_threshold: 0.85
80
-
81
- examples: []
82
- learnings: []
83
-
84
- # ── V7 Runtime ─────────────────────────────────────────────
85
- execution_mode: deterministic
86
- cost: medium
87
- latency: medium
88
- risk: low
89
- side_effects: edit_files
90
- produces: [code, test_plan]
91
- consumes: [source-code, user-description]
92
-
93
- token_budget:
94
- max_files_read: 6
95
- max_lines_per_read: 150
96
- max_shell_commands: 3
97
- stop_early: true
98
-
99
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
100
- ---
101
-
102
- # qk-test-engineering — Automated Testing & Quality Architect
103
-
104
- > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
105
-
106
- Chịu trách nhiệm thiết kế chiến lược kiểm thử cân bằng (Test Pyramid) và trực tiếp cài đặt các bộ test tự động đáng tin cậy: **Unit Tests nhanh & cô lập, Integration Tests kiểm chứng hợp đồng kết nối, và E2E Tests bảo vệ luồng nghiệp vụ sống còn.**
107
-
108
- ---
109
-
110
- ## Preconditions
111
-
112
- Trước khi viết test, AI BẮT BUỘC xác nhận:
113
-
114
- - [ ] Xác định Test Framework từ `DEV_PROFILE.md` hoặc manifest (Vitest, Jest, Pytest, Go `testing`, Playwright).
115
- - [ ] Xác định code mục tiêu cần test (function, class, API endpoint, hoặc user journey).
116
- - [ ] Xác định phụ thuộc ngoại vi (Database, External API, File system, Third-party service) để chọn phương án Mock phù hợp.
117
-
118
- *Nếu chưa có code mục tiêu và user không yêu cầu TDD (Test-Driven Development):*
119
- → **EXIT: BLOCKED**
120
- → Yêu cầu: "Vui lòng chỉ định hàm, module hoặc file cần viết test."
121
-
122
- ---
123
-
124
- ## Scope
125
-
126
- ✅ Skill này làm:
127
- - Thiết lập **Test Cases Matrix** bao phủ:
128
- - **Happy path:** Dữ liệu hợp lệ, kết quả mong đợi.
129
- - **Edge cases:** Giới hạn biên (0, -1, max int, chuỗi rỗng, mảng rỗng, ký tự đặc biệt UTF-8).
130
- - **Error boundaries:** Ném lỗi đúng loại (Custom Error / HTTP Status) khi đầu vào sai.
131
- - **Async / Timeout:** Xử lý promise reject, network delay.
132
- - Viết Unit Tests theo cấu trúc kinh điển **AAA (Arrange - Act - Assert)** hoặc **Given - When - Then**.
133
- - Viết Integration Tests kiểm chứng sự phối hợp giữa Service và Database (dùng in-memory DB hoặc Testcontainers).
134
- - Viết E2E Tests (Playwright) cho các User Flows quan trọng nhất (Sign up → Checkout → Payment).
135
- - Xây dựng Mocking Strategy đúng mực: Mock ở ranh giới hệ thống (HTTP client, Message queue), **không bao giờ mock implementation details nội bộ**.
136
-
137
- ❌ Skill này KHÔNG làm:
138
- - Viết tests rỗng không có `expect` / `assert` chỉ để farm chỉ số coverage.
139
- - Mock quá mức khiến test luôn pass dù code thật bị hỏng (Tautological tests).
140
- - Viết E2E test cho mọi biến thể nhỏ (vi phạm kim tự tháp kiểm thử, gây chậm CI và flaky test).
141
-
142
- ---
143
-
144
- ## Execution Steps
145
-
146
- ### Step 1 — Phân tầng Kiểm thử (Pyramid Placement)
147
- ```
148
- Quyết định tầng test phù hợp:
149
- - Pure function, domain logic, utils → 70% Unit Tests (Chạy < 10ms/test).
150
- - Database queries, API routes, middleware → 20% Integration Tests (Mock external API).
151
- - Critical checkout / login flow → 10% E2E Tests (Playwright / Cypress).
152
- ```
153
-
154
- ### Step 2 — Lập Ma trận Kịch bản (Test Scenario Matrix)
155
- ```
156
- Ví dụ với hàm transferMoney(fromId, toId, amount):
157
- 1. TC-01 (Happy): Chuyển tiền thành công khi số dư đủ, trừ tài khoản A, cộng tài khoản B.
158
- 2. TC-02 (Edge): Chuyển đúng bằng số dư hiện có (số dư về 0).
159
- 3. TC-03 (Error): Chuyển số tiền âm hoặc = 0 -> Ném ValidationError.
160
- 4. TC-04 (Error): Số dư không đủ -> Ném InsufficientFundsError.
161
- 5. TC-05 (Edge): fromId trùng toId -> Ném SelfTransferError.
162
- 6. TC-06 (Concur): 2 giao dịch đồng thời -> Xử lý lock/transaction an toàn.
163
- ```
164
-
165
- ### Step 3 — Viết Code Kiểm thử (Test Implementation)
166
- ```
167
- Tuân thủ cấu trúc AAA:
168
- // 1. Arrange: Chuẩn bị dữ liệu mẫu và mock
169
- const user = createMockUser({ balance: 100 });
170
-
171
- // 2. Act: Gọi hàm cần test
172
- const result = await transferMoney(user.id, recipient.id, 50);
173
-
174
- // 3. Assert: Kiểm tra kết quả
175
- expect(result.status).toBe('SUCCESS');
176
- expect(user.balance).toBe(50);
177
- ```
178
-
179
- ### Step 4 — Verification & Chạy Test Thực Tế
180
- ```
181
- Actions:
182
- - Chạy lệnh test thật qua terminal (`npm test -- run`, `pytest -v`, `go test ./...`).
183
- - Đảm bảo toàn bộ test cases đều PASS (Màu xanh).
184
- - Đảm bảo test chạy độc lập (Isolated), không phụ thuộc vào thứ tự thực thi.
185
- ```
186
-
187
- ---
188
-
189
- ## Prompt Template
190
-
191
- ```
192
- Target: [File hoặc Function cần viết test: vd: src/services/PaymentService.ts]
193
- Framework: [Vitest / Jest / Pytest / Playwright]
194
- Level: [Unit / Integration / E2E]
195
- Phụ thuộc: [Cần mock Stripe API, PostgreSQL DB]
196
- Yêu cầu: [Cover các trường hợp lỗi mạng, thẻ hết hạn, concurrency]
197
- ```
198
-
199
- ### Ví dụ theo Stack:
200
-
201
- **Vitest (Unit Test cho Business Logic)**
202
- ```
203
- Target: calculateDiscount(cart, coupon)
204
- Framework: Vitest + TypeScript
205
- Yêu cầu: Test giảm giá phần trăm, giảm giá cố định, mã hết hạn, coupon vượt quá tổng giá trị đơn hàng.
206
- ```
207
- → AI tạo: `tests/unit/calculateDiscount.test.ts` với đầy đủ 6 test cases, kiểm tra boundary condition `Math.max(0, total - discount)`.
208
-
209
- **Pytest (Integration Test cho FastAPI Endpoint)**
210
- ```
211
- Target: POST /api/v1/items
212
- Framework: Pytest + httpx AsyncClient
213
- Yêu cầu: Test tạo item thành công (201), validate body thiếu trường bắt buộc (422), unauthenticated (401).
214
- ```
215
- → AI tạo: `tests/test_items_api.py`, sử dụng pytest fixture cho test DB session và test client.
@@ -1,28 +0,0 @@
1
- # Auto-generated from SKILL.md frontmatter
2
- schema_version: 1
3
- id: "qk-test-engineering"
4
- version: "9.1.0"
5
- description: "Công cụ quyết định chiến lược kiểm thử (Unit, Integration, E2E, Coverage, Regression, Mock)."
6
- tools:
7
- - "filesystem"
8
- - "terminal"
9
- knowledge:
10
- owns:
11
- - "qk-test-engineering"
12
- references:
13
- - "architecture"
14
- - "anti-patterns"
15
- - "playwright"
16
- - "vitest"
17
- - "storybook-testing"
18
- eval:
19
- scorecard: "evals/scorecard.yaml"
20
- decision_boundary:
21
- owns:
22
- - "test pyramid"
23
- - "coverage strategy"
24
- - "regression planning"
25
- does_not_own:
26
- - "business logic implementation"
27
- - "writing tests"
28
- conflicts_with: []
@@ -1,26 +0,0 @@
1
- name: qk-test-engineering-eval
2
- description: Đánh giá tư duy Chiến lược Kiểm thử (Test Strategy)
3
- version: 9.1.0
4
- threshold: 85 # Đảm bảo tư vấn chiến lược rõ ràng và bao quát rủi ro
5
-
6
- metrics:
7
- - id: pyramid_strategy
8
- name: Chiến lược Test Pyramid
9
- description: Chiến lược có phân bổ hợp lý giữa Unit, Integration và E2E không?
10
- weight: 35
11
- criteria:
12
- - Phân tách rõ ràng loại test nào dùng cho logic nào thay vì bắt viết E2E cho mọi thứ (35đ)
13
-
14
- - id: boundary_testing_r_sec_04
15
- name: Negative & Boundary Testing (R-SEC-04)
16
- description: Có bao phủ các test cases ranh giới để ngăn chặn tấn công/lỗi dữ liệu không?
17
- weight: 35
18
- criteria:
19
- - Bắt buộc đưa ra các test case biên (Boundary) và trường hợp lỗi (Negative tests) (35đ)
20
-
21
- - id: mocking_strategy
22
- name: Chiến lược Mock/Stub
23
- description: Có tư vấn rõ ràng khi nào nên Mock và khi nào dùng Database thật không?
24
- weight: 30
25
- criteria:
26
- - Phân biệt rõ việc Mock API bên thứ ba vs Integration DB nội bộ (30đ)
@@ -1,175 +0,0 @@
1
- ---
2
- # ── Identity ───────────────────────────────────────────────
3
- name: qk-ui-audit
4
- version: 9.2.0
5
- status: stable
6
- description: "Kiểm toán chất lượng thiết kế UI với 57-check Anti-Slop checklist: spacing nhất quán, contrast ratio, component polish, interaction states. Output là nhận xét thiết kế và danh sách cần cải thiện. Dùng skill này khi user nhắc đến: review ui, audit giao diện, kiểm tra ui, ui quality, component spacing, design consistency, anti-slop — KHÔNG dùng cho đo hiệu năng hay SEO."
7
- platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
-
9
- # ── V9: Classification ─────────────────────────────────────
10
- type: utility
11
-
12
- intent:
13
- - ui-audit
14
- - codebase-health
15
-
16
- complexity:
17
- level: medium
18
- criteria:
19
- files_affected: "1-5"
20
- has_behavior_change: false
21
- has_external_dependency: false
22
- has_breaking_change: false
23
-
24
- triggers:
25
- - "review ui"
26
- - "audit giao diện"
27
- - "kiểm tra ui"
28
- - "ui quality"
29
- - "component spacing"
30
- - "design consistency"
31
- - "anti"
32
-
33
-
34
- # ── V8: References ─────────────────────────────────────────
35
- workflow: code-review
36
-
37
- rules:
38
- - global
39
- - coding
40
-
41
- tools:
42
- - filesystem
43
- - terminal
44
-
45
- related_skills:
46
- - qk-ui-builder
47
-
48
- knowledge_scope:
49
- owns:
50
- - ui-standards
51
- - anti-slop
52
- references:
53
- - design-system
54
- - security
55
- - anti-patterns
56
-
57
- # ── V8: Verification ───────────────────────────────────────
58
- verification:
59
- required: true
60
- strategy: review
61
-
62
- selection:
63
- priority: medium
64
- confidence_threshold: 0.80
65
-
66
- examples: []
67
- learnings: []
68
-
69
- # ── V7 Runtime ─────────────────────────────────────────────
70
- execution_mode: deterministic
71
- cost: medium
72
- latency: medium
73
- risk: low
74
- side_effects: read_only
75
- produces: [report]
76
- consumes: [design-md, source-code]
77
-
78
- token_budget:
79
- max_files_read: 5
80
- max_lines_per_read: 150
81
- max_shell_commands: 0
82
- stop_early: true
83
-
84
- exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
85
- ---
86
-
87
- # qk-ui-audit — Anti-Slop UI Inspector
88
-
89
- > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
90
-
91
- Chịu trách nhiệm kiểm toán chi tiết tính thẩm mỹ, sự nhất quán và độ hoàn thiện thị giác của giao diện người dùng theo bộ **57-Check Anti-Slop Checklist**. Ngăn chặn triệt để tình trạng giao diện AI cẩu thả (AI-generated slop): lệch nhịp spacing, độ tương phản kém, thiếu states tương tác.
92
-
93
- ---
94
-
95
- ## Preconditions
96
-
97
- Trước khi audit giao diện, AI BẮT BUỘC kiểm tra:
98
-
99
- - [ ] Xác định các file UI component hoặc trang cần audit (`.tsx`, `.vue`, `.svelte`, `.html`, `.css`).
100
- - [ ] Đọc file cấu hình thiết kế nếu có (`DESIGN.md`, `tailwind.config.js`, tokens file) để lấy chuẩn so sánh.
101
- - [ ] Kiểm tra xem component có mã nguồn rõ ràng để phân tích styling không.
102
- - [ ] Nếu component sử dụng inline style hoặc cấu trúc quá rối loạn không thể đọc được layout:
103
- → **EXIT: PARTIAL**
104
- → Báo cáo user tình trạng code kèm khuyến nghị refactor trước khi audit chi tiết.
105
-
106
- ---
107
-
108
- ## Scope
109
-
110
- ✅ Skill này làm:
111
- - Rà soát 4 nhóm kiểm tra chính theo chuẩn Anti-Slop:
112
- 1. Spacing & Grid System (4px/8px grid alignment, nhất quán padding/margin, không dùng giá trị arbitrary tùy tiện).
113
- 2. Color & Contrast (Tỉ lệ tương phản văn bản/nền theo WCAG AA, tính nhất quán của bảng màu token).
114
- 3. Typography & Hierarchy (Phân cấp kích cỡ font chữ, line-height, font-weight có trật tự).
115
- 4. Interactive States (Đầy đủ hover, active, focus-visible, disabled, loading, skeleton states).
116
- - Xuất danh sách các điểm vi phạm (Slop items) kèm vị trí dòng code cụ thể.
117
- - Đề xuất mã CSS / Tailwind class sửa đổi chuẩn chỉnh.
118
- - Chế độ hoạt động: **Read-Only / Inspection Report** (không tự sửa code khi chưa duyệt).
119
-
120
- ❌ Skill này KHÔNG làm:
121
- - Đo lường hiệu năng kỹ thuật web, Core Web Vitals, SEO tags (→ `qk-web-quality-gate`).
122
- - Xây dựng component mới từ bản vẽ Figma (→ `qk-ui-builder`).
123
- - Định nghĩa lại toàn bộ hệ thống Design Tokens từ gốc (→ `qk-design-system-engineering`).
124
-
125
- ---
126
-
127
- ## Execution Steps
128
-
129
- ### Step 1 — Target Ingestion & Design Baseline
130
- ```
131
- Inputs: Danh sách file UI, DESIGN.md / Tailwind config
132
- Actions:
133
- - Nạp source code component.
134
- - Xác định Design Tokens chuẩn của dự án (màu sắc, spacing scales, border-radius).
135
- Output: Component AST / Markup map
136
- ```
137
-
138
- ### Step 2 — 57-Check Anti-Slop Audit
139
- ```
140
- Inputs: Component code, Design tokens
141
- Actions:
142
- - Quét Spacing: Phát hiện các giá trị cứng (hardcoded px) thay vì dùng token (ví dụ: mt-[13px]).
143
- - Quét Visual Hierarchy: Đảm bảo tiêu đề và nội dung có sự phân biệt rõ ràng.
144
- - Quét Interactive States: Kiểm tra các button, input, link xem có `:focus-visible` và `:disabled` chuẩn không.
145
- - Quét Layout Bugs: Xử lý tràn chữ (overflow, text truncation), co giãn responsive.
146
- Output: Audit findings categorized by severity
147
- ```
148
-
149
- ### Step 3 — Remediation Formulation
150
- ```
151
- Inputs: Audit findings
152
- Actions:
153
- - Viết giải thích ngắn gọn lý do vi phạm.
154
- - Cung cấp đoạn code so sánh Before/After cụ thể.
155
- Output: Anti-Slop Audit Report
156
- ```
157
-
158
- ### Step 4 — Verification & Delivery
159
- ```
160
- Inputs: Anti-Slop Audit Report
161
- Actions:
162
- - Đảm bảo các khuyến nghị tuân thủ 100% stack khai báo trong DEV_PROFILE.md.
163
- - Bàn giao báo cáo cho kỹ sư frontend.
164
- Exit: SUCCESS
165
- ```
166
-
167
- ---
168
-
169
- ## Prompt Template
170
-
171
- ```
172
- UI Component / Trang: [Đường dẫn file component hoặc page cần kiểm tra]
173
- Design Tokens: [File cấu hình tailwind.config / css tokens / DESIGN.md]
174
- Vấn đề nghi ngờ: [Bị lệch spacing, nút bấm xấu, thiếu hover state, ...]
175
- ```
@@ -1,23 +0,0 @@
1
- # Auto-generated from SKILL.md frontmatter
2
- schema_version: 1
3
- id: "qk-ui-audit"
4
- version: "9.1.0"
5
- description: "Kiểm toán giao diện (UI) với 57-check Anti-Slop checklist — fail nếu score < 76/85 base."
6
- tools:
7
- - "filesystem"
8
- - "terminal"
9
- knowledge:
10
- owns:
11
- - "ui-standards"
12
- - "anti-slop"
13
- references:
14
- - "design-system"
15
- - "security"
16
- - "anti-patterns"
17
- eval:
18
- scorecard: "evals/scorecard.yaml"
19
- decision_boundary:
20
- owns:
21
- - "qk-ui-audit"
22
- does_not_own: []
23
- conflicts_with: []
@@ -1,26 +0,0 @@
1
- name: qk-ui-audit-eval
2
- description: Đánh giá khả năng rà soát UI Anti-Slop
3
- version: 9.1.0
4
- threshold: 90 # Đóng vai trò chốt chặn UI chất lượng cao, không khoan nhượng với Slop
5
-
6
- metrics:
7
- - id: design_contract_compliance
8
- name: Tuân thủ Hợp đồng Thiết kế (DESIGN.md)
9
- description: Có bắt lỗi chính xác các giá trị hardcode không nằm trong Design Tokens không?
10
- weight: 40
11
- criteria:
12
- - Tìm và đánh dấu các mã màu hex, px hardcode vi phạm token của DESIGN.md (40đ)
13
-
14
- - id: anti_slop_detection
15
- name: Nhận diện AI-Slop (Generic aesthetics)
16
- description: Có phát hiện được các thiết kế chung chung, xám xịt, viền nhạt nhòa không?
17
- weight: 30
18
- criteria:
19
- - Trừ điểm nặng các thẻ card thiếu chiều sâu, text quá nhỏ, hoặc thiếu hover state (30đ)
20
-
21
- - id: accessibility_check
22
- name: Kiểm tra Trải nghiệm Tiếp cận (A11y)
23
- description: Có rà soát các thẻ ARIA, độ tương phản và Semantic HTML không?
24
- weight: 30
25
- criteria:
26
- - Cảnh báo các element tương tác (button, link) thiếu roles, alt text hoặc độ tương phản < 4.5:1 (30đ)
@@ -1,136 +0,0 @@
1
- # Anti-Slop Checklist — 57 Checks (99 pts max)
2
- > Referenced by: `qk-ui-audit/SKILL.md`
3
- > Purpose: Full inspection checklist for detecting generic AI-generated UI
4
-
5
- ---
6
-
7
- ## Category P1: Accessibility (15 pts)
8
-
9
- | # | Check | Points | How to Verify |
10
- |---|-------|--------|---------------|
11
- | 1 | All images have `alt` text (non-empty, descriptive) | 2 | grep `alt=""` or `alt={` in JSX |
12
- | 2 | Color contrast ratio ≥ 4.5:1 (text) / 3:1 (large text) | 3 | Check computed HSL values vs background |
13
- | 3 | All interactive elements have `aria-label` if no visible text | 2 | grep for `<button>` without text content |
14
- | 4 | Focus states are visible — `outline: none` not used without replacement | 2 | Check CSS for `outline: none` |
15
- | 5 | Keyboard navigation works (Tab order logical) | 2 | `tabIndex` only for non-interactive elements |
16
- | 6 | `role` attributes used for non-semantic elements (div acting as button) | 2 | grep `onClick` on non-button elements |
17
- | 7 | Form inputs have associated `<label>` (htmlFor) | 2 | grep `<input` without surrounding `<label` |
18
-
19
- ---
20
-
21
- ## Category P2: Layout & Spacing (15 pts)
22
-
23
- | # | Check | Points | How to Verify |
24
- |---|-------|--------|---------------|
25
- | 8 | No hardcoded pixel spacing — uses design token scale (4, 8, 16, 24...) | 3 | grep `padding: [0-9]px` or `margin: [0-9]px` |
26
- | 9 | CSS Grid or Flexbox used — no `position: absolute` for layout | 2 | grep `position: absolute` in layout context |
27
- | 10 | Consistent spacing unit (not mixing 5px, 7px, 11px random values) | 2 | Check spacing values across components |
28
- | 11 | No `div` soup — semantic HTML used (article, section, nav, main, aside) | 2 | grep excessive `<div>` nesting |
29
- | 12 | Component has defined max-width (not stretching to 100vw on desktop) | 2 | Check container max-width |
30
- | 13 | Whitespace feels intentional — content is not cramped | 2 | Visual check or spacing scale adherence |
31
- | 14 | No horizontal overflow on mobile (320px viewport) | 2 | Check for `overflow-x: hidden` band-aids |
32
-
33
- ---
34
-
35
- ## Category P3: Typography & Colors (15 pts)
36
-
37
- | # | Check | Points | How to Verify |
38
- |---|-------|--------|---------------|
39
- | 15 | Font families from DESIGN.md only (no Times New Roman, Arial default) | 3 | grep `font-family:` vs DESIGN.md |
40
- | 16 | Font sizes use token scale — no arbitrary px values | 2 | grep `font-size: [0-9]` raw values |
41
- | 17 | Colors use DESIGN.md tokens — no hardcoded hex (#ff0000) or rgb() | 3 | grep `#[0-9a-fA-F]{3,6}` in CSS/JSX |
42
- | 18 | No pure black (#000000) or pure white (#ffffff) — use near-black/near-white | 2 | grep `#000\|#000000\|#fff\|#ffffff` |
43
- | 19 | Color palette is harmonious — not "rainbow slop" (5+ unrelated colors) | 2 | Count distinct hues in palette |
44
- | 20 | Heading hierarchy correct — one `<h1>` per page, no skipping levels | 1 | grep heading tags per page |
45
- | 21 | Line height appropriate (1.4–1.7 for body, 1.1–1.3 for headings) | 2 | Check `line-height` values |
46
-
47
- ---
48
-
49
- ## Category P4: Interactions & Animations (15 pts)
50
-
51
- | # | Check | Points | How to Verify |
52
- |---|-------|--------|---------------|
53
- | 22 | Every button has hover state — color shift OR shadow change | 2 | grep `:hover` for button styles |
54
- | 23 | Every button has focus-visible state | 2 | grep `:focus-visible` |
55
- | 24 | Active/pressed state exists for clickable elements | 1 | grep `:active` |
56
- | 25 | Transition duration from DESIGN.md — not raw `0.3s` everywhere | 2 | grep `transition:` vs token values |
57
- | 26 | No janky instant state changes — all transitions ≥ 100ms, ≤ 400ms | 2 | grep transition durations |
58
- | 27 | Animations respect `prefers-reduced-motion` | 2 | grep `prefers-reduced-motion` in CSS |
59
- | 28 | Links have hover underline OR color change (not just cursor pointer) | 2 | grep `a:hover` styles |
60
- | 29 | Form validation feedback uses animation (shake, pulse) not just color | 2 | Check error state CSS |
61
-
62
- ---
63
-
64
- ## Category P5: Anti-Slop Detection (15 pts)
65
-
66
- | # | Check | Points | How to Verify |
67
- |---|-------|--------|---------------|
68
- | 30 | No Bootstrap/generic UI kit classes (btn-primary, card, badge) | 2 | grep `class="btn\|card\|badge\|modal"` |
69
- | 31 | No Tailwind utility spam (> 15 classes on single element) | 2 | grep extremely long className strings |
70
- | 32 | No Lorem Ipsum or placeholder text in production UI | 3 | grep `Lorem ipsum\|placeholder text` |
71
- | 33 | Color palette is NOT blue-gray default (slop signature) | 2 | Check if primary color is `hsl(210, *)` Tailwind default |
72
- | 34 | Layout is NOT a simple centered card on white background (slop template) | 2 | Structural check |
73
- | 35 | Gradient usage is intentional — not `linear-gradient(to bottom, #fff, #f0f0f0)` | 2 | grep gradient definitions |
74
- | 36 | No `box-shadow: 0 2px 4px rgba(0,0,0,0.1)` everywhere (Bootstrap shadow) | 2 | grep this exact shadow pattern |
75
-
76
- ---
77
-
78
- ## Category P6: Performance & Best Practices (10 pts)
79
-
80
- | # | Check | Points | How to Verify |
81
- |---|-------|--------|---------------|
82
- | 37 | Images have `loading="lazy"` for below-fold content | 2 | grep `<img` without `loading` |
83
- | 38 | No `!important` overrides (except CSS reset) | 1 | grep `!important` in component CSS |
84
- | 39 | No inline styles except dynamic values | 2 | grep `style={{` in non-dynamic contexts |
85
- | 40 | Component file ≤ 300 lines | 1 | Line count check |
86
- | 41 | No unused CSS classes or dead styles | 1 | Visual code scan |
87
- | 42 | SVG icons used instead of emoji for UI elements | 1 | grep emoji characters in JSX |
88
- | 43 | `key` prop used correctly in lists (not index as key for dynamic lists) | 2 | grep `.map(` + check key prop |
89
-
90
- ---
91
-
92
- ## Category BONUS: Mobile & Cross-Browser (5 pts extra)
93
-
94
- | # | Check | Points | How to Verify |
95
- |---|-------|--------|---------------|
96
- | 44 | Touch targets ≥ 44×44px on mobile | 1 | Check button/link dimensions |
97
- | 45 | No hover-only interactions (mobile has no hover) | 1 | Check if critical info only on hover |
98
- | 46 | Custom fonts have system-ui fallback | 1 | Check font-family fallback stack |
99
- | 47 | Input types correct: email, tel, number, date (triggers correct mobile keyboard) | 1 | grep `<input type=` |
100
- | 48 | No `position: fixed` elements blocking content on small screens | 1 | Check fixed/sticky headers/footers |
101
-
102
- ---
103
-
104
- ## Extended Checks (9 additional points for comprehensive audit)
105
-
106
- | # | Check | Category |
107
- |---|-------|---------|
108
- | 49 | Loading skeleton matches actual content shape (not generic gray bars) | UX |
109
- | 50 | Empty state has illustration + helpful action button (not just "No data") | UX |
110
- | 51 | Error state specifies the error — not generic "Something went wrong" | UX |
111
- | 52 | Success feedback is clear — confirmation message or visual indicator | UX |
112
- | 53 | Destructive actions (delete) require confirmation dialog | Safety |
113
- | 54 | Modals/dialogs have accessible `role="dialog"` + focus trap | A11y |
114
- | 55 | Scrollable areas have visible scroll indicator | UX |
115
- | 56 | Data tables have sortable columns if > 10 rows | UX |
116
- | 57 | Forms have autofocus on first input (modal forms) | UX |
117
-
118
- ---
119
-
120
- ## Scoring Summary
121
-
122
- | Category | Max Points |
123
- |----------|-----------|
124
- | P1 Accessibility | 15 |
125
- | P2 Layout & Spacing | 15 |
126
- | P3 Typography & Colors | 15 |
127
- | P4 Interactions & Animations | 15 |
128
- | P5 Anti-Slop Detection | 15 |
129
- | P6 Performance | 10 |
130
- | **Base Total** | **85** |
131
- | BONUS Mobile | +5 |
132
- | Extended (49–57) | +9 |
133
- | **Maximum Possible** | **99** |
134
-
135
- **Pass threshold: ≥ 76/85 base (90%)**
136
- **Fail: < 76 / 85 — requires redesign, not patch**