ai-developer-skill-os 7.0.2 → 7.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/.agents/AGENTS.md +44 -88
  2. package/.agents/CHANGELOG.md +70 -0
  3. package/.agents/LICENSE +21 -0
  4. package/.agents/README.md +100 -0
  5. package/.agents/docs/CHI_TIET_SKILLS.md +126 -0
  6. package/.agents/docs/GOVERNANCE.md +40 -0
  7. package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
  8. package/.agents/docs/SPEC.md +87 -0
  9. package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
  10. package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
  11. package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
  12. package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
  13. package/.agents/docs/skill-classification.md +25 -0
  14. package/.agents/skills/qk-access-policy/SKILL.md +179 -0
  15. package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
  16. package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
  17. package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
  18. package/.agents/skills/qk-context-loader/SKILL.md +218 -0
  19. package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
  20. package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
  21. package/.agents/skills/qk-docs/SKILL.md +198 -0
  22. package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
  23. package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
  24. package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
  25. package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
  26. package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
  27. package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
  28. package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
  29. package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
  30. package/.agents/skills/qk-help/SKILL.md +193 -0
  31. package/.agents/skills/qk-orchestrator/SKILL.md +278 -0
  32. package/.agents/skills/qk-orchestrator/references/routing-table.md +78 -0
  33. package/.agents/skills/qk-production-release/SKILL.md +284 -0
  34. package/.agents/skills/qk-project-bootstrap/SKILL.md +235 -0
  35. package/.agents/skills/qk-project-health/SKILL.md +199 -0
  36. package/.agents/skills/qk-project-memory/SKILL.md +218 -0
  37. package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
  38. package/.agents/skills/qk-ui-audit/SKILL.md +315 -0
  39. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  40. package/.agents/skills/qk-ui-builder/SKILL.md +446 -0
  41. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +295 -0
  42. package/.agents/skills/qk-ui-builder/references/color.md +115 -0
  43. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
  44. package/.agents/skills/qk-ui-builder/references/copy.md +250 -0
  45. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
  46. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +111 -0
  47. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
  48. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
  49. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
  50. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
  51. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
  52. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
  53. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
  54. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
  55. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
  56. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
  57. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
  58. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
  59. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
  60. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
  61. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
  62. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
  63. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
  64. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
  65. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
  66. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
  67. package/.agents/skills/qk-ui-builder/references/macrostructures.md +38 -0
  68. package/.agents/skills/qk-ui-builder/references/motion.md +95 -0
  69. package/.agents/skills/qk-ui-builder/references/responsive.md +115 -0
  70. package/.agents/skills/qk-ui-builder/references/slop-test.md +135 -0
  71. package/.agents/skills/qk-ui-builder/references/structure.md +280 -0
  72. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
  73. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +52 -0
  74. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
  75. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +52 -0
  76. package/.agents/skills/qk-ui-builder/references/themes/garden.md +52 -0
  77. package/.agents/skills/qk-ui-builder/references/themes/hum.md +52 -0
  78. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +52 -0
  79. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +52 -0
  80. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
  81. package/.agents/skills/qk-ui-builder/references/themes/playful.md +52 -0
  82. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +52 -0
  83. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +52 -0
  84. package/.agents/skills/qk-ui-builder/references/typography.md +129 -0
  85. package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
  86. package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
  87. package/.agents/skills.json +819 -0
  88. package/.github/workflows/ci.yml +1 -1
  89. package/CHANGELOG.md +2 -1
  90. package/CLAUDE.md +110 -0
  91. package/README.md +52 -10
  92. package/add_lang.js +21 -0
  93. package/add_lang.py +25 -0
  94. package/add_sections.py +53 -0
  95. package/bin/install.js +225 -170
  96. package/bin/lint.js +123 -0
  97. package/docs/CHI_TIET_SKILLS.md +27 -26
  98. package/docs/HUONG_DAN_SU_DUNG.md +3 -3
  99. package/docs/SPEC.md +70 -20
  100. package/framework/decision-primitives.md +2 -1
  101. package/framework/skill-schema.md +310 -0
  102. package/package.json +16 -5
  103. package/patch.js +15 -0
  104. package/patch.py +89 -0
  105. package/patch2.py +83 -0
  106. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
  107. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
  108. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
  109. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
  110. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
  111. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
  112. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
  113. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
  114. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
  115. package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
  116. package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
  117. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
  118. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
  119. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
  120. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
  121. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
  122. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
  123. package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
  124. package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
  125. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
  126. package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
  127. package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
  128. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
  129. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
  130. package/skills/_template/SKILL.md +239 -0
  131. package/skills/qk-access-policy/SKILL.md +180 -39
  132. package/skills/qk-ai-builder/SKILL.md +216 -40
  133. package/skills/qk-api-lifecycle/SKILL.md +177 -46
  134. package/skills/qk-bug-resolution/SKILL.md +308 -46
  135. package/skills/qk-context-loader/SKILL.md +219 -43
  136. package/skills/qk-data-lifecycle/SKILL.md +193 -44
  137. package/skills/qk-db-optimizer/SKILL.md +197 -41
  138. package/skills/qk-docs/SKILL.md +199 -40
  139. package/skills/qk-engineering-standard/SKILL.md +352 -42
  140. package/skills/qk-fe-api-integration/SKILL.md +327 -55
  141. package/skills/qk-feature-delivery/SKILL.md +306 -48
  142. package/skills/qk-help/SKILL.md +179 -23
  143. package/skills/qk-orchestrator/SKILL.md +279 -42
  144. package/skills/qk-orchestrator/references/routing-table.md +78 -0
  145. package/skills/qk-production-release/SKILL.md +285 -41
  146. package/skills/qk-project-bootstrap/SKILL.md +236 -38
  147. package/skills/qk-project-health/SKILL.md +200 -40
  148. package/skills/qk-project-memory/SKILL.md +219 -40
  149. package/skills/qk-system-evolution/SKILL.md +282 -40
  150. package/skills/qk-ui-audit/SKILL.md +316 -42
  151. package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  152. package/skills/qk-ui-builder/SKILL.md +447 -0
  153. package/skills/qk-ui-builder/references/anti-patterns.md +295 -0
  154. package/skills/qk-ui-builder/references/color.md +115 -0
  155. package/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
  156. package/skills/qk-ui-builder/references/copy.md +250 -0
  157. package/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
  158. package/skills/qk-ui-builder/references/layout-and-space.md +111 -0
  159. package/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
  160. package/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
  161. package/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
  162. package/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
  163. package/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
  164. package/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
  165. package/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
  166. package/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
  167. package/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
  168. package/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
  169. package/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
  170. package/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
  171. package/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
  172. package/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
  173. package/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
  174. package/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
  175. package/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
  176. package/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
  177. package/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
  178. package/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
  179. package/skills/qk-ui-builder/references/macrostructures.md +38 -0
  180. package/skills/qk-ui-builder/references/motion.md +95 -0
  181. package/skills/qk-ui-builder/references/responsive.md +115 -0
  182. package/skills/qk-ui-builder/references/slop-test.md +135 -0
  183. package/skills/qk-ui-builder/references/structure.md +280 -0
  184. package/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
  185. package/skills/qk-ui-builder/references/themes/carnival.md +52 -0
  186. package/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
  187. package/skills/qk-ui-builder/references/themes/editorial.md +52 -0
  188. package/skills/qk-ui-builder/references/themes/garden.md +52 -0
  189. package/skills/qk-ui-builder/references/themes/hum.md +52 -0
  190. package/skills/qk-ui-builder/references/themes/lumen.md +52 -0
  191. package/skills/qk-ui-builder/references/themes/midnight.md +52 -0
  192. package/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
  193. package/skills/qk-ui-builder/references/themes/playful.md +52 -0
  194. package/skills/qk-ui-builder/references/themes/specimen.md +52 -0
  195. package/skills/qk-ui-builder/references/themes/terminal.md +52 -0
  196. package/skills/qk-ui-builder/references/typography.md +129 -0
  197. package/skills/qk-ui-system-builder/SKILL.md +222 -43
  198. package/skills/qk-validation-gate/SKILL.md +360 -40
  199. package/skills.json +815 -825
  200. package/specs/fixtures/user-payload.json +12 -0
  201. package/specs/regressions/api-integration-null-fields.yaml +19 -0
  202. package/temp_fix.js +61 -0
  203. package/tests/registry.test.js +1 -1
  204. package/update_template.js +28 -0
  205. package/skills/qk-design-to-code/SKILL.md +0 -46
  206. package/skills/qk-policy-engine/SKILL.md +0 -39
@@ -0,0 +1,136 @@
1
+ # Anti-Slop Checklist — 57 Points
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%) — PASS**
136
+ **Fail: < 76 / 85 — requires redesign, not patch**
@@ -0,0 +1,447 @@
1
+ ---
2
+ name: qk-ui-builder
3
+ category: frontend
4
+ version: 7.5.1
5
+ description: "Xây dựng, sửa, audit, và học UI — từ Figma/ảnh, map API, fix bug UI, đến redesign cấu trúc."
6
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
+ execution_mode: deterministic
8
+
9
+ cost: high
10
+ latency: slow
11
+ risk: low
12
+ side_effects: edit_files
13
+ produces: [code, report]
14
+ consumes: [design-md, design-asset, source-code, api-schema]
15
+
16
+ token_budget:
17
+ max_files_read: 5
18
+ max_lines_per_read: 150
19
+ max_shell_commands: 0
20
+ stop_early: false
21
+
22
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
23
+ skill_version: 7.5.1
24
+ runtime_version: 1
25
+ schema_version: 2
26
+ ---
27
+
28
+ # qk-ui-builder — UI Builder & Auditor
29
+
30
+ > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
31
+
32
+ ---
33
+
34
+ ## Verbs
35
+
36
+ | Verb | Trigger | Behavior |
37
+ |------|---------|----------|
38
+ | *(default)* | `./qk-ui-builder` | Build or edit UI from design reference |
39
+ | `--audit` | `./qk-ui-builder --audit` | Score UI against anti-slop checklist, no edits |
40
+ | `--redesign` | `./qk-ui-builder --redesign` | Rebuild structure, keep copy/IA/brand |
41
+ | `--study` | `./qk-ui-builder --study <screenshot\|URL>` | Extract design DNA → `design.md` |
42
+
43
+ ---
44
+
45
+ ## Preconditions
46
+ - [ ] `DESIGN.md` exists with color tokens, spacing scale, typography
47
+ - [ ] For default/edit: design reference or target component specified
48
+ - [ ] For `--audit`: target UI file(s) specified
49
+ - [ ] For `--redesign`: target page + brand/copy context provided
50
+ - [ ] For `--study`: screenshot file or public URL provided
51
+
52
+ ```
53
+ On missing precondition:
54
+ EXIT: BLOCKED
55
+ Message: "[Missing item]. See Escalation Rules."
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Scope
61
+
62
+ ### Default verb
63
+ - ✅ Build new UI from Figma/ảnh/design reference
64
+ - ✅ Sửa text, thêm nội dung, map API key vào component
65
+ - ✅ Fix UI bug: padding, màu, hiển thị, responsive
66
+ - ✅ Generate strict UI từ DESIGN.md tokens
67
+
68
+ ### `--audit`
69
+ - ✅ Score UI against anti-slop checklist (58 gates)
70
+ - ✅ Detect generic AI aesthetics, hardcoded values
71
+ - ✅ Verify ARIA, contrast, responsive states
72
+
73
+ ### `--redesign`
74
+ - ✅ Thay đổi cấu trúc page, giữ nội dung/IA/brand
75
+ - ✅ Pick new macrostructure + theme fingerprint
76
+
77
+ ### `--study`
78
+ - ✅ Extract design DNA từ ảnh/Figma/URL
79
+ - ✅ Emit portable `design.md` for handoff
80
+
81
+ ## Non-Goals
82
+ - ❌ Invent design tokens not in DESIGN.md
83
+ - ❌ Use hardcoded hex colors, px sizes not from token system
84
+ - ❌ Copy generic Tailwind/Bootstrap templates
85
+ - ❌ Skip loading/error/empty states
86
+ - ❌ Clone paid templates or violate design copyright
87
+
88
+ ---
89
+
90
+ ## Priority Order
91
+
92
+ | Priority | Task | Skip Threshold |
93
+ |----------|------|----------------|
94
+ | P1 | HTML structure + semantic markup | Never |
95
+ | P2 | DESIGN.md token application (colors, spacing, typography) | Never |
96
+ | P3 | Interactive states (hover, focus, active) | Budget < 30% |
97
+ | P4 | Responsive breakpoints (mobile) | Budget < 50% |
98
+ | P5 | Loading / error / empty states | Budget < 60% |
99
+ | P6 | Animation / micro-interactions | Budget < 70% |
100
+ | P7 | ARIA roles + keyboard navigation | Budget < 80% |
101
+
102
+ ---
103
+
104
+ ## Workflow
105
+
106
+ ### Phase 1 — Route by Verb
107
+
108
+ **Decision:**
109
+ ```
110
+ IF --audit
111
+ → Load slop-test gates → go to Audit phase
112
+
113
+ ELSE IF --redesign
114
+ → Load macrostructure index → pick new fingerprint → go to Build phase
115
+
116
+ ELSE IF --study
117
+ → Load study protocol → extract DNA → emit design.md → EXIT: SUCCESS
118
+
119
+ ELSE (default: build/edit)
120
+ → go to Build phase
121
+ ```
122
+
123
+ ---
124
+
125
+ ### Phase 2 — Load Design Context (default/edit/redesign only)
126
+
127
+ **Load Discipline (MANDATORY):**
128
+
129
+ ```
130
+ EAGER (load every build):
131
+ - typography.md
132
+ - color.md
133
+ - layout-and-space.md
134
+ - copy.md
135
+ - anti-patterns.md
136
+
137
+ INDEX-THEN-PICK (load index, choose ONE):
138
+ - macrostructures.md → pick ONE → load only that file
139
+
140
+ CONDITIONAL (load only if needed):
141
+ - themes/[name].md → only if project has locked theme
142
+ - motion.md → only if animation requested
143
+ - interaction-and-states.md → only if complex interactions
144
+ - responsive.md → only if mobile breakpoints needed
145
+ - component-cookbook.md → only if building known archetype
146
+
147
+ LOAD-AT-END (post-emit only):
148
+ - slop-test.md → run AFTER build completes
149
+ ```
150
+
151
+ **Steps:**
152
+ 1. Read `DESIGN.md` → extract tokens: colors (HSL), spacing, fonts, radius, shadows
153
+ 2. Load eager references (typography, color, layout, copy, anti-patterns)
154
+ 3. Check `.agents/memory/ui-diversification.json` for last theme/macrostructure used
155
+ 4. If redesign: read `references/macrostructures.md` index → pick ONE different from last → load only that file
156
+ 5. If project has locked theme: load `references/themes/[name].md`
157
+
158
+ **Diversification rule:** consecutive builds must use different theme + macrostructure from `ui-diversification.json`.
159
+
160
+ ---
161
+
162
+ ### Phase 3 — Build or Edit
163
+
164
+ **Steps:**
165
+ 1. For new UI: create component from design reference using DESIGN.md tokens
166
+ 2. For edit: modify existing component per user request (text, API mapping, layout)
167
+ 3. Apply theme + macrostructure fingerprint
168
+ 4. Handle all 3 UI states: Loading, Success, Error
169
+
170
+ **API mapping rule:**
171
+ - Bind API response to component props via generated TypeScript interfaces
172
+ - NEVER hardcode API URLs in component
173
+ - Use existing API client pattern from project
174
+
175
+ ---
176
+
177
+ ### Phase 4 — Slop Test (post-emit)
178
+
179
+ Load `references/slop-test.md` and verify all 58 gates pass.
180
+
181
+ ```
182
+ IF all 58 gates pass
183
+ → EXIT: SUCCESS
184
+
185
+ ELSE IF critical gate fails (hardcoded purple gradient, banned font)
186
+ → EXIT: FAILED — rebuild required
187
+ ```
188
+ 1. Read `references/macrostructures.md` (index only)
189
+ 2. Pick ONE macrostructure different from last build
190
+ 3. Load only that macrostructure file from `references/macrostructures/`
191
+
192
+ ---
193
+
194
+ ### Phase 3 — Build or Edit
195
+
196
+ **Steps:**
197
+ 1. For new UI: create component from design reference using DESIGN.md tokens
198
+ 2. For edit: modify existing component per user request (text, API mapping, layout)
199
+ 3. Apply theme + macrostructure fingerprint
200
+ 4. Handle all 3 UI states: Loading, Success, Error
201
+
202
+ **API mapping rule:**
203
+ - Bind API response to component props via generated TypeScript interfaces
204
+ - NEVER hardcode API URLs in component
205
+ - Use existing API client pattern from project
206
+
207
+ ---
208
+
209
+ ### Phase 4 — Self-Audit (Anti-Slop Check)
210
+
211
+ **Checklist (must pass ALL):**
212
+ - [ ] No hardcoded colors — only DESIGN.md tokens
213
+ - [ ] No font-size in px without token — use rem/token
214
+ - [ ] No `margin: auto` soup — use proper grid/flex
215
+ - [ ] All interactive elements have hover + focus state
216
+ - [ ] Mobile viewport works (no horizontal overflow)
217
+ - [ ] No `!important` overrides (except resets)
218
+ - [ ] No inline styles except dynamic values
219
+ - [ ] Loading state implemented (skeleton or spinner)
220
+ - [ ] Error state implemented (clear message)
221
+ - [ ] Empty state implemented (helpful illustration/text)
222
+
223
+ **Decision:**
224
+ ```
225
+ IF all checks pass
226
+ → EXIT: SUCCESS
227
+
228
+ ELSE IF 1–2 minor fails
229
+ → Fix immediately, EXIT: SUCCESS
230
+
231
+ ELSE IF > 2 fails OR hardcoded colors found
232
+ → Fix all, re-audit, EXIT: PARTIAL if still one gap
233
+ ```
234
+
235
+ ---
236
+
237
+ ### Phase 5 — Slop Test (post-emit)
238
+
239
+ Load `references/slop-test.md` and verify all 58 gates pass.
240
+
241
+ ```
242
+ IF all 58 gates pass
243
+ → EXIT: SUCCESS
244
+
245
+ ELSE IF critical gate fails (hardcoded purple gradient, banned font)
246
+ → EXIT: FAILED — rebuild required
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Confidence Model
252
+
253
+ | Level | Condition | Action |
254
+ |-------|-----------|--------|
255
+ | HIGH | DESIGN.md complete, design reference clear, API schema provided | Build directly |
256
+ | MEDIUM | Some tokens missing or design reference ambiguous | Note gaps, proceed |
257
+ | LOW | DESIGN.md missing or design reference too vague | EXIT: BLOCKED |
258
+
259
+ ---
260
+
261
+ ## Severity
262
+
263
+ | Level | Definition | Example |
264
+ |-------|-----------|---------|
265
+ | CRITICAL | Hardcoded API URL in component, banned font used | `axios.get("http://localhost")` in JSX |
266
+ | HIGH | Missing error/loading state, hardcoded color not in DESIGN.md | No 500 handler |
267
+ | MEDIUM | Missing hover state, spacing off by 1 unit | Button without focus ring |
268
+ | LOW | Comment missing, minor naming inconsistency | `temp` variable name |
269
+
270
+ ---
271
+
272
+ ## Evidence Format
273
+
274
+ ```
275
+ [SEVERITY] path/to/Component.tsx:LINE
276
+ Category: [TOKEN|SEMANTIC|INTERACTION|RESPONSIVE|STATE|ARIA|SLOP]
277
+ Reason: [specific violation]
278
+ Confidence: HIGH
279
+ Fix: [one-line actionable suggestion]
280
+ Points: -N pts (for audit mode)
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Retry Policy
286
+
287
+ ```
288
+ Build/Edit fails
289
+ └─ Check failure type
290
+ ├─ Token missing → infer from DESIGN.md, note assumption
291
+ └─ Design reference unclear → EXIT: BLOCKED, ask user
292
+
293
+ Slop test fails
294
+ └─ Critical gate (hardcoded color, banned font)
295
+ └─ EXIT: FAILED — do not ship, rebuild required
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Escalation Rules
301
+
302
+ ```
303
+ BLOCKED: DESIGN.md missing or design reference unclear
304
+ Missing:
305
+ - DESIGN.md with color/spacing/typography tokens
306
+ - Design reference (Figma/ảnh/wireframe)
307
+ - For --study: screenshot or public URL
308
+ Questions:
309
+ 1. Bạn có DESIGN.md chưa? (chạy qk-project-bootstrap nếu chưa)
310
+ 2. Design reference là gì? (Figma link / ảnh / mô tả)
311
+ 3. Cho phép tạo DESIGN.md mới không?
312
+ Recommended Assumptions (if proceeding):
313
+ - Use industry-standard: 8px spacing, Inter font, neutral gray palette
314
+ ```
315
+
316
+ ---
317
+
318
+ ## Handoff Contract
319
+
320
+ ### Consumes
321
+ ```json
322
+ {
323
+ "from": "user or qk-orchestrator",
324
+ "required_fields": ["verb", "design_md_path"],
325
+ "optional_fields": ["design_reference", "target_component", "api_schema", "framework"]
326
+ }
327
+ ```
328
+
329
+ ### Produces
330
+ ```json
331
+ {
332
+ "to": "user or qk-ui-audit (if --audit)",
333
+ "output_fields": ["component_files", "tokens_used", "states_implemented", "slop_test_result", "exit_code"]
334
+ }
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Output Format
340
+
341
+ ### Default (build/edit)
342
+ ```
343
+ 🎨 UI Builder
344
+ ─────────────────────────────────────────────────
345
+ Component: [ComponentName]
346
+ Theme: [theme name from references/themes/]
347
+ Macrostructure: [macrostructure name]
348
+
349
+ States implemented:
350
+ ✅ Loading / ✅ Success / ✅ Error
351
+ ✅ Hover / ✅ Focus / ✅ Active / ✅ Disabled
352
+
353
+ Tokens used:
354
+ - --color-primary-500, --space-4, --font-size-base
355
+
356
+ API Mapping:
357
+ ✅ [endpoint → prop] mapped
358
+
359
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
360
+ ```
361
+
362
+ ### `--audit`
363
+ ```
364
+ 🎨 UI Audit Report
365
+ ─────────────────────────────────────────────────
366
+ Component: [path/to/component]
367
+ Theme: [N/A — read-only audit]
368
+
369
+ Scores:
370
+ P1 Accessibility: [X/15]
371
+ P2 Layout: [X/15]
372
+ P3 Typography: [X/15]
373
+ P4 Interactions: [X/15]
374
+ P5 Anti-Slop: [X/15]
375
+ P6 Performance: [X/10]
376
+ ─────────────────
377
+ Total: [X/85] → [PASS ≥ 90% | FAIL < 90%]
378
+
379
+ Violations (top priority first):
380
+ [SEVERITY] file:LINE — reason — Fix: suggestion (-Xpts)
381
+
382
+ Verdict: [PASS | FAIL — requires redesign]
383
+ Exit Code: [SUCCESS | PARTIAL | FAILED]
384
+ ```
385
+
386
+ ### `--redesign`
387
+ ```
388
+ 🎨 UI Redesign
389
+ ─────────────────────────────────────────────────
390
+ Component: [ComponentName]
391
+ Old macrostructure: [old name]
392
+ New macrostructure: [new name]
393
+ Old theme: [old theme]
394
+ New theme: [new theme]
395
+
396
+ Kept:
397
+ - Copy/IA structure
398
+ - Brand colors
399
+ - Primary user flow
400
+
401
+ Changed:
402
+ - Layout fingerprint
403
+ - Section ordering
404
+ - Visual hierarchy
405
+
406
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
407
+ ```
408
+
409
+ ### `--study`
410
+ ```
411
+ 🎨 Design Study
412
+ ─────────────────────────────────────────────────
413
+ Source: [screenshot path | URL]
414
+ DNA extracted:
415
+ - Macrostructure: [name]
416
+ - Theme axes: [paper band / display style / accent hue]
417
+ - Type pairing: [font1 + font2]
418
+ - Color anchor: [primary / secondary / accent]
419
+
420
+ Output: design.md written to [path]
421
+ Next: ./qk-ui-builder --redesign with extracted DNA
422
+
423
+ Exit Code: [SUCCESS | BLOCKED]
424
+ ```
425
+
426
+ ---
427
+
428
+ ## Exit Codes
429
+
430
+ | Code | Meaning | When |
431
+ |------|---------|------|
432
+ | SUCCESS | Build/edit/audit/study completed successfully | All checks passed |
433
+ | PARTIAL | Built with minor gaps or incomplete audit | Budget exhausted or 1-2 fixes pending |
434
+ | BLOCKED | Missing DESIGN.md, design reference, or screenshot | Cannot proceed |
435
+ | FAILED | Slop test critical failure or architectural conflict | Rebuild required |
436
+
437
+ ---
438
+
439
+ ## References
440
+
441
+ - `references/themes/` — Theme catalog (20 themes)
442
+ - `references/macrostructures/` — 21 page shapes
443
+ - `references/slop-test.md` — 58 anti-slop gates
444
+ - `references/anti-patterns.md` — Named tells to avoid
445
+
446
+ ---
447
+