ai-developer-skill-os 9.3.1 → 10.2.0

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 (258) hide show
  1. package/.agents/AGENTS.md +73 -40
  2. package/.agents/DEV_PROFILE.md +36 -2
  3. package/.agents/LICENSE +21 -21
  4. package/.agents/docs/ARCHITECTURE.md +56 -120
  5. package/.agents/docs/GOVERNANCE.md +3 -3
  6. package/.agents/docs/SPEC.md +137 -60
  7. package/.agents/docs/VERSIONING.md +25 -57
  8. package/.agents/docs/adr/0005-v10-platform-consolidation.md +50 -0
  9. package/.agents/docs/schemas/learning.schema.yml +22 -57
  10. package/.agents/docs/schemas/skill.schema.yml +116 -161
  11. package/.agents/docs/schemas/workflow.schema.yml +51 -26
  12. package/.agents/docs/skill-classification.md +1 -1
  13. package/.agents/registry/graph.json +193 -346
  14. package/.agents/registry/index.yaml +90 -233
  15. package/.agents/rules/coding.md +30 -12
  16. package/.agents/rules/command-safety.md +20 -9
  17. package/.agents/rules/global.md +234 -28
  18. package/.agents/rules/prompt-compiler.md +170 -0
  19. package/.agents/rules/safety.md +1 -1
  20. package/.agents/rules/security.md +1 -1
  21. package/.agents/rules/skill-quality.md +18 -3
  22. package/.agents/skills/_template/SKILL.md +238 -88
  23. package/.agents/skills/qk-api-data-discovery/SKILL.md +456 -0
  24. package/.agents/skills/qk-api-data-discovery/references/bronze-record-format.md +47 -0
  25. package/.agents/skills/qk-api-data-discovery/references/data-contract-yaml.md +72 -0
  26. package/.agents/skills/qk-api-data-discovery/references/discovery-report-template.md +110 -0
  27. package/.agents/skills/qk-backend-data/SKILL.md +339 -0
  28. package/.agents/skills/qk-bug-resolution/SKILL.md +328 -248
  29. package/.agents/skills/qk-bug-resolution/evals/scorecard.yaml +1 -1
  30. package/.agents/skills/qk-code-cleaner/SKILL.md +399 -0
  31. package/.agents/skills/qk-code-review/SKILL.md +320 -247
  32. package/.agents/skills/qk-code-review/evals/scorecard.yaml +1 -1
  33. package/.agents/skills/qk-code-review/references/ai/{v8-schema-validation.md → schema-validation.md} +2 -2
  34. package/.agents/skills/qk-code-review/references/cross-cutting/async-concurrency-patterns.md +515 -515
  35. package/.agents/skills/qk-code-review/references/cross-cutting/error-handling-principles.md +492 -492
  36. package/.agents/skills/qk-code-review/references/cross-cutting/n-plus-one-queries.md +309 -309
  37. package/.agents/skills/qk-code-review/references/cross-cutting/sql-injection-prevention.md +307 -307
  38. package/.agents/skills/qk-code-review/references/cross-cutting/xss-prevention.md +263 -263
  39. package/.agents/skills/qk-code-review/references/languages/angular.md +768 -768
  40. package/.agents/skills/qk-code-review/references/languages/c.md +890 -890
  41. package/.agents/skills/qk-code-review/references/languages/cpp.md +893 -893
  42. package/.agents/skills/qk-code-review/references/languages/css-less-sass.md +661 -661
  43. package/.agents/skills/qk-code-review/references/languages/django.md +985 -985
  44. package/.agents/skills/qk-code-review/references/languages/fastapi.md +580 -580
  45. package/.agents/skills/qk-code-review/references/languages/go.md +993 -993
  46. package/.agents/skills/qk-code-review/references/languages/java.md +409 -409
  47. package/.agents/skills/qk-code-review/references/languages/java8.md +586 -586
  48. package/.agents/skills/qk-code-review/references/languages/kotlin.md +1018 -1018
  49. package/.agents/skills/qk-code-review/references/languages/nestjs.md +593 -593
  50. package/.agents/skills/qk-code-review/references/languages/php.md +684 -684
  51. package/.agents/skills/qk-code-review/references/languages/python.md +1073 -1073
  52. package/.agents/skills/qk-code-review/references/languages/qt.md +757 -757
  53. package/.agents/skills/qk-code-review/references/languages/react.md +871 -871
  54. package/.agents/skills/qk-code-review/references/languages/ruby.md +964 -964
  55. package/.agents/skills/qk-code-review/references/languages/rust.md +846 -846
  56. package/.agents/skills/qk-code-review/references/languages/svelte.md +1064 -1064
  57. package/.agents/skills/qk-code-review/references/languages/swift.md +936 -936
  58. package/.agents/skills/qk-code-review/references/languages/typescript.md +1016 -1016
  59. package/.agents/skills/qk-code-review/references/languages/vue.md +924 -924
  60. package/.agents/skills/qk-code-review/references/languages/zig.md +440 -440
  61. package/.agents/skills/qk-devops-release/SKILL.md +294 -0
  62. package/.agents/skills/qk-feature-delivery/SKILL.md +331 -247
  63. package/.agents/skills/qk-feature-delivery/evals/scorecard.yaml +1 -1
  64. package/.agents/skills/qk-orchestrator/SKILL.md +286 -152
  65. package/.agents/skills/qk-orchestrator/evals/scorecard.yaml +1 -1
  66. package/.agents/skills/qk-orchestrator/references/routing-table.md +1 -1
  67. package/.agents/skills/qk-product-spec/SKILL.md +262 -0
  68. package/.agents/skills/qk-prompt-compiler/SKILL.md +444 -0
  69. package/.agents/skills/qk-ui-engineer/SKILL.md +286 -0
  70. package/.agents/workflows/_schema.yml +146 -146
  71. package/.agents/workflows/bug-resolution.yml +155 -121
  72. package/.agents/workflows/code-review.yml +127 -93
  73. package/.agents/workflows/context-discovery.yml +128 -94
  74. package/.agents/workflows/documentation.yml +124 -90
  75. package/.agents/workflows/feature-delivery.yml +158 -124
  76. package/.agents/workflows/production-release.yml +207 -173
  77. package/.agents/workflows/prompt-compilation.yml +126 -0
  78. package/.agents/workflows/refactor.yml +136 -102
  79. package/.agents/workflows/security-audit.yml +149 -115
  80. package/.agents/workflows/shared/quality-gate.yml +3 -1
  81. package/.agents/workflows/skin-governance.yml +149 -115
  82. package/.agents/workflows/spec-driven-development.yml +116 -87
  83. package/CHANGELOG.md +77 -0
  84. package/README.md +125 -205
  85. package/bin/install.js +324 -329
  86. package/package.json +68 -74
  87. package/tooling/build-registry.js +226 -208
  88. package/tooling/run-aar.js +55 -126
  89. package/tooling/sync-versions.js +2 -2
  90. package/tooling/validate-graph.js +100 -87
  91. package/tooling/validate-skills.js +32 -14
  92. package/.agents/README.md +0 -90
  93. package/.agents/docs/CHI_TIET_SKILLS.md +0 -126
  94. package/.agents/docs/HUONG_DAN_SU_DUNG.md +0 -120
  95. package/.agents/docs/MIGRATION-CLEANUP-V8.1.3.md +0 -36
  96. package/.agents/docs/MIGRATION-STATUS.md +0 -35
  97. package/.agents/docs/MIGRATION-V8.md +0 -10
  98. package/.agents/docs/ROADMAP-V8.2.md +0 -78
  99. package/.agents/docs/V8-CERTIFICATION.md +0 -27
  100. package/.agents/docs/decisions/ADR-001-v8-migration.md +0 -58
  101. package/.agents/docs/decisions/ADR-002-workflow-separation.md +0 -50
  102. package/.agents/docs/decisions/ADR-003-registry-generated.md +0 -54
  103. package/.agents/docs/decisions/ADR-008-skill-boundary-review.md +0 -27
  104. package/.agents/registry/capability-graph.yml +0 -390
  105. package/.agents/registry/skills-index.yml +0 -305
  106. package/.agents/skills/_template/capability.yaml +0 -34
  107. package/.agents/skills/_template/evals/scorecard.yaml +0 -19
  108. package/.agents/skills/qk-access-policy/SKILL.md +0 -206
  109. package/.agents/skills/qk-access-policy/capability.yaml +0 -23
  110. package/.agents/skills/qk-access-policy/evals/scorecard.yaml +0 -36
  111. package/.agents/skills/qk-agent-observability/SKILL.md +0 -108
  112. package/.agents/skills/qk-agent-observability/capability.yaml +0 -29
  113. package/.agents/skills/qk-agent-observability/evals/scorecard.yaml +0 -29
  114. package/.agents/skills/qk-agent-observability/references/scorecard.yaml +0 -80
  115. package/.agents/skills/qk-ai-builder/SKILL.md +0 -254
  116. package/.agents/skills/qk-ai-builder/capability.yaml +0 -23
  117. package/.agents/skills/qk-ai-builder/evals/scorecard.yaml +0 -30
  118. package/.agents/skills/qk-api-consumer/SKILL.md +0 -256
  119. package/.agents/skills/qk-api-consumer/capability.yaml +0 -21
  120. package/.agents/skills/qk-api-consumer/evals/scorecard.yaml +0 -29
  121. package/.agents/skills/qk-api-lifecycle/SKILL.md +0 -251
  122. package/.agents/skills/qk-api-lifecycle/capability.yaml +0 -23
  123. package/.agents/skills/qk-api-lifecycle/evals/scorecard.yaml +0 -29
  124. package/.agents/skills/qk-bug-resolution/capability.yaml +0 -25
  125. package/.agents/skills/qk-code-review/capability.yaml +0 -23
  126. package/.agents/skills/qk-context-loader/SKILL.md +0 -198
  127. package/.agents/skills/qk-context-loader/capability.yaml +0 -23
  128. package/.agents/skills/qk-context-loader/evals/scorecard.yaml +0 -28
  129. package/.agents/skills/qk-data-engineer/SKILL.md +0 -253
  130. package/.agents/skills/qk-data-lifecycle/SKILL.md +0 -197
  131. package/.agents/skills/qk-data-lifecycle/capability.yaml +0 -23
  132. package/.agents/skills/qk-data-lifecycle/evals/scorecard.yaml +0 -29
  133. package/.agents/skills/qk-db-optimizer/SKILL.md +0 -210
  134. package/.agents/skills/qk-db-optimizer/capability.yaml +0 -22
  135. package/.agents/skills/qk-db-optimizer/evals/scorecard.yaml +0 -28
  136. package/.agents/skills/qk-design-system-engineering/SKILL.md +0 -193
  137. package/.agents/skills/qk-design-system-engineering/capability.yaml +0 -25
  138. package/.agents/skills/qk-design-system-engineering/evals/scorecard.yaml +0 -27
  139. package/.agents/skills/qk-devops-platform/SKILL.md +0 -198
  140. package/.agents/skills/qk-devops-platform/capability.yaml +0 -29
  141. package/.agents/skills/qk-devops-platform/evals/scorecard.yaml +0 -28
  142. package/.agents/skills/qk-docs/SKILL.md +0 -193
  143. package/.agents/skills/qk-docs/capability.yaml +0 -23
  144. package/.agents/skills/qk-docs/evals/scorecard.yaml +0 -27
  145. package/.agents/skills/qk-engineering-standard/SKILL.md +0 -89
  146. package/.agents/skills/qk-engineering-standard/capability.yaml +0 -23
  147. package/.agents/skills/qk-engineering-standard/evals/scorecard.yaml +0 -28
  148. package/.agents/skills/qk-engineering-standard/references/anti-patterns.md +0 -121
  149. package/.agents/skills/qk-engineering-standard/rules/backend.md +0 -122
  150. package/.agents/skills/qk-engineering-standard/rules/database.md +0 -3
  151. package/.agents/skills/qk-engineering-standard/rules/frontend.md +0 -152
  152. package/.agents/skills/qk-engineering-standard/rules/security.md +0 -3
  153. package/.agents/skills/qk-engineering-standard/rules/testing.md +0 -3
  154. package/.agents/skills/qk-fe-api-integration/SKILL.md +0 -704
  155. package/.agents/skills/qk-fe-api-integration/capability.yaml +0 -21
  156. package/.agents/skills/qk-fe-api-integration/evals/scorecard.yaml +0 -29
  157. package/.agents/skills/qk-feature-delivery/capability.yaml +0 -24
  158. package/.agents/skills/qk-frontend-architecture/SKILL.md +0 -127
  159. package/.agents/skills/qk-frontend-architecture/capability.yaml +0 -28
  160. package/.agents/skills/qk-frontend-architecture/evals/scorecard.yaml +0 -28
  161. package/.agents/skills/qk-help/SKILL.md +0 -107
  162. package/.agents/skills/qk-help/capability.yaml +0 -20
  163. package/.agents/skills/qk-help/evals/scorecard.yaml +0 -13
  164. package/.agents/skills/qk-orchestrator/capability.yaml +0 -22
  165. package/.agents/skills/qk-product-specification/SKILL.md +0 -187
  166. package/.agents/skills/qk-product-specification/capability.yaml +0 -27
  167. package/.agents/skills/qk-product-specification/evals/scorecard.yaml +0 -27
  168. package/.agents/skills/qk-production-release/SKILL.md +0 -188
  169. package/.agents/skills/qk-production-release/capability.yaml +0 -27
  170. package/.agents/skills/qk-production-release/evals/scorecard.yaml +0 -28
  171. package/.agents/skills/qk-project-audit/SKILL.md +0 -174
  172. package/.agents/skills/qk-project-bootstrap/SKILL.md +0 -372
  173. package/.agents/skills/qk-project-bootstrap/capability.yaml +0 -23
  174. package/.agents/skills/qk-project-bootstrap/evals/scorecard.yaml +0 -28
  175. package/.agents/skills/qk-project-health/SKILL.md +0 -202
  176. package/.agents/skills/qk-project-health/capability.yaml +0 -23
  177. package/.agents/skills/qk-project-health/evals/scorecard.yaml +0 -27
  178. package/.agents/skills/qk-project-memory/SKILL.md +0 -303
  179. package/.agents/skills/qk-project-memory/capability.yaml +0 -23
  180. package/.agents/skills/qk-project-memory/evals/scorecard.yaml +0 -27
  181. package/.agents/skills/qk-refactor/SKILL.md +0 -243
  182. package/.agents/skills/qk-refactor/capability.yaml +0 -26
  183. package/.agents/skills/qk-refactor/evals/scorecard.yaml +0 -27
  184. package/.agents/skills/qk-security-audit/SKILL.md +0 -280
  185. package/.agents/skills/qk-security-audit/capability.yaml +0 -29
  186. package/.agents/skills/qk-security-audit/evals/scorecard.yaml +0 -27
  187. package/.agents/skills/qk-system-evolution/SKILL.md +0 -625
  188. package/.agents/skills/qk-system-evolution/capability.yaml +0 -24
  189. package/.agents/skills/qk-system-evolution/evals/scorecard.yaml +0 -26
  190. package/.agents/skills/qk-test-engineering/SKILL.md +0 -215
  191. package/.agents/skills/qk-test-engineering/capability.yaml +0 -28
  192. package/.agents/skills/qk-test-engineering/evals/scorecard.yaml +0 -26
  193. package/.agents/skills/qk-ui-audit/SKILL.md +0 -175
  194. package/.agents/skills/qk-ui-audit/capability.yaml +0 -23
  195. package/.agents/skills/qk-ui-audit/evals/scorecard.yaml +0 -26
  196. package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +0 -136
  197. package/.agents/skills/qk-ui-builder/SKILL.md +0 -521
  198. package/.agents/skills/qk-ui-builder/capability.yaml +0 -29
  199. package/.agents/skills/qk-ui-builder/evals/scorecard.yaml +0 -26
  200. package/.agents/skills/qk-ui-builder/references/anti-patterns.md +0 -295
  201. package/.agents/skills/qk-ui-builder/references/color.md +0 -115
  202. package/.agents/skills/qk-ui-builder/references/component-cookbook.md +0 -458
  203. package/.agents/skills/qk-ui-builder/references/copy.md +0 -250
  204. package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +0 -115
  205. package/.agents/skills/qk-ui-builder/references/layout-and-space.md +0 -111
  206. package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +0 -48
  207. package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +0 -50
  208. package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +0 -51
  209. package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +0 -49
  210. package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +0 -44
  211. package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +0 -50
  212. package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +0 -51
  213. package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +0 -50
  214. package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +0 -50
  215. package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +0 -49
  216. package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +0 -49
  217. package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +0 -49
  218. package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +0 -48
  219. package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +0 -48
  220. package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +0 -51
  221. package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +0 -48
  222. package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +0 -48
  223. package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +0 -50
  224. package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +0 -48
  225. package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +0 -45
  226. package/.agents/skills/qk-ui-builder/references/macrostructures.md +0 -38
  227. package/.agents/skills/qk-ui-builder/references/motion.md +0 -95
  228. package/.agents/skills/qk-ui-builder/references/responsive.md +0 -115
  229. package/.agents/skills/qk-ui-builder/references/slop-test.md +0 -135
  230. package/.agents/skills/qk-ui-builder/references/structure.md +0 -280
  231. package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +0 -53
  232. package/.agents/skills/qk-ui-builder/references/themes/carnival.md +0 -52
  233. package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +0 -52
  234. package/.agents/skills/qk-ui-builder/references/themes/editorial.md +0 -52
  235. package/.agents/skills/qk-ui-builder/references/themes/garden.md +0 -52
  236. package/.agents/skills/qk-ui-builder/references/themes/hum.md +0 -52
  237. package/.agents/skills/qk-ui-builder/references/themes/lumen.md +0 -52
  238. package/.agents/skills/qk-ui-builder/references/themes/midnight.md +0 -52
  239. package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +0 -52
  240. package/.agents/skills/qk-ui-builder/references/themes/playful.md +0 -52
  241. package/.agents/skills/qk-ui-builder/references/themes/specimen.md +0 -52
  242. package/.agents/skills/qk-ui-builder/references/themes/terminal.md +0 -52
  243. package/.agents/skills/qk-ui-builder/references/typography.md +0 -129
  244. package/.agents/skills/qk-ui-system-builder/SKILL.md +0 -183
  245. package/.agents/skills/qk-ui-system-builder/capability.yaml +0 -25
  246. package/.agents/skills/qk-ui-system-builder/evals/scorecard.yaml +0 -26
  247. package/.agents/skills/qk-upgrade/SKILL.md +0 -301
  248. package/.agents/skills/qk-upgrade/capability.yaml +0 -24
  249. package/.agents/skills/qk-upgrade/evals/scorecard.yaml +0 -26
  250. package/.agents/skills/qk-validation-gate/SKILL.md +0 -88
  251. package/.agents/skills/qk-validation-gate/capability.yaml +0 -23
  252. package/.agents/skills/qk-validation-gate/evals/scorecard.yaml +0 -26
  253. package/.agents/skills/qk-web-quality-gate/SKILL.md +0 -197
  254. package/.agents/skills/qk-web-quality-gate/capability.yaml +0 -24
  255. package/.agents/skills/qk-web-quality-gate/evals/scorecard.yaml +0 -26
  256. package/.agents/workflows/research.yml +0 -75
  257. package/.agents/workflows/skill-evolution.yml +0 -97
  258. package/tooling/fix-refactor.js +0 -8
@@ -1,143 +1,72 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import YAML from 'js-yaml';
4
3
  import { fileURLToPath } from 'url';
5
4
 
6
5
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
7
6
  const rootDir = path.resolve(__dirname, '..');
8
- const skillsDir = path.join(rootDir, '.agents/skills');
9
- const graphPath = path.join(rootDir, '.agents/registry/capability-graph.yml');
10
- const workflowsDir = path.join(rootDir, '.agents/workflows');
7
+ const graphPath = path.join(rootDir, '.agents/registry/graph.json');
11
8
  const reportsDir = path.join(rootDir, '.agents/reports');
12
9
 
13
- if (!fs.existsSync(reportsDir)) {
14
- fs.mkdirSync(reportsDir, { recursive: true });
15
- }
16
-
17
- function parseFrontmatter(content) {
18
- const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
19
- if (!match) return null;
20
- try {
21
- return YAML.load(match[1]);
22
- } catch (e) {
23
- return null;
10
+ /**
11
+ * Run After Action Review (AAR).
12
+ * Reads graph.json and generates health report.
13
+ */
14
+ export async function runAar() {
15
+ if (!fs.existsSync(graphPath)) {
16
+ console.error('❌ graph.json not found. Run: node tooling/build-registry.js');
17
+ return;
24
18
  }
25
- }
26
-
27
- // 1. Skill Audit
28
- function runSkillAudit() {
29
- const dirs = fs.readdirSync(skillsDir).filter(name => !name.startsWith('_') && fs.statSync(path.join(skillsDir, name)).isDirectory());
30
-
31
- let report = `# Skill Audit Report\n\n`;
32
- let valid = 0;
33
-
34
- dirs.forEach(skill => {
35
- const skillPath = path.join(skillsDir, skill, 'SKILL.md');
36
- if (!fs.existsSync(skillPath)) return;
37
-
38
- const content = fs.readFileSync(skillPath, 'utf8');
39
- const data = parseFrontmatter(content);
40
- if (!data) return;
41
-
42
- // Check boundary
43
- const bounds = data.decision_boundary || {};
44
- const hasOwns = bounds.owns && bounds.owns.length > 0;
45
- const hasNotOwn = bounds.does_not_own && bounds.does_not_own.length > 0;
46
- const hasConflicts = bounds.conflicts_with !== undefined; // can be empty array
47
- const hasDelegates = bounds.delegates_to !== undefined; // optional
48
-
49
- let score = 0;
50
- if (hasOwns) score += 30;
51
- if (hasNotOwn) score += 30;
52
- if (hasConflicts) score += 20;
53
- if (hasDelegates) score += 20; // bonus if exists or architecture skill
54
- if (!hasDelegates && !skill.includes('architecture') && !skill.includes('orchestrator')) {
55
- score += 20; // It's fine if implementation skill doesn't delegate
56
- }
57
-
58
- report += `## ${skill}\n`;
59
- report += `- \`owns\`: ${hasOwns ? '✅' : '❌'}\n`;
60
- report += `- \`does_not_own\`: ${hasNotOwn ? '✅' : '❌'}\n`;
61
- report += `- \`conflicts_with\`: ${hasConflicts ? '✅' : '❌'}\n`;
62
- report += `- \`delegates_to\`: ${hasDelegates ? '✅' : (skill.includes('architecture') ? '❌ (Architecture should delegate)' : '➖ (Optional)')}\n`;
63
- report += `**Boundary Health Score: ${score}/100**\n\n`;
64
-
65
- if (score >= 80) valid++;
66
- });
67
-
68
- report += `\n**Total Scanned:** ${dirs.length}\n`;
69
- report += `**Total Passed (>=80):** ${valid}\n`;
70
-
71
- fs.writeFileSync(path.join(reportsDir, 'skill-audit.md'), report);
72
- console.log('✅ Skill audit complete.');
73
- }
74
19
 
75
- // 2. Graph Audit
76
- function runGraphAudit() {
77
- if (!fs.existsSync(graphPath)) return;
78
- const graph = YAML.load(fs.readFileSync(graphPath, 'utf8'));
79
-
80
- let report = `# Graph Health Report\n\n`;
81
- const incoming = {};
82
- const outgoing = {};
83
- const conflicts = [];
84
-
85
- Object.keys(graph.nodes).forEach(n => {
86
- incoming[n] = 0;
87
- outgoing[n] = 0;
88
- });
89
-
90
- graph.edges.forEach(e => {
91
- if (outgoing[e.from] !== undefined) outgoing[e.from]++;
92
- if (incoming[e.to] !== undefined) incoming[e.to]++;
93
-
94
- if (e.relation === 'conflicts_with') {
95
- conflicts.push(`- **${e.from}** conflicts **${e.to}**\n - Reason: Semantic overlap\n - Severity: High\n - Resolution: Context loader intervention required`);
96
- }
97
- });
20
+ if (!fs.existsSync(reportsDir)) {
21
+ fs.mkdirSync(reportsDir, { recursive: true });
22
+ }
98
23
 
99
- report += `## Hub Risk Analysis\n`;
100
- const MAX_OUT = 12;
101
- const MAX_IN = 15;
102
- const ALLOWED_HUBS = ['qk-orchestrator', 'qk-context-loader'];
24
+ const graph = JSON.parse(fs.readFileSync(graphPath, 'utf8'));
25
+ const nodes = Object.keys(graph.nodes || {});
26
+ const edges = graph.edges || [];
27
+ const adjacency = graph.adjacency || {};
28
+
29
+ let report = '# After Action Review (AAR)\n\n';
30
+ report += `**Generated:** ${new Date().toISOString()}\n\n`;
31
+
32
+ // Node health
33
+ report += '## Node Health\n\n';
34
+ report += '| Node | Version | Platforms | Dependencies |\n';
35
+ report += '|------|---------|-----------|-------------|\n';
36
+ for (const [id, node] of Object.entries(graph.nodes || {})) {
37
+ const deps = (node.dependencies || []).join(', ') || '—';
38
+ report += `| ${id} | ${node.version || '—'} | ${(node.platforms || []).join(', ') || '—'} | ${deps} |\n`;
39
+ }
103
40
 
104
- Object.keys(outgoing).forEach(id => {
105
- const outCount = outgoing[id];
106
- const inCount = incoming[id];
107
- let risk = 'Low';
108
- if (outCount > MAX_OUT || inCount > MAX_IN) {
109
- if (ALLOWED_HUBS.includes(id)) {
110
- risk = 'Allowed Exception';
111
- } else {
112
- risk = 'High Risk Hub';
113
- }
114
- }
115
- if (risk !== 'Low') {
116
- report += `- **${id}**: Incoming(${inCount}), Outgoing(${outCount}) -> [${risk}]\n`;
41
+ // Edge summary
42
+ report += '\n## Edge Summary\n\n';
43
+ report += `- Total edges: ${edges.length}\n`;
44
+ report += `- Total nodes: ${nodes.length}\n`;
45
+ report += `- Orphans: ${graph.orphan_count || 0}\n`;
46
+ report += `- Has cycles: ${graph.has_cycles || false}\n`;
47
+
48
+ // Platform coverage
49
+ report += '\n## Platform Coverage\n\n';
50
+ const platformCounts = { antigravity: 0, claude: 0, opencode: 0 };
51
+ for (const node of Object.values(graph.nodes || {})) {
52
+ for (const p of node.platforms || []) {
53
+ if (platformCounts[p] !== undefined) platformCounts[p]++;
117
54
  }
118
- });
119
-
120
- report += `\n## Conflict Matrix\n`;
121
- conflicts.forEach(c => {
122
- report += `${c}\n\n`;
123
- });
55
+ }
56
+ for (const [platform, count] of Object.entries(platformCounts)) {
57
+ report += `- ${platform}: ${count}/${nodes.length} skills\n`;
58
+ }
124
59
 
125
- fs.writeFileSync(path.join(reportsDir, 'graph-health.md'), report);
126
- console.log('✅ Graph audit complete.');
127
- }
60
+ // Version compliance
61
+ report += '\n## Version Compliance\n\n';
62
+ let compliant = 0;
63
+ for (const [id, node] of Object.entries(graph.nodes || {})) {
64
+ if (node.version === '10.2.0') compliant++;
65
+ }
66
+ report += `- Version 10.2.0: ${compliant}/${nodes.length}\n`;
128
67
 
129
- // 3. Workflow Audit
130
- function runWorkflowAudit() {
131
- const workflows = fs.readdirSync(workflowsDir).filter(f => f.endsWith('.md') || f.endsWith('.yml'));
132
- let report = `# Architecture & Workflow Audit\n\n`;
133
- report += `## Workflows Found: ${workflows.length}\n`;
134
- workflows.forEach(w => {
135
- report += `- ${w}\n`;
136
- });
137
- fs.writeFileSync(path.join(reportsDir, 'architecture-audit.md'), report);
138
- console.log('✅ Workflow audit complete.');
68
+ fs.writeFileSync(path.join(reportsDir, 'aar-report.md'), report);
69
+ console.log('✅ AAR report generated.');
139
70
  }
140
71
 
141
- runSkillAudit();
142
- runGraphAudit();
143
- runWorkflowAudit();
72
+ export default { runAar };
@@ -1,7 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
 
4
- const targetVersion = "9.1.0";
4
+ const targetVersion = "10.2.0";
5
5
  const rootDir = process.cwd();
6
6
  const skillsDir = path.join(rootDir, '.agents', 'skills');
7
7
 
@@ -253,7 +253,7 @@ skills.forEach(skill => {
253
253
  if (fs.existsSync(skillMdPath)) {
254
254
  let content = fs.readFileSync(skillMdPath, 'utf8');
255
255
  let newContent = content.replace(/^version:\s*["']?[\d.]+["']?/m, `version: ${targetVersion}`);
256
- newContent = newContent.replace(/^# ── V[\d]+: Classification/m, `# ── V9: Classification`);
256
+ newContent = newContent.replace(/^# ── V[\d]+: Classification/m, `# ── V10: Classification`);
257
257
 
258
258
  // Inject or update Memory Workflow (except qk-project-memory which manages memory itself)
259
259
  if (skill !== 'qk-project-memory' && skill !== 'qk-help') {
@@ -1,87 +1,100 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import yaml from 'js-yaml';
4
-
5
- const GRAPH_FILE = path.resolve('.agents/registry/capability-graph.yml');
6
-
7
- function validateGraph() {
8
- if (!fs.existsSync(GRAPH_FILE)) {
9
- console.error('Không tìm thấy capability-graph.yml');
10
- process.exit(1);
11
- }
12
-
13
- const content = fs.readFileSync(GRAPH_FILE, 'utf8');
14
- const graph = yaml.load(content);
15
-
16
- const nodes = Object.keys(graph.nodes || {});
17
- const edges = graph.edges || [];
18
-
19
- let errors = [];
20
-
21
- // 1. Kiểm tra edge references (tồn tại node đích)
22
- let conflictsCount = 0;
23
- edges.forEach(e => {
24
- if (!nodes.includes(e.to)) {
25
- // Cảnh báo nhưng không luôn lỗi vì to có thể là tên workflow
26
- if (e.relation !== 'depends_on') {
27
- errors.push(`Edge error: '${e.from}' trỏ đến '${e.to}' không tồn tại trong nodes (${e.relation})`);
28
- }
29
- }
30
- if (e.relation === 'conflicts_with') conflictsCount++;
31
- });
32
-
33
- // 2. Kiểm tra reverse delegation (implementation -> architecture)
34
- // Logic giả định dựa trên keyword
35
- edges.forEach(e => {
36
- if (e.relation === 'delegates_to') {
37
- if (e.from.includes('ui-builder') && e.to.includes('architecture')) {
38
- errors.push(`Policy violation: Implementation skill '${e.from}' không được delegate cho Architecture skill '${e.to}'`);
39
- }
40
- }
41
- });
42
-
43
- // 3. Isolated nodes (Ngoại trừ qk-orchestrator, qk-product-specification)
44
- let orphanCount = 0;
45
- const allowedIsolated = ['qk-orchestrator', 'qk-product-specification'];
46
-
47
- const connectedNodes = new Set();
48
- edges.forEach(e => {
49
- connectedNodes.add(e.from);
50
- if (nodes.includes(e.to)) connectedNodes.add(e.to);
51
- });
52
-
53
- nodes.forEach(n => {
54
- if (!connectedNodes.has(n)) {
55
- if (!allowedIsolated.includes(n)) {
56
- errors.push(`Orphan node: '${n}' bị cô lập (không nối đi đâu, không ai nối tới).`);
57
- orphanCount++;
58
- }
59
- }
60
- });
61
-
62
- // Mock Cycles check
63
- let cyclesCount = 0; // Để đơn giản, giả lập 0 cycles. Trong thực tế dùng thuật toán DFS.
64
-
65
- const score = Math.max(0, 100 - (errors.length * 5));
66
-
67
- console.log('─────────────────────────────────────────────────');
68
- console.log('📊 Capability Graph Health');
69
- console.log('─────────────────────────────────────────────────');
70
- console.log(`Nodes: ${nodes.length}`);
71
- console.log(`Edges: ${edges.length}`);
72
- console.log(`Coverage: 100%`);
73
- console.log(`Conflicts: ${conflictsCount}`);
74
- console.log(`Orphan: ${orphanCount}`);
75
- console.log(`Cycles: ${cyclesCount}`);
76
- console.log(`\nScore: ${score}/100`);
77
-
78
- if (errors.length > 0) {
79
- console.log('\n⚠️ Cảnh báo & Lỗi:');
80
- errors.forEach(err => console.log(`- ${err}`));
81
- process.exit(1);
82
- } else {
83
- console.log('\n✅ Capability Graph hợp lệ.');
84
- }
85
- }
86
-
87
- validateGraph();
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+
4
+ const GRAPH_FILE = path.resolve('.agents/registry/graph.json');
5
+
6
+ function validateGraph() {
7
+ if (!fs.existsSync(GRAPH_FILE)) {
8
+ console.error('Không tìm thấy graph.json');
9
+ process.exit(1);
10
+ }
11
+
12
+ const content = fs.readFileSync(GRAPH_FILE, 'utf8');
13
+ const graph = JSON.parse(content);
14
+
15
+ const nodes = Object.keys(graph.nodes || {});
16
+ const edges = graph.edges || [];
17
+ const adjacency = graph.adjacency || {};
18
+
19
+ let errors = [];
20
+
21
+ // 1. Kiểm tra edge references (tồn tại node đích)
22
+ let conflictsCount = 0;
23
+ edges.forEach(e => {
24
+ if (!nodes.includes(e.to)) {
25
+ // Cảnh báo nhưng không luôn lỗi vì to có thể là tên workflow
26
+ if (e.relation !== 'depends_on') {
27
+ errors.push(`Edge error: '${e.from}' trỏ đến '${e.to}' không tồn tại trong nodes (${e.relation})`);
28
+ }
29
+ }
30
+ if (e.relation === 'conflicts_with') conflictsCount++;
31
+ });
32
+ // 2. Isolated nodes (Ngoại trừ qk-orchestrator)
33
+ let orphanCount = 0;
34
+ const allowedIsolated = ['qk-orchestrator'];
35
+
36
+ const connectedNodes = new Set();
37
+ edges.forEach(e => {
38
+ connectedNodes.add(e.from);
39
+ connectedNodes.add(e.to);
40
+ });
41
+
42
+ nodes.forEach(n => {
43
+ if (!connectedNodes.has(n)) {
44
+ if (!allowedIsolated.includes(n)) {
45
+ errors.push(`Orphan node: '${n}' bị cô lập.`);
46
+ orphanCount++;
47
+ }
48
+ }
49
+ });
50
+
51
+ // Cycle detection using DFS
52
+ let cyclesCount = 0;
53
+ const visited = {};
54
+ const recursionStack = {};
55
+
56
+ function detectCycle(node) {
57
+ visited[node] = true;
58
+ recursionStack[node] = true;
59
+ const neighbors = adjacency[node] || [];
60
+ for (const neighbor of neighbors) {
61
+ if (!visited[neighbor]) {
62
+ if (detectCycle(neighbor)) return true;
63
+ } else if (recursionStack[neighbor]) {
64
+ cyclesCount++;
65
+ return true;
66
+ }
67
+ }
68
+ recursionStack[node] = false;
69
+ return false;
70
+ }
71
+
72
+ for (const node of nodes) {
73
+ if (!visited[node]) {
74
+ detectCycle(node);
75
+ }
76
+ }
77
+
78
+ const score = Math.max(0, 100 - (errors.length * 5) - (cyclesCount * 2));
79
+
80
+ console.log('─────────────────────────────────────────────────');
81
+ console.log('📊 Capability Graph Health');
82
+ console.log('─────────────────────────────────────────────────');
83
+ console.log(`Nodes: ${nodes.length}`);
84
+ console.log(`Edges: ${edges.length}`);
85
+ console.log(`Coverage: 100%`);
86
+ console.log(`Conflicts: ${conflictsCount}`);
87
+ console.log(`Orphan: ${orphanCount}`);
88
+ console.log(`Cycles: ${cyclesCount}`);
89
+ console.log(`\nScore: ${score}/100`);
90
+
91
+ if (errors.length > 0) {
92
+ console.log('\n⚠️ Cảnh báo & Lỗi:');
93
+ errors.forEach(err => console.log(`- ${err}`));
94
+ process.exit(1);
95
+ } else {
96
+ console.log('\n✅ Capability Graph hợp lệ.');
97
+ }
98
+ }
99
+
100
+ validateGraph();
@@ -28,11 +28,13 @@ function parseFrontmatter(content) {
28
28
  };
29
29
 
30
30
  const name = extract('name');
31
- const version = extract('version') || '7.5.0';
31
+ const version = extract('version') || '10.2.0';
32
32
  let status = extract('status');
33
33
 
34
34
  if (!status && (version.startsWith('8.') || version.startsWith('9.'))) {
35
35
  status = 'stable';
36
+ } else if (!status && version.startsWith('10.')) {
37
+ status = 'stable';
36
38
  } else if (!status) {
37
39
  status = 'legacy';
38
40
  }
@@ -41,10 +43,16 @@ function parseFrontmatter(content) {
41
43
  name,
42
44
  version,
43
45
  status,
44
- hasIntent: yamlString.includes('intent:'),
45
46
  hasWorkflow: yamlString.includes('workflow:'),
46
- hasVerification: yamlString.includes('verification:'),
47
- hasSelection: yamlString.includes('selection:')
47
+ hasTriggers: yamlString.includes('triggers:'),
48
+ hasRules: yamlString.includes('rules:'),
49
+ hasClassification: yamlString.includes('classification:'),
50
+ hasReferences: yamlString.includes('references:'),
51
+ isV10Frontmatter: yamlString.includes('classification:'),
52
+ isLegacyFrontmatter: yamlString.includes('workflow:') && !yamlString.includes('classification:'),
53
+ isV10Format: (yamlString.includes('classification:') && yamlString.includes('references:')) ||
54
+ (yamlString.includes('workflow:') && !yamlString.includes('classification:')),
55
+ hasPlatforms: yamlString.includes('platforms:')
48
56
  };
49
57
  }
50
58
 
@@ -58,8 +66,8 @@ function validate() {
58
66
  .filter(d => !d.startsWith('_') && fs.statSync(path.join(SKILLS_DIR, d)).isDirectory());
59
67
 
60
68
  let totalScanned = 0;
61
- let stableValid = 0;
62
- let stableTotal = 0;
69
+ let v10Valid = 0;
70
+ let v10Total = 0;
63
71
  let legacyIgnored = 0;
64
72
  let missingRequiredCount = 0;
65
73
 
@@ -73,13 +81,23 @@ function validate() {
73
81
 
74
82
  totalScanned++;
75
83
 
76
- if (meta.status === 'stable' || meta.status === 'experimental') {
77
- stableTotal++;
78
- if (meta.hasIntent && meta.hasWorkflow && meta.hasVerification && meta.hasSelection) {
79
- stableValid++;
84
+ if (meta.version && meta.version.startsWith('10.')) {
85
+ v10Total++;
86
+ const hasExitCodes = content.includes('Thoái Ra Mã') || content.includes('Exit Codes');
87
+ const hasCompliance = content.includes('Compliance');
88
+ const hasConfidence = content.includes('Confidence Model') || content.includes('Độ Tin Cậy');
89
+ const hasEvidence = content.includes('Bằng Chứng') || content.includes('Evidence Format');
90
+ const hasAllV10Sections = hasExitCodes && hasCompliance && hasConfidence && hasEvidence && meta.hasPlatforms;
91
+ if (hasAllV10Sections) {
92
+ v10Valid++;
80
93
  } else {
81
94
  missingRequiredCount++;
82
- console.warn(`[WARN] ${meta.name} is missing required V8 fields`);
95
+ const missing = [];
96
+ if (!hasExitCodes) missing.push('Exit Codes');
97
+ if (!hasCompliance) missing.push('Compliance');
98
+ if (!hasConfidence) missing.push('Confidence Model');
99
+ if (!hasEvidence) missing.push('Evidence Format');
100
+ console.warn(`[WARN] ${meta.name} is missing V10 sections: ${missing.join(', ')}`);
83
101
  }
84
102
  } else {
85
103
  legacyIgnored++;
@@ -87,9 +105,9 @@ function validate() {
87
105
  }
88
106
 
89
107
  console.log(`\nSkills scanned: ${totalScanned}`);
90
- console.log(`\nStable/Experimental:`);
91
- console.log(`${stableValid}/${stableTotal} valid`);
92
- console.log(`\nLegacy:`);
108
+ console.log(`\nV10 Format:`);
109
+ console.log(`${v10Valid}/${v10Total} valid`);
110
+ console.log(`\nLegacy (pre-V10):`);
93
111
  console.log(`${legacyIgnored}/${legacyIgnored} ignored`);
94
112
  console.log(`\nMissing required:`);
95
113
  console.log(`${missingRequiredCount}`);
package/.agents/README.md DELETED
@@ -1,90 +0,0 @@
1
- # 🚀 AI Developer Skill OS (ai-developer-skill-os) v8.2.1
2
-
3
- > **v8.2.1 "EDAOS v8.2 — Governed Capability Metadata & Eval Platform"**
4
-
5
- Hệ sinh thái AI Developer Skill OS tiến hóa lên phiên bản **v8.2.1 (EDAOS v8.2)** với kiến trúc **Manifest-First & Eval Platform**, giúp giảm tối đa chi phí nhận thức (cognitive load) cho các AI Agent thế hệ mới (như Antigravity) nhờ chỉ định ranh giới định lượng, đồ thị phụ thuộc O(1), và các Blueprint Plugins quy chuẩn cho từng ngành nghề kỹ thuật.
6
-
7
- ---
8
-
9
- ## 🏗️ 4 Trụ Cột Kiến Trúc Cốt Lõi (EDAOS v8.2 Architecture)
10
-
11
- ### 1. Manifest-First & O(1) Registry Engine
12
- Không còn phụ thuộc vào việc đọc/scan toàn bộ markdown mệt mỏi. AI Agent tra cứu siêu dữ liệu từ `.agents/registry/index.yaml` và kiểm duyệt chu trình không lặp (acyclic validation) thông qua O(1) graph JSON (`.agents/registry/graph.json`). Tốc độ hiểu và phân công năng lực đạt ngưỡng sub-second!
13
-
14
- ### 2. V8.2 Blueprint Plugins & Universal 4-Folder Architecture
15
- Khởi tạo dự án (chỉ đạo qua `qk-project-bootstrap`) hỗ trợ sinh file `project.yaml` gốc từ thư viện Blueprint Plugins:
16
- - **RAG / AI Agents:** Cấu trúc 4 thư mục chuẩn thực chiến: `prompts/`, `data/` (bảo vệ `data/raw` bất biến), `agents/`, và `evals/`.
17
- - **Standard Software Coding:** Kiến trúc module sạch vững chắc với `DESIGN.md` và rào cản kiểm duyệt tự động.
18
- - **Automation Workflows:** Các luồng tích hợp n8n và dữ liệu lớn.
19
-
20
- ### 3. Eval Pipeline Platform (Khép Kín Kiểm Định)
21
- Chấm dứt việc tin tưởng AI blindly. Mọi Capability đều có thẻ điểm định lượng (`scorecard.yaml`), kết nối log thực thi thực tế từ thư mục `evals/traces/` qua cổng thẩm định sắt đá `qk-validation-gate`. Trách nhiệm định lượng 0–100 với sai số 0% (zero tolerance for fabrication).
22
-
23
- ### 4. Domain Patterns Separation (Bảo Vệ Kernel)
24
- Các hệ thống AI chuyên sâu (như **Xây dựng DDC 192 skills**, bóc tách BIM/IFC, ERP) được tải lập trình viên cấu hình dạng Module dưới `knowledge/domain-patterns/` thay vì phơi bày trực tiếp vào 30 Core Developer Skills, giữ cho đồ thị cốt lõi luôn nhanh bén mượt mà!
25
-
26
- ---
27
-
28
- ## 🧩 Danh sách 30 Master Skills (Core Developer Capabilities)
29
-
30
- Các kỹ năng được quản lý bằng **Capability Graph** và được đánh giá liên tục thông qua Evaluation Suite. Bao gồm 7 lĩnh vực:
31
- 1. **Core & Orchestration:** `qk-orchestrator`, `qk-context-loader`, `qk-project-memory`, `qk-help`
32
- 2. **Product & Architecture:** `qk-product-specification`, `qk-project-bootstrap`, `qk-frontend-architecture`
33
- 3. **Frontend & UI:** `qk-design-system-engineering`, `qk-ui-system-builder`, `qk-ui-builder`, `qk-fe-api-integration`, `qk-ui-audit`
34
- 4. **Backend & Data:** `qk-api-lifecycle`, `qk-data-lifecycle`, `qk-access-policy`
35
- 5. **Engineering & Delivery:** `qk-feature-delivery`, `qk-bug-resolution`, `qk-engineering-standard`, `qk-system-evolution`, `qk-docs`
36
- 6. **Quality & Testing:** `qk-test-engineering`, `qk-validation-gate`, `qk-web-quality-gate`, `qk-project-health`
37
- 7. **Security, DevOps & Analytics:** `qk-security-audit`, `qk-db-optimizer`, `qk-devops-platform`, `qk-production-release`, `qk-agent-observability`, `qk-ai-builder`
38
-
39
- ---
40
-
41
- ## 💻 Cách Cài Đặt (Installation)
42
-
43
- ### Cách 1: NXP (Không cần cài global) - MỚI
44
- ```bash
45
- npx ai-developer-skill-os init
46
- ```
47
-
48
- ### Cách 2: NPM Global (Khuyên dùng cho cá nhân)
49
- ```bash
50
- npm i -g ai-developer-skill-os
51
- ```
52
-
53
- ### Chạy bằng tham số (Command Line Arguments)
54
- ```bash
55
- # Cài Antigravity Global (toàn máy)
56
- npx ai-developer-skill-os init --ide=antigravity --scope=2
57
-
58
- # Cài Antigravity Local (chỉ dự án này)
59
- npx ai-developer-skill-os init --ide=antigravity --scope=1
60
-
61
- # Cài Cursor Local
62
- npx ai-developer-skill-os init --ide=cursor --scope=1
63
- ```
64
-
65
- ## 📦 Các IDE/AI Assistant Được Hỗ Trợ
66
- - (1) Cursor
67
- - (2) Windsurf
68
- - (3) Cline / Roo Code
69
- - (4) Antigravity / Gemini
70
- - (5) Codex
71
- - (6) Kilo Code
72
-
73
- ---
74
-
75
- ## 🧪 Đánh Giá Tự Động (Agent Evaluation)
76
-
77
- Hệ thống đi kèm một bộ Runner nội bộ để kiểm toán **Routing Intelligence**. Bất kỳ cập nhật nào vào hệ thống Kỹ năng đều phải vượt qua bài kiểm tra hóc búa (Bypass Security, Boundary Attacks, Ambiguous Prompts):
78
-
79
- ```bash
80
- npm run test:agent
81
- npm run test:graph
82
- npm run test:registry
83
- ```
84
-
85
- ## 🚀 Hướng Dẫn Sử Dụng
86
- Sau khi cài đặt thành công, hãy gõ lệnh:
87
- ```bash
88
- ./qk-help
89
- ```
90
- để kích hoạt AI Orchestrator và khám phá sức mạnh của hệ điều hành!