antigravity-ide 4.2.0 → 4.2.1

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 (354) hide show
  1. package/.agent/.shared/{technical/ai-master → ai-master}/README.md +1 -12
  2. package/.agent/.shared/{technical/api-standards → api-standards}/README.md +1 -12
  3. package/.agent/.shared/compliance/README.md +19 -0
  4. package/.agent/.shared/{technical/database-master → database-master}/README.md +2 -12
  5. package/.agent/.shared/{core/design-philosophy → design-philosophy}/README.md +1 -12
  6. package/.agent/.shared/design-system/README.md +18 -0
  7. package/.agent/.shared/domain-blueprints/README.md +18 -0
  8. package/.agent/.shared/dx-toolkit/README.md +19 -0
  9. package/.agent/.shared/i18n-master/README.md +18 -0
  10. package/.agent/.shared/infra-blueprints/README.md +18 -0
  11. package/.agent/.shared/metrics/README.md +17 -0
  12. package/.agent/.shared/resilience-patterns/README.md +19 -0
  13. package/.agent/.shared/security-armor/README.md +25 -0
  14. package/.agent/.shared/{technical/seo-master → seo-master}/README.md +1 -12
  15. package/.agent/.shared/testing-master/README.md +20 -0
  16. package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/README.md +1 -12
  17. package/.agent/.shared/vitals-templates/README.md +18 -0
  18. package/.agent/ARCHITECTURE.md +7 -10
  19. package/.agent/ARCHITECTURE.vi.md +8 -8
  20. package/.agent/RESOURCES.md +1 -0
  21. package/.agent/agents/accessibility-expert.md +22 -0
  22. package/.agent/agents/api-architect.md +22 -0
  23. package/.agent/agents/backend-specialist.eco.md +19 -0
  24. package/.agent/agents/backend-specialist.instant.md +19 -0
  25. package/.agent/agents/backend-specialist.md +19 -154
  26. package/.agent/agents/cloud-architect.md +189 -108
  27. package/.agent/agents/codebase-expert.md +23 -0
  28. package/.agent/agents/compliance-expert.md +22 -0
  29. package/.agent/agents/data-scientist.md +22 -0
  30. package/.agent/agents/debugger.eco.md +20 -0
  31. package/.agent/agents/debugger.instant.md +20 -0
  32. package/.agent/agents/debugger.md +182 -83
  33. package/.agent/agents/deep-thinker.ultra.md +23 -0
  34. package/.agent/agents/devex-optimizer.md +22 -0
  35. package/.agent/agents/devops-architect.md +22 -0
  36. package/.agent/agents/documentation-writer.md +72 -125
  37. package/.agent/agents/frontend-specialist.eco.md +19 -0
  38. package/.agent/agents/frontend-specialist.instant.md +19 -0
  39. package/.agent/agents/frontend-specialist.md +7 -40
  40. package/.agent/agents/game-developer.md +116 -111
  41. package/.agent/agents/growth-engineer.md +22 -0
  42. package/.agent/agents/i18n-specialist.md +21 -0
  43. package/.agent/agents/legacy-modernizer.md +22 -0
  44. package/.agent/agents/microservices-specialist.md +22 -0
  45. package/.agent/agents/mobile-developer.md +321 -108
  46. package/.agent/agents/motion-designer.md +22 -0
  47. package/.agent/agents/orchestrator.creative.md +28 -0
  48. package/.agent/agents/orchestrator.eco.md +29 -0
  49. package/.agent/agents/orchestrator.instant.md +29 -0
  50. package/.agent/agents/orchestrator.md +366 -106
  51. package/.agent/agents/orchestrator.ultra.md +28 -0
  52. package/.agent/agents/performance-benchmarker.md +22 -0
  53. package/.agent/agents/performance-optimizer.md +136 -105
  54. package/.agent/agents/project-planner.eco.md +19 -0
  55. package/.agent/agents/project-planner.instant.md +19 -0
  56. package/.agent/agents/project-planner.md +39 -132
  57. package/.agent/agents/quality-inspector.md +32 -136
  58. package/.agent/agents/security-auditor.md +15 -138
  59. package/.agent/agents/security-pentester.md +22 -0
  60. package/.agent/agents/seo-specialist.md +72 -118
  61. package/.agent/agents/serverless-expert.md +22 -0
  62. package/.agent/agents/test-engineer.md +11 -142
  63. package/.agent/fastcode_index.json +1038 -0
  64. package/.agent/mcp_config.json +24 -0
  65. package/.agent/rules/GEMINI.eco.md +37 -0
  66. package/.agent/rules/GEMINI.instant.md +37 -0
  67. package/.agent/rules/GEMINI.md +31 -62
  68. package/.agent/rules/api-spec.md +28 -0
  69. package/.agent/rules/code-quality.md +3 -34
  70. package/.agent/rules/database.md +24 -0
  71. package/.agent/rules/devops.md +23 -0
  72. package/.agent/rules/frontend.md +3 -3
  73. package/.agent/rules/growth-strategy.md +22 -0
  74. package/.agent/rules/logging-monitoring.md +22 -0
  75. package/.agent/rules/quality-assurance.md +22 -0
  76. package/.agent/rules/strict-protocol.md +3 -44
  77. package/.agent/rules/system-reasoning.md +20 -0
  78. package/.agent/rules/system-update.md +3 -56
  79. package/.agent/rules/ui-design.md +23 -0
  80. package/.agent/rules/ux-patterns.md +23 -0
  81. package/.agent/scripts/auto_preview.py +148 -0
  82. package/.agent/scripts/checklist.py +252 -0
  83. package/.agent/scripts/session_manager.py +120 -0
  84. package/.agent/scripts/simulation_install.js +59 -0
  85. package/.agent/scripts/sync_to_global.py +78 -0
  86. package/.agent/scripts/translate_workflows.py +53 -0
  87. package/.agent/scripts/verify_all.py +327 -0
  88. package/.agent/scripts/verify_shared_modules.js +126 -0
  89. package/.agent/skills/agent-backend-patterns/SKILL.md +6 -13
  90. package/.agent/skills/ai-engineer/SKILL.md +16 -29
  91. package/.agent/skills/api-documenter/SKILL.md +4 -4
  92. package/.agent/skills/app-builder/SKILL.md +1 -1
  93. package/.agent/skills/app-builder/tech-stack.md +2 -2
  94. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +79 -39
  95. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +75 -53
  96. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +119 -56
  97. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +94 -61
  98. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +82 -56
  99. package/.agent/skills/cloud-architect-master/SKILL.md +4 -9
  100. package/.agent/skills/cro-expert-kit/SKILL.md +4 -9
  101. package/.agent/skills/database-migration/SKILL.md +3 -9
  102. package/.agent/skills/deployment-engineer/SKILL.md +3 -9
  103. package/.agent/skills/fastcode-search/SKILL.md +46 -0
  104. package/.agent/skills/fastcode-search/fastcode_config.example.json +17 -0
  105. package/.agent/skills/frontend-design/ux-psychology.md +585 -10
  106. package/.agent/skills/frontend-trends-2026/SKILL.md +78 -0
  107. package/.agent/skills/frontend-trends-2026/formulas/BentoGrid.tsx +42 -0
  108. package/.agent/skills/frontend-trends-2026/formulas/LiquidCard.tsx +32 -0
  109. package/.agent/skills/frontend-trends-2026/formulas/NeoButton.tsx +27 -0
  110. package/.agent/skills/full-stack-scaffold/SKILL.md +4 -4
  111. package/.agent/skills/game-development/2d-games/SKILL.md +2 -4
  112. package/.agent/skills/game-development/3d-games/SKILL.md +2 -4
  113. package/.agent/skills/game-development/SKILL.md +149 -18
  114. package/.agent/skills/game-development/game-art/SKILL.md +2 -4
  115. package/.agent/skills/game-development/game-audio/SKILL.md +2 -4
  116. package/.agent/skills/game-development/game-design/SKILL.md +2 -4
  117. package/.agent/skills/game-development/mobile-games/SKILL.md +2 -4
  118. package/.agent/skills/game-development/multiplayer/SKILL.md +2 -4
  119. package/.agent/skills/game-development/pc-games/SKILL.md +2 -4
  120. package/.agent/skills/game-development/vr-ar/SKILL.md +2 -4
  121. package/.agent/skills/game-development/web-games/SKILL.md +2 -4
  122. package/.agent/skills/geo-fundamentals/SKILL.md +136 -9
  123. package/.agent/skills/git-collaboration-master/SKILL.md +4 -9
  124. package/.agent/skills/i18n-localization/SKILL.md +118 -10
  125. package/.agent/skills/incident-responder/SKILL.md +6 -9
  126. package/.agent/skills/legacy-modernizer/SKILL.md +4 -9
  127. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +14 -2
  128. package/.agent/skills/mcp-builder/SKILL.md +164 -21
  129. package/.agent/skills/mobile-design/SKILL.md +369 -21
  130. package/.agent/skills/mobile-design/mobile-performance.md +1 -1
  131. package/.agent/skills/modern-web-architect/SKILL.md +6 -12
  132. package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +1 -1
  133. package/.agent/skills/penetration-tester-master/SKILL.md +4 -9
  134. package/.agent/skills/performance-engineer/SKILL.md +5 -4
  135. package/.agent/skills/production-code-audit/SKILL.md +0 -6
  136. package/.agent/skills/rust-pro/SKILL.md +177 -0
  137. package/.agent/skills/security-auditor/SKILL.md +27 -35
  138. package/.agent/skills/seo-expert-kit/SKILL.md +4 -9
  139. package/.agent/skills/tdd-master-workflow/SKILL.md +3 -9
  140. package/.agent/workflows/audit.md +16 -30
  141. package/.agent/workflows/brainstorm.md +96 -33
  142. package/.agent/workflows/create.md +45 -37
  143. package/.agent/workflows/debug.md +84 -45
  144. package/.agent/workflows/deep-security-audit.md +9 -0
  145. package/.agent/workflows/deploy.md +158 -33
  146. package/.agent/workflows/document.md +15 -38
  147. package/.agent/workflows/enhance.md +48 -33
  148. package/.agent/workflows/growth-max.md +9 -0
  149. package/.agent/workflows/monitor.md +14 -35
  150. package/.agent/workflows/orchestrate.md +218 -31
  151. package/.agent/workflows/performance-max.md +9 -0
  152. package/.agent/workflows/plan.md +70 -39
  153. package/.agent/workflows/security.md +14 -35
  154. package/.agent/workflows/seo.md +16 -39
  155. package/.agent/workflows/status.md +72 -33
  156. package/.agent/workflows/test.md +127 -30
  157. package/.agent/workflows/ui-ux-pro-max.md +283 -24
  158. package/.editorconfig +21 -0
  159. package/.gitattributes +7 -0
  160. package/CHANGELOG.md +32 -0
  161. package/ERRORS.md +67 -0
  162. package/{.agent/GEMINI.md → GEMINI.md} +5 -4
  163. package/LICENSE +8 -22
  164. package/README.md +72 -102
  165. package/README.vi.md +110 -90
  166. package/action.yml +32 -0
  167. package/antigravity-ide-logo.png +0 -0
  168. package/antigravity-ide-logo.svg +24 -0
  169. package/assets/skills-bundle.json +1 -0
  170. package/cli/create.js +413 -275
  171. package/cli/index.js +24 -28
  172. package/cli/lib/auto-update.js +21 -14
  173. package/cli/logic/skill-definitions.js +39 -0
  174. package/cli/manifest.js +524 -0
  175. package/cli/prompts.js +145 -151
  176. package/cli/skills/fastcode.js +181 -0
  177. package/docs/AGENTS_GUIDE.vi.md +45 -38
  178. package/docs/AGENT_FLOW.md +608 -0
  179. package/docs/CONTRIBUTING.md +46 -0
  180. package/docs/CONTRIBUTING.vi.md +3 -12
  181. package/docs/COPYRIGHT.md +57 -0
  182. package/docs/DEPLOYMENT.md +77 -0
  183. package/docs/{GEMINI_USAGE.md → GEMINI_GUIDE.md} +6 -6
  184. package/docs/GLOSSARY.md +109 -0
  185. package/docs/GLOSSARY.vi.md +30 -49
  186. package/docs/HOW_ANTIGRAVITY_THINKS.vi.md +1 -1
  187. package/docs/MASTER_GUIDE.md +103 -0
  188. package/docs/OPERATIONAL_FLOW.md +147 -0
  189. package/docs/OPERATIONAL_FLOW.vi.md +0 -15
  190. package/docs/PLAN-upgrade-core-architecture.md +71 -0
  191. package/docs/{PUBLISHING_GUIDE.md → PUBLISHING.md} +3 -31
  192. package/docs/RULES_GUIDE.vi.md +31 -67
  193. package/docs/SHARED_LIBRARY_GUIDE.vi.md +22 -18
  194. package/docs/SKILLS.md +610 -0
  195. package/docs/SKILLS_GUIDE.vi.md +32 -118
  196. package/docs/TROUBLESHOOTING.md +43 -0
  197. package/docs/TROUBLESHOOTING.vi.md +2 -10
  198. package/docs/WORKFLOW_GUIDE.vi.md +9 -57
  199. package/jest.config.js +8 -0
  200. package/package.json +8 -31
  201. package/scripts/bump.js +93 -0
  202. package/scripts/bundle-skills.js +59 -0
  203. package/scripts/internal/automation/auto-release.js +177 -0
  204. package/scripts/internal/fractalize-skills.js +89 -0
  205. package/scripts/internal/generate-skill-definitions.js +134 -0
  206. package/scripts/internal/internal/update-docs.js +115 -0
  207. package/scripts/internal/refactor-skill-content.js +127 -0
  208. package/scripts/internal/rename-skills.js +96 -0
  209. package/scripts/internal/sync-skills.js +112 -0
  210. package/scripts/internal/update-frontmatter-names.js +99 -0
  211. package/scripts/internal/verification/audit-dna.js +56 -0
  212. package/scripts/internal/verification/audit-skills.js +65 -0
  213. package/setup.js +114 -147
  214. package/web/src/app/docs/guide/examples/brainstorm/page.mdx +91 -0
  215. package/web/src/app/docs/guide/examples/create/page.mdx +84 -0
  216. package/web/src/app/docs/guide/examples/debugging/page.mdx +83 -0
  217. package/web/src/app/docs/guide/examples/deployment/page.mdx +93 -0
  218. package/web/src/app/docs/guide/examples/new-feature/page.mdx +102 -0
  219. package/web/src/app/docs/guide/examples/orchestration/page.mdx +99 -0
  220. package/web/src/app/docs/guide/examples/plan/page.mdx +76 -0
  221. package/web/src/app/docs/guide/examples/preview/page.mdx +77 -0
  222. package/web/src/app/docs/guide/examples/status/page.mdx +78 -0
  223. package/web/src/app/docs/guide/examples/test/page.mdx +80 -0
  224. package/web/src/app/docs/guide/examples/ui-design/page.mdx +90 -0
  225. package/web/src/components/mdx/Callout.tsx +60 -0
  226. package/web/src/components/mdx/FeatureGrid.tsx +38 -0
  227. package/web/src/components/mdx/ProTips.tsx +29 -0
  228. package/web/src/components/mdx/StepList.tsx +33 -0
  229. package/web/src/components/mdx/Terminal.tsx +58 -0
  230. package/web/src/components/mdx/index.ts +5 -0
  231. package/web/src/mdx-components.tsx +98 -0
  232. package/.agent/skills/brand-guidelines-anthropic/LICENSE.txt +0 -202
  233. package/.agent/skills/brand-guidelines-anthropic/SKILL.md +0 -26
  234. package/.agent/skills/brand-guidelines-anthropic/sub-skills/color-application.md +0 -5
  235. package/.agent/skills/brand-guidelines-anthropic/sub-skills/colors.md +0 -14
  236. package/.agent/skills/brand-guidelines-anthropic/sub-skills/font-management.md +0 -6
  237. package/.agent/skills/brand-guidelines-anthropic/sub-skills/shape-and-accent-colors.md +0 -7
  238. package/.agent/skills/brand-guidelines-anthropic/sub-skills/smart-font-application.md +0 -6
  239. package/.agent/skills/brand-guidelines-anthropic/sub-skills/text-styling.md +0 -6
  240. package/.agent/skills/brand-guidelines-anthropic/sub-skills/typography.md +0 -7
  241. package/.agent/skills/internal-comms-anthropic/LICENSE.txt +0 -202
  242. package/.agent/skills/internal-comms-anthropic/SKILL.md +0 -33
  243. package/.agent/skills/internal-comms-anthropic/examples/3p-updates.md +0 -47
  244. package/.agent/skills/internal-comms-anthropic/examples/company-newsletter.md +0 -65
  245. package/.agent/skills/internal-comms-anthropic/examples/faq-answers.md +0 -30
  246. package/.agent/skills/internal-comms-anthropic/examples/general-comms.md +0 -16
  247. package/.agent/skills/last30days/tests/__init__.py +0 -1
  248. package/.agent/skills/last30days/tests/test_cache.py +0 -59
  249. package/.agent/skills/last30days/tests/test_dates.py +0 -114
  250. package/.agent/skills/last30days/tests/test_dedupe.py +0 -111
  251. package/.agent/skills/last30days/tests/test_models.py +0 -135
  252. package/.agent/skills/last30days/tests/test_normalize.py +0 -138
  253. package/.agent/skills/last30days/tests/test_render.py +0 -116
  254. package/.agent/skills/last30days/tests/test_score.py +0 -168
  255. package/.agent/skills/loki-mode/.github/workflows/claude-code-review.yml +0 -57
  256. package/.agent/skills/loki-mode/.github/workflows/claude.yml +0 -50
  257. package/.agent/skills/loki-mode/.github/workflows/release.yml +0 -128
  258. package/.agent/skills/loki-mode/tests/run-all-tests.sh +0 -78
  259. package/.agent/skills/loki-mode/tests/test-agent-timeout.sh +0 -348
  260. package/.agent/skills/loki-mode/tests/test-bootstrap.sh +0 -196
  261. package/.agent/skills/loki-mode/tests/test-circuit-breaker.sh +0 -389
  262. package/.agent/skills/loki-mode/tests/test-state-recovery.sh +0 -393
  263. package/.agent/skills/loki-mode/tests/test-task-queue.sh +0 -396
  264. package/.agent/skills/loki-mode/tests/test-wrapper.sh +0 -314
  265. package/.agent/skills/shopify-development/scripts/tests/test_shopify_init.py +0 -379
  266. package/cli/logic/product-skills.js +0 -58
  267. /package/.agent/.shared/{technical/ai-master → ai-master}/best_patterns.md +0 -0
  268. /package/.agent/.shared/{technical/ai-master → ai-master}/checklists/prompt_audit.md +0 -0
  269. /package/.agent/.shared/{technical/ai-master → ai-master}/presets/model_configs.json +0 -0
  270. /package/.agent/.shared/{technical/api-standards → api-standards}/data +0 -0
  271. /package/.agent/.shared/{technical/api-standards → api-standards}/endpoints_naming.md +0 -0
  272. /package/.agent/.shared/{technical/api-standards → api-standards}/error_codes.csv +0 -0
  273. /package/.agent/.shared/{technical/api-standards → api-standards}/pagination_sorting.md +0 -0
  274. /package/.agent/.shared/{technical/api-standards → api-standards}/response_format.json +0 -0
  275. /package/.agent/.shared/{verticals/compliance → compliance}/legal_templates.md +0 -0
  276. /package/.agent/.shared/{technical/database-master → database-master}/schemas/auth_rbac.sql +0 -0
  277. /package/.agent/.shared/{technical/database-master → database-master}/schemas/cms.sql +0 -0
  278. /package/.agent/.shared/{technical/database-master → database-master}/schemas/ecommerce.sql +0 -0
  279. /package/.agent/.shared/{core/design-philosophy → design-philosophy}/MANIFESTO.md +0 -0
  280. /package/.agent/.shared/{core/design-philosophy → design-philosophy}/checklists/tactile_audit.md +0 -0
  281. /package/.agent/.shared/{core/design-philosophy → design-philosophy}/checklists/visual_audit.md +0 -0
  282. /package/.agent/.shared/{core/design-philosophy → design-philosophy}/presets/linear_glow.json +0 -0
  283. /package/.agent/.shared/{technical/design-system → design-system}/brand_presets.json +0 -0
  284. /package/.agent/.shared/{technical/design-system → design-system}/micro_interactions.md +0 -0
  285. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/edtech.md +0 -0
  286. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/fintech.md +0 -0
  287. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/fnb_restaurant.md +0 -0
  288. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/freelance_marketplace.md +0 -0
  289. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/healthcare.md +0 -0
  290. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/hospitality_tourism.md +0 -0
  291. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/logistics.md +0 -0
  292. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/marketing_automation.md +0 -0
  293. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/personal_branding.md +0 -0
  294. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/real_estate.md +0 -0
  295. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/retail_ecommerce.md +0 -0
  296. /package/.agent/.shared/{verticals/domain-blueprints → domain-blueprints}/standard-pro-agents.md +0 -0
  297. /package/.agent/.shared/{core/dx-toolkit → dx-toolkit}/checklists/code_review.md +0 -0
  298. /package/.agent/.shared/{core/dx-toolkit → dx-toolkit}/presets/vscode_settings.json +0 -0
  299. /package/.agent/.shared/{technical/i18n-master → i18n-master}/vi_tech_dictionary.csv +0 -0
  300. /package/.agent/.shared/{technical/i18n-master → i18n-master}/workflows.json +0 -0
  301. /package/.agent/.shared/{verticals/infra-blueprints → infra-blueprints}/deployment_specs.md +0 -0
  302. /package/.agent/.shared/{core/metrics → metrics}/benchmarks.json +0 -0
  303. /package/.agent/.shared/{technical/resilience-patterns → resilience-patterns}/checklists/chaos_engineering.md +0 -0
  304. /package/.agent/.shared/{technical/resilience-patterns → resilience-patterns}/presets/circuit_breaker.json +0 -0
  305. /package/.agent/.shared/{technical/security-armor → security-armor}/checklists/vuln_scan.md +0 -0
  306. /package/.agent/.shared/{technical/security-armor → security-armor}/hardening.md +0 -0
  307. /package/.agent/.shared/{technical/security-armor → security-armor}/presets/helmet_config.json +0 -0
  308. /package/.agent/.shared/{technical/seo-master → seo-master}/checklists/technical_seo.md +0 -0
  309. /package/.agent/.shared/{technical/seo-master → seo-master}/presets/json_ld_schema.json +0 -0
  310. /package/.agent/.shared/{technical/testing-master → testing-master}/checklists/pre_release.md +0 -0
  311. /package/.agent/.shared/{technical/testing-master → testing-master}/scenarios.md +0 -0
  312. /package/.agent/{skills → .shared}/ui-ux-pro-max/data/charts.csv +0 -0
  313. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/colors.csv +0 -0
  314. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/icons.csv +0 -0
  315. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/landing.csv +0 -0
  316. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/products.csv +0 -0
  317. /package/.agent/{skills → .shared}/ui-ux-pro-max/data/prompts.csv +0 -0
  318. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/react-performance.csv +0 -0
  319. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/flutter.csv +0 -0
  320. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/html-tailwind.csv +0 -0
  321. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/jetpack-compose.csv +0 -0
  322. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nextjs.csv +0 -0
  323. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxt-ui.csv +0 -0
  324. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxtjs.csv +0 -0
  325. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react-native.csv +0 -0
  326. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react.csv +0 -0
  327. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/shadcn.csv +0 -0
  328. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/svelte.csv +0 -0
  329. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/swiftui.csv +0 -0
  330. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/vue.csv +0 -0
  331. /package/.agent/{skills → .shared}/ui-ux-pro-max/data/styles.csv +0 -0
  332. /package/.agent/{skills → .shared}/ui-ux-pro-max/data/typography.csv +0 -0
  333. /package/.agent/{skills → .shared}/ui-ux-pro-max/data/ui-reasoning.csv +0 -0
  334. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/ux-guidelines.csv +0 -0
  335. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/data/web-interface.csv +0 -0
  336. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/core.cpython-313.pyc +0 -0
  337. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
  338. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/scripts/core.py +0 -0
  339. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/scripts/design_system.py +0 -0
  340. /package/.agent/.shared/{technical/ui-ux-pro-max → ui-ux-pro-max}/scripts/search.py +0 -0
  341. /package/.agent/.shared/{core/vitals-templates → vitals-templates}/audit_report.md +0 -0
  342. /package/.agent/.shared/{core/vitals-templates → vitals-templates}/plan_prd.md +0 -0
  343. /package/.agent/skills/ai-engineer/{sub-skills → resources}/ai_infra_stack.md +0 -0
  344. /package/.agent/skills/cloud-architect-master/{sub-skills → resources}/cost_optimization_checklist.md +0 -0
  345. /package/.agent/skills/cro-expert-kit/{sub-skills → resources}/psychological_triggers.md +0 -0
  346. /package/.agent/skills/database-migration/{sub-skills → resources}/zero_downtime_strategy.md +0 -0
  347. /package/.agent/skills/deployment-engineer/{sub-skills → resources}/k8s_best_practices.md +0 -0
  348. /package/.agent/skills/git-collaboration-master/{sub-skills → resources}/pr_template.md +0 -0
  349. /package/.agent/skills/incident-responder/{sub-skills → resources}/incident_severity_levels.md +0 -0
  350. /package/.agent/skills/legacy-modernizer/{sub-skills → resources}/strangler_fig_pattern.md +0 -0
  351. /package/.agent/skills/penetration-tester-master/{sub-skills → resources}/owasp_top_10_2025.md +0 -0
  352. /package/.agent/skills/production-code-audit/{sub-skills → resources}/solid_principles_cheat_sheet.md +0 -0
  353. /package/.agent/skills/seo-expert-kit/{sub-skills → resources}/technical_seo_checklist.md +0 -0
  354. /package/.agent/skills/tdd-master-workflow/{sub-skills → resources}/unit_test_naming_convention.md +0 -0
@@ -0,0 +1,177 @@
1
+ /**
2
+ * @script auto-release.js
3
+ * @version 4.2.0
4
+ * @layer automation
5
+ * @protocol unified-protocol-v1
6
+ * @description Tự động cập nhật version và số liệu thống kê trên toàn bộ dự án.
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const path = require('path');
11
+ const { execSync } = require('child_process');
12
+
13
+ function logError(error, context) {
14
+ const errorLogPath = path.join(process.cwd(), 'ERRORS.md');
15
+ const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 16);
16
+ const entry = `
17
+ ## [${timestamp}] - Auto-Release Script Failure
18
+
19
+ - **Type**: Runtime
20
+ - **Severity**: High
21
+ - **File**: \`.agent/scripts/automation/auto-release.js\`
22
+ - **Agent**: Senior Automation Engine
23
+ - **Root Cause**: ${context}
24
+ - **Error Message**:
25
+ \`\`\`
26
+ ${error.message || error}
27
+ \`\`\`
28
+ - **Fix Applied**: N/A - Diagnostic logged
29
+ - **Prevention**: Check project state and Git permissions
30
+ - **Status**: Investigating
31
+
32
+ ---
33
+ `;
34
+ fs.appendFileSync(errorLogPath, entry);
35
+ }
36
+
37
+ // 1. Cấu hình các file cần cập nhật Version
38
+ const VERSION_FILES = [
39
+ {
40
+ path: 'package.json',
41
+ regex: /"version": "\d+\.\d+\.\d+"/g,
42
+ template: (ver) => `"version": "${ver}"`
43
+ },
44
+ {
45
+ path: 'VERSION',
46
+ regex: /\d+\.\d+\.\d+/g,
47
+ template: (ver) => `${ver}`
48
+ },
49
+ {
50
+ path: 'MASTER_GUIDE.md',
51
+ regex: /\*\*Version\*\*: \d+\.\d+\.\d+/g,
52
+ template: (ver) => `**Version**: ${ver}`
53
+ },
54
+ {
55
+ path: 'README.md',
56
+ regex: /antigravity-ide@\d+\.\d+\.\d+/g, // Update npx command example if generic
57
+ template: (ver) => `antigravity-ide@${ver}`
58
+ }
59
+ ];
60
+
61
+ // 2. Cấu hình các file cần cập nhật Số liệu (Stats)
62
+ const STATS_FILES = [
63
+ 'README.md',
64
+ 'README.vi.md',
65
+ 'GEMINI_GUIDE.md',
66
+ 'SKILLS.md'
67
+ ];
68
+
69
+ // Helper: Đếm số lượng trong thư mục
70
+ function countItems(dirPath, filterFn) {
71
+ const fullPath = path.join(process.cwd(), '.agent', dirPath);
72
+ if (!fs.existsSync(fullPath)) return 0;
73
+ return fs.readdirSync(fullPath, { withFileTypes: true })
74
+ .filter(filterFn).length;
75
+ }
76
+
77
+ // Logic chính
78
+ function main() {
79
+ const newVersion = process.argv[2];
80
+
81
+ if (!newVersion) {
82
+ console.error("❌ Error: Vui lòng cung cấp version mới. Ví dụ: node .agent/scripts/auto-release.js 4.0.4");
83
+ process.exit(1);
84
+ }
85
+
86
+ console.log(`🚀 Starting Release Process for v${newVersion}...\n`);
87
+
88
+ // --- A. Cập nhật Version ---
89
+ console.log("1️⃣ Updating Version Numbers...");
90
+ let updatedFiles = 0;
91
+
92
+ VERSION_FILES.forEach(config => {
93
+ const filePath = path.join(process.cwd(), config.path);
94
+ if (fs.existsSync(filePath)) {
95
+ let content = fs.readFileSync(filePath, 'utf8');
96
+ if (config.regex.test(content)) {
97
+ const newContent = content.replace(config.regex, config.template(newVersion));
98
+ fs.writeFileSync(filePath, newContent);
99
+ console.log(` ✅ Updated ${config.path}`);
100
+ updatedFiles++;
101
+ } else {
102
+ console.log(` ⚠️ Current version pattern not found in ${config.path} (Skipped)`);
103
+ }
104
+ }
105
+ });
106
+
107
+ // --- B. Cập nhật Thống kê Real-time ---
108
+ console.log("\n2️⃣ Updating Live Statistics...");
109
+
110
+ const stats = {
111
+ skills: countItems('skills', item => item.isDirectory()), // Folder là skill
112
+ workflows: countItems('workflows', item => item.isFile() && item.name.endsWith('.md')),
113
+ rules: countItems('rules', item => item.isFile() && item.name.endsWith('.md')),
114
+ agents: countItems('agents', item => item.isFile() && item.name.endsWith('.md'))
115
+ };
116
+
117
+ console.log(` 📊 Detected: ${stats.skills} Skills | ${stats.agents} Agents | ${stats.workflows} Workflows | ${stats.rules} Rules`);
118
+
119
+ STATS_FILES.forEach(fileName => {
120
+ const filePath = path.join(process.cwd(), fileName);
121
+ if (fs.existsSync(filePath)) {
122
+ let content = fs.readFileSync(filePath, 'utf8');
123
+
124
+ // Regex thay thế số lượng (VD: **26** Skills -> **27** Skills)
125
+ // Pattern: | **XX** [Text] |
126
+
127
+ // Update Skills
128
+ content = content.replace(/\|\s*\*\*\d+\*\*\s*(Master Skills|Bộ Kỹ năng|Skills)/g,
129
+ `| **${stats.skills}** $1`);
130
+
131
+ // Update Workflows
132
+ content = content.replace(/\|\s*\*\*\d+\*\*\s*(Workflows|Quy trình|Quy trình \(Workflows\))/g,
133
+ `| **${stats.workflows}** $1`);
134
+
135
+ // Update Agents
136
+ content = content.replace(/\|\s*\*\*\d+\*\*\s*(Specialist Agents|Agent Chuyên gia)/g,
137
+ `| **${stats.agents}** $1`);
138
+
139
+ // Update GEMINI_GUIDE total skills text
140
+ content = content.replace(/Total: \d+ Master Skills/g, `Total: ${stats.skills} Master Skills`);
141
+ content = content.replace(/\*\*All \d+ Master Skills/g, `**All ${stats.skills} Master Skills`);
142
+
143
+ fs.writeFileSync(filePath, content);
144
+ console.log(` ✅ Synced stats to ${fileName}`);
145
+ }
146
+ });
147
+
148
+ // --- C. Rà soát tính năng mới (Gợi ý Changelog) ---
149
+ console.log("\n3️⃣ Scanning for Recent Changes (Git)...");
150
+ try {
151
+ // Lấy danh sách file mới thêm trong 24h qua (hoặc chưa commit)
152
+ const gitStatus = execSync('git status --short').toString();
153
+ const newFiles = gitStatus.split('\n')
154
+ .filter(line => line.startsWith('A') || line.startsWith('??'))
155
+ .map(line => line.substring(3)); // Bỏ prefix trạng thái
156
+
157
+ const newFeatures = newFiles.filter(f => f.includes('.agent/skills') || f.includes('.agent/workflows') || f.includes('.agent/rules'));
158
+
159
+ if (newFeatures.length > 0) {
160
+ console.log(" ✨ New features detected (Add these to CHANGELOG.md):");
161
+ newFeatures.forEach(f => console.log(` - ${f}`));
162
+ } else {
163
+ console.log(" ℹ️ No new feature files detected via Git status.");
164
+ }
165
+ } catch (e) {
166
+ console.log(" ⚠️ Could not run git check (optional step).");
167
+ }
168
+
169
+ console.log("\n✅ Auto-Release Complete! Please verify changes and commit.");
170
+ }
171
+
172
+ try {
173
+ main();
174
+ } catch (err) {
175
+ console.error("❌ Critical Script Error:", err.message);
176
+ logError(err, "General script failure during main execution loop");
177
+ }
@@ -0,0 +1,89 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const SKILLS_DIR = 'd:\\Github\\antigravity-ide\\.agent\\skills';
5
+
6
+ function fractalizeSkill(skillName) {
7
+ const skillDir = path.join(SKILLS_DIR, skillName);
8
+ const skillFile = path.join(skillDir, 'SKILL.md');
9
+
10
+ if (!fs.existsSync(skillFile)) {
11
+ console.warn(`⚠️ SKILL.md not found for ${skillName}, skipping.`);
12
+ return;
13
+ }
14
+
15
+ const content = fs.readFileSync(skillFile, 'utf-8');
16
+
17
+ // Regex to extract Sections that look like Sub-skills
18
+ // This is heuristically complex.
19
+ // For now, simpler strategy:
20
+ // 1. Create `sub-skills` folder.
21
+ // 2. Identify H3 headers (### Title) as potential sub-skills.
22
+ // 3. Split content and create files.
23
+ // 4. Rewrite SKILL.md to link to them.
24
+
25
+ // BUT: Doing this blindly for 500 skills is DANGEROUS and LOW QUALITY.
26
+ // Better Strategy for now (Safe Fractalization):
27
+ // 1. Just create the `sub-skills` directory structure if missing.
28
+ // 2. If `resources` folder exists and has .md files, MOVE them to `sub-skills`.
29
+ // 3. Update SKILL.md frontmatter to include `version: x.x.x-fractal`.
30
+
31
+ const subSkillsDir = path.join(skillDir, 'sub-skills');
32
+ if (!fs.existsSync(subSkillsDir)) {
33
+ fs.mkdirSync(subSkillsDir);
34
+ }
35
+
36
+ // Move Resources to Sub-skills
37
+ const resourcesDir = path.join(skillDir, 'resources');
38
+ if (fs.existsSync(resourcesDir)) {
39
+ const files = fs.readdirSync(resourcesDir);
40
+ files.forEach(file => {
41
+ if (file.endsWith('.md')) {
42
+ const src = path.join(resourcesDir, file);
43
+ const dest = path.join(subSkillsDir, file);
44
+ fs.renameSync(src, dest);
45
+ console.log(`📦 Moved ${file} from resources to sub-skills for ${skillName}`);
46
+ }
47
+ });
48
+ // Clean up if empty
49
+ if (fs.readdirSync(resourcesDir).length === 0) {
50
+ fs.rmdirSync(resourcesDir);
51
+ }
52
+ }
53
+
54
+ // Update Frontmatter
55
+ let newContent = content;
56
+ if (!content.includes('version:')) {
57
+ newContent = content.replace('---', `---\nversion: 4.1.0-fractal`);
58
+ } else if (!content.includes('-fractal')) {
59
+ newContent = content.replace(/version: (.*)/, `version: 4.1.0-fractal`);
60
+ }
61
+
62
+ if (fs.existsSync(subSkillsDir) && fs.readdirSync(subSkillsDir).length > 0) {
63
+ // Append "Knowledge Modules" section if there are sub-skills and it's missing
64
+ if (!newContent.includes('Knowledge Modules')) {
65
+ newContent += '\n\n## 🧠 Knowledge Modules (Fractal Skills)\n\n';
66
+ const subFiles = fs.readdirSync(subSkillsDir);
67
+ subFiles.forEach((file, index) => {
68
+ newContent += `### ${index + 1}. [${file.replace('.md', '')}](./sub-skills/${file})\n`;
69
+ });
70
+ }
71
+ }
72
+
73
+ fs.writeFileSync(skillFile, newContent);
74
+ console.log(`✅ Fractalized: ${skillName}`);
75
+ }
76
+
77
+ function main() {
78
+ const skills = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
79
+ .filter(dirent => dirent.isDirectory())
80
+ .map(dirent => dirent.name);
81
+
82
+ skills.forEach(skill => {
83
+ // Skip if already correct
84
+ if (skill === 'security-auditor') return;
85
+ fractalizeSkill(skill);
86
+ });
87
+ }
88
+
89
+ main();
@@ -0,0 +1,134 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ const skillsDir = path.join(__dirname, '..', '..', '.agent', 'skills');
5
+ const outputFile = path.join(__dirname, '..', '..', 'cli', 'logic', 'skill-definitions.js');
6
+
7
+ // 1. Get all skill names
8
+ const allSkills = fs.readdirSync(skillsDir).filter(f => fs.statSync(path.join(skillsDir, f)).isDirectory());
9
+
10
+ // 2. Define Category Keywords (Priority Order matters for overlapping terms)
11
+ const categoryKeywords = {
12
+ security: ['security', 'pentest', 'hack', 'malware', 'vulnerability', 'auth', 'compliance', 'red-team', 'forensics', 'exploit', 'owasp', 'scanning', 'threat', 'ssh', 'ssl', 'encryption', 'pci', 'gdpr', 'stride'],
13
+ ai: ['ai-', 'llm', 'agent', 'langgraph', 'langchain', 'prompt', 'rag', 'vector', 'embedding', 'model', 'autogen', 'crewai', 'machine-learning', 'ml-', 'deep-learning', 'vision', 'voice', 'chatbot', 'gpt', 'claude', 'gemini', 'context'],
14
+ mobile: ['mobile', 'android', 'ios', 'flutter', 'react-native', 'expo', 'swift', 'kotlin', 'app-store'],
15
+ devops: ['devops', 'docker', 'kubernetes', 'k8s', 'terraform', 'aws', 'azure', 'gcp', 'cloud', 'ci/cd', 'pipeline', 'deploy', 'server', 'linux', 'bash', 'shell', 'monitor', 'observability', 'infra', 'terminal', 'powershell', 'bazel', 'turborepo', 'nx', 'git', 'ansible', 'helm', 'prometheus', 'grafana'],
16
+ testing: ['test', 'tdd', 'playwright', 'cypress', 'selenium', 'puppeteer', 'jest', 'vitest', 'e2e', 'qa', 'quality', 'debugging', 'debugger'],
17
+ uiux: ['ui', 'ux', 'design', 'css', 'tailwind', 'animation', 'style', 'theme', 'accessibility', 'wcag', 'canvas', 'svg', 'd3', 'icon', 'color', 'font', 'layout', 'responsive', 'frontend'],
18
+ growth: ['seo', 'analytics', 'marketing', 'growth', 'copy', 'content', 'social', 'email', 'conversion', 'cro', 'pricing', 'sales', 'business', 'startup', 'product', 'advertising', 'ads'],
19
+ webdev: ['web', 'react', 'next', 'vue', 'angular', 'svelte', 'html', 'javascript', 'typescript', 'node', 'express', 'nestjs', 'api', 'graphql', 'rest', 'backend', 'full-stack', 'frontend', 'wasm', 'pwa', 'remix', 'shopify', 'wordpress', 'django', 'flask', 'fastapi', 'php', 'ruby', 'rails', 'go-', 'rust', 'java', 'c-', 'cpp'],
20
+ research: ['research', 'analysis', 'strategy', 'brainstorm', 'plan', 'document', 'architecture', 'diagram', 'uml', 'c4', 'review', 'audit'],
21
+ // Maker matches everything else useful for building
22
+ maker: ['tool', 'automation', 'productivity', 'notion', 'obsidian', 'workflow', 'script', 'bot', 'scraper', 'data', 'excel', 'csv', 'pdf', 'video', 'image', 'audio', 'file', 'mcp']
23
+ };
24
+
25
+ const categorizedSkills = {
26
+ webdev: [],
27
+ mobile: [],
28
+ ai: [],
29
+ research: [],
30
+ uiux: [],
31
+ devops: [],
32
+ security: [],
33
+ growth: [],
34
+ maker: [],
35
+ testing: []
36
+ };
37
+
38
+ const assignedSkills = new Set();
39
+
40
+ // 3. Auto-Categorize
41
+ allSkills.forEach(skill => {
42
+ let assigned = false;
43
+ const lowerName = skill.toLowerCase();
44
+
45
+ // Check specific categories first
46
+ for (const [cat, keywords] of Object.entries(categoryKeywords)) {
47
+ if (keywords.some(k => lowerName.includes(k))) {
48
+ categorizedSkills[cat].push(skill);
49
+ assignedSkills.add(skill);
50
+ assigned = true;
51
+ break; // Assign to first matching category (priority based on order in object)
52
+ }
53
+ }
54
+
55
+ // Fallback logic
56
+ if (!assigned) {
57
+ // If not assigned, put in 'maker' as general tools
58
+ categorizedSkills.maker.push(skill);
59
+ }
60
+ });
61
+
62
+ // 4. Generate File Content
63
+ const fileContent = `/**
64
+ * Centralized definition of all Agent Skills and their categories.
65
+ * Auto-generated by .agent/scripts/generate-skill-definitions.js
66
+ * Total Skills: ${allSkills.length}
67
+ */
68
+
69
+ const skillCategories = {
70
+ webdev: {
71
+ name: 'Web High-Performance (Vercel & Antfu Grade)',
72
+ skills: ${JSON.stringify(categorizedSkills.webdev, null, 2).replace(/"/g, "'")}
73
+ },
74
+ mobile: {
75
+ name: 'Mobile Development (iOS, Android, Cross-Platform)',
76
+ skills: ${JSON.stringify(categorizedSkills.mobile, null, 2).replace(/"/g, "'")}
77
+ },
78
+ ai: {
79
+ name: 'Advanced AI & Research (AutoGen & LangGraph)',
80
+ skills: ${JSON.stringify(categorizedSkills.ai, null, 2).replace(/"/g, "'")}
81
+ },
82
+ research: {
83
+ name: 'Strategic Research & Wisdom (Fabric Patterns)',
84
+ skills: ${JSON.stringify(categorizedSkills.research, null, 2).replace(/"/g, "'")}
85
+ },
86
+ uiux: {
87
+ name: 'UI/UX Pro Max (NextLevel Aesthetics)',
88
+ skills: ${JSON.stringify(categorizedSkills.uiux, null, 2).replace(/"/g, "'")}
89
+ },
90
+ devops: {
91
+ name: 'DevOps & Cloud (Enterprise Grade)',
92
+ skills: ${JSON.stringify(categorizedSkills.devops, null, 2).replace(/"/g, "'")}
93
+ },
94
+ security: {
95
+ name: 'Security & Compliance (Fintech Standards)',
96
+ skills: ${JSON.stringify(categorizedSkills.security, null, 2).replace(/"/g, "'")}
97
+ },
98
+ growth: {
99
+ name: 'Growth & Business Intelligence',
100
+ skills: ${JSON.stringify(categorizedSkills.growth, null, 2).replace(/"/g, "'")}
101
+ },
102
+ maker: {
103
+ name: 'Maker & Indie Hacking (Sickn33) ',
104
+ skills: ${JSON.stringify(categorizedSkills.maker, null, 2).replace(/"/g, "'")}
105
+ },
106
+ testing: {
107
+ name: 'Professional QA & Testing',
108
+ skills: ${JSON.stringify(categorizedSkills.testing, null, 2).replace(/"/g, "'")}
109
+ }
110
+ };
111
+
112
+ function getSkillsForCategories(categories) {
113
+ const skills = [];
114
+ categories.forEach(category => {
115
+ if (skillCategories[category]) {
116
+ skills.push(...skillCategories[category].skills);
117
+ }
118
+ });
119
+ return skills;
120
+ }
121
+
122
+ module.exports = {
123
+ skillCategories,
124
+ getSkillsForCategories
125
+ };
126
+ `;
127
+
128
+ // 5. Write File
129
+ fs.writeFileSync(outputFile, fileContent);
130
+ console.log(`Successfully generated skill definitions for ${allSkills.length} skills.`);
131
+ console.log('Breakdown:');
132
+ Object.keys(categorizedSkills).forEach(cat => {
133
+ console.log(` - ${cat}: ${categorizedSkills[cat].length}`);
134
+ });
@@ -0,0 +1,115 @@
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 };
@@ -0,0 +1,127 @@
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();