ai-developer-skill-os 7.5.0 → 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 (377) hide show
  1. package/.agents/CHANGELOG.md +2 -1
  2. package/.agents/README.md +51 -10
  3. package/.agents/docs/ARCHITECTURE.md +156 -0
  4. package/.agents/docs/CHI_TIET_SKILLS.md +2 -1
  5. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +36 -0
  6. package/.agents/docs/MIGRATION-STATUS.md +35 -0
  7. package/.agents/docs/MIGRATION-V8.md +10 -0
  8. package/.agents/docs/ROADMAP-V8.2.md +78 -0
  9. package/.agents/docs/V8-CERTIFICATION.md +27 -0
  10. package/.agents/docs/VERSIONING.md +95 -0
  11. package/.agents/docs/decisions/ADR-001-v8-migration.md +58 -0
  12. package/.agents/docs/decisions/ADR-002-workflow-separation.md +50 -0
  13. package/.agents/docs/decisions/ADR-003-registry-generated.md +54 -0
  14. package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +27 -0
  15. package/.agents/docs/schemas/learning.schema.yml +69 -0
  16. package/.agents/docs/schemas/skill.schema.yml +188 -0
  17. package/.agents/docs/schemas/workflow.schema.yml +33 -0
  18. package/.agents/knowledge/design-intelligence/industries/ecommerce.md +3 -0
  19. package/.agents/knowledge/design-intelligence/industries/fintech.md +3 -0
  20. package/.agents/knowledge/design-intelligence/industries/healthcare.md +3 -0
  21. package/.agents/learnings/draft/README.md +37 -0
  22. package/.agents/registry/capability-graph.yml +500 -0
  23. package/.agents/registry/skills-index.yml +525 -0
  24. package/.agents/reports/RELEASE-CHECKLIST.md +29 -0
  25. package/.agents/reports/architecture-audit.md +13 -0
  26. package/.agents/reports/graph-health.md +20 -0
  27. package/.agents/reports/skill-audit.md +215 -0
  28. package/.agents/rules/coding.md +102 -0
  29. package/.agents/rules/command-safety.md +21 -0
  30. package/.agents/rules/global.md +135 -0
  31. package/.agents/rules/priorities.yml +24 -0
  32. package/.agents/rules/safety.md +84 -0
  33. package/.agents/rules/security.md +13 -0
  34. package/.agents/rules/skill-quality.md +14 -0
  35. package/.agents/skills/_template/SKILL.md +132 -0
  36. package/.agents/skills/qk-access-policy/SKILL.md +61 -5
  37. package/.agents/skills/qk-agent-observability/SKILL.md +73 -0
  38. package/.agents/skills/qk-ai-builder/SKILL.md +62 -5
  39. package/.agents/skills/qk-api-lifecycle/SKILL.md +59 -6
  40. package/.agents/skills/qk-bug-resolution/SKILL.md +64 -6
  41. package/.agents/skills/qk-context-loader/SKILL.md +63 -11
  42. package/.agents/skills/qk-data-lifecycle/SKILL.md +61 -5
  43. package/.agents/skills/qk-db-optimizer/SKILL.md +61 -5
  44. package/.agents/skills/qk-design-system-engineering/SKILL.md +112 -0
  45. package/.agents/skills/qk-devops-platform/SKILL.md +117 -0
  46. package/.agents/skills/qk-docs/SKILL.md +62 -6
  47. package/.agents/skills/qk-engineering-standard/SKILL.md +62 -12
  48. package/.agents/skills/qk-fe-api-integration/SKILL.md +60 -6
  49. package/.agents/skills/qk-feature-delivery/SKILL.md +65 -6
  50. package/.agents/skills/qk-frontend-architecture/SKILL.md +134 -0
  51. package/.agents/skills/qk-help/SKILL.md +245 -193
  52. package/.agents/skills/qk-orchestrator/SKILL.md +67 -13
  53. package/.agents/skills/qk-orchestrator/references/routing-table.md +4 -3
  54. package/.agents/skills/qk-product-specification/SKILL.md +130 -0
  55. package/.agents/skills/qk-production-release/SKILL.md +59 -6
  56. package/.agents/skills/qk-project-bootstrap/SKILL.md +68 -7
  57. package/.agents/skills/qk-project-health/SKILL.md +63 -6
  58. package/.agents/skills/qk-project-memory/SKILL.md +109 -6
  59. package/.agents/skills/qk-security-audit/SKILL.md +135 -0
  60. package/.agents/skills/qk-system-evolution/SKILL.md +63 -12
  61. package/.agents/skills/qk-test-engineering/SKILL.md +139 -0
  62. package/.agents/skills/qk-ui-audit/SKILL.md +63 -8
  63. package/.agents/skills/qk-ui-builder/SKILL.md +509 -0
  64. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +295 -0
  65. package/.agents/skills/qk-ui-builder/references/color.md +115 -0
  66. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
  67. package/.agents/skills/qk-ui-builder/references/copy.md +250 -0
  68. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
  69. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +111 -0
  70. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
  71. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
  72. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
  73. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
  74. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
  75. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
  76. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
  77. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
  78. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
  79. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
  80. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
  81. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
  82. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
  83. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
  84. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
  85. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
  86. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
  87. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
  88. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
  89. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
  90. package/.agents/skills/qk-ui-builder/references/macrostructures.md +38 -0
  91. package/.agents/skills/qk-ui-builder/references/motion.md +95 -0
  92. package/.agents/skills/qk-ui-builder/references/responsive.md +115 -0
  93. package/.agents/skills/qk-ui-builder/references/slop-test.md +135 -0
  94. package/.agents/skills/qk-ui-builder/references/structure.md +280 -0
  95. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
  96. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +52 -0
  97. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
  98. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +52 -0
  99. package/.agents/skills/qk-ui-builder/references/themes/garden.md +52 -0
  100. package/.agents/skills/qk-ui-builder/references/themes/hum.md +52 -0
  101. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +52 -0
  102. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +52 -0
  103. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
  104. package/.agents/skills/qk-ui-builder/references/themes/playful.md +52 -0
  105. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +52 -0
  106. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +52 -0
  107. package/.agents/skills/qk-ui-builder/references/typography.md +129 -0
  108. package/.agents/skills/qk-ui-system-builder/SKILL.md +61 -5
  109. package/.agents/skills/qk-validation-gate/SKILL.md +63 -11
  110. package/.agents/skills/qk-web-quality-gate/SKILL.md +114 -0
  111. package/.agents/workflows/_schema.yml +109 -0
  112. package/.agents/workflows/bug-resolution.yml +101 -0
  113. package/.agents/workflows/code-review.yml +77 -0
  114. package/.agents/workflows/documentation.yml +75 -0
  115. package/.agents/workflows/feature-delivery.yml +103 -0
  116. package/.agents/workflows/refactor.yml +81 -0
  117. package/.agents/workflows/research.yml +60 -0
  118. package/.agents/workflows/security-audit.yml +72 -0
  119. package/.agents/workflows/skill-evolution.yml +65 -0
  120. package/.agents/workflows/spec-driven-development.yml +57 -0
  121. package/CHANGELOG.md +91 -69
  122. package/README.md +50 -45
  123. package/bin/install.js +57 -309
  124. package/package.json +14 -3
  125. package/tooling/generate-evaluation-cases.cjs +44 -0
  126. package/tooling/generate-registry.js +157 -0
  127. package/tooling/run-aar.js +143 -0
  128. package/tooling/validate-graph.js +87 -0
  129. package/tooling/validate-skills.js +102 -0
  130. package/.agents/_template/BEHAVIOR_SPEC.md +0 -96
  131. package/.agents/_template/examples/example-en.md +0 -49
  132. package/.agents/_template/examples/example-vi.md +0 -49
  133. package/.agents/skills/qk-design-to-code/SKILL.md +0 -285
  134. package/.agents/skills.json +0 -819
  135. package/.github/workflows/ci.yml +0 -56
  136. package/.qk-ai-skill-os/CHANGELOG.md +0 -69
  137. package/.qk-ai-skill-os/LICENSE +0 -21
  138. package/.qk-ai-skill-os/README.md +0 -59
  139. package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +0 -96
  140. package/.qk-ai-skill-os/_template/examples/example-en.md +0 -49
  141. package/.qk-ai-skill-os/_template/examples/example-vi.md +0 -49
  142. package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +0 -125
  143. package/.qk-ai-skill-os/docs/GOVERNANCE.md +0 -40
  144. package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +0 -120
  145. package/.qk-ai-skill-os/docs/SPEC.md +0 -87
  146. package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +0 -19
  147. package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +0 -21
  148. package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +0 -20
  149. package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +0 -19
  150. package/.qk-ai-skill-os/docs/skill-classification.md +0 -25
  151. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
  152. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
  153. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
  154. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
  155. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
  156. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
  157. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
  158. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
  159. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
  160. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
  161. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
  162. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
  163. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
  164. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
  165. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
  166. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
  167. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
  168. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
  169. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
  170. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
  171. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
  172. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
  173. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
  174. package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
  175. package/.qk-ai-skill-os/skills/_template/SKILL.md +0 -238
  176. package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +0 -179
  177. package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +0 -221
  178. package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +0 -176
  179. package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +0 -307
  180. package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +0 -218
  181. package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +0 -192
  182. package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +0 -196
  183. package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +0 -291
  184. package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +0 -198
  185. package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +0 -351
  186. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +0 -122
  187. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +0 -3
  188. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +0 -152
  189. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +0 -3
  190. package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +0 -3
  191. package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +0 -326
  192. package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +0 -305
  193. package/.qk-ai-skill-os/skills/qk-help/SKILL.md +0 -193
  194. package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +0 -277
  195. package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +0 -77
  196. package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +0 -290
  197. package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +0 -240
  198. package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +0 -199
  199. package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +0 -172
  200. package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +0 -285
  201. package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +0 -314
  202. package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  203. package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +0 -225
  204. package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +0 -361
  205. package/.qk-ai-skill-os/skills.json +0 -819
  206. package/CLAUDE.md +0 -110
  207. package/_template/BEHAVIOR_SPEC.md +0 -96
  208. package/_template/examples/example-en.md +0 -49
  209. package/_template/examples/example-vi.md +0 -49
  210. package/add_lang.js +0 -21
  211. package/add_lang.py +0 -25
  212. package/add_sections.py +0 -53
  213. package/bin/lint.js +0 -122
  214. package/docs/CHI_TIET_SKILLS.md +0 -125
  215. package/docs/GOVERNANCE.md +0 -40
  216. package/docs/HUONG_DAN_SU_DUNG.md +0 -120
  217. package/docs/SPEC.md +0 -87
  218. package/docs/adr/0001-intent-based-architecture.md +0 -19
  219. package/docs/adr/0002-kernel-freeze.md +0 -21
  220. package/docs/adr/0003-risk-based-verification.md +0 -20
  221. package/docs/adr/0004-progressive-evidence.md +0 -19
  222. package/docs/skill-classification.md +0 -25
  223. package/fix_seeds.js +0 -22
  224. package/framework/KERNEL.md +0 -83
  225. package/framework/bias-library/cosmetic-refactor.md +0 -21
  226. package/framework/bias-library/enterprise-crud.md +0 -21
  227. package/framework/bias-library/fake-ui-slop.md +0 -20
  228. package/framework/bias-library/hallucinated-tools.md +0 -20
  229. package/framework/bias-library/missing-ui-states.md +0 -19
  230. package/framework/bias-library/over-indexing.md +0 -20
  231. package/framework/bias-library/swallow-errors.md +0 -19
  232. package/framework/bias-library/ui-only-security.md +0 -17
  233. package/framework/decision-primitives.md +0 -47
  234. package/framework/dial-library/complexity-budget.md +0 -13
  235. package/framework/dial-library/granularity.md +0 -13
  236. package/framework/dial-library/optimization-strategy.md +0 -13
  237. package/framework/dial-library/strictness.md +0 -13
  238. package/framework/rule-library/delegation-only.md +0 -9
  239. package/framework/rule-library/minimal-diff.md +0 -9
  240. package/framework/skill-schema.md +0 -310
  241. package/knowledge/backend/nodejs.md +0 -52
  242. package/knowledge/frontend/react.md +0 -81
  243. package/migrate-to-v6.js +0 -130
  244. package/migrate.js +0 -147
  245. package/migrate.py +0 -133
  246. package/migrate_all.cjs +0 -96
  247. package/patch.js +0 -15
  248. package/patch.py +0 -89
  249. package/patch2.py +0 -83
  250. package/rename.js +0 -64
  251. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
  252. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
  253. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
  254. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
  255. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
  256. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
  257. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
  258. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
  259. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
  260. package/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
  261. package/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
  262. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
  263. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
  264. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
  265. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
  266. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
  267. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
  268. package/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
  269. package/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
  270. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
  271. package/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
  272. package/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
  273. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
  274. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
  275. package/skills/_template/SKILL.md +0 -238
  276. package/skills/qk-access-policy/SKILL.md +0 -179
  277. package/skills/qk-ai-builder/SKILL.md +0 -215
  278. package/skills/qk-api-lifecycle/SKILL.md +0 -176
  279. package/skills/qk-bug-resolution/SKILL.md +0 -307
  280. package/skills/qk-context-loader/SKILL.md +0 -218
  281. package/skills/qk-data-lifecycle/SKILL.md +0 -192
  282. package/skills/qk-db-optimizer/SKILL.md +0 -196
  283. package/skills/qk-design-to-code/SKILL.md +0 -285
  284. package/skills/qk-docs/SKILL.md +0 -198
  285. package/skills/qk-engineering-standard/SKILL.md +0 -351
  286. package/skills/qk-engineering-standard/rules/backend.md +0 -122
  287. package/skills/qk-engineering-standard/rules/database.md +0 -3
  288. package/skills/qk-engineering-standard/rules/frontend.md +0 -152
  289. package/skills/qk-engineering-standard/rules/security.md +0 -3
  290. package/skills/qk-engineering-standard/rules/testing.md +0 -3
  291. package/skills/qk-fe-api-integration/SKILL.md +0 -326
  292. package/skills/qk-feature-delivery/SKILL.md +0 -305
  293. package/skills/qk-help/SKILL.md +0 -193
  294. package/skills/qk-orchestrator/SKILL.md +0 -277
  295. package/skills/qk-orchestrator/references/routing-table.md +0 -77
  296. package/skills/qk-production-release/SKILL.md +0 -284
  297. package/skills/qk-project-bootstrap/SKILL.md +0 -234
  298. package/skills/qk-project-health/SKILL.md +0 -199
  299. package/skills/qk-project-memory/SKILL.md +0 -172
  300. package/skills/qk-system-evolution/SKILL.md +0 -281
  301. package/skills/qk-ui-audit/SKILL.md +0 -314
  302. package/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  303. package/skills/qk-ui-system-builder/SKILL.md +0 -221
  304. package/skills/qk-validation-gate/SKILL.md +0 -359
  305. package/skills.json +0 -819
  306. package/specs/contracts/behavior-contract.yaml +0 -40
  307. package/specs/expectations/qk-bug-resolution.yaml +0 -35
  308. package/specs/fixtures/user-payload.json +0 -12
  309. package/specs/regressions/api-integration-null-fields.yaml +0 -19
  310. package/specs/scenarios/fix-login-nullref.yaml +0 -3
  311. package/taste-skill/.claude-plugin/marketplace.json +0 -20
  312. package/taste-skill/.claude-plugin/plugin.json +0 -19
  313. package/taste-skill/.github/FUNDING.yml +0 -1
  314. package/taste-skill/.github/copilot-instructions.md +0 -11
  315. package/taste-skill/CHANGELOG.md +0 -111
  316. package/taste-skill/LICENSE +0 -21
  317. package/taste-skill/README.md +0 -212
  318. package/taste-skill/assets/.gitkeep +0 -0
  319. package/taste-skill/assets/readme-banner.webp +0 -0
  320. package/taste-skill/assets/readme-buttons/btn-agent-skills.webp +0 -0
  321. package/taste-skill/assets/readme-buttons/btn-changelog.webp +0 -0
  322. package/taste-skill/assets/readme-buttons/btn-mit.webp +0 -0
  323. package/taste-skill/assets/readme-buttons/btn-site.webp +0 -0
  324. package/taste-skill/assets/readme-buttons/btn-tools.webp +0 -0
  325. package/taste-skill/assets/readme-cta-tasteskill.svg +0 -5
  326. package/taste-skill/assets/sponsors/animations-dev.webp +0 -0
  327. package/taste-skill/assets/sponsors/emil-animations-dev.webp +0 -0
  328. package/taste-skill/assets/taste-skill-logo.png +0 -0
  329. package/taste-skill/assets/taste-skill-logo.webp +0 -0
  330. package/taste-skill/assets/vercel-oss-program-badge.svg +0 -44
  331. package/taste-skill/examples/floria-bottom.webp +0 -0
  332. package/taste-skill/examples/floria-full.webp +0 -0
  333. package/taste-skill/examples/floria-top.webp +0 -0
  334. package/taste-skill/research/README.md +0 -8
  335. package/taste-skill/research/laziness/README.md +0 -25
  336. package/taste-skill/research/laziness/findings/empirical-results.md +0 -58
  337. package/taste-skill/research/laziness/findings/references.md +0 -20
  338. package/taste-skill/research/laziness/remediation/architectural-patterns.md +0 -55
  339. package/taste-skill/research/laziness/remediation/parameter-tuning.md +0 -44
  340. package/taste-skill/research/laziness/remediation/prompt-engineering.md +0 -52
  341. package/taste-skill/research/laziness/remediation/reference-prompts.md +0 -79
  342. package/taste-skill/research/laziness/root-causes/cognitive-shortcuts.md +0 -23
  343. package/taste-skill/research/laziness/root-causes/output-limits.md +0 -39
  344. package/taste-skill/research/laziness/root-causes/rlhf-and-compute.md +0 -27
  345. package/taste-skill/research/laziness/root-causes/training-data-bias.md +0 -28
  346. package/taste-skill/scripts/build-emil-sponsor-row.mjs +0 -41
  347. package/taste-skill/scripts/convert-readme-assets-webp.mjs +0 -142
  348. package/taste-skill/scripts/process-readme-buttons.mjs +0 -108
  349. package/taste-skill/scripts/process-sponsor-badge.mjs +0 -83
  350. package/taste-skill/skill.sh +0 -25
  351. package/taste-skill/skills/brandkit/SKILL.md +0 -798
  352. package/taste-skill/skills/brutalist-skill/SKILL.md +0 -92
  353. package/taste-skill/skills/gpt-tasteskill/SKILL.md +0 -74
  354. package/taste-skill/skills/image-to-code-skill/SKILL.md +0 -1228
  355. package/taste-skill/skills/imagegen-frontend-mobile/SKILL.md +0 -1465
  356. package/taste-skill/skills/imagegen-frontend-web/SKILL.md +0 -987
  357. package/taste-skill/skills/llms.txt +0 -13
  358. package/taste-skill/skills/minimalist-skill/SKILL.md +0 -85
  359. package/taste-skill/skills/output-skill/SKILL.md +0 -49
  360. package/taste-skill/skills/redesign-skill/SKILL.md +0 -178
  361. package/taste-skill/skills/soft-skill/SKILL.md +0 -98
  362. package/taste-skill/skills/stitch-skill/DESIGN.md +0 -121
  363. package/taste-skill/skills/stitch-skill/SKILL.md +0 -184
  364. package/taste-skill/skills/taste-skill/SKILL.md +0 -1206
  365. package/taste-skill/skills/taste-skill-v1/SKILL.md +0 -226
  366. package/temp_fix.js +0 -61
  367. package/templates/DESIGN.md +0 -38
  368. package/templates/bug-report.md +0 -21
  369. package/templates/design-report.md +0 -21
  370. package/templates/feature-report.md +0 -20
  371. package/templates/review-report.md +0 -21
  372. package/templates/skill-template.md +0 -38
  373. package/tests/behavior-conformance.test.js +0 -154
  374. package/tests/install-script.test.js +0 -38
  375. package/tests/registry.test.js +0 -111
  376. package/update_template.js +0 -28
  377. package/vitest.config.js +0 -11
@@ -1,121 +0,0 @@
1
- ---
2
- name: qk-accessibility-audit
3
- description: >-
4
- Kiểm tra và sửa lỗi khả năng tiếp cận (a11y/WCAG). Đảm bảo hỗ trợ phím, screen reader và semantic HTML.
5
- version: 1.0.0
6
- category: frontend
7
- tags: [accessibility, a11y, aria, wcag, screen-reader, keyboard]
8
- platforms: [antigravity, claude-code, kilo-code, cursor, windsurf]
9
- ---
10
-
11
- # Accessibility (A11y) Audit
12
-
13
- > **Language rule:**
14
- > Use English for: code, identifiers, file names, architecture terms, technical decisions.
15
- > Use the user's language for: explanations, questions, summaries, and feedback.
16
- > The user may write in any language — detect and match it automatically.
17
-
18
- ---
19
-
20
- ## Trigger
21
-
22
- Activate this skill when:
23
- - User asks to "make this accessible", "fix a11y", or "audit accessibility"
24
- - Building complex interactive components (modals, dropdowns, tabs, sliders)
25
- - Preparing an app for production or public release
26
- - Project audit flags missing semantic HTML or ARIA issues
27
-
28
- ---
29
-
30
- ## Scope
31
-
32
- - ✅ **Keyboard Navigation:** Ensure all interactive elements are reachable via `Tab`, and operable via `Enter`/`Space`/Arrows. Focus management (trapping focus in modals).
33
- - ✅ **Screen Reader Support:** Add proper `aria-` attributes, `alt` text, and visually hidden text (`sr-only`).
34
- - ✅ **Semantic HTML:** Replace `div` soups with `<nav>`, `<main>`, `<article>`, `<button>`, etc.
35
- - ✅ **Color Contrast:** Verify text vs. background contrast meets WCAG AA (4.5:1 for normal text).
36
- - ✅ **Form Labels:** Ensure all inputs have associated `<label>`s or `aria-label`s.
37
-
38
- ---
39
-
40
- ## Non-goals
41
-
42
- - ❌ Do NOT completely redesign the UI visually (unless fixing a severe contrast issue, and even then, ask first).
43
- - ❌ Do NOT overuse ARIA. The first rule of ARIA is: "No ARIA is better than bad ARIA." Use semantic HTML first.
44
-
45
- ---
46
-
47
- ## Workflow
48
-
49
- ### Phase 1 — Semantic HTML Check
50
-
51
- Scan the component for basic HTML semantics:
52
- - Are buttons actually `<button>` elements (not `<div onClick>`)?
53
- - Are links actually `<a>` elements with `href`s?
54
- - Do images have meaningful `alt` text (or `alt=""` if decorative)?
55
- - Are headings (`h1`-`h6`) in a logical, unbroken hierarchy?
56
-
57
- ### Phase 2 — Keyboard & Focus Management
58
-
59
- - Can the user tab through the component logically?
60
- - Does every interactive element have a visible focus state (`:focus-visible`)?
61
- - For Modals/Dialogs: Is focus trapped inside when open? Is focus restored when closed?
62
- - For custom widgets (Tabs/Dropdowns): Implement correct arrow key navigation per WAI-ARIA authoring practices.
63
-
64
- ### Phase 3 — Screen Reader (ARIA) Check
65
-
66
- - Do custom interactive elements have correct `role`s (e.g., `role="tablist"`)?
67
- - Is dynamic state communicated? (`aria-expanded`, `aria-selected`, `aria-invalid`, `aria-busy`).
68
- - Are icon-only buttons properly labeled? (`aria-label` or `<span className="sr-only">Label</span>`).
69
- - Are dynamic live regions used for important announcements (`aria-live="polite"` or `assertive`)?
70
-
71
- ### Phase 4 — Contrast & Visuals
72
-
73
- - Check text colors against backgrounds.
74
- - Ensure form fields have visible borders or indicators.
75
- - Ensure information is not conveyed *only* by color (e.g., a red border for an error must also have error text).
76
-
77
- ---
78
-
79
- ## Decision Tree
80
-
81
- ```
82
- Is the component a native HTML element (e.g., standard `<button>`)?
83
- ├── Yes → Ensure it has accessible text/labels. No ARIA roles needed.
84
- └── No → (e.g., a custom `div` acting as a checkbox)
85
- ├── Can it be refactored to use native HTML?
86
- │ ├── Yes → Refactor to native HTML `<input type="checkbox">`
87
- │ └── No → Apply `role="checkbox"`, `tabIndex={0}`, `aria-checked`, and keyboard event handlers.
88
- ```
89
-
90
- ---
91
-
92
- ## Output Format
93
-
94
- ```
95
- ♿ Accessibility Audit Report
96
- ─────────────────────────────────────────────────
97
- Component: [ComponentName]
98
-
99
- Issues Found & Fixed:
100
- ✅ Semantic HTML: Replaced `<div onClick>` with `<button>`
101
- ✅ Screen Readers: Added `aria-label` to icon-only close button
102
- ✅ Keyboard: Added focus trap inside the Modal
103
- ✅ Forms: Associated `<label htmlFor="email">` with Input
104
-
105
- ⚠️ Remaining Warnings (Manual Check Required):
106
- - Please verify color contrast of primary button in light mode (needs 4.5:1 ratio).
107
-
108
- 🔗 Next Steps:
109
- Code updated. Recommend testing with a screen reader (VoiceOver/NVDA).
110
- ```
111
-
112
- ---
113
-
114
- ## Validation Checklist
115
-
116
- - [ ] Semantic HTML preferred over ARIA
117
- - [ ] Keyboard navigation (Tab + Enter/Space) works correctly
118
- - [ ] Focus is visible on all interactive elements
119
- - [ ] Forms have proper labels
120
- - [ ] Icon-only buttons have accessible names
121
-
@@ -1,179 +0,0 @@
1
- ---
2
- name: qk-agent-orchestrator
3
- description: >-
4
- Phân tích yêu cầu, lên kế hoạch thực thi chi tiết và điều phối các tác vụ cho đúng skill. Không tự viết code.
5
- version: 1.0.0
6
- category: engineering
7
- tags: [orchestration, planning, workflow, task-decomposition]
8
- platforms: [antigravity, claude-code, kilo-code, cursor, windsurf]
9
- ---
10
-
11
- # Agent Orchestrator
12
-
13
- > **Language rule:**
14
- > Use English for: code, identifiers, file names, architecture terms, technical decisions.
15
- > Use the user's language for: explanations, questions, summaries, and feedback.
16
- > The user may write in any language — detect and match it automatically.
17
-
18
- > ⚠️ **CRITICAL CONSTRAINT: This skill MUST NOT write any code.**
19
- > Its only job is to analyze, plan, and delegate.
20
- > If the orchestrator starts writing implementation code — it is violating its role.
21
- > Immediately stop and delegate to the appropriate skill instead.
22
-
23
- ---
24
-
25
- ## Trigger
26
-
27
- Activate this skill when:
28
- - User describes a task without knowing where to start
29
- - User request spans multiple concerns (UI + API + state + tests)
30
- - Request is ambiguous and needs decomposition before action
31
- - User says: "help me plan", "what should I do first", "how do I approach this"
32
-
33
- ---
34
-
35
- ## Scope
36
-
37
- - ✅ Analyze the user's request
38
- - ✅ Identify which skills are needed
39
- - ✅ Define the correct execution order
40
- - ✅ Create a step-by-step plan
41
- - ✅ Delegate each step to the correct skill
42
- - ✅ Track overall progress
43
-
44
- ---
45
-
46
- ## Non-goals
47
-
48
- - ❌ Do NOT write implementation code
49
- - ❌ Do NOT modify files
50
- - ❌ Do NOT fix bugs directly (delegate to `bug-fix`)
51
- - ❌ Do NOT build UI directly (delegate to `ui-builder`)
52
- - ❌ Do NOT make architectural decisions unilaterally (delegate to `frontend-architecture`)
53
-
54
- ---
55
-
56
- ## Workflow
57
-
58
- ### Phase 1 — Request Analysis
59
-
60
- Parse the user's request:
61
-
62
- 1. **What** is being asked? (feature, fix, refactor, review, deploy?)
63
- 2. **Where** does it belong? (frontend, backend, shared, infrastructure?)
64
- 3. **What is the scope?** (single component, full feature, entire codebase?)
65
- 4. **What is unknown?** List any ambiguities that need clarification.
66
-
67
- If critical information is missing → ask before planning.
68
-
69
- ---
70
-
71
- ### Phase 2 — Skill Selection
72
-
73
- Map the request to skills from the registry:
74
-
75
- | Request type | Recommended skill(s) |
76
- |---|---|
77
- | "I don't know what's wrong" | `project-audit` → `bug-fix` |
78
- | "Build a new page" | `frontend-architecture` → `design-system` → `ui-builder` |
79
- | "Add API call" | `context-manager` → `api-integration` |
80
- | "App is slow" | `project-audit` → `frontend-performance` |
81
- | "Upgrade dependencies" | `migration` |
82
- | "Write tests" | `frontend-testing` |
83
-
84
- Always check dependencies from `skills.json` — load dependent skills first.
85
-
86
- ---
87
-
88
- ### Phase 3 — Execution Plan
89
-
90
- Produce a numbered, ordered plan. Each step maps to one skill.
91
-
92
- Format:
93
- ```
94
- Step 1: [skill-name] — [what it will do]
95
- Step 2: [skill-name] — [what it will do]
96
- Step 3: [skill-name] — [what it will do]
97
- ```
98
-
99
- Mark dependencies explicitly:
100
- ```
101
- Step 2 requires Step 1 to complete first.
102
- ```
103
-
104
- ---
105
-
106
- ### Phase 4 — Delegation
107
-
108
- For each step in the plan:
109
- 1. Announce which skill is being activated
110
- 2. Pass relevant context to that skill
111
- 3. Wait for skill output
112
- 4. Confirm completion before moving to next step
113
-
114
- ---
115
-
116
- ### Phase 5 — Progress Tracking
117
-
118
- After each skill completes:
119
- - Mark step as ✅ done
120
- - Note any output or blockers
121
- - Adjust remaining plan if needed
122
- - Report overall progress to user
123
-
124
- ---
125
-
126
- ## Decision Tree
127
-
128
- ```
129
- Is the request clear enough to plan?
130
- ├── No → Ask 1-3 clarifying questions, then plan
131
- └── Yes → Does it span multiple concerns?
132
- ├── Yes → Create multi-step plan with skill sequence
133
- └── No → Route directly to single skill
134
- ```
135
-
136
- ```
137
- Does a skill dependency exist?
138
- ├── Yes → Run dependency skill first
139
- └── No → Run skill directly
140
- ```
141
-
142
- ---
143
-
144
- ## Output Format
145
-
146
- ```
147
- 📋 Plan: [Brief description of what we're doing]
148
-
149
- Step 1: `[skill-name]` — [Purpose]
150
- Step 2: `[skill-name]` — [Purpose] ← requires Step 1
151
- Step 3: `[skill-name]` — [Purpose]
152
-
153
- ⏳ Starting with Step 1...
154
- ```
155
-
156
- After each step:
157
- ```
158
- ✅ Step 1 complete: [Brief outcome]
159
- ▶️ Moving to Step 2: `[skill-name]`
160
- ```
161
-
162
- ---
163
-
164
- ## Validation Checklist
165
-
166
- Before finishing orchestration:
167
-
168
- - [ ] All planned steps completed
169
- - [ ] Each step was handled by the correct skill
170
- - [ ] No code was written by the orchestrator itself
171
- - [ ] User has been informed of final outcome
172
- - [ ] Next recommended actions provided if relevant
173
-
174
- ---
175
-
176
- ## Examples
177
-
178
- See `examples/` folder.
179
-
@@ -1,389 +0,0 @@
1
- ---
2
- name: qk-api-integration
3
- description: >-
4
- Chuyển đổi tài liệu API (curl, swagger...) thành code tích hợp frontend chuẩn xác, có type an toàn và xử lý lỗi.
5
- version: 2.0.0
6
- category: engineering
7
- tags: [api, integration, rest, graphql, axios, fetch, react-query, typescript]
8
- platforms: [antigravity, claude-code, kilo-code, cursor, windsurf]
9
- ---
10
-
11
- # API Integration Engineer
12
-
13
- > **Language rule:**
14
- > Use English for: code, identifiers, file names, architecture terms, technical decisions.
15
- > Use the user's language for: explanations, questions, summaries, and feedback.
16
- > The user may write in any language — detect and match it automatically.
17
-
18
- ---
19
-
20
- ## Trigger
21
-
22
- Activate this skill when the user provides any of:
23
- - `curl` command
24
- - Swagger 2.0 / OpenAPI 3.0 (YAML or JSON)
25
- - Postman collection or HAR file
26
- - API documentation (endpoint, method, request/response)
27
- - Code snippet to reverse-engineer (fetch/axios/custom client)
28
- - Backend controller or route handler to mirror on the frontend
29
-
30
- ---
31
-
32
- ## Scope
33
-
34
- - ✅ Parse and understand any API input format
35
- - ✅ Extract the full API contract (request + response + errors)
36
- - ✅ Detect existing project patterns (HTTP client, state layer, conventions)
37
- - ✅ Generate typed service/client, hooks/queries, and TypeScript types
38
- - ✅ Follow and extend existing architecture — never duplicate it
39
- - ✅ Handle special cases: file upload, file download, pagination, auth, WebSocket
40
-
41
- ---
42
-
43
- ## Non-goals
44
-
45
- - ❌ Do NOT create a new HTTP client if one already exists
46
- - ❌ Do NOT introduce a new state system if one is already in use
47
- - ❌ Do NOT hardcode URLs, tokens, or secrets
48
- - ❌ Do NOT use `any` when types can be inferred
49
- - ❌ Do NOT overwrite existing files without explicit user approval
50
-
51
- ---
52
-
53
- ## Severity Levels
54
-
55
- | Level | Meaning |
56
- |-------|---------|
57
- | P0 | Conflict with existing endpoint or type — must resolve before generating |
58
- | P1 | Missing critical info (auth, response schema) — ask before proceeding |
59
- | P2 | Naming or structure inconsistency — warn and apply best guess |
60
- | P3 | Missing optional fields — document assumption and proceed |
61
-
62
- ---
63
-
64
- ## Workflow
65
-
66
- ### Phase 1 — Input Validation
67
-
68
- Before parsing, verify:
69
- - URL is valid and method is correct (GET/POST/PUT/PATCH/DELETE)
70
- - Auth format is identifiable (Bearer, API Key, OAuth2, Basic, Cookie)
71
- - Request info is present (path params, query params, body)
72
- - Response structure is clear (JSON, binary, stream, paginated)
73
- - Error cases are documented
74
-
75
- If critical info is missing → **stop and ask**. Do not guess.
76
-
77
- ```json
78
- {
79
- "validation": {
80
- "status": "VALID | INVALID | INCOMPLETE",
81
- "confidence": 0.95,
82
- "errors": [],
83
- "warnings": [],
84
- "input_type": "curl | openapi | postman | docs | code"
85
- }
86
- }
87
- ```
88
-
89
- ---
90
-
91
- ### Phase 2 — API Contract Extraction
92
-
93
- Extract the full contract:
94
-
95
- ```
96
- metadata:
97
- name, domain, endpoint, method, version, description
98
-
99
- request:
100
- pathParams: { name, type, required }
101
- queryParams: { name, type, required, default }
102
- headers: { name, value, required }
103
- body: { contentType, schema { field, type, required, nullable } }
104
- auth: { type, location, name }
105
-
106
- response:
107
- success: { statusCode, contentType, schema, pagination? }
108
- errors: [ { statusCode, message, businessCode? } ]
109
-
110
- special:
111
- rateLimit, timeout, retryable, streaming
112
- ```
113
-
114
- Map each field: `type`, `required`, `nullable`, `enum`, `example`.
115
-
116
- ---
117
-
118
- ### Phase 3 — Project Profile Detection
119
-
120
- 1. Check for `.api-config.json` at project root → use if present
121
- 2. Otherwise infer from:
122
- - Framework: `package.json`, config files, imports
123
- - HTTP client: existing axios instance, fetch wrapper, custom client
124
- - State management: React Query, Redux, Zustand, Pinia, Apollo, Vuex
125
- - Type system: `tsconfig.json`, JSDoc, plain JS
126
- - Folder conventions: `services/`, `hooks/`, `api/`, `types/`, `adapters/`
127
- - Naming: camelCase, PascalCase, snake_case, file patterns
128
- 3. Read 1-2 existing API files to capture exact patterns for imports, typing, error handling, naming
129
-
130
- If project context is ambiguous → use conservative defaults and document all assumptions.
131
-
132
- ---
133
-
134
- ### Phase 4 — Conflict Detection
135
-
136
- Before generating code, check for:
137
-
138
- | Conflict | Action |
139
- |----------|--------|
140
- | `ENDPOINT_DUPLICATE` — endpoint already exists | Reuse if same, warn if different |
141
- | `FUNCTION_DUPLICATE` — function name conflicts | Warn, propose new name |
142
- | `TYPE_DUPLICATE` — type already defined | Extend or reuse existing |
143
- | `LOGIC_OVERLAP` — logic exists in another service | Consolidate, don't duplicate |
144
- | `IMPORT_CONFLICT` — import path conflicts | Resolve before generating |
145
-
146
- **P0 conflict → stop, report, wait for user decision before proceeding.**
147
-
148
- ---
149
-
150
- ### Phase 5 — Code Generation
151
-
152
- Generate the minimum necessary set for the task:
153
-
154
- #### TypeScript Types
155
- ```typescript
156
- // Request types
157
- export interface CreateUserRequest {
158
- name: string;
159
- email: string;
160
- role?: UserRole;
161
- }
162
-
163
- // Response types
164
- export interface CreateUserResponse {
165
- id: string;
166
- name: string;
167
- email: string;
168
- createdAt: string;
169
- }
170
-
171
- // Error types
172
- export interface ApiError {
173
- code: string;
174
- message: string;
175
- details?: Record<string, unknown>;
176
- }
177
- ```
178
-
179
- #### Service / API Layer
180
- ```typescript
181
- // Thin layer: HTTP + mapping only. No UI, no business logic.
182
- export const createUser = async (
183
- data: CreateUserRequest
184
- ): Promise<CreateUserResponse> => {
185
- const response = await apiClient.post<CreateUserResponse>('/users', data);
186
- return response.data;
187
- };
188
- ```
189
-
190
- #### Hook / Query (if project uses React Query)
191
- ```typescript
192
- export const useCreateUser = () => {
193
- return useMutation<CreateUserResponse, ApiError, CreateUserRequest>({
194
- mutationFn: createUser,
195
- onSuccess: () => {
196
- queryClient.invalidateQueries({ queryKey: ['users'] });
197
- },
198
- });
199
- };
200
- ```
201
-
202
- **If project uses Redux** → follow existing slice/thunk pattern.
203
- **If project uses Zustand** → follow existing store pattern.
204
- **If project uses Pinia/Vuex** → follow existing composable/action pattern.
205
-
206
- Do NOT mix patterns.
207
-
208
- ---
209
-
210
- ### Phase 6 — Special Case Handling
211
-
212
- #### File Upload (`multipart/form-data`)
213
- ```typescript
214
- // Always use FormData — never send File object in JSON
215
- const formData = new FormData();
216
- formData.append('file', file);
217
- formData.append('name', name);
218
- await apiClient.post('/upload', formData, {
219
- headers: { 'Content-Type': 'multipart/form-data' },
220
- });
221
- ```
222
-
223
- #### File Download (binary response)
224
- ```typescript
225
- const response = await apiClient.get('/export', { responseType: 'blob' });
226
- const url = URL.createObjectURL(response.data);
227
- const a = document.createElement('a');
228
- a.href = url;
229
- a.download = filename;
230
- a.click();
231
- URL.revokeObjectURL(url);
232
- ```
233
-
234
- #### Pagination
235
- ```typescript
236
- interface PaginatedResponse<T> {
237
- items: T[];
238
- total: number;
239
- page: number;
240
- limit: number;
241
- }
242
- // Implement consistently with existing project pagination pattern
243
- ```
244
-
245
- #### Authentication
246
- - Follow existing auth mechanism (interceptor, header injection, cookie)
247
- - Never hardcode tokens or credentials
248
- - Refresh token logic belongs in the existing interceptor
249
-
250
- ---
251
-
252
- ### Phase 7 — Quality Validation
253
-
254
- Before marking as ready:
255
-
256
- - [ ] TypeScript strict — compiles clean, no `any` without justification
257
- - [ ] All functions/params have explicit types and return types
258
- - [ ] No unused imports, no debug code
259
- - [ ] Error handling complete (try/catch, `.catch`, fallback)
260
- - [ ] No hardcoded URLs, tokens, or secrets — use env vars
261
- - [ ] Naming matches project conventions
262
- - [ ] Reuses existing HTTP client, interceptors, and query client
263
- - [ ] JSDoc added for public API if project convention requires it
264
- - [ ] React: dependency arrays correct, cleanup present, no race conditions
265
-
266
- ---
267
-
268
- ### Phase 8 — End-to-End UI Integration (Optional / On-Demand)
269
-
270
- If the user explicitly requests to integrate the API directly into the UI (End-to-End):
271
- 1. **Find Target Component:** Identify the UI component where the API should be called.
272
- 2. **Wire State:** Inject the generated Hook/Query/Service into the component.
273
- 3. **Handle States:** Implement Loading (spinners, skeletons), Error (toast, alert), and Success (redirect, form reset, table refetch) states in the UI.
274
- 4. **Data Binding:** Bind the API response data to the UI elements (Table rows, Dropdowns, etc.) and bind UI inputs to the API request payload.
275
-
276
- ---
277
-
278
- ## Decision Tree
279
-
280
- ```
281
- Is required info complete?
282
- ├── No → Ask for missing info (auth, response schema, base URL)
283
- └── Yes → Check for conflicts
284
- ├── P0 conflict → Stop, report, wait for user decision
285
- └── No P0 → Generate code following project patterns
286
- ```
287
-
288
- ```
289
- Does project have existing HTTP client?
290
- ├── Yes → Extend it
291
- └── No → Create minimal axios/fetch wrapper following project style
292
- ```
293
-
294
- ```
295
- Does project use state management?
296
- ├── React Query → useMutation / useQuery pattern
297
- ├── Redux → slice + thunk / RTK Query
298
- ├── Zustand → store action
299
- ├── Pinia → action in store
300
- └── None → Service function only
301
- ```
302
-
303
- ---
304
-
305
- ## Output Format
306
-
307
- ```
308
- 📋 API Contract
309
- ─────────────────────────────────────────────────
310
- Name: [API name]
311
- Endpoint: [METHOD /path]
312
- Auth: [type]
313
- Input: [brief description]
314
- Output: [brief description]
315
-
316
- 🔍 Project Pattern Detected
317
- ─────────────────────────────────────────────────
318
- HTTP client: [axios instance at src/lib/axios.ts]
319
- State: [React Query]
320
- Types path: [src/types/]
321
- Service path: [src/services/]
322
- Hook path: [src/hooks/]
323
-
324
- ⚠️ Assumptions
325
- ─────────────────────────────────────────────────
326
- • [Assumption 1]
327
- • [Assumption 2]
328
-
329
- 📁 Files Generated
330
- ─────────────────────────────────────────────────
331
- [NEW] src/types/user.types.ts
332
- [NEW] src/services/user.service.ts
333
- [NEW] src/hooks/useCreateUser.ts
334
- [EXTEND] src/services/index.ts
335
-
336
- 🔗 Next steps:
337
- → Import hook in your component
338
- → Add env var: VITE_API_BASE_URL
339
- → Test with: [example usage snippet]
340
- ```
341
-
342
- ---
343
-
344
- ## Validation Checklist
345
-
346
- - [ ] All 7 phases completed
347
- - [ ] Input validated — no missing critical fields
348
- - [ ] Conflicts checked — none unresolved
349
- - [ ] Types generated and strict
350
- - [ ] Existing HTTP client reused
351
- - [ ] Existing state pattern followed
352
- - [ ] Special cases handled if applicable (upload, download, pagination, auth)
353
- - [ ] No hardcoded secrets
354
- - [ ] Output format produced with files listed
355
-
356
- ---
357
-
358
- ## Project Config Reference (`.api-config.json`)
359
-
360
- ```json
361
- {
362
- "framework": "React",
363
- "httpClient": "axios",
364
- "stateManagement": "react-query",
365
- "typing": "typescript",
366
- "conventions": {
367
- "servicePath": "src/services/",
368
- "typePath": "src/types/",
369
- "hookPath": "src/hooks/",
370
- "naming": "camelCase",
371
- "fileNaming": "{name}.service.ts",
372
- "typeFileNaming": "{Name}.types.ts",
373
- "hookFileNaming": "use{Name}.ts"
374
- },
375
- "httpConfig": {
376
- "baseURL": "process.env.VITE_API_URL",
377
- "interceptor": "src/lib/axios.ts",
378
- "authHeader": "Authorization",
379
- "timeout": 30000
380
- }
381
- }
382
- ```
383
-
384
- ---
385
-
386
- ## Examples
387
-
388
- See `examples/` folder.
389
-