ai-developer-skill-os 7.5.1 → 8.1.5

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 (319) hide show
  1. package/.agents/docs/ARCHITECTURE.md +156 -0
  2. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +36 -0
  3. package/.agents/docs/MIGRATION-STATUS.md +35 -0
  4. package/.agents/docs/MIGRATION-V8.md +10 -0
  5. package/.agents/docs/ROADMAP-V8.2.md +78 -0
  6. package/.agents/docs/V8-CERTIFICATION.md +27 -0
  7. package/.agents/docs/VERSIONING.md +95 -0
  8. package/.agents/docs/decisions/ADR-001-v8-migration.md +58 -0
  9. package/.agents/docs/decisions/ADR-002-workflow-separation.md +50 -0
  10. package/.agents/docs/decisions/ADR-003-registry-generated.md +54 -0
  11. package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +27 -0
  12. package/.agents/docs/schemas/learning.schema.yml +69 -0
  13. package/.agents/docs/schemas/skill.schema.yml +188 -0
  14. package/.agents/docs/schemas/workflow.schema.yml +33 -0
  15. package/.agents/knowledge/design-intelligence/components/buttons.md +25 -0
  16. package/.agents/knowledge/design-intelligence/components/cards.md +21 -0
  17. package/.agents/knowledge/design-intelligence/components/inputs.md +14 -0
  18. package/.agents/knowledge/design-intelligence/components/modals.md +14 -0
  19. package/.agents/knowledge/design-intelligence/industries/ecommerce.md +16 -0
  20. package/.agents/knowledge/design-intelligence/industries/fintech.md +16 -0
  21. package/.agents/knowledge/design-intelligence/industries/healthcare.md +16 -0
  22. package/.agents/knowledge/design-intelligence/patterns/data-display.md +18 -0
  23. package/.agents/knowledge/design-intelligence/patterns/empty-states.md +18 -0
  24. package/.agents/knowledge/design-intelligence/patterns/forms.md +15 -0
  25. package/.agents/knowledge/design-intelligence/references/accessibility.md +13 -0
  26. package/.agents/knowledge/design-intelligence/references/tailwind-preset.md +17 -0
  27. package/.agents/knowledge/design-intelligence/templates/auth.md +13 -0
  28. package/.agents/knowledge/design-intelligence/templates/dashboard.md +15 -0
  29. package/.agents/knowledge/design-intelligence/templates/landing-page.md +18 -0
  30. package/.agents/knowledge/design-intelligence/themes/minimal.md +15 -0
  31. package/.agents/knowledge/design-intelligence/themes/saas.md +16 -0
  32. package/.agents/knowledge/design-intelligence/visual-language/animation.md +20 -0
  33. package/.agents/knowledge/design-intelligence/visual-language/color.md +24 -0
  34. package/.agents/knowledge/design-intelligence/visual-language/layout.md +18 -0
  35. package/.agents/knowledge/design-intelligence/visual-language/spacing.md +19 -0
  36. package/.agents/knowledge/design-intelligence/visual-language/typography.md +23 -0
  37. package/.agents/learnings/draft/README.md +37 -0
  38. package/.agents/registry/capability-graph.yml +500 -0
  39. package/.agents/registry/skills-index.yml +525 -0
  40. package/.agents/reports/RELEASE-CHECKLIST.md +29 -0
  41. package/.agents/reports/architecture-audit.md +13 -0
  42. package/.agents/reports/graph-health.md +20 -0
  43. package/.agents/reports/skill-audit.md +215 -0
  44. package/.agents/rules/coding.md +102 -0
  45. package/.agents/rules/command-safety.md +21 -0
  46. package/.agents/rules/global.md +135 -0
  47. package/.agents/rules/priorities.yml +24 -0
  48. package/.agents/rules/safety.md +84 -0
  49. package/.agents/rules/security.md +13 -0
  50. package/.agents/rules/skill-quality.md +14 -0
  51. package/.agents/skills/_template/SKILL.md +132 -0
  52. package/.agents/skills/qk-access-policy/SKILL.md +61 -5
  53. package/.agents/skills/qk-agent-observability/SKILL.md +73 -0
  54. package/.agents/skills/qk-ai-builder/SKILL.md +62 -5
  55. package/.agents/skills/qk-api-lifecycle/SKILL.md +59 -6
  56. package/.agents/skills/qk-bug-resolution/SKILL.md +64 -6
  57. package/.agents/skills/qk-context-loader/SKILL.md +63 -11
  58. package/.agents/skills/qk-data-lifecycle/SKILL.md +61 -5
  59. package/.agents/skills/qk-db-optimizer/SKILL.md +61 -5
  60. package/.agents/skills/qk-design-system-engineering/SKILL.md +112 -0
  61. package/.agents/skills/qk-devops-platform/SKILL.md +117 -0
  62. package/.agents/skills/qk-docs/SKILL.md +62 -6
  63. package/.agents/skills/qk-engineering-standard/SKILL.md +62 -12
  64. package/.agents/skills/qk-fe-api-integration/SKILL.md +60 -6
  65. package/.agents/skills/qk-feature-delivery/SKILL.md +65 -6
  66. package/.agents/skills/qk-frontend-architecture/SKILL.md +134 -0
  67. package/.agents/skills/qk-help/SKILL.md +245 -193
  68. package/.agents/skills/qk-orchestrator/SKILL.md +64 -11
  69. package/.agents/skills/qk-orchestrator/references/routing-table.md +1 -1
  70. package/.agents/skills/qk-product-specification/SKILL.md +130 -0
  71. package/.agents/skills/qk-production-release/SKILL.md +59 -6
  72. package/.agents/skills/qk-project-bootstrap/SKILL.md +66 -6
  73. package/.agents/skills/qk-project-health/SKILL.md +63 -6
  74. package/.agents/skills/qk-project-memory/SKILL.md +63 -6
  75. package/.agents/skills/qk-security-audit/SKILL.md +135 -0
  76. package/.agents/skills/qk-system-evolution/SKILL.md +63 -12
  77. package/.agents/skills/qk-test-engineering/SKILL.md +139 -0
  78. package/.agents/skills/qk-ui-audit/SKILL.md +60 -6
  79. package/.agents/skills/qk-ui-builder/SKILL.md +509 -446
  80. package/.agents/skills/qk-ui-system-builder/SKILL.md +74 -5
  81. package/.agents/skills/qk-validation-gate/SKILL.md +63 -11
  82. package/.agents/skills/qk-web-quality-gate/SKILL.md +114 -0
  83. package/.agents/workflows/_schema.yml +109 -0
  84. package/.agents/workflows/bug-resolution.yml +101 -0
  85. package/.agents/workflows/code-review.yml +77 -0
  86. package/.agents/workflows/documentation.yml +75 -0
  87. package/.agents/workflows/feature-delivery.yml +103 -0
  88. package/.agents/workflows/refactor.yml +81 -0
  89. package/.agents/workflows/research.yml +60 -0
  90. package/.agents/workflows/security-audit.yml +72 -0
  91. package/.agents/workflows/skill-evolution.yml +65 -0
  92. package/.agents/workflows/spec-driven-development.yml +57 -0
  93. package/CHANGELOG.md +91 -70
  94. package/README.md +44 -59
  95. package/bin/install.js +57 -309
  96. package/package.json +13 -2
  97. package/tooling/generate-evaluation-cases.cjs +44 -0
  98. package/tooling/generate-registry.js +157 -0
  99. package/tooling/run-aar.js +143 -0
  100. package/tooling/validate-graph.js +87 -0
  101. package/tooling/validate-skills.js +102 -0
  102. package/.agents/skills.json +0 -819
  103. package/.github/workflows/ci.yml +0 -56
  104. package/CLAUDE.md +0 -110
  105. package/_template/BEHAVIOR_SPEC.md +0 -96
  106. package/_template/examples/example-en.md +0 -49
  107. package/_template/examples/example-vi.md +0 -49
  108. package/add_lang.js +0 -21
  109. package/add_lang.py +0 -25
  110. package/add_sections.py +0 -53
  111. package/bin/lint.js +0 -123
  112. package/docs/CHI_TIET_SKILLS.md +0 -126
  113. package/docs/GOVERNANCE.md +0 -40
  114. package/docs/HUONG_DAN_SU_DUNG.md +0 -120
  115. package/docs/SPEC.md +0 -87
  116. package/docs/adr/0001-intent-based-architecture.md +0 -19
  117. package/docs/adr/0002-kernel-freeze.md +0 -21
  118. package/docs/adr/0003-risk-based-verification.md +0 -20
  119. package/docs/adr/0004-progressive-evidence.md +0 -19
  120. package/docs/skill-classification.md +0 -25
  121. package/fix_seeds.js +0 -22
  122. package/framework/KERNEL.md +0 -83
  123. package/framework/bias-library/cosmetic-refactor.md +0 -21
  124. package/framework/bias-library/enterprise-crud.md +0 -21
  125. package/framework/bias-library/fake-ui-slop.md +0 -20
  126. package/framework/bias-library/hallucinated-tools.md +0 -20
  127. package/framework/bias-library/missing-ui-states.md +0 -19
  128. package/framework/bias-library/over-indexing.md +0 -20
  129. package/framework/bias-library/swallow-errors.md +0 -19
  130. package/framework/bias-library/ui-only-security.md +0 -17
  131. package/framework/decision-primitives.md +0 -48
  132. package/framework/dial-library/complexity-budget.md +0 -13
  133. package/framework/dial-library/granularity.md +0 -13
  134. package/framework/dial-library/optimization-strategy.md +0 -13
  135. package/framework/dial-library/strictness.md +0 -13
  136. package/framework/rule-library/delegation-only.md +0 -9
  137. package/framework/rule-library/minimal-diff.md +0 -9
  138. package/framework/skill-schema.md +0 -310
  139. package/knowledge/backend/nodejs.md +0 -52
  140. package/knowledge/frontend/react.md +0 -81
  141. package/migrate-to-v6.js +0 -130
  142. package/migrate.js +0 -147
  143. package/migrate.py +0 -133
  144. package/migrate_all.cjs +0 -96
  145. package/patch.js +0 -15
  146. package/patch.py +0 -89
  147. package/patch2.py +0 -83
  148. package/rename.js +0 -64
  149. package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +0 -121
  150. package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +0 -179
  151. package/skills/_archive_old_skills/qk-api-integration/SKILL.md +0 -389
  152. package/skills/_archive_old_skills/qk-auth-security/SKILL.md +0 -96
  153. package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +0 -125
  154. package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +0 -213
  155. package/skills/_archive_old_skills/qk-component-generator/SKILL.md +0 -136
  156. package/skills/_archive_old_skills/qk-context-manager/SKILL.md +0 -175
  157. package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +0 -104
  158. package/skills/_archive_old_skills/qk-deployment/SKILL.md +0 -96
  159. package/skills/_archive_old_skills/qk-design-system/SKILL.md +0 -137
  160. package/skills/_archive_old_skills/qk-form-builder/SKILL.md +0 -140
  161. package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +0 -155
  162. package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +0 -133
  163. package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +0 -129
  164. package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +0 -146
  165. package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +0 -304
  166. package/skills/_archive_old_skills/qk-help/SKILL.md +0 -68
  167. package/skills/_archive_old_skills/qk-migration/SKILL.md +0 -284
  168. package/skills/_archive_old_skills/qk-project-audit/SKILL.md +0 -280
  169. package/skills/_archive_old_skills/qk-refactor/SKILL.md +0 -222
  170. package/skills/_archive_old_skills/qk-state-management/SKILL.md +0 -140
  171. package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +0 -127
  172. package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +0 -152
  173. package/skills/_template/SKILL.md +0 -239
  174. package/skills/qk-access-policy/SKILL.md +0 -180
  175. package/skills/qk-ai-builder/SKILL.md +0 -216
  176. package/skills/qk-api-lifecycle/SKILL.md +0 -177
  177. package/skills/qk-bug-resolution/SKILL.md +0 -308
  178. package/skills/qk-context-loader/SKILL.md +0 -219
  179. package/skills/qk-data-lifecycle/SKILL.md +0 -193
  180. package/skills/qk-db-optimizer/SKILL.md +0 -197
  181. package/skills/qk-docs/SKILL.md +0 -199
  182. package/skills/qk-engineering-standard/SKILL.md +0 -352
  183. package/skills/qk-engineering-standard/rules/backend.md +0 -122
  184. package/skills/qk-engineering-standard/rules/database.md +0 -3
  185. package/skills/qk-engineering-standard/rules/frontend.md +0 -152
  186. package/skills/qk-engineering-standard/rules/security.md +0 -3
  187. package/skills/qk-engineering-standard/rules/testing.md +0 -3
  188. package/skills/qk-fe-api-integration/SKILL.md +0 -327
  189. package/skills/qk-feature-delivery/SKILL.md +0 -306
  190. package/skills/qk-help/SKILL.md +0 -194
  191. package/skills/qk-orchestrator/SKILL.md +0 -279
  192. package/skills/qk-orchestrator/references/routing-table.md +0 -78
  193. package/skills/qk-production-release/SKILL.md +0 -285
  194. package/skills/qk-project-bootstrap/SKILL.md +0 -236
  195. package/skills/qk-project-health/SKILL.md +0 -200
  196. package/skills/qk-project-memory/SKILL.md +0 -219
  197. package/skills/qk-system-evolution/SKILL.md +0 -282
  198. package/skills/qk-ui-audit/SKILL.md +0 -316
  199. package/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  200. package/skills/qk-ui-builder/SKILL.md +0 -447
  201. package/skills/qk-ui-builder/references/anti-patterns.md +0 -295
  202. package/skills/qk-ui-builder/references/color.md +0 -115
  203. package/skills/qk-ui-builder/references/component-cookbook.md +0 -1194
  204. package/skills/qk-ui-builder/references/copy.md +0 -250
  205. package/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
  206. package/skills/qk-ui-builder/references/layout-and-space.md +0 -111
  207. package/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
  208. package/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
  209. package/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
  210. package/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
  211. package/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
  212. package/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
  213. package/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
  214. package/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
  215. package/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
  216. package/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
  217. package/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
  218. package/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
  219. package/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
  220. package/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
  221. package/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
  222. package/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
  223. package/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
  224. package/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
  225. package/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
  226. package/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
  227. package/skills/qk-ui-builder/references/macrostructures.md +0 -38
  228. package/skills/qk-ui-builder/references/motion.md +0 -95
  229. package/skills/qk-ui-builder/references/responsive.md +0 -115
  230. package/skills/qk-ui-builder/references/slop-test.md +0 -135
  231. package/skills/qk-ui-builder/references/structure.md +0 -280
  232. package/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
  233. package/skills/qk-ui-builder/references/themes/carnival.md +0 -52
  234. package/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
  235. package/skills/qk-ui-builder/references/themes/editorial.md +0 -52
  236. package/skills/qk-ui-builder/references/themes/garden.md +0 -52
  237. package/skills/qk-ui-builder/references/themes/hum.md +0 -52
  238. package/skills/qk-ui-builder/references/themes/lumen.md +0 -52
  239. package/skills/qk-ui-builder/references/themes/midnight.md +0 -52
  240. package/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
  241. package/skills/qk-ui-builder/references/themes/playful.md +0 -52
  242. package/skills/qk-ui-builder/references/themes/specimen.md +0 -52
  243. package/skills/qk-ui-builder/references/themes/terminal.md +0 -52
  244. package/skills/qk-ui-builder/references/typography.md +0 -129
  245. package/skills/qk-ui-system-builder/SKILL.md +0 -222
  246. package/skills/qk-validation-gate/SKILL.md +0 -360
  247. package/skills.json +0 -820
  248. package/specs/contracts/behavior-contract.yaml +0 -40
  249. package/specs/expectations/qk-bug-resolution.yaml +0 -35
  250. package/specs/fixtures/user-payload.json +0 -12
  251. package/specs/regressions/api-integration-null-fields.yaml +0 -19
  252. package/specs/scenarios/fix-login-nullref.yaml +0 -3
  253. package/taste-skill/.claude-plugin/marketplace.json +0 -20
  254. package/taste-skill/.claude-plugin/plugin.json +0 -19
  255. package/taste-skill/.github/FUNDING.yml +0 -1
  256. package/taste-skill/.github/copilot-instructions.md +0 -11
  257. package/taste-skill/CHANGELOG.md +0 -111
  258. package/taste-skill/LICENSE +0 -21
  259. package/taste-skill/README.md +0 -212
  260. package/taste-skill/assets/.gitkeep +0 -0
  261. package/taste-skill/assets/readme-banner.webp +0 -0
  262. package/taste-skill/assets/readme-buttons/btn-agent-skills.webp +0 -0
  263. package/taste-skill/assets/readme-buttons/btn-changelog.webp +0 -0
  264. package/taste-skill/assets/readme-buttons/btn-mit.webp +0 -0
  265. package/taste-skill/assets/readme-buttons/btn-site.webp +0 -0
  266. package/taste-skill/assets/readme-buttons/btn-tools.webp +0 -0
  267. package/taste-skill/assets/readme-cta-tasteskill.svg +0 -5
  268. package/taste-skill/assets/sponsors/animations-dev.webp +0 -0
  269. package/taste-skill/assets/sponsors/emil-animations-dev.webp +0 -0
  270. package/taste-skill/assets/taste-skill-logo.png +0 -0
  271. package/taste-skill/assets/taste-skill-logo.webp +0 -0
  272. package/taste-skill/assets/vercel-oss-program-badge.svg +0 -44
  273. package/taste-skill/examples/floria-bottom.webp +0 -0
  274. package/taste-skill/examples/floria-full.webp +0 -0
  275. package/taste-skill/examples/floria-top.webp +0 -0
  276. package/taste-skill/research/README.md +0 -8
  277. package/taste-skill/research/laziness/README.md +0 -25
  278. package/taste-skill/research/laziness/findings/empirical-results.md +0 -58
  279. package/taste-skill/research/laziness/findings/references.md +0 -20
  280. package/taste-skill/research/laziness/remediation/architectural-patterns.md +0 -55
  281. package/taste-skill/research/laziness/remediation/parameter-tuning.md +0 -44
  282. package/taste-skill/research/laziness/remediation/prompt-engineering.md +0 -52
  283. package/taste-skill/research/laziness/remediation/reference-prompts.md +0 -79
  284. package/taste-skill/research/laziness/root-causes/cognitive-shortcuts.md +0 -23
  285. package/taste-skill/research/laziness/root-causes/output-limits.md +0 -39
  286. package/taste-skill/research/laziness/root-causes/rlhf-and-compute.md +0 -27
  287. package/taste-skill/research/laziness/root-causes/training-data-bias.md +0 -28
  288. package/taste-skill/scripts/build-emil-sponsor-row.mjs +0 -41
  289. package/taste-skill/scripts/convert-readme-assets-webp.mjs +0 -142
  290. package/taste-skill/scripts/process-readme-buttons.mjs +0 -108
  291. package/taste-skill/scripts/process-sponsor-badge.mjs +0 -83
  292. package/taste-skill/skill.sh +0 -25
  293. package/taste-skill/skills/brandkit/SKILL.md +0 -798
  294. package/taste-skill/skills/brutalist-skill/SKILL.md +0 -92
  295. package/taste-skill/skills/gpt-tasteskill/SKILL.md +0 -74
  296. package/taste-skill/skills/image-to-code-skill/SKILL.md +0 -1228
  297. package/taste-skill/skills/imagegen-frontend-mobile/SKILL.md +0 -1465
  298. package/taste-skill/skills/imagegen-frontend-web/SKILL.md +0 -987
  299. package/taste-skill/skills/llms.txt +0 -13
  300. package/taste-skill/skills/minimalist-skill/SKILL.md +0 -85
  301. package/taste-skill/skills/output-skill/SKILL.md +0 -49
  302. package/taste-skill/skills/redesign-skill/SKILL.md +0 -178
  303. package/taste-skill/skills/soft-skill/SKILL.md +0 -98
  304. package/taste-skill/skills/stitch-skill/DESIGN.md +0 -121
  305. package/taste-skill/skills/stitch-skill/SKILL.md +0 -184
  306. package/taste-skill/skills/taste-skill/SKILL.md +0 -1206
  307. package/taste-skill/skills/taste-skill-v1/SKILL.md +0 -226
  308. package/temp_fix.js +0 -61
  309. package/templates/DESIGN.md +0 -38
  310. package/templates/bug-report.md +0 -21
  311. package/templates/design-report.md +0 -21
  312. package/templates/feature-report.md +0 -20
  313. package/templates/review-report.md +0 -21
  314. package/templates/skill-template.md +0 -38
  315. package/tests/behavior-conformance.test.js +0 -154
  316. package/tests/install-script.test.js +0 -38
  317. package/tests/registry.test.js +0 -111
  318. package/update_template.js +0 -28
  319. package/vitest.config.js +0 -11
@@ -1,56 +0,0 @@
1
- name: CI / Spec Compliance & Registry Validation
2
-
3
- on:
4
- pull_request:
5
- paths:
6
- - 'skills/**'
7
- - 'skills.json'
8
- - 'docs/SPEC.md'
9
- - 'bin/install.js'
10
- push:
11
- branches: [ main ]
12
- paths:
13
- - 'skills/**'
14
- - 'skills.json'
15
- - 'docs/SPEC.md'
16
- - 'bin/install.js'
17
-
18
- jobs:
19
- lint-and-validate:
20
- runs-on: windows-latest
21
- steps:
22
- - name: Checkout
23
- uses: actions/checkout@v4
24
-
25
- - name: Setup Node.js
26
- uses: actions/setup-node@v4
27
- with:
28
- node-version: '20.x'
29
-
30
- - name: Install dependencies
31
- run: npm install
32
-
33
- - name: Validate Skills Registry vs Filesystem
34
- run: npm run test:registry
35
-
36
- - name: Validate SKILL.md Spec Compliance
37
- run: npm run lint
38
-
39
- snapshot:
40
- runs-on: windows-latest
41
- needs: lint-and-validate
42
- if: github.ref == 'refs/heads/main'
43
- steps:
44
- - name: Checkout
45
- uses: actions/checkout@v4
46
-
47
- - name: Setup Node.js
48
- uses: actions/setup-node@v4
49
- with:
50
- node-version: '20.x'
51
-
52
- - name: Install dependencies
53
- run: npm install
54
-
55
- - name: Generate Registry Snapshot
56
- run: node bin/install.js --ide=7 --scope=2
package/CLAUDE.md DELETED
@@ -1,110 +0,0 @@
1
- [Role]
2
- You are an elite AI Software Engineer. You must strictly follow the rules in this project.
3
- Vui lòng tìm đọc danh sách kỹ năng tại file `./.qk-ai-skill-os/skills.json`.
4
-
5
- [Trigger Mechanism]
6
- Bất cứ khi nào người dùng gõ lệnh bắt đầu bằng `./qk-[tên-skill]`, bạn BẮT BUỘC phải đọc file `SKILL.md` tương ứng trong thư mục `./.qk-ai-skill-os/...` (hoặc dùng tool view_file để đọc file đó) trước khi làm bất cứ việc gì. Đừng bao giờ đoán mò.
7
-
8
- [Autonomous Execution & Transparency]
9
- Khi nhận được lệnh kỹ năng, bạn BẮT BUỘC phải:
10
- 1. Thông báo rõ ràng: "[🚀 AI Developer Skin: Đã kích hoạt kỹ năng <tên-skill>]" ngay dòng đầu tiên.
11
- 2. TỰ ĐỘNG THỰC THI (End-to-End): Dùng các tools của bạn (đọc file, sửa code, chạy lệnh) để tự động hoàn thành 100% mục tiêu được giao. KHÔNG ĐƯỢC dừng lại để hỏi ý kiến trừ khi gặp lỗi chí mạng hoặc requirement quá mập mờ.
12
- 3. BÁO CÁO KẾT QUẢ: Sau khi hoàn tất sửa code, LUÔN trả về báo cáo theo đúng format markdown dưới đây:
13
-
14
- ```markdown
15
- 🔧 <Tên Kỹ Năng> Summary
16
- ─────────────────────────────────────────────────
17
- Scope: [Tóm tắt ngắn gọn phạm vi công việc]
18
- Changes: [N file modified, N extracted, N removed]
19
-
20
- Changes applied:
21
- ✅ [Loại hành động 1]: [Chi tiết những gì đã làm, ví dụ: Ngăn chặn lỗi lặp vô hạn...]
22
- ✅ [Loại hành động 2]: [Chi tiết những gì đã làm]
23
-
24
- 📊 Quality improvement:
25
- Before: [Mô tả ngắn tình trạng trước khi sửa/làm]
26
- After: [Mô tả sự cải thiện đạt được]
27
-
28
- ✅ Verification:
29
- Tests: [Trạng thái test (vd: N/A, Pass)]
30
- Lint/Types:[Trạng thái kiểm tra lỗi (vd: Clean)]
31
- Behavior: [Kết quả hoạt động (vd: Unchanged, Improved)]
32
-
33
- ⚠️ Notes:
34
- [Các lưu ý đặc biệt, rủi ro tiềm ẩn hoặc cách người dùng có thể test lại tính năng này]
35
- ```
36
-
37
- [Command Arguments]
38
- Người dùng có thể truyền thêm tham số vào lệnh (ví dụ: `./qk-ui-builder --fw=react --css=tailwind`).
39
- Nếu người dùng sử dụng tham số (argument), bạn BẮT BUỘC phải tuân thủ tuyệt đối các công nghệ/yêu cầu được chỉ định trong tham số đó thay vì dùng mặc định.
40
- ]
41
- Bất cứ khi nào người dùng gõ lệnh bắt đầu bằng `./qk-[tên-skill]`, bạn BẮT BUỘC phải đọc file `SKILL.md` tương ứng trong thư mục `./.qk-ai-skill-os/...` (hoặc dùng tool view_file để đọc file đó) trước khi làm bất cứ việc gì. Đừng bao giờ đoán mò.
42
-
43
- [Autonomous Execution & Transparency]
44
- Khi nhận được lệnh kỹ năng, bạn BẮT BUỘC phải:
45
- 1. Thông báo rõ ràng: "[🚀 AI Developer Skin: Đã kích hoạt kỹ năng <tên-skill>]" ngay dòng đầu tiên.
46
- 2. TỰ ĐỘNG THỰC THI (End-to-End): Dùng các tools của bạn (đọc file, sửa code, chạy lệnh) để tự động hoàn thành 100% mục tiêu được giao. KHÔNG ĐƯỢC dừng lại để hỏi ý kiến trừ khi gặp lỗi chí mạng hoặc requirement quá mập mờ.
47
- 3. BÁO CÁO KẾT QUẢ: Sau khi hoàn tất sửa code, LUÔN trả về báo cáo theo đúng format markdown dưới đây:
48
-
49
- ```markdown
50
- 🔧 <Tên Kỹ Năng> Summary
51
- ─────────────────────────────────────────────────
52
- Scope: [Tóm tắt ngắn gọn phạm vi công việc]
53
- Changes: [N file modified, N extracted, N removed]
54
-
55
- Changes applied:
56
- ✅ [Loại hành động 1]: [Chi tiết những gì đã làm, ví dụ: Ngăn chặn lỗi lặp vô hạn...]
57
- ✅ [Loại hành động 2]: [Chi tiết những gì đã làm]
58
-
59
- 📊 Quality improvement:
60
- Before: [Mô tả ngắn tình trạng trước khi sửa/làm]
61
- After: [Mô tả sự cải thiện đạt được]
62
-
63
- ✅ Verification:
64
- Tests: [Trạng thái test (vd: N/A, Pass)]
65
- Lint/Types:[Trạng thái kiểm tra lỗi (vd: Clean)]
66
- Behavior: [Kết quả hoạt động (vd: Unchanged, Improved)]
67
-
68
- ⚠️ Notes:
69
- [Các lưu ý đặc biệt, rủi ro tiềm ẩn hoặc cách người dùng có thể test lại tính năng này]
70
- ```
71
-
72
- [Command Arguments]
73
- Người dùng có thể truyền thêm tham số vào lệnh (ví dụ: `./qk-ui-builder --fw=react --css=tailwind`).
74
- Nếu người dùng sử dụng tham số (argument), bạn BẮT BUỘC phải tuân thủ tuyệt đối các công nghệ/yêu cầu được chỉ định trong tham số đó thay vì dùng mặc định.
75
- ]
76
- Bất cứ khi nào người dùng gõ lệnh bắt đầu bằng `./qk-[tên-skill]`, bạn BẮT BUỘC phải đọc file `SKILL.md` tương ứng trong thư mục `./.qk-ai-skill-os/...` (hoặc dùng tool view_file để đọc file đó) trước khi làm bất cứ việc gì. Đừng bao giờ đoán mò.
77
-
78
- [Autonomous Execution & Transparency]
79
- Khi nhận được lệnh kỹ năng, bạn BẮT BUỘC phải:
80
- 1. Thông báo rõ ràng: "[🚀 AI Developer Skin: Đã kích hoạt kỹ năng <tên-skill>]" ngay dòng đầu tiên.
81
- 2. TỰ ĐỘNG THỰC THI (End-to-End): Dùng các tools của bạn (đọc file, sửa code, chạy lệnh) để tự động hoàn thành 100% mục tiêu được giao. KHÔNG ĐƯỢC dừng lại để hỏi ý kiến trừ khi gặp lỗi chí mạng hoặc requirement quá mập mờ.
82
- 3. BÁO CÁO KẾT QUẢ: Sau khi hoàn tất sửa code, LUÔN trả về báo cáo theo đúng format markdown dưới đây:
83
-
84
- ```markdown
85
- 🔧 <Tên Kỹ Năng> Summary
86
- ─────────────────────────────────────────────────
87
- Scope: [Tóm tắt ngắn gọn phạm vi công việc]
88
- Changes: [N file modified, N extracted, N removed]
89
-
90
- Changes applied:
91
- ✅ [Loại hành động 1]: [Chi tiết những gì đã làm, ví dụ: Ngăn chặn lỗi lặp vô hạn...]
92
- ✅ [Loại hành động 2]: [Chi tiết những gì đã làm]
93
-
94
- 📊 Quality improvement:
95
- Before: [Mô tả ngắn tình trạng trước khi sửa/làm]
96
- After: [Mô tả sự cải thiện đạt được]
97
-
98
- ✅ Verification:
99
- Tests: [Trạng thái test (vd: N/A, Pass)]
100
- Lint/Types:[Trạng thái kiểm tra lỗi (vd: Clean)]
101
- Behavior: [Kết quả hoạt động (vd: Unchanged, Improved)]
102
-
103
- ⚠️ Notes:
104
- [Các lưu ý đặc biệt, rủi ro tiềm ẩn hoặc cách người dùng có thể test lại tính năng này]
105
- ```
106
-
107
- [Command Arguments]
108
- Người dùng có thể truyền thêm tham số vào lệnh (ví dụ: `./qk-ui-builder --fw=react --css=tailwind`).
109
- Nếu người dùng sử dụng tham số (argument), bạn BẮT BUỘC phải tuân thủ tuyệt đối các công nghệ/yêu cầu được chỉ định trong tham số đó thay vì dùng mặc định.
110
-
@@ -1,96 +0,0 @@
1
- ---
2
- name: qk-[tên-behavior]
3
- version: 6.0.0
4
- updated: 2026-07-10
5
- description: Behavior Specification theo chuẩn BSF v6.0.
6
- ---
7
-
8
- # 📜 Behavior Specification: [Tên Behavior]
9
-
10
- ## 1. Behavior (Định danh Hành vi)
11
- ```yaml
12
- Mission: [Mục tiêu tối thượng của hành vi này]
13
- Authority: [Thẩm quyền tối đa được phép]
14
- Responsibility: [Trách nhiệm cốt lõi]
15
- Limitation: [Giới hạn tuyệt đối không được vượt qua]
16
- ```
17
-
18
- ## 2. Contracts (Hợp đồng)
19
-
20
- ### 2.1. Capability Contract
21
- ```yaml
22
- Can:
23
- - [Hành động được phép: VD - read_docs, execute_tests]
24
- Must:
25
- - [Hành động bắt buộc: VD - verify assumptions before coding]
26
- Cannot:
27
- - [Hành động cấm: VD - invent API, drop database]
28
- ```
29
-
30
- ### 2.2. Output Contract
31
- ```yaml
32
- Artifacts:
33
- - [Artifact 1: VD - plan.md]
34
- - [Artifact 2: VD - summary_report]
35
- Completion: "Artifacts generated & Quality Gates passed."
36
- ```
37
-
38
- ## 3. Policies (Chính sách)
39
-
40
- ### 3.1. Context Policy
41
- ```yaml
42
- Scope: [current_repo | whole_workspace | external_docs]
43
- Priority:
44
- 1: Project Docs
45
- 2: Current Conversation
46
- 3: Source Code
47
- Trust: "official docs > code > assumptions"
48
- Fallback: ask_user
49
- ```
50
-
51
- ### 3.2. Reasoning Boundary
52
- ```yaml
53
- May infer: [VD: Variable naming, Local scope logic]
54
- Must verify: [VD: Business logic, Auth rules]
55
- Must ask: [VD: Missing edge cases, Vague requirements]
56
- Must refuse: [VD: Unsafe assumptions, Security risks]
57
- ```
58
-
59
- ### 3.3. Decision Policy
60
- ```yaml
61
- Priority:
62
- 1: correctness
63
- 2: safety
64
- 3: maintainability
65
- 4: performance
66
- ```
67
-
68
- ### 3.4. Evidence Policy
69
- ```yaml
70
- Accept: [logs, unit tests, profiling data]
71
- Prefer: [official vendor docs, architecture repo docs]
72
- Reject: [guess, outdated internet search, agent memory]
73
- ```
74
-
75
- ### 3.5. Escalation Policy
76
- ```yaml
77
- Warning: [Cảnh báo rủi ro (VD: Rename file)]
78
- Confirmation: [Cần user cho phép (VD: Override config)]
79
- Stop: [Dừng ngay lập tức (VD: Đụng vào Auth, Permission Denied)]
80
- ```
81
-
82
- ## 4. Protocol (Tùy chọn)
83
- *(Chỉ sử dụng nếu behavior này yêu cầu quy trình nhiều bước (State Machine). Xóa phần này nếu không cần thiết).*
84
-
85
- ```yaml
86
- States:
87
- - collect_context
88
- - clarify
89
- - execute
90
-
91
- Transitions:
92
- collect_context:
93
- if context_missing: -> clarify
94
- else: -> execute
95
- # ... (Các rule chuyển trạng thái khác) ...
96
- ```
@@ -1,49 +0,0 @@
1
- ---
2
- # AI Developer Skill OS
3
- # Example usage file (English)
4
- # Copy this as a starting point for your skill examples
5
- ---
6
-
7
- # Example: [Skill Name]
8
-
9
- ## Input
10
-
11
- **User request:**
12
- ```
13
- [Describe what the user said or asked]
14
- ```
15
-
16
- **Project context:**
17
- - Framework: [React 18 / Next.js 14 / Vue 3 / etc.]
18
- - Relevant files: `[path/to/file.ts]`
19
- - Current state: [Brief description]
20
-
21
- ---
22
-
23
- ## Execution
24
-
25
- **Skill activated:** `[skill-name]`
26
-
27
- **Phase 1 — Analysis:**
28
- > [What the AI analyzed]
29
-
30
- **Phase 2 — Plan:**
31
- > [What the AI decided to do]
32
-
33
- **Phase 3 — Output:**
34
-
35
- ```typescript
36
- // [filename.ts]
37
- // [Generated or modified code]
38
- ```
39
-
40
- ---
41
-
42
- ## Result
43
-
44
- ```
45
- ✅ Summary: [What was done]
46
- 📁 Files: [List of files]
47
- ⚠️ Warnings: [Any notes]
48
- 🔗 Next steps: [Follow-up suggestion]
49
- ```
@@ -1,49 +0,0 @@
1
- ---
2
- # AI Developer Skill OS
3
- # File ví dụ sử dụng (Tiếng Việt)
4
- # Sao chép file này làm điểm khởi đầu cho ví dụ của bạn
5
- ---
6
-
7
- # Ví dụ: [Tên Skill]
8
-
9
- ## Input (Đầu vào)
10
-
11
- **Yêu cầu của người dùng:**
12
- ```
13
- [Mô tả người dùng đã nói hoặc yêu cầu gì]
14
- ```
15
-
16
- **Bối cảnh dự án:**
17
- - Framework: [React 18 / Next.js 14 / Vue 3 / v.v.]
18
- - File liên quan: `[path/to/file.ts]`
19
- - Trạng thái hiện tại: [Mô tả ngắn]
20
-
21
- ---
22
-
23
- ## Thực thi
24
-
25
- **Skill được kích hoạt:** `[skill-name]`
26
-
27
- **Phase 1 — Phân tích:**
28
- > [AI đã phân tích gì]
29
-
30
- **Phase 2 — Kế hoạch:**
31
- > [AI quyết định làm gì]
32
-
33
- **Phase 3 — Kết quả:**
34
-
35
- ```typescript
36
- // [filename.ts]
37
- // [Code được tạo hoặc chỉnh sửa]
38
- ```
39
-
40
- ---
41
-
42
- ## Kết quả
43
-
44
- ```
45
- ✅ Tóm tắt: [Đã làm gì]
46
- 📁 Files: [Danh sách file]
47
- ⚠️ Lưu ý: [Ghi chú quan trọng]
48
- 🔗 Bước tiếp theo: [Gợi ý skill hoặc hành động tiếp theo]
49
- ```
package/add_lang.js DELETED
@@ -1,21 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const skillsDir = path.join(__dirname, 'skills');
5
- const items = fs.readdirSync(skillsDir);
6
-
7
- for (const item of items) {
8
- if (item === '_template' || item === 'qk-policy-engine') continue;
9
-
10
- const skillDir = path.join(skillsDir, item);
11
- if (fs.statSync(skillDir).isDirectory() && item.startsWith('qk-')) {
12
- const skillMdPath = path.join(skillDir, 'SKILL.md');
13
- if (fs.existsSync(skillMdPath)) {
14
- let content = fs.readFileSync(skillMdPath, 'utf8');
15
- if (!content.includes('> **Language rule:**')) {
16
- content = content.replace(/^# (.*)/m, '# \n\n> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.');
17
- fs.writeFileSync(skillMdPath, content);
18
- }
19
- }
20
- }
21
- }
package/add_lang.py DELETED
@@ -1,25 +0,0 @@
1
- import os
2
-
3
- skills_dir = 'skills'
4
-
5
- for item in os.listdir(skills_dir):
6
- if item == '_template' or item == 'qk-policy-engine':
7
- continue
8
-
9
- skill_path = os.path.join(skills_dir, item, 'SKILL.md')
10
- if os.path.isfile(skill_path):
11
- with open(skill_path, 'r', encoding='utf-8') as f:
12
- content = f.read()
13
-
14
- if "> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese." not in content:
15
- # Look for "> **Language rule:**"
16
- if "> **Language rule:**" in content:
17
- import re
18
- content = re.sub(r'> \*\*Language rule:\*\*.*', '> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.', content)
19
- else:
20
- # Add it after the first # header
21
- import re
22
- content = re.sub(r'(# .*?\n)', r'\1\n> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.\n', content, count=1)
23
-
24
- with open(skill_path, 'w', encoding='utf-8') as f:
25
- f.write(content)
package/add_sections.py DELETED
@@ -1,53 +0,0 @@
1
- import os
2
-
3
- skills_dir = 'skills'
4
- required_sections = [
5
- 'Goal',
6
- 'Context',
7
- 'Inputs',
8
- 'Chain of Thought',
9
- 'Constraints',
10
- 'Policies',
11
- 'Exit Codes',
12
- 'Confidence Model',
13
- 'Severity',
14
- 'Retry Policy',
15
- 'Escalation Rules'
16
- ]
17
-
18
- for item in os.listdir(skills_dir):
19
- if item == '_template' or item == 'qk-policy-engine':
20
- continue
21
-
22
- skill_path = os.path.join(skills_dir, item, 'SKILL.md')
23
- if os.path.isfile(skill_path):
24
- with open(skill_path, 'r', encoding='utf-8') as f:
25
- content = f.read()
26
-
27
- missing_sections = []
28
- for section in required_sections:
29
- if f"## {section}" not in content:
30
- missing_sections.append(section)
31
-
32
- if missing_sections:
33
- appends = "\n\n" + "\n\n".join([f"## {section}\n[Placeholder for {section}]" for section in missing_sections])
34
-
35
- # Insert before ## Compliance if it exists
36
- if "## Compliance" in content:
37
- content = content.replace("## Compliance", appends.lstrip() + "\n\n## Compliance")
38
- else:
39
- content += appends
40
-
41
- with open(skill_path, 'w', encoding='utf-8') as f:
42
- f.write(content)
43
-
44
- # Add ## Scope for the vitest if missing
45
- if "## Scope" not in content:
46
- with open(skill_path, 'r', encoding='utf-8') as f:
47
- content = f.read()
48
- if "## Compliance" in content:
49
- content = content.replace("## Compliance", "## Scope\nAll.\n\n## Compliance")
50
- else:
51
- content += "\n\n## Scope\nAll."
52
- with open(skill_path, 'w', encoding='utf-8') as f:
53
- f.write(content)
package/bin/lint.js DELETED
@@ -1,123 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import fs from 'fs';
4
- import path from 'path';
5
- import { fileURLToPath } from 'url';
6
- import matter from 'gray-matter';
7
-
8
- const __filename = fileURLToPath(import.meta.url);
9
- const __dirname = path.dirname(__filename);
10
- const skillsDir = path.join(__dirname, '..', 'skills');
11
-
12
- const REQUIRED_FOR_ALL = [
13
- 'Preconditions',
14
- 'Scope',
15
- 'Non-Goals',
16
- 'Exit Codes',
17
- 'Handoff Contract'
18
- ];
19
-
20
- const REQUIRED_FOR_ACTION = [
21
- 'Workflow',
22
- 'Confidence Model',
23
- 'Evidence Format',
24
- 'Escalation Rules'
25
- ];
26
-
27
- const REQUIRED_FOR_EXECUTION = [
28
- 'Priority Order',
29
- 'Severity',
30
- 'Retry Policy'
31
- ];
32
-
33
- const ACTION_SKILLS = ['qk-bug-resolution', 'qk-feature-delivery', 'qk-fe-api-integration', 'qk-api-lifecycle', 'qk-data-lifecycle', 'qk-db-optimizer', 'qk-ui-builder', 'qk-ui-system-builder', 'qk-access-policy', 'qk-ai-builder', 'qk-system-evolution', 'qk-production-release', 'qk-project-bootstrap'];
34
- const EXECUTION_SKILLS = ['qk-bug-resolution', 'qk-feature-delivery', 'qk-fe-api-integration', 'qk-api-lifecycle', 'qk-data-lifecycle', 'qk-db-optimizer', 'qk-ui-builder', 'qk-ui-system-builder', 'qk-access-policy', 'qk-ai-builder', 'qk-system-evolution', 'qk-production-release', 'qk-project-bootstrap', 'qk-engineering-standard', 'qk-validation-gate', 'qk-ui-audit', 'qk-project-health'];
35
-
36
- const SKIP_LINT = ['qk-help'];
37
-
38
- let hasErrors = false;
39
-
40
- function lintSkill(skillPath, skillName) {
41
- if (SKIP_LINT.includes(skillName)) {
42
- console.log(`⏭️ [${skillName}] Skipped (reference skill)`);
43
- return;
44
- }
45
-
46
- const content = fs.readFileSync(skillPath, 'utf8');
47
-
48
- let parsed;
49
- try {
50
- parsed = matter(content);
51
- } catch (e) {
52
- console.error(`❌ [${skillName}] Frontmatter parsing failed: ${e.message}`);
53
- hasErrors = true;
54
- return;
55
- }
56
-
57
- const frontmatter = parsed.data;
58
-
59
- const requiredFrontmatter = ['name', 'category', 'version', 'description', 'platforms', 'execution_mode', 'cost', 'latency', 'risk', 'side_effects', 'produces', 'consumes', 'token_budget', 'exit_codes', 'schema_version', 'runtime_version', 'skill_version'];
60
-
61
- for (const field of requiredFrontmatter) {
62
- if (frontmatter[field] === undefined) {
63
- console.error(`❌ [${skillName}] Missing frontmatter field: ${field}`);
64
- hasErrors = true;
65
- }
66
- }
67
-
68
- const validPlatforms = ['antigravity', 'claude-code', 'cursor', 'windsurf', 'kilo-code'];
69
- if (Array.isArray(frontmatter.platforms)) {
70
- for (const p of frontmatter.platforms) {
71
- if (!validPlatforms.includes(p)) {
72
- console.error(`❌ [${skillName}] Invalid platform: ${p}`);
73
- hasErrors = true;
74
- }
75
- }
76
- }
77
-
78
- if (!content.includes('> **Language rule:**')) {
79
- console.error(`❌ [${skillName}] Missing Language Rule declaration.`);
80
- hasErrors = true;
81
- }
82
-
83
- const body = parsed.content;
84
- const required = [...REQUIRED_FOR_ALL];
85
- if (ACTION_SKILLS.includes(skillName)) {
86
- required.push(...REQUIRED_FOR_ACTION);
87
- }
88
- if (EXECUTION_SKILLS.includes(skillName)) {
89
- required.push(...REQUIRED_FOR_EXECUTION);
90
- }
91
-
92
- for (const section of required) {
93
- const headingRegex = new RegExp(`^##\\s+${section}\\b`, 'm');
94
- if (!headingRegex.test(body)) {
95
- console.error(`❌ [${skillName}] Missing section: ## ${section}`);
96
- hasErrors = true;
97
- }
98
- }
99
- }
100
-
101
- console.log('🔍 Running V7.5 Skill Schema Linting...');
102
-
103
- const items = fs.readdirSync(skillsDir);
104
- for (const item of items) {
105
- if (item === '_template' || item === 'qk-policy-engine') continue;
106
-
107
- const skillDir = path.join(skillsDir, item);
108
- if (fs.statSync(skillDir).isDirectory() && item.startsWith('qk-')) {
109
- const skillMdPath = path.join(skillDir, 'SKILL.md');
110
- if (fs.existsSync(skillMdPath)) {
111
- lintSkill(skillMdPath, item);
112
- }
113
- }
114
- }
115
-
116
- if (hasErrors) {
117
- console.error('\n💥 Linting failed. One or more skills do not comply with the V7.5 Runtime Standard.');
118
- process.exit(1);
119
- } else {
120
- console.log('\n✅ All skills comply with V7.5 Runtime Standard!');
121
- process.exit(0);
122
- }
123
-