ai-developer-skill-os 7.0.2 → 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 (188) 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/CLAUDE.md +110 -0
  119. package/README.md +25 -3
  120. package/add_lang.js +21 -0
  121. package/add_lang.py +25 -0
  122. package/add_sections.py +53 -0
  123. package/bin/install.js +225 -170
  124. package/bin/lint.js +122 -0
  125. package/docs/CHI_TIET_SKILLS.md +26 -26
  126. package/docs/HUONG_DAN_SU_DUNG.md +3 -3
  127. package/docs/SPEC.md +70 -20
  128. package/framework/skill-schema.md +310 -0
  129. package/package.json +15 -4
  130. package/patch.js +15 -0
  131. package/patch.py +89 -0
  132. package/patch2.py +83 -0
  133. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
  134. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
  135. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
  136. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
  137. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
  138. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
  139. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
  140. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
  141. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
  142. package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
  143. package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
  144. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
  145. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
  146. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
  147. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
  148. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
  149. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
  150. package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
  151. package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
  152. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
  153. package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
  154. package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
  155. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
  156. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
  157. package/skills/_template/SKILL.md +238 -0
  158. package/skills/qk-access-policy/SKILL.md +179 -39
  159. package/skills/qk-ai-builder/SKILL.md +215 -40
  160. package/skills/qk-api-lifecycle/SKILL.md +176 -46
  161. package/skills/qk-bug-resolution/SKILL.md +307 -46
  162. package/skills/qk-context-loader/SKILL.md +218 -43
  163. package/skills/qk-data-lifecycle/SKILL.md +192 -44
  164. package/skills/qk-db-optimizer/SKILL.md +196 -41
  165. package/skills/qk-design-to-code/SKILL.md +285 -46
  166. package/skills/qk-docs/SKILL.md +198 -40
  167. package/skills/qk-engineering-standard/SKILL.md +351 -42
  168. package/skills/qk-fe-api-integration/SKILL.md +326 -55
  169. package/skills/qk-feature-delivery/SKILL.md +305 -48
  170. package/skills/qk-help/SKILL.md +178 -23
  171. package/skills/qk-orchestrator/SKILL.md +277 -42
  172. package/skills/qk-orchestrator/references/routing-table.md +77 -0
  173. package/skills/qk-production-release/SKILL.md +284 -41
  174. package/skills/qk-project-bootstrap/SKILL.md +234 -38
  175. package/skills/qk-project-health/SKILL.md +199 -40
  176. package/skills/qk-project-memory/SKILL.md +172 -40
  177. package/skills/qk-system-evolution/SKILL.md +281 -40
  178. package/skills/qk-ui-audit/SKILL.md +314 -42
  179. package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
  180. package/skills/qk-ui-system-builder/SKILL.md +221 -43
  181. package/skills/qk-validation-gate/SKILL.md +359 -40
  182. package/skills.json +813 -824
  183. package/specs/fixtures/user-payload.json +12 -0
  184. package/specs/regressions/api-integration-null-fields.yaml +19 -0
  185. package/temp_fix.js +61 -0
  186. package/tests/registry.test.js +1 -1
  187. package/update_template.js +28 -0
  188. 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,225 @@
1
+ ---
2
+ name: qk-ui-system-builder
3
+ category: frontend
4
+ version: 7.5.0
5
+ description: "Xây dựng Design System và token library từ DESIGN.md — không tự đặt ra token ngoài contract."
6
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
7
+ execution_mode: deterministic
8
+ cost: medium
9
+ latency: medium
10
+ risk: low
11
+ side_effects: edit_files
12
+ produces: [code, tokens]
13
+ consumes: [design-md]
14
+ token_budget:
15
+ max_files_read: 2
16
+ max_lines_per_read: 100
17
+ max_shell_commands: 0
18
+ stop_early: true
19
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
20
+ skill_version: 7.5.0
21
+ runtime_version: 1
22
+ schema_version: 2
23
+ ---
24
+
25
+ # qk-ui-system-builder — Design System Constructor
26
+
27
+ > **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.
28
+
29
+ ---
30
+
31
+ ## Preconditions
32
+ - [ ] `DESIGN.md` exists with color, spacing, typography tokens
33
+
34
+ ```
35
+ On missing precondition:
36
+ EXIT: BLOCKED
37
+ Message: "DESIGN.md missing. Run qk-project-bootstrap to create one."
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Scope
43
+ - ✅ Extract tokens from DESIGN.md ONLY — never invent
44
+ - ✅ Generate CSS custom properties (variables) or framework theme
45
+ - ✅ Ensure all components are accessible (A11y)
46
+
47
+ ## Non-Goals
48
+ - ❌ Invent tokens not in DESIGN.md (e.g., standard Tailwind defaults)
49
+ - ❌ Create duplicate tokens for same visual value
50
+ - ❌ Generate component library without token foundation
51
+
52
+ ---
53
+
54
+ ## Token Naming Convention
55
+
56
+ ```css
57
+ /* Colors — HSL always */
58
+ --color-[role]-[shade]: hsl(H, S%, L%);
59
+ /* Example: */
60
+ --color-primary-500: hsl(220, 80%, 55%);
61
+ --color-surface-100: hsl(220, 15%, 98%);
62
+
63
+ /* Spacing — scale-based */
64
+ --space-[n]: [n * base]px;
65
+ /* Example: */
66
+ --space-1: 4px; --space-2: 8px; --space-4: 16px;
67
+
68
+ /* Typography */
69
+ --font-[family]: '[Name]', fallback;
70
+ --font-size-[scale]: [value]rem;
71
+ --font-weight-[name]: [value];
72
+
73
+ /* Border Radius */
74
+ --radius-[size]: [value]px;
75
+
76
+ /* Shadows */
77
+ --shadow-[level]: [value];
78
+
79
+ /* Animation */
80
+ --duration-[speed]: [value]ms;
81
+ --ease-[type]: [cubic-bezier or keyword];
82
+
83
+ /* Z-index */
84
+ --z-[layer]: [value]; /* dropdown=100, modal=200, toast=300 */
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Dark/Light Mode Pattern
90
+ ```css
91
+ :root {
92
+ --color-background: hsl(0, 0%, 100%);
93
+ --color-text: hsl(220, 15%, 10%);
94
+ }
95
+
96
+ [data-theme="dark"] {
97
+ --color-background: hsl(220, 15%, 10%);
98
+ --color-text: hsl(220, 10%, 90%);
99
+ }
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Workflow
105
+
106
+ ### Phase 1 — Extract from DESIGN.md
107
+ 1. Read DESIGN.md → list all defined tokens
108
+ 2. Categorize: Colors / Spacing / Typography / Radius / Shadow / Animation
109
+
110
+ ### Phase 2 — Generate Token File
111
+ 1. Create `src/styles/tokens.css` (or equivalent)
112
+ 2. Apply naming convention above
113
+ 3. Add dark mode variants if DESIGN.md specifies
114
+
115
+ ### Phase 3 — Verify No Invented Tokens
116
+ 1. Cross-check: every generated token has source in DESIGN.md
117
+ 2. Flag any token that was "inferred" vs explicitly defined
118
+
119
+ **Decision:**
120
+ ```
121
+ IF all tokens sourced from DESIGN.md → EXIT: SUCCESS
122
+ IF some tokens inferred (MEDIUM confidence) → EXIT: PARTIAL, list them
123
+ ```
124
+
125
+ ---
126
+
127
+
128
+ ---
129
+
130
+ ## Priority Order
131
+
132
+ [Placeholder for Priority Order]
133
+
134
+
135
+ ---
136
+
137
+ ## Output Format
138
+
139
+ [Placeholder for Output Format]
140
+
141
+
142
+ ---
143
+ ## Exit Codes
144
+ | Code | Meaning | When |
145
+ |------|---------|------|
146
+ | SUCCESS | All tokens extracted from DESIGN.md, naming convention applied | All generated |
147
+ | PARTIAL | Some tokens inferred (not explicitly in DESIGN.md) | Inferred values used |
148
+ | BLOCKED | DESIGN.md missing or has no tokens | Cannot start |
149
+ | FAILED | Token conflicts detected (duplicate values, naming collision) | Conflict |
150
+
151
+ ---
152
+
153
+ ## Confidence Model
154
+ | Level | Condition | Action |
155
+ |-------|-----------|--------|
156
+ | HIGH | Token explicitly exists in DESIGN.md | Extract and map |
157
+ | MEDIUM | Token value inferred or estimated based on related tokens | Note assumption |
158
+ | LOW | Core scale missing entirely (e.g. no spacing definition) | EXIT: BLOCKED |
159
+
160
+ ---
161
+
162
+ ## Severity
163
+ | Level | Definition | Example |
164
+ |-------|-----------|---------|
165
+ | CRITICAL | Hardcoded values injected without being tokens | Missing the point of the system |
166
+ | HIGH | Token naming convention violated | `primary-color` instead of `--color-primary` |
167
+ | MEDIUM | Dark mode not supported | Hardcoded white background |
168
+ | LOW | Unused token generated | Extraneous variables |
169
+
170
+ ---
171
+
172
+ ## Evidence Format
173
+ ```
174
+ [SEVERITY] src/styles/tokens.css:LINE
175
+ Issue: [specific violation or gap]
176
+ Confidence: HIGH
177
+ Fix: [specific change]
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Retry Policy
183
+ ```
184
+ Token generation fails
185
+ └─ Check if naming collision or syntax error
186
+ ├─ Syntax error → fix CSS/SCSS format → retry
187
+ └─ Collision → deduplicate → retry
188
+ └─ Do NOT auto-retry more than 1 time
189
+ ```
190
+
191
+ ---
192
+
193
+ ## Escalation Rules
194
+ ```
195
+ BLOCKED: DESIGN.md missing or empty
196
+ Missing:
197
+ - Valid DESIGN.md with token specifications
198
+ Questions:
199
+ 1. Bạn có file design reference nào khác không?
200
+ Recommended Assumptions:
201
+ - Generate default Tailwind-like scale if requested
202
+ ```
203
+
204
+ ---
205
+
206
+ ## Handoff Contract
207
+ ### Consumes
208
+ ```json
209
+ {
210
+ "from": "user or project-bootstrap",
211
+ "required_fields": ["design_md_path"],
212
+ "optional_fields": ["css_framework", "output_format"]
213
+ }
214
+ ```
215
+ ### Produces
216
+ ```json
217
+ {
218
+ "to": "user or design-to-code",
219
+ "output_fields": ["token_file_path", "inferred_tokens", "exit_code"]
220
+ }
221
+ ```
222
+
223
+ ---
224
+
225
+
@@ -0,0 +1,361 @@
1
+ ---
2
+ name: qk-validation-gate
3
+ category: qa
4
+ version: 7.5.0
5
+ description: "Cổng kiểm tra chất lượng bắt buộc với ngưỡng pass/fail cụ thể — chặn đứng mọi mã nguồn lỗi."
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: run_commands
13
+ produces: [report]
14
+ consumes: [source-code]
15
+
16
+ token_budget:
17
+ max_files_read: 3
18
+ max_lines_per_read: 100
19
+ max_shell_commands: 2
20
+ stop_early: false # Must run all checks — cannot skip for token budget
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-validation-gate — Quality Gate
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
+ - [ ] Project has `package.json` with lint/test scripts (or equivalent for other runtimes)
39
+ - [ ] Target scope is specified (specific files, or whole project)
40
+
41
+ ```
42
+ On missing precondition:
43
+ EXIT: BLOCKED
44
+ Message: "Không tìm thấy script lint/test. Vui lòng chỉ định lệnh kiểm tra."
45
+ ```
46
+
47
+ skill_version: 7.5.0
48
+ runtime_version: 1
49
+ schema_version: 2
50
+ ---
51
+
52
+ ## Scope
53
+ - ✅ Run lint, type-check, tests, security audit in sequence
54
+ - ✅ Enforce pass/fail with concrete thresholds
55
+ - ✅ Report results with structured Evidence Format
56
+
57
+ ## Non-Goals
58
+ - ❌ Fix failing tests or lint errors (fixes go to qk-bug-resolution)
59
+ - ❌ Skip any gate check unless user explicitly allows
60
+ - ❌ Override failing thresholds with "ignore" flags
61
+
62
+ skill_version: 7.5.0
63
+ runtime_version: 1
64
+ schema_version: 2
65
+ ---
66
+
67
+ ## Pass/Fail Thresholds (Non-Negotiable)
68
+
69
+ ```yaml
70
+ lint:
71
+ errors: 0 # Zero tolerance for lint errors
72
+ warnings: allowed # Warnings do not block
73
+
74
+ typescript:
75
+ errors: 0 # Zero type errors
76
+
77
+ tests:
78
+ coverage_minimum: 80% # Overall coverage
79
+ unit_test_pass_rate: 100% # All unit tests must pass
80
+ integration_test_pass_rate: 100%
81
+
82
+ security:
83
+ critical_vulnerabilities: 0
84
+ high_vulnerabilities: 0
85
+ medium_vulnerabilities: 5 # Max allowed (review required)
86
+
87
+ build:
88
+ must_succeed: true
89
+ max_warnings: 5
90
+ bundle_size_limit: 500KB # Gzipped (if applicable)
91
+ ```
92
+
93
+ skill_version: 7.5.0
94
+ runtime_version: 1
95
+ schema_version: 2
96
+ ---
97
+
98
+ ## Priority Order
99
+
100
+ | Priority | Gate | Fail = Block? | Skip Allowed? |
101
+ |----------|------|---------------|---------------|
102
+ | P1 | Security audit (`npm audit`) | YES | Never |
103
+ | P2 | TypeScript / type check | YES | Never |
104
+ | P3 | Lint (errors only) | YES | Never |
105
+ | P4 | Unit tests | YES | Never |
106
+ | P5 | Integration tests | YES | Only if no integration tests exist |
107
+ | P6 | Coverage check | YES if < 80% | Never |
108
+ | P7 | Build | YES | Never |
109
+ | P8 | Bundle size | WARN only | Budget < 80% |
110
+
111
+ skill_version: 7.5.0
112
+ runtime_version: 1
113
+ schema_version: 2
114
+ ---
115
+
116
+ ## Workflow
117
+
118
+ ### Phase 1 — Security Gate (P1)
119
+
120
+ **Steps:**
121
+ 1. Run: `npm audit --audit-level=high` (or equivalent)
122
+ 2. Parse output for CRITICAL and HIGH
123
+
124
+ **Decision:**
125
+ ```
126
+ IF 0 critical + 0 high
127
+ → PASS P1 → go to Phase 2
128
+
129
+ ELSE IF critical or high found
130
+ → EXIT: FAILED immediately
131
+ → Report: exact package name, CVE, severity
132
+ ```
133
+
134
+ skill_version: 7.5.0
135
+ runtime_version: 1
136
+ schema_version: 2
137
+ ---
138
+
139
+ ### Phase 2 — Type & Lint Gate (P2+P3)
140
+
141
+ **Steps:**
142
+ 1. Run: `npm run typecheck` (or `tsc --noEmit`)
143
+ 2. Run: `npm run lint`
144
+ 3. Parse error counts
145
+
146
+ **Decision:**
147
+ ```
148
+ IF 0 type errors AND 0 lint errors
149
+ → PASS P2+P3 → go to Phase 3
150
+
151
+ ELSE IF type errors > 0
152
+ → EXIT: FAILED — list each error with file:line
153
+
154
+ ELSE IF lint errors > 0 (warnings OK)
155
+ → EXIT: FAILED — list errors
156
+ ```
157
+
158
+ skill_version: 7.5.0
159
+ runtime_version: 1
160
+ schema_version: 2
161
+ ---
162
+
163
+ ### Phase 3 — Test Gate (P4+P5+P6)
164
+
165
+ **Steps:**
166
+ 1. Run: `npm test -- --coverage` (or equivalent)
167
+ 2. Parse: pass/fail counts, coverage percentage
168
+
169
+ **Decision:**
170
+ ```
171
+ IF all tests pass AND coverage ≥ 80%
172
+ → PASS P4+P5+P6 → go to Phase 4
173
+
174
+ ELSE IF any test fails
175
+ → EXIT: FAILED — list failing test names
176
+
177
+ ELSE IF coverage < 80%
178
+ → EXIT: FAILED — show coverage report (file-level)
179
+ ```
180
+
181
+ **Retry Policy:**
182
+ ```
183
+ Test fail
184
+ └─ Check if it's a flaky test (run once more)
185
+ ├─ PASS on retry → note "flaky test detected", continue
186
+ └─ FAIL on retry → EXIT: FAILED — not flaky, real failure
187
+ ```
188
+
189
+ skill_version: 7.5.0
190
+ runtime_version: 1
191
+ schema_version: 2
192
+ ---
193
+
194
+ ### Phase 4 — Build Gate (P7)
195
+
196
+ **Steps:**
197
+ 1. Run: `npm run build`
198
+ 2. Check exit code + warnings count
199
+
200
+ **Decision:**
201
+ ```
202
+ IF build succeeds AND warnings ≤ 5
203
+ → EXIT: SUCCESS
204
+
205
+ ELSE IF build fails
206
+ → EXIT: FAILED
207
+
208
+ ELSE IF warnings > 5
209
+ → EXIT: PARTIAL — list warnings, continue to release if user confirms
210
+ ```
211
+
212
+ skill_version: 7.5.0
213
+ runtime_version: 1
214
+ schema_version: 2
215
+ ---
216
+
217
+ ## Confidence Model
218
+
219
+ | Level | Condition | Action |
220
+ |-------|-----------|--------|
221
+ | HIGH | Command exit code 0/non-0, numeric output | Report directly |
222
+ | MEDIUM | Inferred from partial output (truncated logs) | Note potential missing info |
223
+ | LOW | Script not found or output format unknown | EXIT: BLOCKED — clarify commands |
224
+
225
+ skill_version: 7.5.0
226
+ runtime_version: 1
227
+ schema_version: 2
228
+ ---
229
+
230
+ ## Severity
231
+
232
+ | Level | Definition | Example |
233
+ |-------|-----------|---------|
234
+ | CRITICAL | Security vulnerability in production dependency | CVE in auth library |
235
+ | HIGH | Type error or failing test | `Cannot read property of undefined` |
236
+ | MEDIUM | Coverage below threshold | 67% coverage (threshold 80%) |
237
+ | LOW | Build warning | Unused export |
238
+
239
+ skill_version: 7.5.0
240
+ runtime_version: 1
241
+ schema_version: 2
242
+ ---
243
+
244
+ ## Evidence Format
245
+
246
+ ```
247
+ [SEVERITY] Gate: [SECURITY|TYPE|LINT|TEST|COVERAGE|BUILD]
248
+ Command: [command that was run]
249
+ Result: [PASS | FAIL — exact output snippet]
250
+ Threshold: [what the threshold is]
251
+ Actual: [what was measured]
252
+ Fix: [where to look for the fix]
253
+ ```
254
+
255
+ **Example:**
256
+ ```
257
+ [HIGH] Gate: TEST
258
+ Command: npm test -- --coverage
259
+ Result: FAIL — 3 tests failed
260
+ Threshold: 100% pass rate
261
+ Actual: 47/50 tests passed
262
+ Fix: See failing tests: auth.test.ts:L45, user.test.ts:L23, order.test.ts:L89
263
+ ```
264
+
265
+ skill_version: 7.5.0
266
+ runtime_version: 1
267
+ schema_version: 2
268
+ ---
269
+
270
+ ## Escalation Rules
271
+
272
+ ```
273
+ BLOCKED: Cannot run validation
274
+ Missing:
275
+ - npm scripts (lint, test, build) in package.json
276
+ - OR test framework setup
277
+ Questions:
278
+ 1. Dùng lệnh gì để chạy lint? (e.g., eslint, biome, oxlint)
279
+ 2. Dùng lệnh gì để chạy test? (e.g., vitest, jest, playwright)
280
+ 3. Coverage threshold dự án quy định là bao nhiêu?
281
+ Recommended Assumptions:
282
+ - Standard: npm run lint + npm test + npm run build
283
+ ```
284
+
285
+ skill_version: 7.5.0
286
+ runtime_version: 1
287
+ schema_version: 2
288
+ ---
289
+
290
+ ## Handoff Contract
291
+
292
+ ### Consumes
293
+ ```json
294
+ {
295
+ "from": "user or qk-orchestrator",
296
+ "required_fields": ["project_root"],
297
+ "optional_fields": ["custom_commands", "custom_thresholds", "scope_files"]
298
+ }
299
+ ```
300
+
301
+ ### Produces
302
+ ```json
303
+ {
304
+ "to": "qk-production-release (if all pass)",
305
+ "output_fields": ["gate_results", "coverage_percent", "violations_list", "exit_code"]
306
+ }
307
+ ```
308
+
309
+ skill_version: 7.5.0
310
+ runtime_version: 1
311
+ schema_version: 2
312
+ ---
313
+
314
+ ## Output Format
315
+
316
+ ```
317
+ 🔒 Validation Gate Report
318
+ ─────────────────────────────────────────────────
319
+ Project: [path]
320
+
321
+ Gate Results:
322
+ P1 Security: [✅ PASS | ❌ FAIL — N critical, N high]
323
+ P2 TypeScript: [✅ PASS | ❌ FAIL — N errors]
324
+ P3 Lint: [✅ PASS | ❌ FAIL — N errors (N warnings)]
325
+ P4 Unit Tests: [✅ PASS | ❌ FAIL — N/N passed]
326
+ P5 Integration: [✅ PASS | ❌ FAIL | ⏭️ SKIPPED]
327
+ P6 Coverage: [✅ PASS (N%) | ❌ FAIL (N% < 80%)]
328
+ P7 Build: [✅ PASS | ❌ FAIL]
329
+
330
+ Failures (action required):
331
+ [SEVERITY] Gate — detail — Fix hint
332
+
333
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
334
+ ```
335
+
336
+ skill_version: 7.5.0
337
+ runtime_version: 1
338
+ schema_version: 2
339
+ ---
340
+
341
+
342
+ ---
343
+
344
+ ## Retry Policy
345
+
346
+ [Placeholder for Retry Policy]
347
+
348
+
349
+ ---
350
+ ## Exit Codes
351
+
352
+ | Code | Meaning | When |
353
+ |------|---------|------|
354
+ | SUCCESS | All gates passed, thresholds met | Safe to proceed to release |
355
+ | PARTIAL | Build pass, but warnings > 5 OR integration skipped | User confirmation required |
356
+ | BLOCKED | Cannot run — missing scripts or config | Setup required |
357
+ | FAILED | Any gate failed at threshold | Do NOT release — fix first |
358
+
359
+ ---
360
+
361
+