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,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
-
@@ -1,96 +0,0 @@
1
- ---
2
- name: qk-
3
- description: >-
4
- Triển khai tΓ­nh nΔƒng Δ‘Δƒng nhαΊ­p (JWT, OAuth), phΓ’n quyền (RBAC) vΓ  bαΊ£o vệ app khỏi cΓ‘c lα»— hα»•ng OWASP.
5
- version: 1.0.0
6
- category: backend
7
- tags: [auth, security, jwt, oauth, rbac, owasp]
8
- platforms: [antigravity, claude-code, kilo-code, cursor, windsurf]
9
- ---
10
-
11
- # Auth & Security 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:
23
- - User asks to "add login", "protect this route", or "implement OAuth"
24
- - Defining user roles and permissions (Admin vs User)
25
- - Project audit flags security vulnerabilities (P0/P1)
26
- - Handling sensitive data (passwords, PII, API keys)
27
-
28
- ---
29
-
30
- ## Scope
31
-
32
- - βœ… **Authentication:** JWT, Session Cookies, OAuth2 (Google, GitHub, etc.), Magic Links.
33
- - βœ… **Authorization:** Role-Based Access Control (RBAC), Middleware guards.
34
- - βœ… **Data Protection:** Hashing passwords (bcrypt, Argon2), encrypting sensitive fields.
35
- - βœ… **Vulnerability Prevention:** CSRF protection, Rate Limiting, CORS config, input sanitization (SQLi/XSS).
36
-
37
- ---
38
-
39
- ## Non-goals
40
-
41
- - ❌ Do NOT store passwords in plain text. Ever.
42
- - ❌ Do NOT hardcode secrets or private keys in the code (use `.env`).
43
- - ❌ Do NOT store JWTs in `localStorage` if cookies (`httpOnly`) are an option, unless explicitly requested.
44
-
45
- ---
46
-
47
- ## Workflow
48
-
49
- ### Phase 1 β€” Strategy Selection
50
-
51
- Determine the auth mechanism:
52
- 1. **Stateless (JWT):** Good for mobile/SPAs, distributed systems.
53
- 2. **Stateful (Sessions):** Good for traditional web apps, easier revocation.
54
- 3. **Third-party (OAuth / Auth0 / NextAuth / Supabase):** Offload auth complexity.
55
-
56
- ### Phase 2 β€” Implementation
57
-
58
- **For JWT + Cookies (Recommended Web Pattern):**
59
- 1. Create Login endpoint: Verify password β†’ Generate JWT β†’ Set `httpOnly` cookie.
60
- 2. Create Middleware: Extract cookie β†’ Verify JWT signature β†’ Attach user to request.
61
- 3. Create Logout endpoint: Clear the cookie.
62
-
63
- **For Authorization:**
64
- 1. Define roles (e.g., `enum Role { ADMIN, USER }`).
65
- 2. Create Role Middleware: Check `req.user.role`.
66
-
67
- ### Phase 3 β€” Security Audit
68
-
69
- Verify:
70
- - Passwords are hashed with a salt (e.g., `bcrypt.hash(password, 10)`).
71
- - Cookies are `httpOnly`, `Secure` (in prod), and `SameSite`.
72
- - CORS is configured to only allow trusted origins.
73
-
74
- ---
75
-
76
- ## Output Format
77
-
78
- ```
79
- πŸ›‘οΈ Auth & Security Report
80
- ─────────────────────────────────────────────────
81
- Mechanism: [JWT in httpOnly Cookie / OAuth / Session]
82
- Roles: [Admin, User]
83
-
84
- Components Implemented:
85
- βœ… Login/Logout handlers
86
- βœ… Auth Middleware (Guard)
87
- βœ… Password hashing (bcrypt)
88
-
89
- Security measures enforced:
90
- β€’ `httpOnly`, `Secure`, `SameSite=Strict` on cookies
91
- β€’ CORS restricted to frontend origin
92
-
93
- πŸ”— Next Steps:
94
- Remember to add `JWT_SECRET` to your production environment variables.
95
- ```
96
-
@@ -1,125 +0,0 @@
1
- ---
2
- name: qk-
3
- description: >-
4
- Kiểm soΓ‘t cαΊ₯u trΓΊc backend, Γ©p buα»™c tuΓ’n thα»§ mΓ΄ hΓ¬nh Layer (Controller/Service/Repository) vΓ  vα»‹ trΓ­ file.
5
- version: 1.0.0
6
- category: backend
7
- tags: [architecture, backend, controller, service, repository, structure]
8
- platforms: [antigravity, claude-code, kilo-code, cursor, windsurf]
9
- ---
10
-
11
- # Backend Architecture
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
- - Creating new backend API endpoints, services, or models
24
- - User asks "where should I put this business logic?"
25
- - Project audit flags mixed concerns (e.g., SQL queries inside a controller)
26
- - Inheriting or setting up a Node.js, Python, or Go backend
27
-
28
- ---
29
-
30
- ## Scope
31
-
32
- - βœ… Discover existing backend folder structure
33
- - βœ… Enforce Layered Architecture (Controller β†’ Service β†’ Data Access)
34
- - βœ… Enforce Domain/Module-based structure if applicable (`src/users/`, `src/orders/`)
35
- - βœ… Define where validation, mapping, and error handling should live
36
- - βœ… Validate file placement before code generation
37
-
38
- ---
39
-
40
- ## Non-goals
41
-
42
- - ❌ Do NOT rewrite the architecture unless requested
43
- - ❌ Do NOT write the actual database queries (delegate to `database-engineer`)
44
- - ❌ Do NOT configure server infrastructure (delegate to `deployment`)
45
-
46
- ---
47
-
48
- ## Severity Levels
49
-
50
- | Level | Meaning |
51
- |-------|---------|
52
- | P0 | Circular dependency or security bypass in architecture |
53
- | P1 | Mixed concerns (e.g., ORM logic in route handler) |
54
- | P2 | Inconsistent folder or file naming |
55
- | P3 | Minor deviation from convention |
56
-
57
- ---
58
-
59
- ## Workflow
60
-
61
- ### Phase 1 β€” Architecture Discovery
62
-
63
- Analyze the project structure:
64
- 1. **Classic MVC / Layered:** `controllers/`, `services/`, `models/`, `routes/`
65
- 2. **Domain-Driven (Module):** `src/modules/user/{controller, service, repository}`
66
- 3. **Framework-specific:** NestJS (`.controller.ts`, `.service.ts`), Django apps, Express monolithic.
67
- 4. **Serverless:** `functions/`, `handlers/`
68
-
69
- ---
70
-
71
- ### Phase 2 β€” Rule Extraction
72
-
73
- Extract conventions:
74
- - **Routes/Controllers:** Should only handle HTTP req/res, params validation, and calling services. No business logic.
75
- - **Services:** Pure business logic. Does not know about HTTP (`req`/`res`).
76
- - **Repositories/Data Access:** Only layer that interacts with the DB.
77
- - **Error Handling:** Centralized error middleware vs local try/catch.
78
-
79
- ---
80
-
81
- ### Phase 3 β€” File Placement & Routing
82
-
83
- Map a new requirement to the architecture:
84
-
85
- *Request: "Add an endpoint to update user profile"*
86
- - Route: `PUT /api/users/:id` mapped in `src/routes/user.routes.ts`
87
- - Controller: `updateProfile(req, res)` in `src/controllers/user.controller.ts`
88
- - Service: `updateUserProfile(userId, data)` in `src/services/user.service.ts`
89
-
90
- ---
91
-
92
- ## Decision Tree
93
-
94
- ```
95
- Does the project group files by Layer or by Domain?
96
- β”œβ”€β”€ Layer β†’ Place in `src/controllers/` and `src/services/`
97
- └── Domain β†’ Place in `src/modules/users/`
98
-
99
- Where does data validation happen?
100
- β”œβ”€β”€ Middleware β†’ Add Zod/Joi validation at the router level
101
- └── Controller β†’ Validate inside the controller function before calling service
102
- ```
103
-
104
- ---
105
-
106
- ## Output Format
107
-
108
- ```
109
- πŸ—οΈ Backend Architecture Plan
110
- ─────────────────────────────────────────────────
111
- Structure Type: [Layered / Domain-based / Framework-specific]
112
-
113
- Layer Mapping:
114
- βœ… Controller: [path/to/controller.ts] β€” handles HTTP
115
- βœ… Service: [path/to/service.ts] β€” business logic
116
- βœ… Repo/DB: [handled by database-engineer]
117
-
118
- ⚠️ Constraints enforced:
119
- β€’ Do not pass `req` or `res` objects into the Service layer.
120
- β€’ Validate all inputs at the Controller/Route level.
121
-
122
- πŸ”— Next Steps:
123
- Proceeding to implement the layers.
124
- ```
125
-