ai-developer-skill-os 7.5.1 → 8.1.4

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 (300) hide show
  1. package/.agents/docs/ARCHITECTURE.md +156 -0
  2. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +36 -0
  3. package/.agents/docs/MIGRATION-STATUS.md +35 -0
  4. package/.agents/docs/MIGRATION-V8.md +10 -0
  5. package/.agents/docs/ROADMAP-V8.2.md +78 -0
  6. package/.agents/docs/V8-CERTIFICATION.md +27 -0
  7. package/.agents/docs/VERSIONING.md +95 -0
  8. package/.agents/docs/decisions/ADR-001-v8-migration.md +58 -0
  9. package/.agents/docs/decisions/ADR-002-workflow-separation.md +50 -0
  10. package/.agents/docs/decisions/ADR-003-registry-generated.md +54 -0
  11. package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +27 -0
  12. package/.agents/docs/schemas/learning.schema.yml +69 -0
  13. package/.agents/docs/schemas/skill.schema.yml +188 -0
  14. package/.agents/docs/schemas/workflow.schema.yml +33 -0
  15. package/.agents/knowledge/design-intelligence/industries/ecommerce.md +3 -0
  16. package/.agents/knowledge/design-intelligence/industries/fintech.md +3 -0
  17. package/.agents/knowledge/design-intelligence/industries/healthcare.md +3 -0
  18. package/.agents/learnings/draft/README.md +37 -0
  19. package/.agents/registry/capability-graph.yml +500 -0
  20. package/.agents/registry/skills-index.yml +525 -0
  21. package/.agents/reports/RELEASE-CHECKLIST.md +29 -0
  22. package/.agents/reports/architecture-audit.md +13 -0
  23. package/.agents/reports/graph-health.md +20 -0
  24. package/.agents/reports/skill-audit.md +215 -0
  25. package/.agents/rules/coding.md +102 -0
  26. package/.agents/rules/command-safety.md +21 -0
  27. package/.agents/rules/global.md +135 -0
  28. package/.agents/rules/priorities.yml +24 -0
  29. package/.agents/rules/safety.md +84 -0
  30. package/.agents/rules/security.md +13 -0
  31. package/.agents/rules/skill-quality.md +14 -0
  32. package/.agents/skills/_template/SKILL.md +132 -0
  33. package/.agents/skills/qk-access-policy/SKILL.md +61 -5
  34. package/.agents/skills/qk-agent-observability/SKILL.md +73 -0
  35. package/.agents/skills/qk-ai-builder/SKILL.md +62 -5
  36. package/.agents/skills/qk-api-lifecycle/SKILL.md +59 -6
  37. package/.agents/skills/qk-bug-resolution/SKILL.md +64 -6
  38. package/.agents/skills/qk-context-loader/SKILL.md +63 -11
  39. package/.agents/skills/qk-data-lifecycle/SKILL.md +61 -5
  40. package/.agents/skills/qk-db-optimizer/SKILL.md +61 -5
  41. package/.agents/skills/qk-design-system-engineering/SKILL.md +112 -0
  42. package/.agents/skills/qk-devops-platform/SKILL.md +117 -0
  43. package/.agents/skills/qk-docs/SKILL.md +62 -6
  44. package/.agents/skills/qk-engineering-standard/SKILL.md +62 -12
  45. package/.agents/skills/qk-fe-api-integration/SKILL.md +60 -6
  46. package/.agents/skills/qk-feature-delivery/SKILL.md +65 -6
  47. package/.agents/skills/qk-frontend-architecture/SKILL.md +134 -0
  48. package/.agents/skills/qk-help/SKILL.md +245 -193
  49. package/.agents/skills/qk-orchestrator/SKILL.md +64 -11
  50. package/.agents/skills/qk-orchestrator/references/routing-table.md +1 -1
  51. package/.agents/skills/qk-product-specification/SKILL.md +130 -0
  52. package/.agents/skills/qk-production-release/SKILL.md +59 -6
  53. package/.agents/skills/qk-project-bootstrap/SKILL.md +66 -6
  54. package/.agents/skills/qk-project-health/SKILL.md +63 -6
  55. package/.agents/skills/qk-project-memory/SKILL.md +63 -6
  56. package/.agents/skills/qk-security-audit/SKILL.md +135 -0
  57. package/.agents/skills/qk-system-evolution/SKILL.md +63 -12
  58. package/.agents/skills/qk-test-engineering/SKILL.md +139 -0
  59. package/.agents/skills/qk-ui-audit/SKILL.md +60 -6
  60. package/.agents/skills/qk-ui-builder/SKILL.md +509 -446
  61. package/.agents/skills/qk-ui-system-builder/SKILL.md +61 -5
  62. package/.agents/skills/qk-validation-gate/SKILL.md +63 -11
  63. package/.agents/skills/qk-web-quality-gate/SKILL.md +114 -0
  64. package/.agents/workflows/_schema.yml +109 -0
  65. package/.agents/workflows/bug-resolution.yml +101 -0
  66. package/.agents/workflows/code-review.yml +77 -0
  67. package/.agents/workflows/documentation.yml +75 -0
  68. package/.agents/workflows/feature-delivery.yml +103 -0
  69. package/.agents/workflows/refactor.yml +81 -0
  70. package/.agents/workflows/research.yml +60 -0
  71. package/.agents/workflows/security-audit.yml +72 -0
  72. package/.agents/workflows/skill-evolution.yml +65 -0
  73. package/.agents/workflows/spec-driven-development.yml +57 -0
  74. package/CHANGELOG.md +91 -70
  75. package/README.md +44 -59
  76. package/bin/install.js +57 -309
  77. package/package.json +13 -2
  78. package/tooling/generate-evaluation-cases.cjs +44 -0
  79. package/tooling/generate-registry.js +157 -0
  80. package/tooling/run-aar.js +143 -0
  81. package/tooling/validate-graph.js +87 -0
  82. package/tooling/validate-skills.js +102 -0
  83. package/.agents/skills.json +0 -819
  84. package/.github/workflows/ci.yml +0 -56
  85. package/CLAUDE.md +0 -110
  86. package/_template/BEHAVIOR_SPEC.md +0 -96
  87. package/_template/examples/example-en.md +0 -49
  88. package/_template/examples/example-vi.md +0 -49
  89. package/add_lang.js +0 -21
  90. package/add_lang.py +0 -25
  91. package/add_sections.py +0 -53
  92. package/bin/lint.js +0 -123
  93. package/docs/CHI_TIET_SKILLS.md +0 -126
  94. package/docs/GOVERNANCE.md +0 -40
  95. package/docs/HUONG_DAN_SU_DUNG.md +0 -120
  96. package/docs/SPEC.md +0 -87
  97. package/docs/adr/0001-intent-based-architecture.md +0 -19
  98. package/docs/adr/0002-kernel-freeze.md +0 -21
  99. package/docs/adr/0003-risk-based-verification.md +0 -20
  100. package/docs/adr/0004-progressive-evidence.md +0 -19
  101. package/docs/skill-classification.md +0 -25
  102. package/fix_seeds.js +0 -22
  103. package/framework/KERNEL.md +0 -83
  104. package/framework/bias-library/cosmetic-refactor.md +0 -21
  105. package/framework/bias-library/enterprise-crud.md +0 -21
  106. package/framework/bias-library/fake-ui-slop.md +0 -20
  107. package/framework/bias-library/hallucinated-tools.md +0 -20
  108. package/framework/bias-library/missing-ui-states.md +0 -19
  109. package/framework/bias-library/over-indexing.md +0 -20
  110. package/framework/bias-library/swallow-errors.md +0 -19
  111. package/framework/bias-library/ui-only-security.md +0 -17
  112. package/framework/decision-primitives.md +0 -48
  113. package/framework/dial-library/complexity-budget.md +0 -13
  114. package/framework/dial-library/granularity.md +0 -13
  115. package/framework/dial-library/optimization-strategy.md +0 -13
  116. package/framework/dial-library/strictness.md +0 -13
  117. package/framework/rule-library/delegation-only.md +0 -9
  118. package/framework/rule-library/minimal-diff.md +0 -9
  119. package/framework/skill-schema.md +0 -310
  120. package/knowledge/backend/nodejs.md +0 -52
  121. package/knowledge/frontend/react.md +0 -81
  122. package/migrate-to-v6.js +0 -130
  123. package/migrate.js +0 -147
  124. package/migrate.py +0 -133
  125. package/migrate_all.cjs +0 -96
  126. package/patch.js +0 -15
  127. package/patch.py +0 -89
  128. package/patch2.py +0 -83
  129. package/rename.js +0 -64
  130. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
  131. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
  132. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
  133. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
  134. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
  135. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
  136. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
  137. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
  138. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
  139. package/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
  140. package/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
  141. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
  142. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
  143. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
  144. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
  145. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
  146. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
  147. package/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
  148. package/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
  149. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
  150. package/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
  151. package/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
  152. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
  153. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
  154. package/skills/_template/SKILL.md +0 -239
  155. package/skills/qk-access-policy/SKILL.md +0 -180
  156. package/skills/qk-ai-builder/SKILL.md +0 -216
  157. package/skills/qk-api-lifecycle/SKILL.md +0 -177
  158. package/skills/qk-bug-resolution/SKILL.md +0 -308
  159. package/skills/qk-context-loader/SKILL.md +0 -219
  160. package/skills/qk-data-lifecycle/SKILL.md +0 -193
  161. package/skills/qk-db-optimizer/SKILL.md +0 -197
  162. package/skills/qk-docs/SKILL.md +0 -199
  163. package/skills/qk-engineering-standard/SKILL.md +0 -352
  164. package/skills/qk-engineering-standard/rules/backend.md +0 -122
  165. package/skills/qk-engineering-standard/rules/database.md +0 -3
  166. package/skills/qk-engineering-standard/rules/frontend.md +0 -152
  167. package/skills/qk-engineering-standard/rules/security.md +0 -3
  168. package/skills/qk-engineering-standard/rules/testing.md +0 -3
  169. package/skills/qk-fe-api-integration/SKILL.md +0 -327
  170. package/skills/qk-feature-delivery/SKILL.md +0 -306
  171. package/skills/qk-help/SKILL.md +0 -194
  172. package/skills/qk-orchestrator/SKILL.md +0 -279
  173. package/skills/qk-orchestrator/references/routing-table.md +0 -78
  174. package/skills/qk-production-release/SKILL.md +0 -285
  175. package/skills/qk-project-bootstrap/SKILL.md +0 -236
  176. package/skills/qk-project-health/SKILL.md +0 -200
  177. package/skills/qk-project-memory/SKILL.md +0 -219
  178. package/skills/qk-system-evolution/SKILL.md +0 -282
  179. package/skills/qk-ui-audit/SKILL.md +0 -316
  180. package/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  181. package/skills/qk-ui-builder/SKILL.md +0 -447
  182. package/skills/qk-ui-builder/references/anti-patterns.md +0 -295
  183. package/skills/qk-ui-builder/references/color.md +0 -115
  184. package/skills/qk-ui-builder/references/component-cookbook.md +0 -1194
  185. package/skills/qk-ui-builder/references/copy.md +0 -250
  186. package/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
  187. package/skills/qk-ui-builder/references/layout-and-space.md +0 -111
  188. package/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
  189. package/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
  190. package/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
  191. package/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
  192. package/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
  193. package/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
  194. package/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
  195. package/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
  196. package/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
  197. package/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
  198. package/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
  199. package/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
  200. package/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
  201. package/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
  202. package/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
  203. package/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
  204. package/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
  205. package/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
  206. package/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
  207. package/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
  208. package/skills/qk-ui-builder/references/macrostructures.md +0 -38
  209. package/skills/qk-ui-builder/references/motion.md +0 -95
  210. package/skills/qk-ui-builder/references/responsive.md +0 -115
  211. package/skills/qk-ui-builder/references/slop-test.md +0 -135
  212. package/skills/qk-ui-builder/references/structure.md +0 -280
  213. package/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
  214. package/skills/qk-ui-builder/references/themes/carnival.md +0 -52
  215. package/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
  216. package/skills/qk-ui-builder/references/themes/editorial.md +0 -52
  217. package/skills/qk-ui-builder/references/themes/garden.md +0 -52
  218. package/skills/qk-ui-builder/references/themes/hum.md +0 -52
  219. package/skills/qk-ui-builder/references/themes/lumen.md +0 -52
  220. package/skills/qk-ui-builder/references/themes/midnight.md +0 -52
  221. package/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
  222. package/skills/qk-ui-builder/references/themes/playful.md +0 -52
  223. package/skills/qk-ui-builder/references/themes/specimen.md +0 -52
  224. package/skills/qk-ui-builder/references/themes/terminal.md +0 -52
  225. package/skills/qk-ui-builder/references/typography.md +0 -129
  226. package/skills/qk-ui-system-builder/SKILL.md +0 -222
  227. package/skills/qk-validation-gate/SKILL.md +0 -360
  228. package/skills.json +0 -820
  229. package/specs/contracts/behavior-contract.yaml +0 -40
  230. package/specs/expectations/qk-bug-resolution.yaml +0 -35
  231. package/specs/fixtures/user-payload.json +0 -12
  232. package/specs/regressions/api-integration-null-fields.yaml +0 -19
  233. package/specs/scenarios/fix-login-nullref.yaml +0 -3
  234. package/taste-skill/.claude-plugin/marketplace.json +0 -20
  235. package/taste-skill/.claude-plugin/plugin.json +0 -19
  236. package/taste-skill/.github/FUNDING.yml +0 -1
  237. package/taste-skill/.github/copilot-instructions.md +0 -11
  238. package/taste-skill/CHANGELOG.md +0 -111
  239. package/taste-skill/LICENSE +0 -21
  240. package/taste-skill/README.md +0 -212
  241. package/taste-skill/assets/.gitkeep +0 -0
  242. package/taste-skill/assets/readme-banner.webp +0 -0
  243. package/taste-skill/assets/readme-buttons/btn-agent-skills.webp +0 -0
  244. package/taste-skill/assets/readme-buttons/btn-changelog.webp +0 -0
  245. package/taste-skill/assets/readme-buttons/btn-mit.webp +0 -0
  246. package/taste-skill/assets/readme-buttons/btn-site.webp +0 -0
  247. package/taste-skill/assets/readme-buttons/btn-tools.webp +0 -0
  248. package/taste-skill/assets/readme-cta-tasteskill.svg +0 -5
  249. package/taste-skill/assets/sponsors/animations-dev.webp +0 -0
  250. package/taste-skill/assets/sponsors/emil-animations-dev.webp +0 -0
  251. package/taste-skill/assets/taste-skill-logo.png +0 -0
  252. package/taste-skill/assets/taste-skill-logo.webp +0 -0
  253. package/taste-skill/assets/vercel-oss-program-badge.svg +0 -44
  254. package/taste-skill/examples/floria-bottom.webp +0 -0
  255. package/taste-skill/examples/floria-full.webp +0 -0
  256. package/taste-skill/examples/floria-top.webp +0 -0
  257. package/taste-skill/research/README.md +0 -8
  258. package/taste-skill/research/laziness/README.md +0 -25
  259. package/taste-skill/research/laziness/findings/empirical-results.md +0 -58
  260. package/taste-skill/research/laziness/findings/references.md +0 -20
  261. package/taste-skill/research/laziness/remediation/architectural-patterns.md +0 -55
  262. package/taste-skill/research/laziness/remediation/parameter-tuning.md +0 -44
  263. package/taste-skill/research/laziness/remediation/prompt-engineering.md +0 -52
  264. package/taste-skill/research/laziness/remediation/reference-prompts.md +0 -79
  265. package/taste-skill/research/laziness/root-causes/cognitive-shortcuts.md +0 -23
  266. package/taste-skill/research/laziness/root-causes/output-limits.md +0 -39
  267. package/taste-skill/research/laziness/root-causes/rlhf-and-compute.md +0 -27
  268. package/taste-skill/research/laziness/root-causes/training-data-bias.md +0 -28
  269. package/taste-skill/scripts/build-emil-sponsor-row.mjs +0 -41
  270. package/taste-skill/scripts/convert-readme-assets-webp.mjs +0 -142
  271. package/taste-skill/scripts/process-readme-buttons.mjs +0 -108
  272. package/taste-skill/scripts/process-sponsor-badge.mjs +0 -83
  273. package/taste-skill/skill.sh +0 -25
  274. package/taste-skill/skills/brandkit/SKILL.md +0 -798
  275. package/taste-skill/skills/brutalist-skill/SKILL.md +0 -92
  276. package/taste-skill/skills/gpt-tasteskill/SKILL.md +0 -74
  277. package/taste-skill/skills/image-to-code-skill/SKILL.md +0 -1228
  278. package/taste-skill/skills/imagegen-frontend-mobile/SKILL.md +0 -1465
  279. package/taste-skill/skills/imagegen-frontend-web/SKILL.md +0 -987
  280. package/taste-skill/skills/llms.txt +0 -13
  281. package/taste-skill/skills/minimalist-skill/SKILL.md +0 -85
  282. package/taste-skill/skills/output-skill/SKILL.md +0 -49
  283. package/taste-skill/skills/redesign-skill/SKILL.md +0 -178
  284. package/taste-skill/skills/soft-skill/SKILL.md +0 -98
  285. package/taste-skill/skills/stitch-skill/DESIGN.md +0 -121
  286. package/taste-skill/skills/stitch-skill/SKILL.md +0 -184
  287. package/taste-skill/skills/taste-skill/SKILL.md +0 -1206
  288. package/taste-skill/skills/taste-skill-v1/SKILL.md +0 -226
  289. package/temp_fix.js +0 -61
  290. package/templates/DESIGN.md +0 -38
  291. package/templates/bug-report.md +0 -21
  292. package/templates/design-report.md +0 -21
  293. package/templates/feature-report.md +0 -20
  294. package/templates/review-report.md +0 -21
  295. package/templates/skill-template.md +0 -38
  296. package/tests/behavior-conformance.test.js +0 -154
  297. package/tests/install-script.test.js +0 -38
  298. package/tests/registry.test.js +0 -111
  299. package/update_template.js +0 -28
  300. package/vitest.config.js +0 -11
@@ -1,446 +1,509 @@
1
- ---
2
- name: qk-ui-builder
3
- category: frontend
4
- version: 7.5.0
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.0
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 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
- ---
1
+ ---
2
+ # ── Identity ───────────────────────────────────────────────
3
+ name: qk-ui-builder
4
+ version: 8.0.0
5
+ status: stable
6
+ 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."
7
+ platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
8
+
9
+ # ── V8: Classification ─────────────────────────────────────
10
+ type: capability
11
+
12
+ intent:
13
+ - ui-development
14
+ - frontend-design
15
+
16
+ complexity:
17
+ level: high
18
+ criteria:
19
+ files_affected: "1-10"
20
+ has_behavior_change: true
21
+ has_external_dependency: true
22
+ has_breaking_change: false
23
+
24
+ triggers:
25
+ - "build ui"
26
+ - "làm giao diện"
27
+ - "design ui"
28
+ - "css"
29
+ - "giao diện"
30
+
31
+ # ── V8: References ─────────────────────────────────────────
32
+ workflow: feature-delivery
33
+
34
+ rules:
35
+ - global
36
+ - coding
37
+
38
+ tools:
39
+ - filesystem
40
+ - terminal
41
+
42
+ related_skills:
43
+ - qk-ui-system-builder
44
+
45
+ knowledge_scope:
46
+ owns:
47
+ - ui-components
48
+ - styling execution
49
+ - component implementation
50
+ does_not_own:
51
+ - choose product visual direction
52
+ - define brand identity
53
+ - create design system rules
54
+ references:
55
+ - design-system
56
+
57
+ knowledge_dependencies:
58
+ - design-intelligence
59
+ - component-patterns
60
+
61
+ # ── V8: Verification ───────────────────────────────────────
62
+ verification:
63
+ required: true
64
+ strategy: feature
65
+
66
+ selection:
67
+ priority: medium
68
+ confidence_threshold: 0.80
69
+
70
+ examples: []
71
+ learnings: []
72
+
73
+ # ── V7 Runtime ─────────────────────────────────────────────
74
+ execution_mode: deterministic
75
+ cost: high
76
+ latency: slow
77
+ risk: low
78
+ side_effects: edit_files
79
+ produces: [code, report]
80
+ consumes: [design-md, design-asset, source-code, api-schema]
81
+
82
+ token_budget:
83
+ max_files_read: 5
84
+ max_lines_per_read: 150
85
+ max_shell_commands: 0
86
+ stop_early: false
87
+
88
+ exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
89
+ ---
90
+
91
+ # qk-ui-builder — UI Builder & Auditor
92
+
93
+ > **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
94
+
95
+ ---
96
+
97
+ ## Verbs
98
+
99
+ | Verb | Trigger | Behavior |
100
+ |------|---------|----------|
101
+ | *(default)* | `./qk-ui-builder` | Build or edit UI from design reference |
102
+ | `--audit` | `./qk-ui-builder --audit` | Score UI against anti-slop checklist, no edits |
103
+ | `--redesign` | `./qk-ui-builder --redesign` | Rebuild structure, keep copy/IA/brand |
104
+ | `--study` | `./qk-ui-builder --study <screenshot\|URL>` | Extract design DNA → `design.md` |
105
+
106
+ ---
107
+
108
+ ## Preconditions
109
+ - [ ] `DESIGN.md` exists with color tokens, spacing scale, typography
110
+ - [ ] For default/edit: design reference or target component specified
111
+ - [ ] For `--audit`: target UI file(s) specified
112
+ - [ ] For `--redesign`: target page + brand/copy context provided
113
+ - [ ] For `--study`: screenshot file or public URL provided
114
+
115
+ ```
116
+ On missing precondition:
117
+ EXIT: BLOCKED
118
+ Message: "[Missing item]. See Escalation Rules."
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Scope
124
+
125
+ ### Default verb
126
+ - ✅ Build new UI from Figma/ảnh/design reference
127
+ - Sửa text, thêm nội dung, map API key vào component
128
+ - ✅ Fix UI bug: padding, màu, hiển thị, responsive
129
+ - ✅ Generate strict UI từ DESIGN.md tokens
130
+
131
+ ### `--audit`
132
+ - ✅ Score UI against anti-slop checklist (58 gates)
133
+ - ✅ Detect generic AI aesthetics, hardcoded values
134
+ - ✅ Verify ARIA, contrast, responsive states
135
+
136
+ ### `--redesign`
137
+ - Thay đổi cấu trúc page, giữ nội dung/IA/brand
138
+ - Pick new macrostructure + theme fingerprint
139
+
140
+ ### `--study`
141
+ - Extract design DNA từ ảnh/Figma/URL
142
+ - Emit portable `design.md` for handoff
143
+
144
+ ## Non-Goals
145
+ - Invent design tokens not in DESIGN.md
146
+ - ❌ Use hardcoded hex colors, px sizes not from token system
147
+ - Copy generic Tailwind/Bootstrap templates
148
+ - Skip loading/error/empty states
149
+ - ❌ Clone paid templates or violate design copyright
150
+
151
+ ---
152
+
153
+ ## Priority Order
154
+
155
+ | Priority | Task | Skip Threshold |
156
+ |----------|------|----------------|
157
+ | P1 | HTML structure + semantic markup | Never |
158
+ | P2 | DESIGN.md token application (colors, spacing, typography) | Never |
159
+ | P3 | Interactive states (hover, focus, active) | Budget < 30% |
160
+ | P4 | Responsive breakpoints (mobile) | Budget < 50% |
161
+ | P5 | Loading / error / empty states | Budget < 60% |
162
+ | P6 | Animation / micro-interactions | Budget < 70% |
163
+ | P7 | ARIA roles + keyboard navigation | Budget < 80% |
164
+
165
+ ---
166
+
167
+ ## Workflow
168
+
169
+ ### Phase 1 — Route by Verb
170
+
171
+ **Decision:**
172
+ ```
173
+ IF --audit
174
+ → Load slop-test gates → go to Audit phase
175
+
176
+ ELSE IF --redesign
177
+ Load macrostructure index pick new fingerprint → go to Build phase
178
+
179
+ ELSE IF --study
180
+ → Load study protocol → extract DNA → emit design.md → EXIT: SUCCESS
181
+
182
+ ELSE (default: build/edit)
183
+ go to Build phase
184
+ ```
185
+
186
+ ---
187
+
188
+ ### Phase 2 — Load Design Context (default/edit/redesign only)
189
+
190
+ **Load Discipline (MANDATORY):**
191
+
192
+ ```
193
+ EAGER (load every build):
194
+ - typography.md
195
+ - color.md
196
+ - layout-and-space.md
197
+ - copy.md
198
+ - anti-patterns.md
199
+
200
+ INDEX-THEN-PICK (load index, choose ONE):
201
+ - macrostructures.md → pick ONE → load only that file
202
+
203
+ CONDITIONAL (load only if needed):
204
+ - themes/[name].md only if project has locked theme
205
+ - motion.md only if animation requested
206
+ - interaction-and-states.md → only if complex interactions
207
+ - responsive.md → only if mobile breakpoints needed
208
+ - component-cookbook.md → only if building known archetype
209
+
210
+ LOAD-AT-END (post-emit only):
211
+ - slop-test.md run AFTER build completes
212
+ ```
213
+
214
+ **Steps:**
215
+ 1. Read `DESIGN.md` extract tokens: colors (HSL), spacing, fonts, radius, shadows
216
+ 2. Load eager references (typography, color, layout, copy, anti-patterns)
217
+ 3. Check `.agents/memory/ui-diversification.json` for last theme/macrostructure used
218
+ 4. If redesign: read `references/macrostructures.md` index pick ONE different from last → load only that file
219
+ 5. If project has locked theme: load `references/themes/[name].md`
220
+
221
+ **Diversification rule:** consecutive builds must use different theme + macrostructure from `ui-diversification.json`.
222
+
223
+ ---
224
+
225
+ ### Phase 3 — Build or Edit
226
+
227
+ **Steps:**
228
+ 1. For new UI: create component from design reference using DESIGN.md tokens
229
+ 2. For edit: modify existing component per user request (text, API mapping, layout)
230
+ 3. Apply theme + macrostructure fingerprint
231
+ 4. Handle all 3 UI states: Loading, Success, Error
232
+
233
+ **API mapping rule:**
234
+ - Bind API response to component props via generated TypeScript interfaces
235
+ - NEVER hardcode API URLs in component
236
+ - Use existing API client pattern from project
237
+
238
+ ---
239
+
240
+ ### Phase 4 — Slop Test (post-emit)
241
+
242
+ Load `references/slop-test.md` and verify all 58 gates pass.
243
+
244
+ ```
245
+ IF all 58 gates pass
246
+ → EXIT: SUCCESS
247
+
248
+ ELSE IF critical gate fails (hardcoded purple gradient, banned font)
249
+ → EXIT: FAILED — rebuild required
250
+ ```
251
+ 1. Read `references/macrostructures.md` (index only)
252
+ 2. Pick ONE macrostructure different from last build
253
+ 3. Load only that macrostructure file from `references/macrostructures/`
254
+
255
+ ---
256
+
257
+ ### Phase 3 Build or Edit
258
+
259
+ **Steps:**
260
+ 1. For new UI: create component from design reference using DESIGN.md tokens
261
+ 2. For edit: modify existing component per user request (text, API mapping, layout)
262
+ 3. Apply theme + macrostructure fingerprint
263
+ 4. Handle all 3 UI states: Loading, Success, Error
264
+
265
+ **API mapping rule:**
266
+ - Bind API response to component props via generated TypeScript interfaces
267
+ - NEVER hardcode API URLs in component
268
+ - Use existing API client pattern from project
269
+
270
+ ---
271
+
272
+ ### Phase 4 — Self-Audit (Anti-Slop Check)
273
+
274
+ **Checklist (must pass ALL):**
275
+ - [ ] No hardcoded colors — only DESIGN.md tokens
276
+ - [ ] No font-size in px without token — use rem/token
277
+ - [ ] No `margin: auto` soup — use proper grid/flex
278
+ - [ ] All interactive elements have hover + focus state
279
+ - [ ] Mobile viewport works (no horizontal overflow)
280
+ - [ ] No `!important` overrides (except resets)
281
+ - [ ] No inline styles except dynamic values
282
+ - [ ] Loading state implemented (skeleton or spinner)
283
+ - [ ] Error state implemented (clear message)
284
+ - [ ] Empty state implemented (helpful illustration/text)
285
+
286
+ **Decision:**
287
+ ```
288
+ IF all checks pass
289
+ EXIT: SUCCESS
290
+
291
+ ELSE IF 1–2 minor fails
292
+ → Fix immediately, EXIT: SUCCESS
293
+
294
+ ELSE IF > 2 fails OR hardcoded colors found
295
+ Fix all, re-audit, EXIT: PARTIAL if still one gap
296
+ ```
297
+
298
+ ---
299
+
300
+ ### Phase 5 — Slop Test (post-emit)
301
+
302
+ Load `references/slop-test.md` and verify all 58 gates pass.
303
+
304
+ ```
305
+ IF all 58 gates pass
306
+ EXIT: SUCCESS
307
+
308
+ ELSE IF critical gate fails (hardcoded purple gradient, banned font)
309
+ EXIT: FAILED rebuild required
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Confidence Model
315
+
316
+ | Level | Condition | Action |
317
+ |-------|-----------|--------|
318
+ | HIGH | DESIGN.md complete, design reference clear, API schema provided | Build directly |
319
+ | MEDIUM | Some tokens missing or design reference ambiguous | Note gaps, proceed |
320
+ | LOW | DESIGN.md missing or design reference too vague | EXIT: BLOCKED |
321
+
322
+ ---
323
+
324
+ ## Severity
325
+
326
+ | Level | Definition | Example |
327
+ |-------|-----------|---------|
328
+ | CRITICAL | Hardcoded API URL in component, banned font used | `axios.get("http://localhost")` in JSX |
329
+ | HIGH | Missing error/loading state, hardcoded color not in DESIGN.md | No 500 handler |
330
+ | MEDIUM | Missing hover state, spacing off by 1 unit | Button without focus ring |
331
+ | LOW | Comment missing, minor naming inconsistency | `temp` variable name |
332
+
333
+ ---
334
+
335
+ ## Evidence Format
336
+
337
+ ```
338
+ [SEVERITY] path/to/Component.tsx:LINE
339
+ Category: [TOKEN|SEMANTIC|INTERACTION|RESPONSIVE|STATE|ARIA|SLOP]
340
+ Reason: [specific violation]
341
+ Confidence: HIGH
342
+ Fix: [one-line actionable suggestion]
343
+ Points: -N pts (for audit mode)
344
+ ```
345
+
346
+ ---
347
+
348
+ ## Retry Policy
349
+
350
+ ```
351
+ Build/Edit fails
352
+ └─ Check failure type
353
+ ├─ Token missing → infer from DESIGN.md, note assumption
354
+ └─ Design reference unclear → EXIT: BLOCKED, ask user
355
+
356
+ Slop test fails
357
+ └─ Critical gate (hardcoded color, banned font)
358
+ └─ EXIT: FAILED — do not ship, rebuild required
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Escalation Rules
364
+
365
+ ```
366
+ BLOCKED: DESIGN.md missing or design reference unclear
367
+ Missing:
368
+ - DESIGN.md with color/spacing/typography tokens
369
+ - Design reference (Figma/ảnh/wireframe)
370
+ - For --study: screenshot or public URL
371
+ Questions:
372
+ 1. Bạn có DESIGN.md chưa? (chạy qk-project-bootstrap nếu chưa)
373
+ 2. Design reference là gì? (Figma link / ảnh / mô tả)
374
+ 3. Cho phép tạo DESIGN.md mới không?
375
+ Recommended Assumptions (if proceeding):
376
+ - Use industry-standard: 8px spacing, Inter font, neutral gray palette
377
+ ```
378
+
379
+ ---
380
+
381
+ ## Handoff Contract
382
+
383
+ ### Consumes
384
+ ```json
385
+ {
386
+ "from": "user or qk-orchestrator",
387
+ "required_fields": ["verb", "design_md_path"],
388
+ "optional_fields": ["design_reference", "target_component", "api_schema", "framework"]
389
+ }
390
+ ```
391
+
392
+ ### Produces
393
+ ```json
394
+ {
395
+ "to": "user or qk-ui-audit (if --audit)",
396
+ "output_fields": ["component_files", "tokens_used", "states_implemented", "slop_test_result", "exit_code"]
397
+ }
398
+ ```
399
+
400
+ ---
401
+
402
+ ## Output Format
403
+
404
+ ### Default (build/edit)
405
+ ```
406
+ 🎨 UI Builder
407
+ ─────────────────────────────────────────────────
408
+ Component: [ComponentName]
409
+ Theme: [theme name from references/themes/]
410
+ Macrostructure: [macrostructure name]
411
+
412
+ States implemented:
413
+ Loading / ✅ Success / ✅ Error
414
+ Hover / ✅ Focus / ✅ Active / ✅ Disabled
415
+
416
+ Tokens used:
417
+ - --color-primary-500, --space-4, --font-size-base
418
+
419
+ API Mapping:
420
+ [endpoint prop] mapped
421
+
422
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
423
+ ```
424
+
425
+ ### `--audit`
426
+ ```
427
+ 🎨 UI Audit Report
428
+ ─────────────────────────────────────────────────
429
+ Component: [path/to/component]
430
+ Theme: [N/A read-only audit]
431
+
432
+ Scores:
433
+ P1 Accessibility: [X/15]
434
+ P2 Layout: [X/15]
435
+ P3 Typography: [X/15]
436
+ P4 Interactions: [X/15]
437
+ P5 Anti-Slop: [X/15]
438
+ P6 Performance: [X/10]
439
+ ─────────────────
440
+ Total: [X/85] → [PASS ≥ 90% | FAIL < 90%]
441
+
442
+ Violations (top priority first):
443
+ [SEVERITY] file:LINEreason — Fix: suggestion (-Xpts)
444
+
445
+ Verdict: [PASS | FAIL — requires redesign]
446
+ Exit Code: [SUCCESS | PARTIAL | FAILED]
447
+ ```
448
+
449
+ ### `--redesign`
450
+ ```
451
+ 🎨 UI Redesign
452
+ ─────────────────────────────────────────────────
453
+ Component: [ComponentName]
454
+ Old macrostructure: [old name]
455
+ New macrostructure: [new name]
456
+ Old theme: [old theme]
457
+ New theme: [new theme]
458
+
459
+ Kept:
460
+ - Copy/IA structure
461
+ - Brand colors
462
+ - Primary user flow
463
+
464
+ Changed:
465
+ - Layout fingerprint
466
+ - Section ordering
467
+ - Visual hierarchy
468
+
469
+ Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
470
+ ```
471
+
472
+ ### `--study`
473
+ ```
474
+ 🎨 Design Study
475
+ ─────────────────────────────────────────────────
476
+ Source: [screenshot path | URL]
477
+ DNA extracted:
478
+ - Macrostructure: [name]
479
+ - Theme axes: [paper band / display style / accent hue]
480
+ - Type pairing: [font1 + font2]
481
+ - Color anchor: [primary / secondary / accent]
482
+
483
+ Output: design.md written to [path]
484
+ Next: ./qk-ui-builder --redesign with extracted DNA
485
+
486
+ Exit Code: [SUCCESS | BLOCKED]
487
+ ```
488
+
489
+ ---
490
+
491
+ ## Exit Codes
492
+
493
+ | Code | Meaning | When |
494
+ |------|---------|------|
495
+ | SUCCESS | Build/edit/audit/study completed successfully | All checks passed |
496
+ | PARTIAL | Built with minor gaps or incomplete audit | Budget exhausted or 1-2 fixes pending |
497
+ | BLOCKED | Missing DESIGN.md, design reference, or screenshot | Cannot proceed |
498
+ | FAILED | Slop test critical failure or architectural conflict | Rebuild required |
499
+
500
+ ---
501
+
502
+ ## References
503
+
504
+ - `references/themes/` — Theme catalog (20 themes)
505
+ - `references/macrostructures/` — 21 page shapes
506
+ - `references/slop-test.md` — 58 anti-slop gates
507
+ - `references/anti-patterns.md` — Named tells to avoid
508
+
509
+ ---