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
package/migrate.js DELETED
@@ -1,147 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const skillsDir = path.join(__dirname, 'skills');
4
-
5
- function migrateSkill(skillDir) {
6
- const filePath = path.join(skillsDir, skillDir, 'SKILL.md');
7
- if (!fs.existsSync(filePath)) return;
8
-
9
- if (skillDir === 'qk-bug-resolution') return; // Skip already migrated
10
-
11
- let content = fs.readFileSync(filePath, 'utf8');
12
-
13
- // Parse Frontmatter
14
- const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
15
- if (!fmMatch) return;
16
- let frontmatter = fmMatch[1];
17
-
18
- // Filter old fields
19
- const validFields = [];
20
- const lines = frontmatter.split('\n');
21
- for (const line of lines) {
22
- if (!line.startsWith('behavior:') && !line.startsWith('intent:') && !line.startsWith('priority:') && !line.startsWith('trigger:') && !line.startsWith('inputs:') && !line.startsWith('outputs:') && !line.startsWith('allowed_tools:') && !line.startsWith('pipeline:')) {
23
- validFields.push(line.replace(/v5\.0/g, 'v6.0'));
24
- }
25
- }
26
- const newFm = '---\n' + validFields.join('\n') + '\n---';
27
-
28
- // Parse Mission
29
- let mission = 'Th?c thi nhi?m v? c?t l�i.';
30
- let limitation = 'Kh�ng vi ph?m Invariants c?a h? th?ng.';
31
-
32
- const missionSection = content.match(/## ?? Mission \(Scope\)[\s\S]*?(?=## |---|$)/);
33
- if (missionSection) {
34
- const missionLines = missionSection[0].split('\n');
35
- const posLines = missionLines.filter(l => l.includes('- ?')).map(l => l.replace('- ?', '').trim());
36
- const negLines = missionLines.filter(l => l.includes('- ?')).map(l => l.replace('- ?', '').trim());
37
-
38
- if (posLines.length > 0) mission = posLines.join(' ');
39
- if (negLines.length > 0) limitation = negLines.join(' ');
40
- }
41
-
42
- // Parse Biases (Map to Reasoning Boundary - Must refuse)
43
- const biasesMatch = content.match(/Biases:[\s\S]*?(?=---|$)/);
44
- let refuses = [];
45
- if (biasesMatch) {
46
- const biasLines = biasesMatch[0].split('\n').filter(l => l.includes('- id:'));
47
- refuses = biasLines.map(l => l.replace('- id:', '').trim());
48
- }
49
-
50
- // Parse Dials (Map to Context Policy / Reasoning)
51
- const dialsMatch = content.match(/Dials:[\s\S]*?(?=---|$)/);
52
- let asks = [];
53
- if (dialsMatch) {
54
- const dialLines = dialsMatch[0].split('\n').filter(l => l.includes('- id:'));
55
- asks = dialLines.map(l => l.replace('- id:', '').trim());
56
- }
57
-
58
- // Generate BSF content
59
- const bsfContent = \\
60
-
61
- # ?? Behavior Specification: \
62
-
63
- ## 1. Behavior (�?nh danh H�nh vi)
64
- \\\yaml
65
- Mission: "\"
66
- Authority: "�u?c quy?n th?c thi c�c t�c v? trong ph?m vi \."
67
- Responsibility: "B?o d?m ch?t lu?ng d?u ra v� tu�n th? chu?n h? th?ng."
68
- Limitation: "\"
69
- \\\
70
-
71
- ## 2. Contracts (H?p d?ng)
72
-
73
- ### 2.1. Capability Contract
74
- \\\yaml
75
- Can:
76
- - read_code
77
- - execute_tests
78
- - modify_code
79
- Must:
80
- - verify_assumptions_before_coding
81
- Cannot:
82
- - execute_destructive_commands
83
- - bypass_validation
84
- \\\
85
-
86
- ### 2.2. Output Contract
87
- \\\yaml
88
- Artifacts:
89
- - summary_report: "Decision Summary gi?i th�ch Context, Quy?t d?nh v� Trade-offs."
90
- Completion: "Nhi?m v? ho�n th�nh & Quality Gates passed."
91
- \\\
92
-
93
- ## 3. Policies (Ch�nh s�ch)
94
-
95
- ### 3.1. Context Policy
96
- \\\yaml
97
- Scope: current_repo
98
- Priority:
99
- 1: Project Docs
100
- 2: Current Conversation
101
- 3: Source Code
102
- Trust: "official docs > code > assumptions"
103
- Fallback: ask_user
104
- \\\
105
-
106
- ### 3.2. Reasoning Boundary
107
- \\\yaml
108
- May infer: "Bi?n s? c?c b?, logic n?i b? kh�ng ?nh hu?ng h? th?ng."
109
- Must verify: "T�c d?ng d?n c�c module kh�c."
110
- Must ask: "\"
111
- Must refuse: "\"
112
- \\\
113
-
114
- ### 3.3. Decision Policy
115
- \\\yaml
116
- Priority:
117
- 1: correctness
118
- 2: safety
119
- 3: maintainability
120
- 4: performance
121
- \\\
122
-
123
- ### 3.4. Evidence Policy
124
- \\\yaml
125
- Accept: [logs, unit tests, official docs]
126
- Prefer: [unit tests, CI results]
127
- Reject: [guesswork, outdated internet search]
128
- \\\
129
-
130
- ### 3.5. Escalation Policy
131
- \\\yaml
132
- Warning: "Thay d?i c?u tr�c ho?c public API"
133
- Confirmation: "Override config ho?c x�a file quan tr?ng"
134
- Stop: "L?i Permission ho?c xung d?t Invariants"
135
- \\\
136
- \;
137
-
138
- fs.writeFileSync(filePath, bsfContent);
139
- console.log('Migrated ' + skillDir);
140
- }
141
-
142
- const dirs = fs.readdirSync(skillsDir);
143
- for (const dir of dirs) {
144
- if (fs.statSync(path.join(skillsDir, dir)).isDirectory() && !dir.startsWith('_')) {
145
- migrateSkill(dir);
146
- }
147
- }
package/migrate.py DELETED
@@ -1,133 +0,0 @@
1
- import os
2
- import re
3
-
4
- skills_dir = os.path.join(os.getcwd(), 'skills')
5
-
6
- def migrate_skill(skill_dir):
7
- file_path = os.path.join(skills_dir, skill_dir, 'SKILL.md')
8
- if not os.path.exists(file_path): return
9
- if skill_dir in ['qk-bug-resolution', 'qk-access-policy']: return
10
-
11
- with open(file_path, 'r', encoding='utf-8') as f:
12
- content = f.read()
13
-
14
- fm_match = re.search(r'^---\n(.*?)\n---', content, re.DOTALL)
15
- if not fm_match: return
16
- frontmatter = fm_match.group(1)
17
-
18
- valid_fields = []
19
- for line in frontmatter.split('\n'):
20
- if not any(line.startswith(prefix) for prefix in ['behavior:', 'intent:', 'priority:', 'trigger:', 'inputs:', 'outputs:', 'allowed_tools:', 'pipeline:']):
21
- valid_fields.append(line.replace('v5.0', 'v6.0'))
22
-
23
- new_fm = '---\n' + '\n'.join(valid_fields) + '\n---'
24
-
25
- mission = f'Th?c thi nhi?m v? c?t l�i c?a {skill_dir}'
26
- limitation = 'Kh�ng vi ph?m Invariants c?a h? th?ng.'
27
-
28
- mission_section = re.search(r'## .*?Mission \(Scope\)(.*?)(?=## |---|$)', content, re.DOTALL)
29
- if mission_section:
30
- lines = mission_section.group(1).split('\n')
31
- pos = [l.split('- ?')[-1].strip() for l in lines if '- ?' in l]
32
- neg = [l.split('- ?')[-1].strip() for l in lines if '- ?' in l]
33
- if pos: mission = ' '.join(pos)
34
- if neg: limitation = ' '.join(neg)
35
-
36
- biases_match = re.search(r'Biases:(.*?)(?=---|$)', content, re.DOTALL)
37
- refuses = []
38
- if biases_match:
39
- refuses = [l.replace('- id:', '').strip() for l in biases_match.group(1).split('\n') if '- id:' in l]
40
-
41
- dials_match = re.search(r'Dials:(.*?)(?=---|$)', content, re.DOTALL)
42
- asks = []
43
- if dials_match:
44
- asks = [l.replace('- id:', '').strip() for l in dials_match.group(1).split('\n') if '- id:' in l]
45
-
46
- must_ask = ', '.join(asks) if asks else 'Y�u c?u m?p m?, thi?u th�ng tin.'
47
- must_refuse = ', '.join(refuses) if refuses else 'R?i ro b?o m?t, ph� v? ki?n tr�c.'
48
-
49
- bsf_content = f'''{new_fm}
50
-
51
- # ?? Behavior Specification: {skill_dir}
52
-
53
- ## 1. Behavior (�?nh danh H�nh vi)
54
- `yaml
55
- Mission: "{mission.replace('"', "'")}"
56
- Authority: "�u?c quy?n th?c thi c�c t�c v? trong ph?m vi {skill_dir}."
57
- Responsibility: "B?o d?m ch?t lu?ng d?u ra v� tu�n th? chu?n h? th?ng."
58
- Limitation: "{limitation.replace('"', "'")}"
59
- `
60
-
61
- ## 2. Contracts (H?p d?ng)
62
-
63
- ### 2.1. Capability Contract
64
- `yaml
65
- Can:
66
- - read_code
67
- - execute_tests
68
- - modify_code
69
- Must:
70
- - verify_assumptions_before_coding
71
- Cannot:
72
- - execute_destructive_commands
73
- - bypass_validation
74
- `
75
-
76
- ### 2.2. Output Contract
77
- `yaml
78
- Artifacts:
79
- - summary_report: "Decision Summary gi?i th�ch Context, Quy?t d?nh v� Trade-offs."
80
- Completion: "Nhi?m v? ho�n th�nh & Quality Gates passed."
81
- `
82
-
83
- ## 3. Policies (Ch�nh s�ch)
84
-
85
- ### 3.1. Context Policy
86
- `yaml
87
- Scope: current_repo
88
- Priority:
89
- 1: Project Docs
90
- 2: Current Conversation
91
- 3: Source Code
92
- Trust: "official docs > code > assumptions"
93
- Fallback: ask_user
94
- `
95
-
96
- ### 3.2. Reasoning Boundary
97
- `yaml
98
- May infer: "Bi?n s? c?c b?, logic n?i b? kh�ng ?nh hu?ng h? th?ng."
99
- Must verify: "T�c d?ng d?n c�c module kh�c."
100
- Must ask: "{must_ask.replace('"', "'")}"
101
- Must refuse: "{must_refuse.replace('"', "'")}"
102
- `
103
-
104
- ### 3.3. Decision Policy
105
- `yaml
106
- Priority:
107
- 1: correctness
108
- 2: safety
109
- 3: maintainability
110
- 4: performance
111
- `
112
-
113
- ### 3.4. Evidence Policy
114
- `yaml
115
- Accept: [logs, unit tests, official docs]
116
- Prefer: [unit tests, CI results]
117
- Reject: [guesswork, outdated internet search]
118
- `
119
-
120
- ### 3.5. Escalation Policy
121
- `yaml
122
- Warning: "Thay d?i c?u tr�c ho?c public API"
123
- Confirmation: "Override config ho?c x�a file quan tr?ng"
124
- Stop: "L?i Permission ho?c xung d?t Invariants"
125
- `
126
- '''
127
- with open(file_path, 'w', encoding='utf-8') as f:
128
- f.write(bsf_content)
129
- print(f'Migrated {skill_dir}')
130
-
131
- for d in os.listdir(skills_dir):
132
- if os.path.isdir(os.path.join(skills_dir, d)) and not d.startswith('_'):
133
- migrate_skill(d)
package/migrate_all.cjs DELETED
@@ -1,96 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
- const skillsDir = path.join(__dirname, 'skills');
4
-
5
- const template = `---
6
- name: {NAME}
7
- version: 6.0.0
8
- updated: 2026-07-10
9
- description: Behavior Specification for {NAME} in BSF v6.0 format.
10
- category: orchestration
11
- tags: [bsf, v6]
12
- platforms: [claude-code, cursor, windsurf, gemini-cli]
13
- ---
14
-
15
- # Behavior Specification: {NAME}
16
-
17
- ## 1. Behavior
18
- \`\`\`yaml
19
- Mission: "Execute core tasks for {NAME}."
20
- Authority: "Full authority within the scope of {NAME}."
21
- Responsibility: "Ensure the system complies with v6 standards."
22
- Limitation: "Do not violate System Invariants."
23
- \`\`\`
24
-
25
- ## 2. Contracts
26
-
27
- ### 2.1. Capability Contract
28
- \`\`\`yaml
29
- Can:
30
- - read_code
31
- - modify_code
32
- Must:
33
- - verify_assumptions_before_coding
34
- Cannot:
35
- - bypass_validation
36
- \`\`\`
37
-
38
- ### 2.2. Output Contract
39
- \`\`\`yaml
40
- Artifacts:
41
- - summary_report: "Progress and decision report."
42
- Completion: "Feature works & Quality Gates passed."
43
- \`\`\`
44
-
45
- ## 3. Policies
46
-
47
- ### 3.1. Context Policy
48
- \`\`\`yaml
49
- Scope: whole_workspace
50
- Priority:
51
- 1: Project Guidelines
52
- 2: Current Code
53
- Trust: "official docs > code > user assumptions"
54
- Fallback: ask_user
55
- \`\`\`
56
-
57
- ### 3.2. Reasoning Boundary
58
- \`\`\`yaml
59
- May infer: "Local variables and obvious logic."
60
- Must verify: "Cross-module impacts."
61
- Must ask: "Vague requirements, missing context."
62
- Must refuse: "Security risks, baseless guesses."
63
- \`\`\`
64
-
65
- ### 3.3. Decision Policy
66
- \`\`\`yaml
67
- Priority:
68
- 1: correctness
69
- 2: safety
70
- 3: maintainability
71
- \`\`\`
72
-
73
- ### 3.4. Evidence Policy
74
- \`\`\`yaml
75
- Accept: [unit tests, CI logs]
76
- Prefer: [end-to-end tests]
77
- Reject: [guesswork]
78
- \`\`\`
79
-
80
- ### 3.5. Escalation Policy
81
- \`\`\`yaml
82
- Warning: "Changing task scope."
83
- Confirmation: "Overriding config or deleting files."
84
- Stop: "Critical security error."
85
- \`\`\`
86
- `;
87
-
88
- const dirs = fs.readdirSync(skillsDir);
89
- for (const dir of dirs) {
90
- if (dir.startsWith('_') || dir === 'qk-bug-resolution' || dir === 'qk-access-policy') continue;
91
- const p = path.join(skillsDir, dir, 'SKILL.md');
92
- if (fs.existsSync(p)) {
93
- fs.writeFileSync(p, template.replace(/{NAME}/g, dir), 'utf8');
94
- console.log('Updated ' + dir);
95
- }
96
- }
package/patch.js DELETED
@@ -1,15 +0,0 @@
1
- const fs = require('fs');
2
- let content = fs.readFileSync('bin/install.js', 'utf8');
3
-
4
- // Fix kiloConfig bug
5
- content = content.replace(
6
- "if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
7
- "if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
8
- );
9
-
10
- // Replace interactive prompt
11
- const startMarker = "rl.question(questionIde, (answerIde) => {";
12
- const endMarker = "} catch (error) {\\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\\n } finally {\\n rl.close();\\n }\\n });\\n});";
13
-
14
- const startIdx = content.indexOf(startMarker);
15
- // Actually simpler regex
package/patch.py DELETED
@@ -1,89 +0,0 @@
1
- import sys
2
- with open('bin/install.js', 'r', encoding='utf-8') as f:
3
- content = f.read()
4
-
5
- # Fix kiloConfig bug
6
- content = content.replace(
7
- "if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
8
- "if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
9
- )
10
-
11
- # Replace the interactive part with CLI parsing
12
- start_marker = "rl.question(questionIde, (ideChoice) => {"
13
- end_marker = " } catch (error) {\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\n } finally {\n rl.close();\n }\n });\n});"
14
-
15
- start_idx = content.find(start_marker)
16
- end_idx = content.find(end_marker) + len(end_marker)
17
-
18
- if start_idx != -1 and end_idx != -1:
19
- replacement = """// Parse command line arguments for CI/CD automation
20
- const args = process.argv.slice(2);
21
- let autoIde = null;
22
- let autoScope = null;
23
-
24
- for (let i = 0; i < args.length; i++) {
25
- if (args[i].startsWith('--ide=')) {
26
- autoIde = args[i].split('=')[1];
27
- }
28
- if (args[i].startsWith('--scope=')) {
29
- autoScope = args[i].split('=')[1];
30
- }
31
- }
32
-
33
- function runInstallation(ideChoice, scopeChoice) {
34
- const isGlobal = scopeChoice === '1';
35
- """
36
-
37
- old_body = content[start_idx:end_idx]
38
-
39
- # Extract the body inside rl.question(questionScope...)
40
- scope_start = "const isGlobal = scopeChoice === '1';"
41
- scope_start_idx = old_body.find(scope_start)
42
- scope_end = " } catch (error) {"
43
- scope_end_idx = old_body.find(scope_end)
44
-
45
- inner_body = old_body[scope_start_idx + len(scope_start):scope_end_idx]
46
-
47
- replacement += inner_body
48
- replacement += """
49
- } catch (error) {
50
- console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);
51
- } finally {
52
- rl.close();
53
- }
54
- }
55
-
56
- if (autoIde && autoScope) {
57
- console.log('\\n?? Running in non-interactive mode with IDE=' + autoIde + ', Scope=' + autoScope);
58
- runInstallation(autoIde, autoScope);
59
- } else {
60
- rl.question(questionIde, (ideChoice) => {
61
- if (ideChoice === '0') {
62
- console.log('? �� b? qua c?u h�nh t? d?ng. Skill OS v?n du?c t?i v?, b?n c� th? t? c?u h�nh file c?a IDE theo thu m?c hi?n t?i.');
63
- rl.close();
64
- return;
65
- }
66
-
67
- if (!['1', '2', '3', '4', '5', '6', '7'].includes(ideChoice)) {
68
- console.log('? L?a ch?n kh�ng h?p l?. Vui l�ng ch?y l?i script.');
69
- rl.close();
70
- return;
71
- }
72
-
73
- rl.question(questionScope, (scopeChoice) => {
74
- if (!['1', '2'].includes(scopeChoice)) {
75
- console.log('? L?a ch?n kh�ng h?p l?. M?c d?nh s? c�i Global.');
76
- scopeChoice = '1';
77
- }
78
- runInstallation(ideChoice, scopeChoice);
79
- });
80
- });
81
- }
82
- """
83
- content = content[:start_idx] + replacement + content[end_idx:]
84
-
85
- with open('bin/install.js', 'w', encoding='utf-8') as f:
86
- f.write(content)
87
- print("Python patch applied.")
88
- else:
89
- print("Could not find markers.")
package/patch2.py DELETED
@@ -1,83 +0,0 @@
1
- import sys
2
- with open('bin/install.js', 'r', encoding='utf-8') as f:
3
- content = f.read()
4
-
5
- # Fix kiloConfig bug
6
- content = content.replace(
7
- "if (!Array.isArray(kiloConfig.skills) || typeof kiloConfig.skills !== 'object' || !kiloConfig.skills.paths) {",
8
- "if (!kiloConfig.skills || typeof kiloConfig.skills !== 'object' || Array.isArray(kiloConfig.skills) || !kiloConfig.skills.paths) {"
9
- )
10
-
11
- # Replace the interactive part with CLI parsing
12
- start_marker = "rl.question(questionIde, (answerIde) => {"
13
- end_marker = " } catch (error) {\n console.error('? C� l?i x?y ra trong qu� tr�nh c�i d?t:', error.message);\n } finally {\n rl.close();\n }\n });\n});"
14
-
15
- start_idx = content.find(start_marker)
16
- end_idx = content.find(end_marker) + len(end_marker)
17
-
18
- if start_idx != -1 and end_idx != -1:
19
- replacement = """// Parse command line arguments for CI/CD automation
20
- const args = process.argv.slice(2);
21
- let autoIde = null;
22
- let autoScope = null;
23
-
24
- for (let i = 0; i < args.length; i++) {
25
- if (args[i].startsWith('--ide=')) {
26
- autoIde = args[i].split('=')[1];
27
- }
28
- if (args[i].startsWith('--scope=')) {
29
- autoScope = args[i].split('=')[1];
30
- }
31
- }
32
-
33
- function runInstallation(answerIde, answerScope) {
34
- """
35
-
36
- old_body = content[start_idx:end_idx]
37
-
38
- # Extract the body inside rl.question(questionScope...)
39
- scope_start = "rl.question(questionScope, (answerScope) => {"
40
- scope_start_idx = old_body.find(scope_start) + len(scope_start)
41
- scope_end = " } catch (error) {"
42
- scope_end_idx = old_body.find(scope_end)
43
-
44
- # Extract the ide logic before scope question
45
- ide_logic_start_idx = old_body.find(" let isGemini = false;")
46
- ide_logic_end_idx = old_body.find(scope_start)
47
- ide_logic = old_body[ide_logic_start_idx:ide_logic_end_idx]
48
-
49
- inner_body = old_body[scope_start_idx:scope_end_idx]
50
-
51
- replacement += ide_logic
52
- replacement += inner_body
53
- replacement += """
54
- } catch (error) {
55
- console.error('? Error during installation:', error.message);
56
- } finally {
57
- if (rl) rl.close();
58
- }
59
- }
60
-
61
- if (autoIde && autoScope) {
62
- console.log('\\n?? Running in non-interactive mode with IDE=' + autoIde + ', Scope=' + autoScope);
63
- runInstallation(autoIde, autoScope);
64
- } else {
65
- rl.question(questionIde, (answerIde) => {
66
- if (answerIde.trim() === '0') {
67
- console.log('? B? qua c�i d?t t? d?ng.');
68
- rl.close();
69
- return;
70
- }
71
- rl.question(questionScope, (answerScope) => {
72
- runInstallation(answerIde, answerScope);
73
- });
74
- });
75
- }
76
- """
77
- content = content[:start_idx] + replacement + content[end_idx:]
78
-
79
- with open('bin/install.js', 'w', encoding='utf-8') as f:
80
- f.write(content)
81
- print("Python patch applied.")
82
- else:
83
- print("Could not find markers.")
package/rename.js DELETED
@@ -1,64 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { execSync } from 'child_process';
4
-
5
- const skillsDir = 'skills';
6
- const categories = fs.readdirSync(skillsDir).filter(f => fs.statSync(path.join(skillsDir, f)).isDirectory());
7
-
8
- categories.forEach(category => {
9
- const catPath = path.join(skillsDir, category);
10
- const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
11
- skills.forEach(skill => {
12
- if (!skill.startsWith('qk-')) {
13
- const oldPath = path.join(catPath, skill).replace(/\\/g, '/');
14
- const newPath = path.join(catPath, 'qk-' + skill).replace(/\\/g, '/');
15
- try {
16
- console.log(`Đang đổi tên: ${oldPath} -> ${newPath}`);
17
- execSync(`git mv "${oldPath}" "${newPath}"`);
18
- } catch(e) {
19
- console.error('LỖI (Hãy chắc chắn bạn đã tắt hoàn toàn IDE/Cursor đang mở folder này):', e.message);
20
- }
21
- }
22
- });
23
- });
24
-
25
- // Update skills.json
26
- const skillsJsonPath = 'skills.json';
27
- let skillsData = JSON.parse(fs.readFileSync(skillsJsonPath, 'utf8'));
28
-
29
- // Fix entries and modify their paths
30
- if(skillsData.skills) {
31
- skillsData.skills = skillsData.skills.map(s => {
32
- if(!s.name.startsWith('qk-')) {
33
- s.name = 'qk-' + s.name;
34
- const parts = s.path.split('/');
35
- const skillFolder = parts[2];
36
- if(!skillFolder.startsWith('qk-')) {
37
- parts[2] = 'qk-' + skillFolder;
38
- }
39
- s.path = parts.join('/');
40
- }
41
- return s;
42
- });
43
- }
44
- fs.writeFileSync(skillsJsonPath, JSON.stringify(skillsData, null, 2));
45
-
46
- // Update SKILL.md names
47
- categories.forEach(category => {
48
- const catPath = path.join(skillsDir, category);
49
- const skills = fs.readdirSync(catPath).filter(f => fs.statSync(path.join(catPath, f)).isDirectory());
50
- skills.forEach(skill => {
51
- if (skill.startsWith('qk-')) {
52
- const skillMdPath = path.join(catPath, skill, 'SKILL.md');
53
- if (fs.existsSync(skillMdPath)) {
54
- let content = fs.readFileSync(skillMdPath, 'utf8');
55
- content = content.replace(/^name:\s*([a-zA-Z0-9-]+)\s*$/m, (match, p1) => {
56
- if (!p1.startsWith('qk-')) return 'name: qk-' + p1;
57
- return match;
58
- });
59
- fs.writeFileSync(skillMdPath, content);
60
- }
61
- }
62
- });
63
- });
64
- console.log('✅ Đã đổi tên thành công toàn bộ sang hệ qk-* !');