antigravity-ide 4.2.1 → 4.3.3

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 (359) hide show
  1. package/.agent/.shared/{design-philosophy → core/design-philosophy}/README.md +12 -1
  2. package/.agent/.shared/{ai-master → technical/ai-master}/README.md +12 -1
  3. package/.agent/.shared/{api-standards → technical/api-standards}/README.md +12 -1
  4. package/.agent/.shared/{database-master → technical/database-master}/README.md +12 -2
  5. package/.agent/.shared/{seo-master → technical/seo-master}/README.md +12 -1
  6. package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/README.md +12 -1
  7. package/.agent/ARCHITECTURE.md +16 -10
  8. package/.agent/ARCHITECTURE.vi.md +8 -8
  9. package/{GEMINI.md → .agent/GEMINI.md} +4 -5
  10. package/.agent/RESOURCES.md +6 -1
  11. package/.agent/agents/backend-specialist.md +154 -19
  12. package/.agent/agents/browser-subagent.md +45 -0
  13. package/.agent/agents/cloud-architect.md +108 -189
  14. package/.agent/agents/debugger.md +83 -182
  15. package/.agent/agents/documentation-writer.md +125 -72
  16. package/.agent/agents/frontend-specialist.md +40 -7
  17. package/.agent/agents/game-developer.md +111 -116
  18. package/.agent/agents/mobile-developer.md +108 -321
  19. package/.agent/agents/orchestrator.md +106 -366
  20. package/.agent/agents/performance-optimizer.md +105 -136
  21. package/.agent/agents/project-planner.md +132 -39
  22. package/.agent/agents/quality-inspector.md +136 -32
  23. package/.agent/agents/security-auditor.md +138 -15
  24. package/.agent/agents/seo-specialist.md +118 -72
  25. package/.agent/agents/test-engineer.md +142 -11
  26. package/.agent/brain/task.md +16 -0
  27. package/.agent/rules/GEMINI.md +63 -31
  28. package/.agent/rules/code-quality.md +34 -3
  29. package/.agent/rules/frontend.md +3 -3
  30. package/.agent/rules/strict-protocol.md +44 -3
  31. package/.agent/rules/system-update.md +56 -3
  32. package/.agent/skills/agent-backend-patterns/SKILL.md +16 -3
  33. package/.agent/skills/ai-engineer/SKILL.md +29 -16
  34. package/.agent/skills/api-documenter/SKILL.md +4 -4
  35. package/.agent/skills/app-builder/SKILL.md +1 -1
  36. package/.agent/skills/app-builder/tech-stack.md +2 -2
  37. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +39 -79
  38. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +53 -75
  39. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +56 -119
  40. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +61 -94
  41. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +56 -82
  42. package/.agent/skills/brand-guidelines-anthropic/LICENSE.txt +202 -0
  43. package/.agent/skills/brand-guidelines-anthropic/SKILL.md +26 -0
  44. package/.agent/skills/brand-guidelines-anthropic/sub-skills/color-application.md +5 -0
  45. package/.agent/skills/brand-guidelines-anthropic/sub-skills/colors.md +14 -0
  46. package/.agent/skills/brand-guidelines-anthropic/sub-skills/font-management.md +6 -0
  47. package/.agent/skills/brand-guidelines-anthropic/sub-skills/shape-and-accent-colors.md +7 -0
  48. package/.agent/skills/brand-guidelines-anthropic/sub-skills/smart-font-application.md +6 -0
  49. package/.agent/skills/brand-guidelines-anthropic/sub-skills/text-styling.md +6 -0
  50. package/.agent/skills/brand-guidelines-anthropic/sub-skills/typography.md +7 -0
  51. package/.agent/skills/cloud-architect-master/SKILL.md +9 -4
  52. package/.agent/skills/cro-expert-kit/SKILL.md +9 -4
  53. package/.agent/skills/database-migration/SKILL.md +9 -3
  54. package/.agent/skills/deployment-engineer/SKILL.md +9 -3
  55. package/.agent/skills/frontend-design/ux-psychology.md +10 -585
  56. package/.agent/skills/full-stack-scaffold/SKILL.md +4 -4
  57. package/.agent/skills/game-development/2d-games/SKILL.md +4 -2
  58. package/.agent/skills/game-development/3d-games/SKILL.md +4 -2
  59. package/.agent/skills/game-development/SKILL.md +18 -149
  60. package/.agent/skills/game-development/game-art/SKILL.md +4 -2
  61. package/.agent/skills/game-development/game-audio/SKILL.md +4 -2
  62. package/.agent/skills/game-development/game-design/SKILL.md +4 -2
  63. package/.agent/skills/game-development/mobile-games/SKILL.md +4 -2
  64. package/.agent/skills/game-development/multiplayer/SKILL.md +4 -2
  65. package/.agent/skills/game-development/pc-games/SKILL.md +4 -2
  66. package/.agent/skills/game-development/vr-ar/SKILL.md +4 -2
  67. package/.agent/skills/game-development/web-games/SKILL.md +4 -2
  68. package/.agent/skills/geo-fundamentals/SKILL.md +9 -136
  69. package/.agent/skills/git-collaboration-master/SKILL.md +9 -4
  70. package/.agent/skills/i18n-localization/SKILL.md +10 -118
  71. package/.agent/skills/incident-responder/SKILL.md +9 -6
  72. package/.agent/skills/internal-comms-anthropic/LICENSE.txt +202 -0
  73. package/.agent/skills/internal-comms-anthropic/SKILL.md +33 -0
  74. package/.agent/skills/internal-comms-anthropic/examples/3p-updates.md +47 -0
  75. package/.agent/skills/internal-comms-anthropic/examples/company-newsletter.md +65 -0
  76. package/.agent/skills/internal-comms-anthropic/examples/faq-answers.md +30 -0
  77. package/.agent/skills/internal-comms-anthropic/examples/general-comms.md +16 -0
  78. package/.agent/skills/last30days/tests/__init__.py +1 -0
  79. package/.agent/skills/last30days/tests/test_cache.py +59 -0
  80. package/.agent/skills/last30days/tests/test_dates.py +114 -0
  81. package/.agent/skills/last30days/tests/test_dedupe.py +111 -0
  82. package/.agent/skills/last30days/tests/test_models.py +135 -0
  83. package/.agent/skills/last30days/tests/test_normalize.py +138 -0
  84. package/.agent/skills/last30days/tests/test_render.py +116 -0
  85. package/.agent/skills/last30days/tests/test_score.py +168 -0
  86. package/.agent/skills/legacy-modernizer/SKILL.md +9 -4
  87. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +2 -14
  88. package/.agent/skills/loki-mode/.github/workflows/claude-code-review.yml +57 -0
  89. package/.agent/skills/loki-mode/.github/workflows/claude.yml +50 -0
  90. package/.agent/skills/loki-mode/.github/workflows/release.yml +128 -0
  91. package/.agent/skills/loki-mode/tests/run-all-tests.sh +78 -0
  92. package/.agent/skills/loki-mode/tests/test-agent-timeout.sh +348 -0
  93. package/.agent/skills/loki-mode/tests/test-bootstrap.sh +196 -0
  94. package/.agent/skills/loki-mode/tests/test-circuit-breaker.sh +389 -0
  95. package/.agent/skills/loki-mode/tests/test-state-recovery.sh +393 -0
  96. package/.agent/skills/loki-mode/tests/test-task-queue.sh +396 -0
  97. package/.agent/skills/loki-mode/tests/test-wrapper.sh +314 -0
  98. package/.agent/skills/mcp-builder/SKILL.md +21 -164
  99. package/.agent/skills/mobile-design/SKILL.md +21 -369
  100. package/.agent/skills/mobile-design/mobile-performance.md +1 -1
  101. package/.agent/skills/modern-web-architect/SKILL.md +12 -6
  102. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +1 -1
  103. package/.agent/skills/penetration-tester-master/SKILL.md +9 -4
  104. package/.agent/skills/performance-engineer/SKILL.md +4 -5
  105. package/.agent/skills/production-code-audit/SKILL.md +6 -0
  106. package/.agent/skills/rust-pro/SKILL.md +0 -177
  107. package/.agent/skills/security-auditor/SKILL.md +35 -27
  108. package/.agent/skills/seo-expert-kit/SKILL.md +9 -4
  109. package/.agent/skills/shopify-development/scripts/tests/test_shopify_init.py +379 -0
  110. package/.agent/skills/tdd-master-workflow/SKILL.md +9 -3
  111. package/.agent/workflows/audit.md +30 -16
  112. package/.agent/workflows/brainstorm.md +33 -96
  113. package/.agent/workflows/create.md +37 -45
  114. package/.agent/workflows/debug.md +45 -84
  115. package/.agent/workflows/deploy.md +33 -158
  116. package/.agent/workflows/document.md +38 -15
  117. package/.agent/workflows/enhance.md +33 -48
  118. package/.agent/workflows/monitor.md +35 -14
  119. package/.agent/workflows/orchestrate.md +33 -218
  120. package/.agent/workflows/plan.md +39 -70
  121. package/.agent/workflows/security.md +35 -14
  122. package/.agent/workflows/seo.md +39 -16
  123. package/.agent/workflows/status.md +33 -72
  124. package/.agent/workflows/test.md +30 -127
  125. package/.agent/workflows/ui-ux-pro-max.md +24 -283
  126. package/LICENSE +22 -8
  127. package/README.md +105 -72
  128. package/README.vi.md +93 -110
  129. package/cli/create.js +275 -413
  130. package/cli/index.js +36 -24
  131. package/cli/lib/auto-update.js +14 -21
  132. package/cli/logic/product-skills.js +58 -0
  133. package/cli/logic/skill-definitions.js +0 -39
  134. package/cli/prompts.js +151 -145
  135. package/cli/skills/browser-subagent-core/SKILL.md +22 -0
  136. package/cli/tools/browser.js +75 -0
  137. package/cli/ui/dashboard.js +48 -0
  138. package/docs/AGENTS_GUIDE.vi.md +39 -45
  139. package/docs/CONTRIBUTING.vi.md +12 -3
  140. package/docs/{GEMINI_GUIDE.md → GEMINI_USAGE.md} +6 -6
  141. package/docs/GLOSSARY.vi.md +49 -30
  142. package/docs/HOW_ANTIGRAVITY_THINKS.vi.md +1 -1
  143. package/docs/OPERATIONAL_FLOW.vi.md +15 -0
  144. package/docs/{PUBLISHING.md → PUBLISHING_GUIDE.md} +31 -3
  145. package/docs/RULES_GUIDE.vi.md +67 -31
  146. package/docs/SHARED_LIBRARY_GUIDE.vi.md +18 -22
  147. package/docs/SKILLS_GUIDE.vi.md +119 -32
  148. package/docs/TROUBLESHOOTING.vi.md +10 -2
  149. package/docs/WORKFLOW_GUIDE.vi.md +57 -9
  150. package/package.json +32 -8
  151. package/setup.js +147 -114
  152. package/.agent/.shared/compliance/README.md +0 -19
  153. package/.agent/.shared/design-system/README.md +0 -18
  154. package/.agent/.shared/domain-blueprints/README.md +0 -18
  155. package/.agent/.shared/dx-toolkit/README.md +0 -19
  156. package/.agent/.shared/i18n-master/README.md +0 -18
  157. package/.agent/.shared/infra-blueprints/README.md +0 -18
  158. package/.agent/.shared/metrics/README.md +0 -17
  159. package/.agent/.shared/resilience-patterns/README.md +0 -19
  160. package/.agent/.shared/security-armor/README.md +0 -25
  161. package/.agent/.shared/testing-master/README.md +0 -20
  162. package/.agent/.shared/vitals-templates/README.md +0 -18
  163. package/.agent/agents/accessibility-expert.md +0 -22
  164. package/.agent/agents/api-architect.md +0 -22
  165. package/.agent/agents/backend-specialist.eco.md +0 -19
  166. package/.agent/agents/backend-specialist.instant.md +0 -19
  167. package/.agent/agents/codebase-expert.md +0 -23
  168. package/.agent/agents/compliance-expert.md +0 -22
  169. package/.agent/agents/data-scientist.md +0 -22
  170. package/.agent/agents/debugger.eco.md +0 -20
  171. package/.agent/agents/debugger.instant.md +0 -20
  172. package/.agent/agents/deep-thinker.ultra.md +0 -23
  173. package/.agent/agents/devex-optimizer.md +0 -22
  174. package/.agent/agents/devops-architect.md +0 -22
  175. package/.agent/agents/frontend-specialist.eco.md +0 -19
  176. package/.agent/agents/frontend-specialist.instant.md +0 -19
  177. package/.agent/agents/growth-engineer.md +0 -22
  178. package/.agent/agents/i18n-specialist.md +0 -21
  179. package/.agent/agents/legacy-modernizer.md +0 -22
  180. package/.agent/agents/microservices-specialist.md +0 -22
  181. package/.agent/agents/motion-designer.md +0 -22
  182. package/.agent/agents/orchestrator.creative.md +0 -28
  183. package/.agent/agents/orchestrator.eco.md +0 -29
  184. package/.agent/agents/orchestrator.instant.md +0 -29
  185. package/.agent/agents/orchestrator.ultra.md +0 -28
  186. package/.agent/agents/performance-benchmarker.md +0 -22
  187. package/.agent/agents/project-planner.eco.md +0 -19
  188. package/.agent/agents/project-planner.instant.md +0 -19
  189. package/.agent/agents/security-pentester.md +0 -22
  190. package/.agent/agents/serverless-expert.md +0 -22
  191. package/.agent/fastcode_index.json +0 -1038
  192. package/.agent/mcp_config.json +0 -24
  193. package/.agent/rules/GEMINI.eco.md +0 -37
  194. package/.agent/rules/GEMINI.instant.md +0 -37
  195. package/.agent/rules/api-spec.md +0 -28
  196. package/.agent/rules/database.md +0 -24
  197. package/.agent/rules/devops.md +0 -23
  198. package/.agent/rules/growth-strategy.md +0 -22
  199. package/.agent/rules/logging-monitoring.md +0 -22
  200. package/.agent/rules/quality-assurance.md +0 -22
  201. package/.agent/rules/system-reasoning.md +0 -20
  202. package/.agent/rules/ui-design.md +0 -23
  203. package/.agent/rules/ux-patterns.md +0 -23
  204. package/.agent/scripts/auto_preview.py +0 -148
  205. package/.agent/scripts/checklist.py +0 -252
  206. package/.agent/scripts/session_manager.py +0 -120
  207. package/.agent/scripts/simulation_install.js +0 -59
  208. package/.agent/scripts/sync_to_global.py +0 -78
  209. package/.agent/scripts/translate_workflows.py +0 -53
  210. package/.agent/scripts/verify_all.py +0 -327
  211. package/.agent/scripts/verify_shared_modules.js +0 -126
  212. package/.agent/skills/fastcode-search/SKILL.md +0 -46
  213. package/.agent/skills/fastcode-search/fastcode_config.example.json +0 -17
  214. package/.agent/skills/frontend-trends-2026/SKILL.md +0 -78
  215. package/.agent/skills/frontend-trends-2026/formulas/BentoGrid.tsx +0 -42
  216. package/.agent/skills/frontend-trends-2026/formulas/LiquidCard.tsx +0 -32
  217. package/.agent/skills/frontend-trends-2026/formulas/NeoButton.tsx +0 -27
  218. package/.agent/workflows/deep-security-audit.md +0 -9
  219. package/.agent/workflows/growth-max.md +0 -9
  220. package/.agent/workflows/performance-max.md +0 -9
  221. package/.editorconfig +0 -21
  222. package/.gitattributes +0 -7
  223. package/CHANGELOG.md +0 -32
  224. package/ERRORS.md +0 -67
  225. package/action.yml +0 -32
  226. package/antigravity-ide-logo.png +0 -0
  227. package/antigravity-ide-logo.svg +0 -24
  228. package/assets/skills-bundle.json +0 -1
  229. package/cli/manifest.js +0 -524
  230. package/cli/skills/fastcode.js +0 -181
  231. package/docs/AGENT_FLOW.md +0 -608
  232. package/docs/CONTRIBUTING.md +0 -46
  233. package/docs/COPYRIGHT.md +0 -57
  234. package/docs/DEPLOYMENT.md +0 -77
  235. package/docs/GLOSSARY.md +0 -109
  236. package/docs/MASTER_GUIDE.md +0 -103
  237. package/docs/OPERATIONAL_FLOW.md +0 -147
  238. package/docs/PLAN-upgrade-core-architecture.md +0 -71
  239. package/docs/SKILLS.md +0 -610
  240. package/docs/TROUBLESHOOTING.md +0 -43
  241. package/jest.config.js +0 -8
  242. package/scripts/bump.js +0 -93
  243. package/scripts/bundle-skills.js +0 -59
  244. package/scripts/internal/automation/auto-release.js +0 -177
  245. package/scripts/internal/fractalize-skills.js +0 -89
  246. package/scripts/internal/generate-skill-definitions.js +0 -134
  247. package/scripts/internal/internal/update-docs.js +0 -115
  248. package/scripts/internal/refactor-skill-content.js +0 -127
  249. package/scripts/internal/rename-skills.js +0 -96
  250. package/scripts/internal/sync-skills.js +0 -112
  251. package/scripts/internal/update-frontmatter-names.js +0 -99
  252. package/scripts/internal/verification/audit-dna.js +0 -56
  253. package/scripts/internal/verification/audit-skills.js +0 -65
  254. package/web/src/app/docs/guide/examples/brainstorm/page.mdx +0 -91
  255. package/web/src/app/docs/guide/examples/create/page.mdx +0 -84
  256. package/web/src/app/docs/guide/examples/debugging/page.mdx +0 -83
  257. package/web/src/app/docs/guide/examples/deployment/page.mdx +0 -93
  258. package/web/src/app/docs/guide/examples/new-feature/page.mdx +0 -102
  259. package/web/src/app/docs/guide/examples/orchestration/page.mdx +0 -99
  260. package/web/src/app/docs/guide/examples/plan/page.mdx +0 -76
  261. package/web/src/app/docs/guide/examples/preview/page.mdx +0 -77
  262. package/web/src/app/docs/guide/examples/status/page.mdx +0 -78
  263. package/web/src/app/docs/guide/examples/test/page.mdx +0 -80
  264. package/web/src/app/docs/guide/examples/ui-design/page.mdx +0 -90
  265. package/web/src/components/mdx/Callout.tsx +0 -60
  266. package/web/src/components/mdx/FeatureGrid.tsx +0 -38
  267. package/web/src/components/mdx/ProTips.tsx +0 -29
  268. package/web/src/components/mdx/StepList.tsx +0 -33
  269. package/web/src/components/mdx/Terminal.tsx +0 -58
  270. package/web/src/components/mdx/index.ts +0 -5
  271. package/web/src/mdx-components.tsx +0 -98
  272. /package/.agent/.shared/{design-philosophy → core/design-philosophy}/MANIFESTO.md +0 -0
  273. /package/.agent/.shared/{design-philosophy → core/design-philosophy}/checklists/tactile_audit.md +0 -0
  274. /package/.agent/.shared/{design-philosophy → core/design-philosophy}/checklists/visual_audit.md +0 -0
  275. /package/.agent/.shared/{design-philosophy → core/design-philosophy}/presets/linear_glow.json +0 -0
  276. /package/.agent/.shared/{dx-toolkit → core/dx-toolkit}/checklists/code_review.md +0 -0
  277. /package/.agent/.shared/{dx-toolkit → core/dx-toolkit}/presets/vscode_settings.json +0 -0
  278. /package/.agent/.shared/{metrics → core/metrics}/benchmarks.json +0 -0
  279. /package/.agent/.shared/{vitals-templates → core/vitals-templates}/audit_report.md +0 -0
  280. /package/.agent/.shared/{vitals-templates → core/vitals-templates}/plan_prd.md +0 -0
  281. /package/.agent/.shared/{ai-master → technical/ai-master}/best_patterns.md +0 -0
  282. /package/.agent/.shared/{ai-master → technical/ai-master}/checklists/prompt_audit.md +0 -0
  283. /package/.agent/.shared/{ai-master → technical/ai-master}/presets/model_configs.json +0 -0
  284. /package/.agent/.shared/{api-standards → technical/api-standards}/data +0 -0
  285. /package/.agent/.shared/{api-standards → technical/api-standards}/endpoints_naming.md +0 -0
  286. /package/.agent/.shared/{api-standards → technical/api-standards}/error_codes.csv +0 -0
  287. /package/.agent/.shared/{api-standards → technical/api-standards}/pagination_sorting.md +0 -0
  288. /package/.agent/.shared/{api-standards → technical/api-standards}/response_format.json +0 -0
  289. /package/.agent/.shared/{database-master → technical/database-master}/schemas/auth_rbac.sql +0 -0
  290. /package/.agent/.shared/{database-master → technical/database-master}/schemas/cms.sql +0 -0
  291. /package/.agent/.shared/{database-master → technical/database-master}/schemas/ecommerce.sql +0 -0
  292. /package/.agent/.shared/{design-system → technical/design-system}/brand_presets.json +0 -0
  293. /package/.agent/.shared/{design-system → technical/design-system}/micro_interactions.md +0 -0
  294. /package/.agent/.shared/{i18n-master → technical/i18n-master}/vi_tech_dictionary.csv +0 -0
  295. /package/.agent/.shared/{i18n-master → technical/i18n-master}/workflows.json +0 -0
  296. /package/.agent/.shared/{resilience-patterns → technical/resilience-patterns}/checklists/chaos_engineering.md +0 -0
  297. /package/.agent/.shared/{resilience-patterns → technical/resilience-patterns}/presets/circuit_breaker.json +0 -0
  298. /package/.agent/.shared/{security-armor → technical/security-armor}/checklists/vuln_scan.md +0 -0
  299. /package/.agent/.shared/{security-armor → technical/security-armor}/hardening.md +0 -0
  300. /package/.agent/.shared/{security-armor → technical/security-armor}/presets/helmet_config.json +0 -0
  301. /package/.agent/.shared/{seo-master → technical/seo-master}/checklists/technical_seo.md +0 -0
  302. /package/.agent/.shared/{seo-master → technical/seo-master}/presets/json_ld_schema.json +0 -0
  303. /package/.agent/.shared/{testing-master → technical/testing-master}/checklists/pre_release.md +0 -0
  304. /package/.agent/.shared/{testing-master → technical/testing-master}/scenarios.md +0 -0
  305. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/colors.csv +0 -0
  306. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/icons.csv +0 -0
  307. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/landing.csv +0 -0
  308. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/products.csv +0 -0
  309. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/react-performance.csv +0 -0
  310. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/flutter.csv +0 -0
  311. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/html-tailwind.csv +0 -0
  312. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/jetpack-compose.csv +0 -0
  313. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/nextjs.csv +0 -0
  314. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/nuxt-ui.csv +0 -0
  315. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/nuxtjs.csv +0 -0
  316. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/react-native.csv +0 -0
  317. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/react.csv +0 -0
  318. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/shadcn.csv +0 -0
  319. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/svelte.csv +0 -0
  320. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/swiftui.csv +0 -0
  321. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/stacks/vue.csv +0 -0
  322. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/ux-guidelines.csv +0 -0
  323. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/data/web-interface.csv +0 -0
  324. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/scripts/__pycache__/core.cpython-313.pyc +0 -0
  325. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  326. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/scripts/core.py +0 -0
  327. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/scripts/design_system.py +0 -0
  328. /package/.agent/.shared/{ui-ux-pro-max → technical/ui-ux-pro-max}/scripts/search.py +0 -0
  329. /package/.agent/.shared/{compliance → verticals/compliance}/legal_templates.md +0 -0
  330. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/edtech.md +0 -0
  331. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/fintech.md +0 -0
  332. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/fnb_restaurant.md +0 -0
  333. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/freelance_marketplace.md +0 -0
  334. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/healthcare.md +0 -0
  335. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/hospitality_tourism.md +0 -0
  336. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/logistics.md +0 -0
  337. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/marketing_automation.md +0 -0
  338. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/personal_branding.md +0 -0
  339. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/real_estate.md +0 -0
  340. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/retail_ecommerce.md +0 -0
  341. /package/.agent/.shared/{domain-blueprints → verticals/domain-blueprints}/standard-pro-agents.md +0 -0
  342. /package/.agent/.shared/{infra-blueprints → verticals/infra-blueprints}/deployment_specs.md +0 -0
  343. /package/.agent/skills/ai-engineer/{resources → sub-skills}/ai_infra_stack.md +0 -0
  344. /package/.agent/skills/cloud-architect-master/{resources → sub-skills}/cost_optimization_checklist.md +0 -0
  345. /package/.agent/skills/cro-expert-kit/{resources → sub-skills}/psychological_triggers.md +0 -0
  346. /package/.agent/skills/database-migration/{resources → sub-skills}/zero_downtime_strategy.md +0 -0
  347. /package/.agent/skills/deployment-engineer/{resources → sub-skills}/k8s_best_practices.md +0 -0
  348. /package/.agent/skills/git-collaboration-master/{resources → sub-skills}/pr_template.md +0 -0
  349. /package/.agent/skills/incident-responder/{resources → sub-skills}/incident_severity_levels.md +0 -0
  350. /package/.agent/skills/legacy-modernizer/{resources → sub-skills}/strangler_fig_pattern.md +0 -0
  351. /package/.agent/skills/penetration-tester-master/{resources → sub-skills}/owasp_top_10_2025.md +0 -0
  352. /package/.agent/skills/production-code-audit/{resources → sub-skills}/solid_principles_cheat_sheet.md +0 -0
  353. /package/.agent/skills/seo-expert-kit/{resources → sub-skills}/technical_seo_checklist.md +0 -0
  354. /package/.agent/skills/tdd-master-workflow/{resources → sub-skills}/unit_test_naming_convention.md +0 -0
  355. /package/.agent/{.shared → skills}/ui-ux-pro-max/data/charts.csv +0 -0
  356. /package/.agent/{.shared → skills}/ui-ux-pro-max/data/prompts.csv +0 -0
  357. /package/.agent/{.shared → skills}/ui-ux-pro-max/data/styles.csv +0 -0
  358. /package/.agent/{.shared → skills}/ui-ux-pro-max/data/typography.csv +0 -0
  359. /package/.agent/{.shared → skills}/ui-ux-pro-max/data/ui-reasoning.csv +0 -0
@@ -1,115 +0,0 @@
1
- /**
2
- * @script update-docs.js
3
- * @version 4.2.0
4
- * @layer internal
5
- * @protocol unified-protocol-v1
6
- * @description Tự động cập nhật số liệu thống kê trong các file tài liệu hướng dẫn.
7
- */
8
-
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- // Đường dẫn các file cần cập nhật
13
- const DOCS_FILES = {
14
- README_VI: 'README.vi.md',
15
- README_EN: 'README.md',
16
- SKILLS_GUIDE: 'docs/SKILLS_GUIDE.vi.md',
17
- RULES_GUIDE: 'docs/RULES_GUIDE.vi.md',
18
- WORKFLOW_GUIDE: 'docs/WORKFLOW_GUIDE.vi.md'
19
- };
20
-
21
- // Đếm số lượng Skills
22
- function countSkills() {
23
- const skillsDir = path.join(process.cwd(), '.agent', 'skills');
24
- if (!fs.existsSync(skillsDir)) return 0;
25
-
26
- try {
27
- const items = fs.readdirSync(skillsDir, { withFileTypes: true });
28
- return items.filter(item => item.isDirectory()).length;
29
- } catch (err) {
30
- logError(err, "Failed to read skills directory");
31
- return 0;
32
- }
33
- }
34
-
35
- // Đếm số lượng Workflows
36
- function countWorkflows() {
37
- const workflowsDir = path.join(process.cwd(), '.agent', 'workflows');
38
- if (!fs.existsSync(workflowsDir)) return 0;
39
-
40
- const items = fs.readdirSync(workflowsDir);
41
- return items.filter(item => item.endsWith('.md')).length;
42
- }
43
-
44
- // Đếm số lượng Rules
45
- function countRules() {
46
- const rulesDir = path.join(process.cwd(), '.agent', 'rules');
47
- if (!fs.existsSync(rulesDir)) return 0;
48
-
49
- const items = fs.readdirSync(rulesDir);
50
- return items.filter(item => item.endsWith('.md')).length;
51
- }
52
-
53
- // Cập nhật số liệu trong README
54
- function updateCounts() {
55
- const skills = countSkills();
56
- const workflows = countWorkflows();
57
- const rules = countRules();
58
-
59
- console.log('📊 Current Statistics:');
60
- console.log(` Skills: ${skills}`);
61
- console.log(` Workflows: ${workflows}`);
62
- console.log(` Rules: ${rules}`);
63
-
64
- return { skills, workflows, rules };
65
- }
66
-
67
- // Main function
68
- async function main() {
69
- console.log('🚀 Auto-Update Documentation System\n');
70
-
71
- const stats = updateCounts();
72
-
73
- console.log('\n✅ Statistics collected successfully!');
74
- console.log('💡 Tip: Use this data to update README.md and other docs manually for now.');
75
- console.log(' Future versions will support automatic text replacement.');
76
- }
77
-
78
- function logError(error, context) {
79
- const errorLogPath = path.join(process.cwd(), 'ERRORS.md');
80
- const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 16);
81
- const entry = `
82
- ## [${timestamp}] - Update-Docs Script Failure
83
-
84
- - **Type**: Runtime
85
- - **Severity**: Low
86
- - **File**: \`.agent/scripts/internal/update-docs.js\`
87
- - **Agent**: Senior Documentation Engine
88
- - **Root Cause**: ${context}
89
- - **Error Message**:
90
- \`\`\`
91
- ${error.message || error}
92
- \`\`\`
93
- - **Fix Applied**: N/A
94
- - **Prevention**: Ensure file system permissions are correct
95
- - **Status**: Investigating
96
-
97
- ---
98
- `;
99
- fs.appendFileSync(errorLogPath, entry);
100
- }
101
-
102
- // Run if called directly
103
- if (require.main === module) {
104
- try {
105
- main().catch(err => {
106
- logError(err, "Async main execution failed");
107
- console.error(err);
108
- });
109
- } catch (err) {
110
- logError(err, "Sync main execution failed");
111
- console.error(err);
112
- }
113
- }
114
-
115
- module.exports = { countSkills, countWorkflows, countRules, updateCounts };
@@ -1,127 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const SKILL_NAME = process.argv[2] || '3d-web-experience';
5
- const SKILLS_DIR = 'd:\\Github\\antigravity-ide\\.agent\\skills';
6
- const SKILL_DIR = path.join(SKILLS_DIR, SKILL_NAME);
7
- const SKILL_FILE = path.join(SKILL_DIR, 'SKILL.md');
8
- const SUB_SKILLS_DIR = path.join(SKILL_DIR, 'sub-skills');
9
-
10
- function slugify(text) {
11
- return text.toString().toLowerCase()
12
- .replace(/\s+/g, '-') // Replace spaces with -
13
- .replace(/[^\w\-]+/g, '') // Remove all non-word chars
14
- .replace(/\-\-+/g, '-') // Replace multiple - with single -
15
- .replace(/^-+/, '') // Trim - from start of text
16
- .replace(/-+$/, ''); // Trim - from end of text
17
- }
18
-
19
- // Main Execution for ALL skills
20
- function main() {
21
- const allSkills = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
22
- .filter(dirent => dirent.isDirectory())
23
- .map(dirent => dirent.name);
24
-
25
- console.log(`🚀 Starting Batch Refactor for ${allSkills.length} skills...`);
26
-
27
- let count = 0;
28
- allSkills.forEach(skillName => {
29
- // PROTECTED SKILLS - DO NOT TOUCH
30
- if (skillName === 'security-auditor') return;
31
-
32
- // Check if already fractalized deeply?
33
- // Heuristic: If SKILL.md is small (< 500 bytes) and sub-skills has many files, maybe skip?
34
- // But for now, let's force run to ensure safety.
35
- // WAIT: If we run this twice on `3d-web-experience`, it might re-extract the links?
36
- // content.split(/^### /gm) -> The links are `### 1. [Title]...`
37
- // So it will extract the link line as a new file content!
38
- // BAD. We need to detect if it's already a link list.
39
-
40
- if (isAlreadyLinked(skillName)) {
41
- console.log(`⏩ Skipping ${skillName} (Already fractalized)`);
42
- return;
43
- }
44
-
45
- processSkill(skillName);
46
- count++;
47
- });
48
-
49
- console.log(`✅ Completed. Refactored ${count} skills.`);
50
- }
51
-
52
- function isAlreadyLinked(skillName) {
53
- const skillFile = path.join(SKILLS_DIR, skillName, 'SKILL.md');
54
- if (!fs.existsSync(skillFile)) return false;
55
- const content = fs.readFileSync(skillFile, 'utf-8');
56
- // If it has the Fractal header and mostly just links...
57
- // Simple check: does it have "Knowledge Modules (Fractal Skills)"?
58
- return content.includes('Knowledge Modules (Fractal Skills)');
59
- }
60
-
61
- function processSkill(skillName) {
62
- const skillDir = path.join(SKILLS_DIR, skillName);
63
- const skillFile = path.join(skillDir, 'SKILL.md');
64
- const subSkillsDir = path.join(skillDir, 'sub-skills');
65
-
66
- if (!fs.existsSync(skillFile)) return;
67
-
68
- const content = fs.readFileSync(skillFile, 'utf-8');
69
- if (!content.includes('### ')) {
70
- // No headers to split
71
- return;
72
- }
73
-
74
- const sections = content.split(/^### /gm);
75
- if (sections.length < 2) return;
76
-
77
- if (!fs.existsSync(subSkillsDir)) {
78
- fs.mkdirSync(subSkillsDir, { recursive: true });
79
- }
80
-
81
- // 1. Master Content (Header)
82
- let masterContent = sections[0];
83
- let modulesList = [];
84
-
85
- // 2. Extract Sections
86
- for (let i = 1; i < sections.length; i++) {
87
- const rawSection = sections[i];
88
- const firstLineEnd = rawSection.indexOf('\n');
89
- let title = rawSection.substring(0, firstLineEnd).trim();
90
- let body = rawSection.substring(firstLineEnd).trim();
91
-
92
- // Clean Title (remote [links] etc)
93
- title = title.replace(/\[|\]/g, '');
94
-
95
- if (!title) continue;
96
-
97
- const fileName = slugify(title) + '.md';
98
- const filePath = path.join(subSkillsDir, fileName);
99
-
100
- // Only write if file doesn't exist (PREVENT OVERWRITE of moved resources)
101
- if (!fs.existsSync(filePath)) {
102
- const fileContent = `# ${title}\n\n${body}`;
103
- fs.writeFileSync(filePath, fileContent);
104
- }
105
-
106
- modulesList.push({ title, fileName });
107
- }
108
-
109
- // 3. Update SKILL.md
110
- // Header + Links
111
- let newMasterContent = masterContent.trim() + '\n\n';
112
- newMasterContent += '## 🧠 Knowledge Modules (Fractal Skills)\n\n';
113
-
114
- modulesList.forEach((mod, idx) => {
115
- newMasterContent += `### ${idx + 1}. [${mod.title}](./sub-skills/${mod.fileName})\n`;
116
- });
117
-
118
- // Add Version tag if missing
119
- if (!newMasterContent.includes('version:')) {
120
- newMasterContent = newMasterContent.replace('---', `---\nversion: 4.1.0-fractal`);
121
- }
122
-
123
- fs.writeFileSync(skillFile, newMasterContent);
124
- console.log(`fractalized: ${skillName}`);
125
- }
126
-
127
- main();
@@ -1,96 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const SKILLS_DIR = 'd:\\Github\\antigravity-ide\\.agent\\skills';
5
-
6
- function main() {
7
- const allSkills = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
8
- .filter(dirent => dirent.isDirectory())
9
- .map(dirent => dirent.name);
10
-
11
- console.log(`🚀 Starting Rename Process...`);
12
-
13
- allSkills.forEach(oldName => {
14
- let newName = oldName;
15
-
16
- // Rename Logic
17
- if (oldName.startsWith('cc-skill-')) {
18
- newName = oldName.replace('cc-skill-', 'agent-');
19
- } else if (oldName.startsWith('cc-')) {
20
- newName = oldName.replace('cc-', 'agent-');
21
- } else if (oldName.includes('claude')) {
22
- newName = oldName.replace('claude', 'agent');
23
- }
24
-
25
- if (newName !== oldName) {
26
- const oldPath = path.join(SKILLS_DIR, oldName);
27
- const newPath = path.join(SKILLS_DIR, newName);
28
-
29
- // 1. Rename Directory
30
- try {
31
- if (fs.existsSync(newPath)) {
32
- console.warn(`⚠️ Target ${newName} already exists. Skipping rename of ${oldName}`);
33
- } else {
34
- fs.renameSync(oldPath, newPath);
35
- console.log(`RENAME: ${oldName} -> ${newName}`);
36
-
37
- // 2. Update Content (SKILL.md and sub-skills)
38
- updateContent(newPath);
39
- }
40
- } catch (e) {
41
- console.error(`❌ Error renaming ${oldName}:`, e.message);
42
- }
43
- }
44
- });
45
-
46
- console.log('✅ Done.');
47
- }
48
-
49
- function updateContent(skillDir) {
50
- const files = getAllFiles(skillDir);
51
-
52
- files.forEach(file => {
53
- if (!file.endsWith('.md')) return;
54
-
55
- let content = fs.readFileSync(file, 'utf-8');
56
- let updated = false;
57
-
58
- // Replace "Claude" with "Agent" (Case insensitive mostly, but let's be careful)
59
- // We want to avoid changing URLs if possible, but simple string replacement is safer for branding.
60
-
61
- if (content.includes('Claude')) {
62
- content = content.replace(/Claude/g, 'Agent');
63
- updated = true;
64
- }
65
- if (content.includes('claude')) {
66
- content = content.replace(/claude/g, 'agent');
67
- updated = true;
68
- }
69
- // Also update the 'name:' field in frontmatter if strictly necessary to match folder?
70
- // Yes, usually SKILL.md has `name: xxx`
71
- // We generally shouldn't parse frontmatter with regex purely but a simple replace is okay here.
72
-
73
- if (updated) {
74
- fs.writeFileSync(file, content);
75
- console.log(` 📝 Updated content in ${path.basename(file)}`);
76
- }
77
- });
78
- }
79
-
80
- function getAllFiles(dirPath, arrayOfFiles) {
81
- files = fs.readdirSync(dirPath);
82
-
83
- arrayOfFiles = arrayOfFiles || [];
84
-
85
- files.forEach(function(file) {
86
- if (fs.statSync(dirPath + "/" + file).isDirectory()) {
87
- arrayOfFiles = getAllFiles(dirPath + "/" + file, arrayOfFiles);
88
- } else {
89
- arrayOfFiles.push(path.join(dirPath, "/", file));
90
- }
91
- });
92
-
93
- return arrayOfFiles;
94
- }
95
-
96
- main();
@@ -1,112 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- // Configuration
5
- const SOURCE_DIR = 'd:\\Github\\antigravity-awesome-skills\\skills';
6
- const DEST_DIR = 'd:\\Github\\antigravity-ide\\.agent\\skills';
7
- const CATALOG_FILE = 'd:\\Github\\antigravity-awesome-skills\\CATALOG.md';
8
- const SKILLS_MD_FILE = 'd:\\Github\\antigravity-ide\\SKILLS.md';
9
-
10
- // Stats
11
- let stats = {
12
- new: 0,
13
- skipped: 0,
14
- updated: 0,
15
- errors: 0
16
- };
17
-
18
- function main() {
19
- console.log('🚀 Starting Massive Skill Sync...');
20
-
21
- if (!fs.existsSync(SOURCE_DIR)) {
22
- console.error(`❌ Source directory not found: ${SOURCE_DIR}`);
23
- return;
24
- }
25
-
26
- // 1. Get List of Skills
27
- const sourceSkills = fs.readdirSync(SOURCE_DIR, { withFileTypes: true })
28
- .filter(dirent => dirent.isDirectory())
29
- .map(dirent => dirent.name);
30
-
31
- console.log(`📦 Found ${sourceSkills.length} skills in source.`);
32
-
33
- // 2. Sync Loop
34
- sourceSkills.forEach(skillName => {
35
- const srcPath = path.join(SOURCE_DIR, skillName);
36
- const destPath = path.join(DEST_DIR, skillName);
37
-
38
- if (fs.existsSync(destPath)) {
39
- // SKIP existing to protect customizations (Safety First)
40
- // console.log(`⏭️ Skipping existing: ${skillName}`);
41
- stats.skipped++;
42
- } else {
43
- try {
44
- // COPY New
45
- fs.cpSync(srcPath, destPath, { recursive: true });
46
- console.log(`✅ Imported: ${skillName}`);
47
- stats.new++;
48
- } catch (err) {
49
- console.error(`❌ Failed to copy ${skillName}:`, err.message);
50
- stats.errors++;
51
- }
52
- }
53
- });
54
-
55
- // 3. Generate Report
56
- console.log('\n--- SYNC REPORT ---');
57
- console.log(`🆕 New Skills: ${stats.new}`);
58
- console.log(`⏭️ Skipped: ${stats.skipped}`);
59
- console.log(`❌ Errors: ${stats.errors}`);
60
-
61
- // 4. Update SKILLS.md from CATALOG
62
- updateSkillsMd();
63
- }
64
-
65
- function updateSkillsMd() {
66
- console.log('\n📝 Updating SKILLS.md...');
67
-
68
- if (!fs.existsSync(CATALOG_FILE)) {
69
- console.warn('⚠️ Catalog file not found, skipping SKILLS.md update.');
70
- return;
71
- }
72
-
73
- try {
74
- const catalogContent = fs.readFileSync(CATALOG_FILE, 'utf-8');
75
-
76
- // Simple header replacement or append strategy?
77
- // Since the structure might be different, let's create a NEW section for "Community Skills"
78
- // OR replace the content if we are confident.
79
-
80
- // Current Strategy: Read all skills from CATALOG and format them into Antigravity MD format
81
- // But CATALOG format is: | Skill | Description | Tags | Triggers |
82
- // SKILLS.md format matches this table structure usually.
83
-
84
- // Let's backup old SKILLS.md
85
- fs.copyFileSync(SKILLS_MD_FILE, SKILLS_MD_FILE + '.bak');
86
-
87
- // Create new content
88
- const header = `# AntiGravity Master Skills
89
-
90
- > **Total Skills**: ${stats.new + stats.skipped}
91
- > **Generated**: ${new Date().toISOString()}
92
-
93
- This is the complete list of available skills in the system.
94
-
95
- `;
96
-
97
- // We can just append the CATALOG content essentially, maybe stripping some headers
98
- // The CATALOG.md from awesome-skills seems to be well formatted.
99
- // Let's use it as the base but prefix with our header.
100
-
101
- // Let's just Read CATALOG and write to SKILLS.md (Overwriting old manual list)
102
- // This assumes CATALOG.md is better source of truth now.
103
-
104
- fs.writeFileSync(SKILLS_MD_FILE, header + catalogContent);
105
- console.log('✅ SKILLS.md updated using CATALOG.md source.');
106
-
107
- } catch (err) {
108
- console.error('❌ Failed to update SKILLS.md:', err.message);
109
- }
110
- }
111
-
112
- main();
@@ -1,99 +0,0 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const SKILLS_DIR = 'd:\\Github\\antigravity-ide\\.agent\\skills';
5
- const SKILLS_CATALOG = 'd:\\Github\\antigravity-ide\\SKILLS.md';
6
-
7
- function main() {
8
- const skills = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
9
- .filter(dirent => dirent.isDirectory())
10
- .map(dirent => dirent.name);
11
-
12
- console.log(`🚀 Auditing ${skills.length} skills for consistency...`);
13
-
14
- let fixes = 0;
15
-
16
- // 1. Fix Frontmatter Name vs Folder Name
17
- skills.forEach(skillName => {
18
- const skillFile = path.join(SKILLS_DIR, skillName, 'SKILL.md');
19
- if (!fs.existsSync(skillFile)) return;
20
-
21
- let content = fs.readFileSync(skillFile, 'utf-8');
22
-
23
- // Regex to find "name: old-name"
24
- const nameMatch = content.match(/^name:\s+(.*)$/m);
25
- if (nameMatch) {
26
- const currentName = nameMatch[1].trim();
27
- if (currentName !== skillName && skillName.startsWith('agent-')) {
28
- // Mismatch found in a renamed skill
29
- console.log(`🔧 Fixing mismatch: ${currentName} -> ${skillName}`);
30
- content = content.replace(/^name:\s+.*$/m, `name: ${skillName}`);
31
-
32
- // Also update H1 title if it matches old name
33
- content = content.replace(new RegExp(`# ${currentName}`, 'g'), `# ${skillName}`);
34
-
35
- fs.writeFileSync(skillFile, content);
36
- fixes++;
37
- }
38
- }
39
- });
40
-
41
- console.log(`✅ Fixed ${fixes} frontmatter mismatches.`);
42
-
43
- // 2. Fix Links in SKILLS.md
44
- console.log('\n📝 Rebuilding SKILLS.md Index...');
45
- updateSkillsCatalog(skills);
46
- }
47
-
48
- function updateSkillsCatalog(skillsList) {
49
- if (!fs.existsSync(SKILLS_CATALOG)) {
50
- console.warn('⚠️ SKILLS.md not found.');
51
- return;
52
- }
53
-
54
- let catalog = fs.readFileSync(SKILLS_CATALOG, 'utf-8');
55
-
56
- // We need to replace links like `[cc-skill-xxx]` with `[agent-xxx]`
57
- // Ideally, we should regenerate the table, but that removes descriptions.
58
- // Better: smart replace based on the actual renames we did.
59
- // Or simpler: Iterate all current skills, and if they are missing from catalog but their "old versions" are there, update them.
60
-
61
- let catalogUpdates = 0;
62
-
63
- // Heuristic: Identify broken links or outdated names
64
- // For every `agent-x`, look if `cc-skill-x` or `claude-x` exists in catalog
65
- skillsList.forEach(newSkill => {
66
- if (!newSkill.startsWith('agent-')) return;
67
-
68
- let oldNamePattern = '';
69
- if (newSkill.includes('code-guide')) oldNamePattern = 'claude-code-guide';
70
- else if (newSkill.includes('d3js')) oldNamePattern = 'claude-d3js-skill';
71
- else oldNamePattern = newSkill.replace('agent-', 'cc-skill-'); // Try cc-skill- first
72
-
73
- if (catalog.includes(oldNamePattern)) {
74
- // Replace all occurrences of oldName with newSkill
75
- const regex = new RegExp(oldNamePattern, 'g');
76
- catalog = catalog.replace(regex, newSkill);
77
- console.log(` 🔗 Updated catalog link: ${oldNamePattern} -> ${newSkill}`);
78
- catalogUpdates++;
79
- } else {
80
- // Try just 'cc-'
81
- const oldNamePattern2 = newSkill.replace('agent-', 'cc-');
82
- if (catalog.includes(oldNamePattern2)) {
83
- const regex = new RegExp(oldNamePattern2, 'g');
84
- catalog = catalog.replace(regex, newSkill);
85
- console.log(` 🔗 Updated catalog link: ${oldNamePattern2} -> ${newSkill}`);
86
- catalogUpdates++;
87
- }
88
- }
89
- });
90
-
91
- if (catalogUpdates > 0) {
92
- fs.writeFileSync(SKILLS_CATALOG, catalog);
93
- console.log(`✅ Updated ${catalogUpdates} links in SKILLS.md`);
94
- } else {
95
- console.log('✨ SKILLS.md is up to date.');
96
- }
97
- }
98
-
99
- main();
@@ -1,56 +0,0 @@
1
- /**
2
- * @script audit-dna.js
3
- * @version 4.2.0
4
- * @layer verification
5
- * @protocol unified-protocol-v1
6
- * @description Quét và kiểm tra tính hợp lệ của metadata trong kho DNA (.shared).
7
- */
8
-
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const DNA_PATH = path.join(__dirname, '..', '..', '.shared');
13
- const REQUIRED_FIELDS = ['module', 'version', 'layer'];
14
-
15
- function auditFile(filePath) {
16
- const content = fs.readFileSync(filePath, 'utf8');
17
- const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
18
-
19
- if (!frontmatterMatch) {
20
- console.error(`[FAIL] No metadata found in: ${filePath}`);
21
- return false;
22
- }
23
-
24
- const metadataStr = frontmatterMatch[1];
25
- const metadata = {};
26
- metadataStr.split('\n').forEach(line => {
27
- const [key, ...value] = line.split(':');
28
- if (key && value) {
29
- metadata[key.trim()] = value.join(':').trim();
30
- }
31
- });
32
-
33
- const missing = REQUIRED_FIELDS.filter(f => !metadata[f]);
34
- if (missing.length > 0) {
35
- console.error(`[FAIL] Missing fields (${missing.join(', ')}) in: ${filePath}`);
36
- return false;
37
- }
38
-
39
- console.log(`[PASS] ${metadata.module} (v${metadata.version}) - ${metadata.layer}`);
40
- return true;
41
- }
42
-
43
- function walkDir(dir) {
44
- const files = fs.readdirSync(dir);
45
- files.forEach(file => {
46
- const fullPath = path.join(dir, file);
47
- if (fs.statSync(fullPath).isDirectory()) {
48
- walkDir(fullPath);
49
- } else if (file === 'README.md') {
50
- auditFile(fullPath);
51
- }
52
- });
53
- }
54
-
55
- console.log('--- DNA Metadata Audit ---');
56
- walkDir(DNA_PATH);
@@ -1,65 +0,0 @@
1
- /**
2
- * @script audit-skills.js
3
- * @version 4.2.0
4
- * @layer verification
5
- * @protocol unified-protocol-v1
6
- * @description Quét và kiểm tra tính hợp lệ của metadata trong kho Skills (.agent/skills).
7
- */
8
-
9
- const fs = require('fs');
10
- const path = require('path');
11
-
12
- const SKILLS_PATH = path.join(__dirname, '..', '..', 'skills');
13
- const REQUIRED_FIELDS = ['name', 'description', 'category', 'version'];
14
-
15
- function auditSkill(filePath) {
16
- const content = fs.readFileSync(filePath, 'utf8');
17
- const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
18
-
19
- if (!frontmatterMatch) {
20
- console.error(`[FAIL] No metadata found in: ${filePath}`);
21
- return false;
22
- }
23
-
24
- const metadataStr = frontmatterMatch[1];
25
- const metadata = {};
26
- metadataStr.split('\n').forEach(line => {
27
- const [key, ...value] = line.split(':');
28
- if (key && value && value.length > 0) {
29
- metadata[key.trim()] = value.join(':').trim();
30
- }
31
- });
32
-
33
- const missing = REQUIRED_FIELDS.filter(f => !metadata[f]);
34
- if (missing.length > 0) {
35
- console.error(`[FAIL] Missing fields (${missing.join(', ')}) in: ${filePath}`);
36
- return false;
37
- }
38
-
39
- console.log(`[PASS] ${metadata.name} (v${metadata.version}) - Category: ${metadata.category}`);
40
- return true;
41
- }
42
-
43
- function walkDir(dir) {
44
- if (!fs.existsSync(dir)) {
45
- console.error(`[ERROR] Directory not found: ${dir}`);
46
- return;
47
- }
48
-
49
- const items = fs.readdirSync(dir, { withFileTypes: true });
50
- items.forEach(item => {
51
- const fullPath = path.join(dir, item.name);
52
- if (item.isDirectory()) {
53
- const skillMdPath = path.join(fullPath, 'SKILL.md');
54
- if (fs.existsSync(skillMdPath)) {
55
- auditSkill(skillMdPath);
56
- } else {
57
- // Recursively search if no SKILL.md found directly (for nested structures if any)
58
- walkDir(fullPath);
59
- }
60
- }
61
- });
62
- }
63
-
64
- console.log('--- Agent Skills Metadata Audit ---');
65
- walkDir(SKILLS_PATH);