anchi-toolkit 1.0.0 → 1.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 (1989) hide show
  1. package/.ai-audit/README.md +53 -0
  2. package/.ai-memory/README.md +137 -0
  3. package/.ai-memory/context.json +26 -0
  4. package/.ai-memory/decisions.json +3 -0
  5. package/.antigravity/agent-skill-index.yaml +24 -0
  6. package/.antigravity/anchi-toolkit.config.yaml +12 -0
  7. package/.antigravity/docs/README.md +9 -0
  8. package/.antigravity/skills/_template.md +30 -0
  9. package/.antigravity/team.yaml +154 -0
  10. package/.antigravity/workflows/config.md +144 -0
  11. package/.antigravity/workflows/demo.md +50 -0
  12. package/.antigravity/workflows/help.md +11 -4
  13. package/.antigravity/workflows/skill-learn.md +48 -0
  14. package/.antigravity/workflows/start.md +38 -117
  15. package/.antigravity/workflows/status.md +8 -8
  16. package/.antigravity/workflows/undo.md +7 -7
  17. package/.cursor/agent-skill-index.yaml +39 -0
  18. package/.cursor/agents/graph-architect.md +30 -0
  19. package/.cursor/agents/trend-watcher.md +24 -0
  20. package/.cursor/commands/config.md +144 -0
  21. package/.cursor/commands/demo.md +50 -0
  22. package/.cursor/commands/do.md +127 -90
  23. package/.cursor/commands/help.md +23 -16
  24. package/.cursor/commands/skill-learn.md +48 -0
  25. package/.cursor/commands/start.md +38 -117
  26. package/.cursor/commands/status.md +19 -19
  27. package/.cursor/commands/undo.md +19 -19
  28. package/.cursor/orchestration.yaml +18 -0
  29. package/.cursor/skills/_template.md +30 -0
  30. package/ANTIGRAVITY.md +84 -0
  31. package/CURSOR.md +50 -157
  32. package/LICENSE +17 -14
  33. package/README.md +64 -89
  34. package/dist/.ai-memory/context.json +26 -0
  35. package/dist/.ai-memory/decisions.json +3 -0
  36. package/dist/.antigravity/agent-skill-index.yaml +411 -0
  37. package/dist/.antigravity/agents/brainstormer.md +115 -0
  38. package/dist/.antigravity/agents/code-reviewer.md +168 -0
  39. package/dist/.antigravity/agents/copywriter.md +110 -0
  40. package/dist/.antigravity/agents/database-admin.md +104 -0
  41. package/dist/.antigravity/agents/ddd-architect.md +128 -0
  42. package/dist/.antigravity/agents/debugger.md +149 -0
  43. package/dist/.antigravity/agents/design-system-architect.md +166 -0
  44. package/dist/.antigravity/agents/docs-manager.md +133 -0
  45. package/dist/.antigravity/agents/fullstack-developer.md +105 -0
  46. package/dist/.antigravity/agents/git-manager.md +321 -0
  47. package/dist/.antigravity/agents/journal-writer.md +113 -0
  48. package/dist/.antigravity/agents/mcp-manager.md +93 -0
  49. package/dist/.antigravity/agents/planner.md +61 -0
  50. package/dist/.antigravity/agents/project-manager.md +131 -0
  51. package/dist/.antigravity/agents/researcher.md +50 -0
  52. package/dist/.antigravity/agents/scout-external.md +151 -0
  53. package/dist/.antigravity/agents/scout.md +117 -0
  54. package/dist/.antigravity/agents/tester.md +117 -0
  55. package/dist/.antigravity/agents/ui-ux-designer.md +233 -0
  56. package/dist/.antigravity/anchi-toolkit.config.yaml +12 -0
  57. package/dist/.antigravity/failure-modes.yaml +148 -0
  58. package/dist/.antigravity/orchestration.yaml +126 -0
  59. package/dist/.antigravity/skills/INSTALLATION.md +360 -0
  60. package/dist/.antigravity/skills/SKILLS_INDEX.md +118 -0
  61. package/dist/.antigravity/skills/THIRD_PARTY_NOTICES.md +405 -0
  62. package/dist/.antigravity/skills/_template.md +30 -0
  63. package/dist/.antigravity/skills/aesthetic/SKILL.md +121 -0
  64. package/dist/.antigravity/skills/aesthetic/assets/design-guideline-template.md +163 -0
  65. package/dist/.antigravity/skills/aesthetic/assets/design-story-template.md +135 -0
  66. package/dist/.antigravity/skills/aesthetic/references/design-principles.md +62 -0
  67. package/dist/.antigravity/skills/aesthetic/references/design-resources.md +75 -0
  68. package/dist/.antigravity/skills/aesthetic/references/micro-interactions.md +53 -0
  69. package/dist/.antigravity/skills/aesthetic/references/storytelling-design.md +50 -0
  70. package/dist/.antigravity/skills/agent_skills_spec.md +55 -0
  71. package/dist/.antigravity/skills/ai-multimodal/SKILL.md +65 -0
  72. package/dist/.antigravity/skills/ai-multimodal/references/audio-processing.md +386 -0
  73. package/dist/.antigravity/skills/ai-multimodal/references/image-generation.md +722 -0
  74. package/dist/.antigravity/skills/ai-multimodal/references/video-analysis.md +515 -0
  75. package/dist/.antigravity/skills/ai-multimodal/references/video-generation.md +457 -0
  76. package/dist/.antigravity/skills/ai-multimodal/references/vision-understanding.md +492 -0
  77. package/dist/.antigravity/skills/ai-multimodal/scripts/check_setup.py +299 -0
  78. package/dist/.antigravity/skills/ai-multimodal/scripts/document_converter.py +395 -0
  79. package/dist/.antigravity/skills/ai-multimodal/scripts/gemini_batch_process.py +896 -0
  80. package/dist/.antigravity/skills/ai-multimodal/scripts/media_optimizer.py +506 -0
  81. package/dist/.antigravity/skills/ai-multimodal/scripts/requirements.txt +26 -0
  82. package/dist/.antigravity/skills/ai-multimodal/scripts/tests/requirements.txt +20 -0
  83. package/dist/.antigravity/skills/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
  84. package/dist/.antigravity/skills/ai-multimodal/scripts/tests/test_failures.log +258 -0
  85. package/dist/.antigravity/skills/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
  86. package/dist/.antigravity/skills/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
  87. package/dist/.antigravity/skills/backend-development/SKILL.md +95 -0
  88. package/dist/.antigravity/skills/backend-development/references/backend-api-design.md +495 -0
  89. package/dist/.antigravity/skills/backend-development/references/backend-architecture.md +454 -0
  90. package/dist/.antigravity/skills/backend-development/references/backend-authentication.md +338 -0
  91. package/dist/.antigravity/skills/backend-development/references/backend-code-quality.md +659 -0
  92. package/dist/.antigravity/skills/backend-development/references/backend-debugging.md +904 -0
  93. package/dist/.antigravity/skills/backend-development/references/backend-devops.md +494 -0
  94. package/dist/.antigravity/skills/backend-development/references/backend-mindset.md +387 -0
  95. package/dist/.antigravity/skills/backend-development/references/backend-performance.md +397 -0
  96. package/dist/.antigravity/skills/backend-development/references/backend-security.md +290 -0
  97. package/dist/.antigravity/skills/backend-development/references/backend-technologies.md +256 -0
  98. package/dist/.antigravity/skills/backend-development/references/backend-testing.md +429 -0
  99. package/dist/.antigravity/skills/better-auth/SKILL.md +204 -0
  100. package/dist/.antigravity/skills/better-auth/references/advanced-features.md +553 -0
  101. package/dist/.antigravity/skills/better-auth/references/database-integration.md +577 -0
  102. package/dist/.antigravity/skills/better-auth/references/email-password-auth.md +416 -0
  103. package/dist/.antigravity/skills/better-auth/references/oauth-providers.md +430 -0
  104. package/dist/.antigravity/skills/better-auth/scripts/better_auth_init.py +521 -0
  105. package/dist/.antigravity/skills/better-auth/scripts/requirements.txt +15 -0
  106. package/dist/.antigravity/skills/better-auth/scripts/tests/test_better_auth_init.py +421 -0
  107. package/dist/.antigravity/skills/chrome-devtools/SKILL.md +360 -0
  108. package/dist/.antigravity/skills/chrome-devtools/references/cdp-domains.md +694 -0
  109. package/dist/.antigravity/skills/chrome-devtools/references/performance-guide.md +940 -0
  110. package/dist/.antigravity/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
  111. package/dist/.antigravity/skills/chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  112. package/dist/.antigravity/skills/chrome-devtools/scripts/click.js +79 -0
  113. package/dist/.antigravity/skills/chrome-devtools/scripts/console.js +75 -0
  114. package/dist/.antigravity/skills/chrome-devtools/scripts/evaluate.js +49 -0
  115. package/dist/.antigravity/skills/chrome-devtools/scripts/fill.js +72 -0
  116. package/dist/.antigravity/skills/chrome-devtools/scripts/install-deps.sh +181 -0
  117. package/dist/.antigravity/skills/chrome-devtools/scripts/install.sh +83 -0
  118. package/dist/.antigravity/skills/chrome-devtools/scripts/lib/browser.js +122 -0
  119. package/dist/.antigravity/skills/chrome-devtools/scripts/lib/selector.js +178 -0
  120. package/dist/.antigravity/skills/chrome-devtools/scripts/navigate.js +46 -0
  121. package/dist/.antigravity/skills/chrome-devtools/scripts/network.js +102 -0
  122. package/dist/.antigravity/skills/chrome-devtools/scripts/package.json +15 -0
  123. package/dist/.antigravity/skills/chrome-devtools/scripts/performance.js +145 -0
  124. package/dist/.antigravity/skills/chrome-devtools/scripts/screenshot.js +180 -0
  125. package/dist/.antigravity/skills/chrome-devtools/scripts/snapshot.js +131 -0
  126. package/dist/.antigravity/skills/claude-code/references/advanced-features.md +399 -0
  127. package/dist/.antigravity/skills/claude-code/references/agent-skills.md +399 -0
  128. package/dist/.antigravity/skills/claude-code/references/api-reference.md +498 -0
  129. package/dist/.antigravity/skills/claude-code/references/best-practices.md +447 -0
  130. package/dist/.antigravity/skills/claude-code/references/cicd-integration.md +428 -0
  131. package/dist/.antigravity/skills/claude-code/references/common-workflows.md +119 -0
  132. package/dist/.antigravity/skills/claude-code/references/configuration.md +480 -0
  133. package/dist/.antigravity/skills/claude-code/references/enterprise-features.md +472 -0
  134. package/dist/.antigravity/skills/claude-code/references/getting-started.md +252 -0
  135. package/dist/.antigravity/skills/claude-code/references/hooks-and-plugins.md +444 -0
  136. package/dist/.antigravity/skills/claude-code/references/hooks-comprehensive.md +622 -0
  137. package/dist/.antigravity/skills/claude-code/references/ide-integration.md +316 -0
  138. package/dist/.antigravity/skills/claude-code/references/mcp-integration.md +386 -0
  139. package/dist/.antigravity/skills/claude-code/references/slash-commands.md +489 -0
  140. package/dist/.antigravity/skills/claude-code/references/troubleshooting.md +456 -0
  141. package/dist/.antigravity/skills/claude-code/skill.md +60 -0
  142. package/dist/.antigravity/skills/code-review/SKILL.md +143 -0
  143. package/dist/.antigravity/skills/code-review/references/code-review-reception.md +209 -0
  144. package/dist/.antigravity/skills/code-review/references/requesting-code-review.md +105 -0
  145. package/dist/.antigravity/skills/code-review/references/verification-before-completion.md +139 -0
  146. package/dist/.antigravity/skills/common/api_key_helper.py +300 -0
  147. package/dist/.antigravity/skills/databases/SKILL.md +232 -0
  148. package/dist/.antigravity/skills/databases/references/mongodb-aggregation.md +447 -0
  149. package/dist/.antigravity/skills/databases/references/mongodb-atlas.md +465 -0
  150. package/dist/.antigravity/skills/databases/references/mongodb-crud.md +408 -0
  151. package/dist/.antigravity/skills/databases/references/mongodb-indexing.md +442 -0
  152. package/dist/.antigravity/skills/databases/references/postgresql-administration.md +594 -0
  153. package/dist/.antigravity/skills/databases/references/postgresql-performance.md +527 -0
  154. package/dist/.antigravity/skills/databases/references/postgresql-psql-cli.md +467 -0
  155. package/dist/.antigravity/skills/databases/references/postgresql-queries.md +475 -0
  156. package/dist/.antigravity/skills/databases/scripts/db_backup.py +502 -0
  157. package/dist/.antigravity/skills/databases/scripts/db_migrate.py +414 -0
  158. package/dist/.antigravity/skills/databases/scripts/db_performance_check.py +444 -0
  159. package/dist/.antigravity/skills/databases/scripts/requirements.txt +20 -0
  160. package/dist/.antigravity/skills/databases/scripts/tests/coverage-db.json +1 -0
  161. package/dist/.antigravity/skills/databases/scripts/tests/requirements.txt +4 -0
  162. package/dist/.antigravity/skills/databases/scripts/tests/test_db_backup.py +340 -0
  163. package/dist/.antigravity/skills/databases/scripts/tests/test_db_migrate.py +277 -0
  164. package/dist/.antigravity/skills/databases/scripts/tests/test_db_performance_check.py +370 -0
  165. package/dist/.antigravity/skills/debugging/SKILL.md +84 -0
  166. package/dist/.antigravity/skills/debugging/references/defense-in-depth.md +124 -0
  167. package/dist/.antigravity/skills/debugging/references/root-cause-tracing.md +122 -0
  168. package/dist/.antigravity/skills/debugging/references/systematic-debugging.md +102 -0
  169. package/dist/.antigravity/skills/debugging/references/verification.md +123 -0
  170. package/dist/.antigravity/skills/debugging/scripts/find-polluter.sh +63 -0
  171. package/dist/.antigravity/skills/debugging/scripts/find-polluter.test.md +102 -0
  172. package/dist/.antigravity/skills/devops/SKILL.md +285 -0
  173. package/dist/.antigravity/skills/devops/references/browser-rendering.md +305 -0
  174. package/dist/.antigravity/skills/devops/references/cloudflare-d1-kv.md +123 -0
  175. package/dist/.antigravity/skills/devops/references/cloudflare-platform.md +271 -0
  176. package/dist/.antigravity/skills/devops/references/cloudflare-r2-storage.md +280 -0
  177. package/dist/.antigravity/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  178. package/dist/.antigravity/skills/devops/references/cloudflare-workers-apis.md +309 -0
  179. package/dist/.antigravity/skills/devops/references/cloudflare-workers-basics.md +418 -0
  180. package/dist/.antigravity/skills/devops/references/docker-basics.md +297 -0
  181. package/dist/.antigravity/skills/devops/references/docker-compose.md +292 -0
  182. package/dist/.antigravity/skills/devops/references/gcloud-platform.md +297 -0
  183. package/dist/.antigravity/skills/devops/references/gcloud-services.md +304 -0
  184. package/dist/.antigravity/skills/devops/scripts/cloudflare_deploy.py +269 -0
  185. package/dist/.antigravity/skills/devops/scripts/docker_optimize.py +320 -0
  186. package/dist/.antigravity/skills/devops/scripts/requirements.txt +20 -0
  187. package/dist/.antigravity/skills/devops/scripts/tests/requirements.txt +3 -0
  188. package/dist/.antigravity/skills/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  189. package/dist/.antigravity/skills/devops/scripts/tests/test_docker_optimize.py +436 -0
  190. package/dist/.antigravity/skills/docs-seeker/SKILL.md +97 -0
  191. package/dist/.antigravity/skills/docs-seeker/package.json +25 -0
  192. package/dist/.antigravity/skills/docs-seeker/references/advanced.md +79 -0
  193. package/dist/.antigravity/skills/docs-seeker/references/context7-patterns.md +68 -0
  194. package/dist/.antigravity/skills/docs-seeker/references/errors.md +68 -0
  195. package/dist/.antigravity/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  196. package/dist/.antigravity/skills/docs-seeker/scripts/detect-topic.js +172 -0
  197. package/dist/.antigravity/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  198. package/dist/.antigravity/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  199. package/dist/.antigravity/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  200. package/dist/.antigravity/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  201. package/dist/.antigravity/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  202. package/dist/.antigravity/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  203. package/dist/.antigravity/skills/docs-seeker/workflows/library-search.md +87 -0
  204. package/dist/.antigravity/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  205. package/dist/.antigravity/skills/docs-seeker/workflows/topic-search.md +77 -0
  206. package/dist/.antigravity/skills/document-skills/docx/LICENSE.txt +30 -0
  207. package/dist/.antigravity/skills/document-skills/docx/SKILL.md +197 -0
  208. package/dist/.antigravity/skills/document-skills/docx/docx-js.md +350 -0
  209. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  210. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  211. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  212. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  213. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  214. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  215. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  216. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  217. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  218. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  219. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  220. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  221. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  222. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  223. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  224. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  225. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  226. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  227. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  228. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  229. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  230. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  231. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  232. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  233. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  234. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  235. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  236. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  237. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  238. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  239. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  240. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  241. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  242. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  243. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  244. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  245. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  246. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  247. package/dist/.antigravity/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  248. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  249. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  250. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  251. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  252. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  253. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  254. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  255. package/dist/.antigravity/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  256. package/dist/.antigravity/skills/document-skills/docx/ooxml.md +610 -0
  257. package/dist/.antigravity/skills/document-skills/docx/scripts/__init__.py +1 -0
  258. package/dist/.antigravity/skills/document-skills/docx/scripts/document.py +1276 -0
  259. package/dist/.antigravity/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  260. package/dist/.antigravity/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  261. package/dist/.antigravity/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  262. package/dist/.antigravity/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  263. package/dist/.antigravity/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  264. package/dist/.antigravity/skills/document-skills/docx/scripts/utilities.py +374 -0
  265. package/dist/.antigravity/skills/document-skills/pdf/LICENSE.txt +30 -0
  266. package/dist/.antigravity/skills/document-skills/pdf/SKILL.md +294 -0
  267. package/dist/.antigravity/skills/document-skills/pdf/forms.md +205 -0
  268. package/dist/.antigravity/skills/document-skills/pdf/reference.md +612 -0
  269. package/dist/.antigravity/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  270. package/dist/.antigravity/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  271. package/dist/.antigravity/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  272. package/dist/.antigravity/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  273. package/dist/.antigravity/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  274. package/dist/.antigravity/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  275. package/dist/.antigravity/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  276. package/dist/.antigravity/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  277. package/dist/.antigravity/skills/document-skills/pptx/LICENSE.txt +30 -0
  278. package/dist/.antigravity/skills/document-skills/pptx/SKILL.md +484 -0
  279. package/dist/.antigravity/skills/document-skills/pptx/html2pptx.md +625 -0
  280. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  281. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  282. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  283. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  284. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  285. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  286. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  287. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  288. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  289. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  290. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  291. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  292. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  293. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  294. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  295. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  296. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  297. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  298. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  299. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  300. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  301. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  302. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  303. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  304. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  305. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  306. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  307. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  308. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  309. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  310. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  311. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  312. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  313. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  314. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  315. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  316. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  317. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  318. package/dist/.antigravity/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  319. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  320. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  321. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  322. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  323. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  324. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  325. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  326. package/dist/.antigravity/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  327. package/dist/.antigravity/skills/document-skills/pptx/ooxml.md +427 -0
  328. package/dist/.antigravity/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  329. package/dist/.antigravity/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  330. package/dist/.antigravity/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  331. package/dist/.antigravity/skills/document-skills/pptx/scripts/replace.py +385 -0
  332. package/dist/.antigravity/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  333. package/dist/.antigravity/skills/document-skills/xlsx/LICENSE.txt +30 -0
  334. package/dist/.antigravity/skills/document-skills/xlsx/SKILL.md +289 -0
  335. package/dist/.antigravity/skills/document-skills/xlsx/recalc.py +178 -0
  336. package/dist/.antigravity/skills/frontend-design/SKILL.md +91 -0
  337. package/dist/.antigravity/skills/frontend-design/references/ai-multimodal-overview.md +165 -0
  338. package/dist/.antigravity/skills/frontend-design/references/analysis-best-practices.md +80 -0
  339. package/dist/.antigravity/skills/frontend-design/references/analysis-prompts.md +141 -0
  340. package/dist/.antigravity/skills/frontend-design/references/analysis-techniques.md +118 -0
  341. package/dist/.antigravity/skills/frontend-design/references/animejs.md +396 -0
  342. package/dist/.antigravity/skills/frontend-design/references/asset-generation.md +337 -0
  343. package/dist/.antigravity/skills/frontend-design/references/design-extraction-overview.md +71 -0
  344. package/dist/.antigravity/skills/frontend-design/references/extraction-best-practices.md +141 -0
  345. package/dist/.antigravity/skills/frontend-design/references/extraction-output-templates.md +162 -0
  346. package/dist/.antigravity/skills/frontend-design/references/extraction-prompts.md +127 -0
  347. package/dist/.antigravity/skills/frontend-design/references/technical-accessibility.md +119 -0
  348. package/dist/.antigravity/skills/frontend-design/references/technical-best-practices.md +97 -0
  349. package/dist/.antigravity/skills/frontend-design/references/technical-optimization.md +44 -0
  350. package/dist/.antigravity/skills/frontend-design/references/technical-overview.md +90 -0
  351. package/dist/.antigravity/skills/frontend-design/references/technical-workflows.md +150 -0
  352. package/dist/.antigravity/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  353. package/dist/.antigravity/skills/frontend-design-pro/SKILL.md +58 -0
  354. package/dist/.antigravity/skills/frontend-development/SKILL.md +399 -0
  355. package/dist/.antigravity/skills/frontend-development/resources/common-patterns.md +331 -0
  356. package/dist/.antigravity/skills/frontend-development/resources/complete-examples.md +872 -0
  357. package/dist/.antigravity/skills/frontend-development/resources/component-patterns.md +502 -0
  358. package/dist/.antigravity/skills/frontend-development/resources/data-fetching.md +767 -0
  359. package/dist/.antigravity/skills/frontend-development/resources/file-organization.md +502 -0
  360. package/dist/.antigravity/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  361. package/dist/.antigravity/skills/frontend-development/resources/performance.md +406 -0
  362. package/dist/.antigravity/skills/frontend-development/resources/routing-guide.md +364 -0
  363. package/dist/.antigravity/skills/frontend-development/resources/styling-guide.md +428 -0
  364. package/dist/.antigravity/skills/frontend-development/resources/typescript-standards.md +418 -0
  365. package/dist/.antigravity/skills/google-adk-python/SKILL.md +237 -0
  366. package/dist/.antigravity/skills/install.ps1 +600 -0
  367. package/dist/.antigravity/skills/install.sh +685 -0
  368. package/dist/.antigravity/skills/mcp-builder/LICENSE.txt +202 -0
  369. package/dist/.antigravity/skills/mcp-builder/SKILL.md +328 -0
  370. package/dist/.antigravity/skills/mcp-builder/reference/evaluation.md +602 -0
  371. package/dist/.antigravity/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  372. package/dist/.antigravity/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  373. package/dist/.antigravity/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  374. package/dist/.antigravity/skills/mcp-builder/scripts/connections.py +151 -0
  375. package/dist/.antigravity/skills/mcp-builder/scripts/evaluation.py +373 -0
  376. package/dist/.antigravity/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  377. package/dist/.antigravity/skills/mcp-builder/scripts/requirements.txt +2 -0
  378. package/dist/.antigravity/skills/mcp-management/SKILL.md +209 -0
  379. package/dist/.antigravity/skills/mcp-management/assets/tools.json +3146 -0
  380. package/dist/.antigravity/skills/mcp-management/references/configuration.md +114 -0
  381. package/dist/.antigravity/skills/mcp-management/references/gemini-cli-integration.md +215 -0
  382. package/dist/.antigravity/skills/mcp-management/references/mcp-protocol.md +116 -0
  383. package/dist/.antigravity/skills/mcp-management/scripts/cli.ts +195 -0
  384. package/dist/.antigravity/skills/mcp-management/scripts/mcp-client.ts +230 -0
  385. package/dist/.antigravity/skills/mcp-management/scripts/package.json +20 -0
  386. package/dist/.antigravity/skills/mcp-management/scripts/tsconfig.json +15 -0
  387. package/dist/.antigravity/skills/media-processing/SKILL.md +91 -0
  388. package/dist/.antigravity/skills/media-processing/references/common-workflows.md +132 -0
  389. package/dist/.antigravity/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  390. package/dist/.antigravity/skills/media-processing/references/ffmpeg-filters.md +503 -0
  391. package/dist/.antigravity/skills/media-processing/references/ffmpeg-streaming.md +403 -0
  392. package/dist/.antigravity/skills/media-processing/references/format-compatibility.md +375 -0
  393. package/dist/.antigravity/skills/media-processing/references/imagemagick-batch.md +612 -0
  394. package/dist/.antigravity/skills/media-processing/references/imagemagick-editing.md +623 -0
  395. package/dist/.antigravity/skills/media-processing/references/rmbg-background-removal.md +66 -0
  396. package/dist/.antigravity/skills/media-processing/references/troubleshooting.md +109 -0
  397. package/dist/.antigravity/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  398. package/dist/.antigravity/skills/media-processing/scripts/batch_resize.py +342 -0
  399. package/dist/.antigravity/skills/media-processing/scripts/media_convert.py +311 -0
  400. package/dist/.antigravity/skills/media-processing/scripts/remove-background.sh +96 -0
  401. package/dist/.antigravity/skills/media-processing/scripts/remove-bg-node.js +158 -0
  402. package/dist/.antigravity/skills/media-processing/scripts/requirements.txt +24 -0
  403. package/dist/.antigravity/skills/media-processing/scripts/tests/requirements.txt +2 -0
  404. package/dist/.antigravity/skills/media-processing/scripts/tests/test_batch_resize.py +372 -0
  405. package/dist/.antigravity/skills/media-processing/scripts/tests/test_media_convert.py +259 -0
  406. package/dist/.antigravity/skills/media-processing/scripts/tests/test_video_optimize.py +397 -0
  407. package/dist/.antigravity/skills/media-processing/scripts/video_optimize.py +414 -0
  408. package/dist/.antigravity/skills/mobile-development/SKILL.md +212 -0
  409. package/dist/.antigravity/skills/mobile-development/references/mobile-android.md +604 -0
  410. package/dist/.antigravity/skills/mobile-development/references/mobile-best-practices.md +545 -0
  411. package/dist/.antigravity/skills/mobile-development/references/mobile-debugging.md +1089 -0
  412. package/dist/.antigravity/skills/mobile-development/references/mobile-frameworks.md +465 -0
  413. package/dist/.antigravity/skills/mobile-development/references/mobile-ios.md +496 -0
  414. package/dist/.antigravity/skills/mobile-development/references/mobile-mindset.md +544 -0
  415. package/dist/.antigravity/skills/payment-integration/SKILL.md +118 -0
  416. package/dist/.antigravity/skills/payment-integration/references/polar/benefits.md +396 -0
  417. package/dist/.antigravity/skills/payment-integration/references/polar/best-practices.md +482 -0
  418. package/dist/.antigravity/skills/payment-integration/references/polar/checkouts.md +266 -0
  419. package/dist/.antigravity/skills/payment-integration/references/polar/overview.md +184 -0
  420. package/dist/.antigravity/skills/payment-integration/references/polar/products.md +244 -0
  421. package/dist/.antigravity/skills/payment-integration/references/polar/sdk.md +436 -0
  422. package/dist/.antigravity/skills/payment-integration/references/polar/subscriptions.md +340 -0
  423. package/dist/.antigravity/skills/payment-integration/references/polar/webhooks.md +405 -0
  424. package/dist/.antigravity/skills/payment-integration/references/sepay/api.md +140 -0
  425. package/dist/.antigravity/skills/payment-integration/references/sepay/best-practices.md +337 -0
  426. package/dist/.antigravity/skills/payment-integration/references/sepay/overview.md +138 -0
  427. package/dist/.antigravity/skills/payment-integration/references/sepay/qr-codes.md +228 -0
  428. package/dist/.antigravity/skills/payment-integration/references/sepay/sdk.md +213 -0
  429. package/dist/.antigravity/skills/payment-integration/references/sepay/webhooks.md +208 -0
  430. package/dist/.antigravity/skills/payment-integration/scripts/checkout-helper.js +244 -0
  431. package/dist/.antigravity/skills/payment-integration/scripts/package.json +17 -0
  432. package/dist/.antigravity/skills/payment-integration/scripts/polar-webhook-verify.js +202 -0
  433. package/dist/.antigravity/skills/payment-integration/scripts/sepay-webhook-verify.js +193 -0
  434. package/dist/.antigravity/skills/payment-integration/scripts/test-scripts.js +237 -0
  435. package/dist/.antigravity/skills/planning/SKILL.md +121 -0
  436. package/dist/.antigravity/skills/planning/references/codebase-understanding.md +62 -0
  437. package/dist/.antigravity/skills/planning/references/output-standards.md +87 -0
  438. package/dist/.antigravity/skills/planning/references/plan-organization.md +123 -0
  439. package/dist/.antigravity/skills/planning/references/research-phase.md +49 -0
  440. package/dist/.antigravity/skills/planning/references/solution-design.md +63 -0
  441. package/dist/.antigravity/skills/problem-solving/SKILL.md +96 -0
  442. package/dist/.antigravity/skills/problem-solving/references/attribution.md +69 -0
  443. package/dist/.antigravity/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  444. package/dist/.antigravity/skills/problem-solving/references/inversion-exercise.md +91 -0
  445. package/dist/.antigravity/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  446. package/dist/.antigravity/skills/problem-solving/references/scale-game.md +95 -0
  447. package/dist/.antigravity/skills/problem-solving/references/simplification-cascades.md +80 -0
  448. package/dist/.antigravity/skills/problem-solving/references/when-stuck.md +72 -0
  449. package/dist/.antigravity/skills/repomix/SKILL.md +247 -0
  450. package/dist/.antigravity/skills/repomix/references/configuration.md +211 -0
  451. package/dist/.antigravity/skills/repomix/references/usage-patterns.md +232 -0
  452. package/dist/.antigravity/skills/repomix/scripts/repomix_batch.py +455 -0
  453. package/dist/.antigravity/skills/repomix/scripts/repos.example.json +15 -0
  454. package/dist/.antigravity/skills/repomix/scripts/requirements.txt +15 -0
  455. package/dist/.antigravity/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  456. package/dist/.antigravity/skills/research/SKILL.md +168 -0
  457. package/dist/.antigravity/skills/sequential-thinking/SKILL.md +94 -0
  458. package/dist/.antigravity/skills/sequential-thinking/package.json +31 -0
  459. package/dist/.antigravity/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  460. package/dist/.antigravity/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  461. package/dist/.antigravity/skills/sequential-thinking/references/core-patterns.md +95 -0
  462. package/dist/.antigravity/skills/sequential-thinking/references/examples-api.md +88 -0
  463. package/dist/.antigravity/skills/sequential-thinking/references/examples-architecture.md +94 -0
  464. package/dist/.antigravity/skills/sequential-thinking/references/examples-debug.md +90 -0
  465. package/dist/.antigravity/skills/sequential-thinking/scripts/format-thought.js +159 -0
  466. package/dist/.antigravity/skills/sequential-thinking/scripts/process-thought.js +236 -0
  467. package/dist/.antigravity/skills/sequential-thinking/tests/format-thought.test.js +133 -0
  468. package/dist/.antigravity/skills/sequential-thinking/tests/process-thought.test.js +215 -0
  469. package/dist/.antigravity/skills/shopify/SKILL.md +319 -0
  470. package/dist/.antigravity/skills/shopify/references/app-development.md +470 -0
  471. package/dist/.antigravity/skills/shopify/references/extensions.md +493 -0
  472. package/dist/.antigravity/skills/shopify/references/themes.md +498 -0
  473. package/dist/.antigravity/skills/shopify/scripts/requirements.txt +19 -0
  474. package/dist/.antigravity/skills/shopify/scripts/shopify_init.py +423 -0
  475. package/dist/.antigravity/skills/shopify/scripts/tests/test_shopify_init.py +385 -0
  476. package/dist/.antigravity/skills/skill-creator/LICENSE.txt +202 -0
  477. package/dist/.antigravity/skills/skill-creator/SKILL.md +266 -0
  478. package/dist/.antigravity/skills/skill-creator/scripts/init_skill.py +303 -0
  479. package/dist/.antigravity/skills/skill-creator/scripts/package_skill.py +110 -0
  480. package/dist/.antigravity/skills/skill-creator/scripts/quick_validate.py +65 -0
  481. package/dist/.antigravity/skills/template-skill/SKILL.md +6 -0
  482. package/dist/.antigravity/skills/threejs/SKILL.md +89 -0
  483. package/dist/.antigravity/skills/threejs/references/01-getting-started.md +177 -0
  484. package/dist/.antigravity/skills/threejs/references/02-loaders.md +169 -0
  485. package/dist/.antigravity/skills/threejs/references/03-textures.md +170 -0
  486. package/dist/.antigravity/skills/threejs/references/04-cameras.md +195 -0
  487. package/dist/.antigravity/skills/threejs/references/05-lights.md +183 -0
  488. package/dist/.antigravity/skills/threejs/references/06-animations.md +214 -0
  489. package/dist/.antigravity/skills/threejs/references/07-math.md +260 -0
  490. package/dist/.antigravity/skills/threejs/references/08-interaction.md +267 -0
  491. package/dist/.antigravity/skills/threejs/references/09-postprocessing.md +240 -0
  492. package/dist/.antigravity/skills/threejs/references/10-controls.md +259 -0
  493. package/dist/.antigravity/skills/threejs/references/11-materials-advanced.md +270 -0
  494. package/dist/.antigravity/skills/threejs/references/12-performance.md +269 -0
  495. package/dist/.antigravity/skills/threejs/references/13-node-materials.md +298 -0
  496. package/dist/.antigravity/skills/threejs/references/14-physics-vr.md +304 -0
  497. package/dist/.antigravity/skills/threejs/references/15-specialized-loaders.md +333 -0
  498. package/dist/.antigravity/skills/threejs/references/16-webgpu.md +302 -0
  499. package/dist/.antigravity/skills/ui-styling/LICENSE.txt +202 -0
  500. package/dist/.antigravity/skills/ui-styling/SKILL.md +321 -0
  501. package/dist/.antigravity/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  502. package/dist/.antigravity/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  503. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  504. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  505. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  506. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  507. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  508. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  509. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  510. package/dist/.antigravity/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  511. package/dist/.antigravity/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  512. package/dist/.antigravity/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  513. package/dist/.antigravity/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  514. package/dist/.antigravity/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  515. package/dist/.antigravity/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  516. package/dist/.antigravity/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  517. package/dist/.antigravity/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  518. package/dist/.antigravity/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  519. package/dist/.antigravity/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  520. package/dist/.antigravity/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  521. package/dist/.antigravity/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  522. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  523. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  524. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  525. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  526. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  527. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  528. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  529. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  530. package/dist/.antigravity/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  531. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  532. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  533. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  534. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  535. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  536. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  537. package/dist/.antigravity/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  538. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  539. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  540. package/dist/.antigravity/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  541. package/dist/.antigravity/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  542. package/dist/.antigravity/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  543. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  544. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  545. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  546. package/dist/.antigravity/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  547. package/dist/.antigravity/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  548. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  549. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  550. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  551. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  552. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  553. package/dist/.antigravity/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  554. package/dist/.antigravity/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  555. package/dist/.antigravity/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  556. package/dist/.antigravity/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  557. package/dist/.antigravity/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  558. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  559. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  560. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  561. package/dist/.antigravity/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  562. package/dist/.antigravity/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  563. package/dist/.antigravity/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  564. package/dist/.antigravity/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  565. package/dist/.antigravity/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  566. package/dist/.antigravity/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  567. package/dist/.antigravity/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  568. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  569. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  570. package/dist/.antigravity/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  571. package/dist/.antigravity/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  572. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  573. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  574. package/dist/.antigravity/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  575. package/dist/.antigravity/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  576. package/dist/.antigravity/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  577. package/dist/.antigravity/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  578. package/dist/.antigravity/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  579. package/dist/.antigravity/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  580. package/dist/.antigravity/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  581. package/dist/.antigravity/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  582. package/dist/.antigravity/skills/ui-styling/references/canvas-design-system.md +320 -0
  583. package/dist/.antigravity/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  584. package/dist/.antigravity/skills/ui-styling/references/shadcn-components.md +424 -0
  585. package/dist/.antigravity/skills/ui-styling/references/shadcn-theming.md +373 -0
  586. package/dist/.antigravity/skills/ui-styling/references/tailwind-customization.md +483 -0
  587. package/dist/.antigravity/skills/ui-styling/references/tailwind-responsive.md +382 -0
  588. package/dist/.antigravity/skills/ui-styling/references/tailwind-utilities.md +455 -0
  589. package/dist/.antigravity/skills/ui-styling/scripts/requirements.txt +17 -0
  590. package/dist/.antigravity/skills/ui-styling/scripts/shadcn_add.py +292 -0
  591. package/dist/.antigravity/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  592. package/dist/.antigravity/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  593. package/dist/.antigravity/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  594. package/dist/.antigravity/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  595. package/dist/.antigravity/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  596. package/dist/.antigravity/skills/ui-ux-pro-max/SKILL.md +227 -0
  597. package/dist/.antigravity/skills/ui-ux-pro-max/data/charts.csv +26 -0
  598. package/dist/.antigravity/skills/ui-ux-pro-max/data/colors.csv +97 -0
  599. package/dist/.antigravity/skills/ui-ux-pro-max/data/landing.csv +31 -0
  600. package/dist/.antigravity/skills/ui-ux-pro-max/data/products.csv +97 -0
  601. package/dist/.antigravity/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  602. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  603. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  604. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  605. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  606. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  607. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  608. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  609. package/dist/.antigravity/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  610. package/dist/.antigravity/skills/ui-ux-pro-max/data/styles.csv +59 -0
  611. package/dist/.antigravity/skills/ui-ux-pro-max/data/typography.csv +58 -0
  612. package/dist/.antigravity/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  613. package/dist/.antigravity/skills/ui-ux-pro-max/scripts/core.py +236 -0
  614. package/dist/.antigravity/skills/ui-ux-pro-max/scripts/search.py +61 -0
  615. package/dist/.antigravity/skills/web-frameworks/SKILL.md +324 -0
  616. package/dist/.antigravity/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  617. package/dist/.antigravity/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  618. package/dist/.antigravity/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  619. package/dist/.antigravity/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  620. package/dist/.antigravity/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  621. package/dist/.antigravity/skills/web-frameworks/references/turborepo-caching.md +551 -0
  622. package/dist/.antigravity/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  623. package/dist/.antigravity/skills/web-frameworks/references/turborepo-setup.md +542 -0
  624. package/dist/.antigravity/skills/web-frameworks/scripts/__init__.py +0 -0
  625. package/dist/.antigravity/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  626. package/dist/.antigravity/skills/web-frameworks/scripts/requirements.txt +16 -0
  627. package/dist/.antigravity/skills/web-frameworks/scripts/tests/coverage-web.json +1 -0
  628. package/dist/.antigravity/skills/web-frameworks/scripts/tests/requirements.txt +3 -0
  629. package/dist/.antigravity/skills/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  630. package/dist/.antigravity/skills/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  631. package/dist/.antigravity/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  632. package/dist/.antigravity/team.yaml +154 -0
  633. package/dist/.antigravity/workflows/audit.md +116 -0
  634. package/dist/.antigravity/workflows/commit.md +116 -0
  635. package/dist/.antigravity/workflows/config.md +144 -0
  636. package/dist/.antigravity/workflows/demo.md +50 -0
  637. package/dist/.antigravity/workflows/design.md +177 -0
  638. package/dist/.antigravity/workflows/do.md +366 -0
  639. package/dist/.antigravity/workflows/docs.md +101 -0
  640. package/dist/.antigravity/workflows/generate.md +140 -0
  641. package/dist/.antigravity/workflows/help.md +128 -0
  642. package/dist/.antigravity/workflows/integrate.md +119 -0
  643. package/dist/.antigravity/workflows/memory.md +97 -0
  644. package/dist/.antigravity/workflows/migrate.md +180 -0
  645. package/dist/.antigravity/workflows/review.md +108 -0
  646. package/dist/.antigravity/workflows/scout.md +111 -0
  647. package/dist/.antigravity/workflows/skill-learn.md +48 -0
  648. package/dist/.antigravity/workflows/start.md +56 -0
  649. package/dist/.antigravity/workflows/status.md +163 -0
  650. package/dist/.antigravity/workflows/test.md +121 -0
  651. package/dist/.antigravity/workflows/theme.md +158 -0
  652. package/dist/.antigravity/workflows/undo.md +166 -0
  653. package/dist/.antigravity/workflows/why.md +155 -0
  654. package/dist/.cursor/MODEL_COSTS.md +61 -0
  655. package/dist/.cursor/UX_GUIDELINES.md +146 -0
  656. package/dist/.cursor/agent-skill-index.yaml +426 -0
  657. package/dist/.cursor/agents/brainstormer.md +115 -0
  658. package/dist/.cursor/agents/code-reviewer.md +168 -0
  659. package/dist/.cursor/agents/copywriter.md +110 -0
  660. package/dist/.cursor/agents/database-admin.md +104 -0
  661. package/dist/.cursor/agents/ddd-architect.md +128 -0
  662. package/dist/.cursor/agents/debugger.md +149 -0
  663. package/dist/.cursor/agents/design-system-architect.md +166 -0
  664. package/dist/.cursor/agents/docs-manager.md +133 -0
  665. package/dist/.cursor/agents/fullstack-developer.md +105 -0
  666. package/dist/.cursor/agents/git-manager.md +321 -0
  667. package/dist/.cursor/agents/graph-architect.md +30 -0
  668. package/dist/.cursor/agents/journal-writer.md +113 -0
  669. package/dist/.cursor/agents/mcp-manager.md +93 -0
  670. package/dist/.cursor/agents/planner.md +61 -0
  671. package/dist/.cursor/agents/project-manager.md +131 -0
  672. package/dist/.cursor/agents/researcher.md +50 -0
  673. package/dist/.cursor/agents/scout-external.md +151 -0
  674. package/dist/.cursor/agents/scout.md +117 -0
  675. package/dist/.cursor/agents/tester.md +117 -0
  676. package/dist/.cursor/agents/trend-watcher.md +24 -0
  677. package/dist/.cursor/agents/ui-ux-designer.md +233 -0
  678. package/dist/.cursor/anchi-toolkit.config.yaml +32 -0
  679. package/dist/.cursor/commands/audit.md +116 -0
  680. package/dist/.cursor/commands/commit.md +116 -0
  681. package/dist/.cursor/commands/config.md +144 -0
  682. package/dist/.cursor/commands/demo.md +50 -0
  683. package/dist/.cursor/commands/design.md +177 -0
  684. package/dist/.cursor/commands/do.md +403 -0
  685. package/dist/.cursor/commands/docs.md +101 -0
  686. package/dist/.cursor/commands/generate.md +140 -0
  687. package/dist/.cursor/commands/help.md +128 -0
  688. package/dist/.cursor/commands/integrate.md +119 -0
  689. package/dist/.cursor/commands/memory.md +97 -0
  690. package/dist/.cursor/commands/migrate.md +180 -0
  691. package/dist/.cursor/commands/review.md +108 -0
  692. package/dist/.cursor/commands/scout.md +111 -0
  693. package/dist/.cursor/commands/skill-learn.md +48 -0
  694. package/dist/.cursor/commands/start.md +56 -0
  695. package/dist/.cursor/commands/status.md +163 -0
  696. package/dist/.cursor/commands/test.md +121 -0
  697. package/dist/.cursor/commands/theme.md +158 -0
  698. package/dist/.cursor/commands/undo.md +166 -0
  699. package/dist/.cursor/commands/why.md +155 -0
  700. package/dist/.cursor/custom-commands/example.md +30 -0
  701. package/dist/.cursor/failure-modes.yaml +148 -0
  702. package/dist/.cursor/hooks/dev-rules-reminder.cjs +115 -0
  703. package/dist/.cursor/hooks/dev-rules-reminder.js +115 -0
  704. package/dist/.cursor/hooks/discord-hook-setup.md +412 -0
  705. package/dist/.cursor/hooks/discord_notify.sh +221 -0
  706. package/dist/.cursor/hooks/scout-block.cjs +100 -0
  707. package/dist/.cursor/hooks/scout-block.js +104 -0
  708. package/dist/.cursor/hooks/scout-block.ps1 +92 -0
  709. package/dist/.cursor/hooks/scout-block.sh +119 -0
  710. package/dist/.cursor/hooks/send-discord.sh +75 -0
  711. package/dist/.cursor/hooks/telegram-hook-setup.md +774 -0
  712. package/dist/.cursor/hooks/telegram_notify.sh +158 -0
  713. package/dist/.cursor/hooks/tests/test-ckignore.js +194 -0
  714. package/dist/.cursor/hooks/tests/test-modularization-hook.js +126 -0
  715. package/dist/.cursor/hooks/tests/test-scout-block.js +125 -0
  716. package/dist/.cursor/hooks.yaml +28 -0
  717. package/dist/.cursor/metadata.json +15 -0
  718. package/dist/.cursor/orchestration.yaml +144 -0
  719. package/dist/.cursor/scripts/ck-help.py +489 -0
  720. package/dist/.cursor/scripts/commands_data.yaml +363 -0
  721. package/dist/.cursor/scripts/generate_catalogs.py +163 -0
  722. package/dist/.cursor/scripts/requirements.txt +1 -0
  723. package/dist/.cursor/scripts/resolve_env.py +329 -0
  724. package/dist/.cursor/scripts/scan_commands.py +99 -0
  725. package/dist/.cursor/scripts/scan_skills.py +187 -0
  726. package/dist/.cursor/scripts/skills_data.yaml +367 -0
  727. package/dist/.cursor/settings.json +31 -0
  728. package/dist/.cursor/skills/INSTALLATION.md +360 -0
  729. package/dist/.cursor/skills/SKILLS_INDEX.md +118 -0
  730. package/dist/.cursor/skills/THIRD_PARTY_NOTICES.md +405 -0
  731. package/dist/.cursor/skills/_template.md +30 -0
  732. package/dist/.cursor/skills/aesthetic/SKILL.md +121 -0
  733. package/dist/.cursor/skills/aesthetic/assets/design-guideline-template.md +163 -0
  734. package/dist/.cursor/skills/aesthetic/assets/design-story-template.md +135 -0
  735. package/dist/.cursor/skills/aesthetic/references/design-principles.md +62 -0
  736. package/dist/.cursor/skills/aesthetic/references/design-resources.md +75 -0
  737. package/dist/.cursor/skills/aesthetic/references/micro-interactions.md +53 -0
  738. package/dist/.cursor/skills/aesthetic/references/storytelling-design.md +50 -0
  739. package/dist/.cursor/skills/agent_skills_spec.md +55 -0
  740. package/dist/.cursor/skills/ai-multimodal/SKILL.md +65 -0
  741. package/dist/.cursor/skills/ai-multimodal/references/audio-processing.md +386 -0
  742. package/dist/.cursor/skills/ai-multimodal/references/image-generation.md +722 -0
  743. package/dist/.cursor/skills/ai-multimodal/references/video-analysis.md +515 -0
  744. package/dist/.cursor/skills/ai-multimodal/references/video-generation.md +457 -0
  745. package/dist/.cursor/skills/ai-multimodal/references/vision-understanding.md +492 -0
  746. package/dist/.cursor/skills/ai-multimodal/scripts/check_setup.py +299 -0
  747. package/dist/.cursor/skills/ai-multimodal/scripts/document_converter.py +395 -0
  748. package/dist/.cursor/skills/ai-multimodal/scripts/gemini_batch_process.py +896 -0
  749. package/dist/.cursor/skills/ai-multimodal/scripts/media_optimizer.py +506 -0
  750. package/dist/.cursor/skills/ai-multimodal/scripts/requirements.txt +26 -0
  751. package/dist/.cursor/skills/ai-multimodal/scripts/tests/requirements.txt +20 -0
  752. package/dist/.cursor/skills/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
  753. package/dist/.cursor/skills/ai-multimodal/scripts/tests/test_failures.log +258 -0
  754. package/dist/.cursor/skills/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
  755. package/dist/.cursor/skills/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
  756. package/dist/.cursor/skills/backend-development/SKILL.md +95 -0
  757. package/dist/.cursor/skills/backend-development/references/backend-api-design.md +495 -0
  758. package/dist/.cursor/skills/backend-development/references/backend-architecture.md +454 -0
  759. package/dist/.cursor/skills/backend-development/references/backend-authentication.md +338 -0
  760. package/dist/.cursor/skills/backend-development/references/backend-code-quality.md +659 -0
  761. package/dist/.cursor/skills/backend-development/references/backend-debugging.md +904 -0
  762. package/dist/.cursor/skills/backend-development/references/backend-devops.md +494 -0
  763. package/dist/.cursor/skills/backend-development/references/backend-mindset.md +387 -0
  764. package/dist/.cursor/skills/backend-development/references/backend-performance.md +397 -0
  765. package/dist/.cursor/skills/backend-development/references/backend-security.md +290 -0
  766. package/dist/.cursor/skills/backend-development/references/backend-technologies.md +256 -0
  767. package/dist/.cursor/skills/backend-development/references/backend-testing.md +429 -0
  768. package/dist/.cursor/skills/better-auth/SKILL.md +204 -0
  769. package/dist/.cursor/skills/better-auth/references/advanced-features.md +553 -0
  770. package/dist/.cursor/skills/better-auth/references/database-integration.md +577 -0
  771. package/dist/.cursor/skills/better-auth/references/email-password-auth.md +416 -0
  772. package/dist/.cursor/skills/better-auth/references/oauth-providers.md +430 -0
  773. package/dist/.cursor/skills/better-auth/scripts/better_auth_init.py +521 -0
  774. package/dist/.cursor/skills/better-auth/scripts/requirements.txt +15 -0
  775. package/dist/.cursor/skills/better-auth/scripts/tests/test_better_auth_init.py +421 -0
  776. package/dist/.cursor/skills/chrome-devtools/SKILL.md +360 -0
  777. package/dist/.cursor/skills/chrome-devtools/references/cdp-domains.md +694 -0
  778. package/dist/.cursor/skills/chrome-devtools/references/performance-guide.md +940 -0
  779. package/dist/.cursor/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
  780. package/dist/.cursor/skills/chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  781. package/dist/.cursor/skills/chrome-devtools/scripts/click.js +79 -0
  782. package/dist/.cursor/skills/chrome-devtools/scripts/console.js +75 -0
  783. package/dist/.cursor/skills/chrome-devtools/scripts/evaluate.js +49 -0
  784. package/dist/.cursor/skills/chrome-devtools/scripts/fill.js +72 -0
  785. package/dist/.cursor/skills/chrome-devtools/scripts/install-deps.sh +181 -0
  786. package/dist/.cursor/skills/chrome-devtools/scripts/install.sh +83 -0
  787. package/dist/.cursor/skills/chrome-devtools/scripts/lib/browser.js +122 -0
  788. package/dist/.cursor/skills/chrome-devtools/scripts/lib/selector.js +178 -0
  789. package/dist/.cursor/skills/chrome-devtools/scripts/navigate.js +46 -0
  790. package/dist/.cursor/skills/chrome-devtools/scripts/network.js +102 -0
  791. package/dist/.cursor/skills/chrome-devtools/scripts/package.json +15 -0
  792. package/dist/.cursor/skills/chrome-devtools/scripts/performance.js +145 -0
  793. package/dist/.cursor/skills/chrome-devtools/scripts/screenshot.js +180 -0
  794. package/dist/.cursor/skills/chrome-devtools/scripts/snapshot.js +131 -0
  795. package/dist/.cursor/skills/claude-code/references/advanced-features.md +399 -0
  796. package/dist/.cursor/skills/claude-code/references/agent-skills.md +399 -0
  797. package/dist/.cursor/skills/claude-code/references/api-reference.md +498 -0
  798. package/dist/.cursor/skills/claude-code/references/best-practices.md +447 -0
  799. package/dist/.cursor/skills/claude-code/references/cicd-integration.md +428 -0
  800. package/dist/.cursor/skills/claude-code/references/common-workflows.md +119 -0
  801. package/dist/.cursor/skills/claude-code/references/configuration.md +480 -0
  802. package/dist/.cursor/skills/claude-code/references/enterprise-features.md +472 -0
  803. package/dist/.cursor/skills/claude-code/references/getting-started.md +252 -0
  804. package/dist/.cursor/skills/claude-code/references/hooks-and-plugins.md +444 -0
  805. package/dist/.cursor/skills/claude-code/references/hooks-comprehensive.md +622 -0
  806. package/dist/.cursor/skills/claude-code/references/ide-integration.md +316 -0
  807. package/dist/.cursor/skills/claude-code/references/mcp-integration.md +386 -0
  808. package/dist/.cursor/skills/claude-code/references/slash-commands.md +489 -0
  809. package/dist/.cursor/skills/claude-code/references/troubleshooting.md +456 -0
  810. package/dist/.cursor/skills/claude-code/skill.md +60 -0
  811. package/dist/.cursor/skills/code-review/SKILL.md +143 -0
  812. package/dist/.cursor/skills/code-review/references/code-review-reception.md +209 -0
  813. package/dist/.cursor/skills/code-review/references/requesting-code-review.md +105 -0
  814. package/dist/.cursor/skills/code-review/references/verification-before-completion.md +139 -0
  815. package/dist/.cursor/skills/common/api_key_helper.py +300 -0
  816. package/dist/.cursor/skills/databases/SKILL.md +232 -0
  817. package/dist/.cursor/skills/databases/references/mongodb-aggregation.md +447 -0
  818. package/dist/.cursor/skills/databases/references/mongodb-atlas.md +465 -0
  819. package/dist/.cursor/skills/databases/references/mongodb-crud.md +408 -0
  820. package/dist/.cursor/skills/databases/references/mongodb-indexing.md +442 -0
  821. package/dist/.cursor/skills/databases/references/postgresql-administration.md +594 -0
  822. package/dist/.cursor/skills/databases/references/postgresql-performance.md +527 -0
  823. package/dist/.cursor/skills/databases/references/postgresql-psql-cli.md +467 -0
  824. package/dist/.cursor/skills/databases/references/postgresql-queries.md +475 -0
  825. package/dist/.cursor/skills/databases/scripts/db_backup.py +502 -0
  826. package/dist/.cursor/skills/databases/scripts/db_migrate.py +414 -0
  827. package/dist/.cursor/skills/databases/scripts/db_performance_check.py +444 -0
  828. package/dist/.cursor/skills/databases/scripts/requirements.txt +20 -0
  829. package/dist/.cursor/skills/databases/scripts/tests/coverage-db.json +1 -0
  830. package/dist/.cursor/skills/databases/scripts/tests/requirements.txt +4 -0
  831. package/dist/.cursor/skills/databases/scripts/tests/test_db_backup.py +340 -0
  832. package/dist/.cursor/skills/databases/scripts/tests/test_db_migrate.py +277 -0
  833. package/dist/.cursor/skills/databases/scripts/tests/test_db_performance_check.py +370 -0
  834. package/dist/.cursor/skills/debugging/SKILL.md +84 -0
  835. package/dist/.cursor/skills/debugging/references/defense-in-depth.md +124 -0
  836. package/dist/.cursor/skills/debugging/references/root-cause-tracing.md +122 -0
  837. package/dist/.cursor/skills/debugging/references/systematic-debugging.md +102 -0
  838. package/dist/.cursor/skills/debugging/references/verification.md +123 -0
  839. package/dist/.cursor/skills/debugging/scripts/find-polluter.sh +63 -0
  840. package/dist/.cursor/skills/debugging/scripts/find-polluter.test.md +102 -0
  841. package/dist/.cursor/skills/devops/SKILL.md +285 -0
  842. package/dist/.cursor/skills/devops/references/browser-rendering.md +305 -0
  843. package/dist/.cursor/skills/devops/references/cloudflare-d1-kv.md +123 -0
  844. package/dist/.cursor/skills/devops/references/cloudflare-platform.md +271 -0
  845. package/dist/.cursor/skills/devops/references/cloudflare-r2-storage.md +280 -0
  846. package/dist/.cursor/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  847. package/dist/.cursor/skills/devops/references/cloudflare-workers-apis.md +309 -0
  848. package/dist/.cursor/skills/devops/references/cloudflare-workers-basics.md +418 -0
  849. package/dist/.cursor/skills/devops/references/docker-basics.md +297 -0
  850. package/dist/.cursor/skills/devops/references/docker-compose.md +292 -0
  851. package/dist/.cursor/skills/devops/references/gcloud-platform.md +297 -0
  852. package/dist/.cursor/skills/devops/references/gcloud-services.md +304 -0
  853. package/dist/.cursor/skills/devops/scripts/cloudflare_deploy.py +269 -0
  854. package/dist/.cursor/skills/devops/scripts/docker_optimize.py +320 -0
  855. package/dist/.cursor/skills/devops/scripts/requirements.txt +20 -0
  856. package/dist/.cursor/skills/devops/scripts/tests/requirements.txt +3 -0
  857. package/dist/.cursor/skills/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  858. package/dist/.cursor/skills/devops/scripts/tests/test_docker_optimize.py +436 -0
  859. package/dist/.cursor/skills/docs-seeker/SKILL.md +97 -0
  860. package/dist/.cursor/skills/docs-seeker/package.json +25 -0
  861. package/dist/.cursor/skills/docs-seeker/references/advanced.md +79 -0
  862. package/dist/.cursor/skills/docs-seeker/references/context7-patterns.md +68 -0
  863. package/dist/.cursor/skills/docs-seeker/references/errors.md +68 -0
  864. package/dist/.cursor/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  865. package/dist/.cursor/skills/docs-seeker/scripts/detect-topic.js +172 -0
  866. package/dist/.cursor/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  867. package/dist/.cursor/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  868. package/dist/.cursor/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  869. package/dist/.cursor/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  870. package/dist/.cursor/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  871. package/dist/.cursor/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  872. package/dist/.cursor/skills/docs-seeker/workflows/library-search.md +87 -0
  873. package/dist/.cursor/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  874. package/dist/.cursor/skills/docs-seeker/workflows/topic-search.md +77 -0
  875. package/dist/.cursor/skills/document-skills/docx/LICENSE.txt +30 -0
  876. package/dist/.cursor/skills/document-skills/docx/SKILL.md +197 -0
  877. package/dist/.cursor/skills/document-skills/docx/docx-js.md +350 -0
  878. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  879. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  880. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  881. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  882. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  883. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  884. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  885. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  886. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  887. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  888. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  889. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  890. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  891. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  892. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  893. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  894. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  895. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  896. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  897. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  898. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  899. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  900. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  901. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  902. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  903. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  904. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  905. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  906. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  907. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  908. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  909. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  910. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  911. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  912. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  913. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  914. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  915. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  916. package/dist/.cursor/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  917. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  918. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  919. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  920. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  921. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  922. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  923. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  924. package/dist/.cursor/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  925. package/dist/.cursor/skills/document-skills/docx/ooxml.md +610 -0
  926. package/dist/.cursor/skills/document-skills/docx/scripts/__init__.py +1 -0
  927. package/dist/.cursor/skills/document-skills/docx/scripts/document.py +1276 -0
  928. package/dist/.cursor/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  929. package/dist/.cursor/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  930. package/dist/.cursor/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  931. package/dist/.cursor/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  932. package/dist/.cursor/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  933. package/dist/.cursor/skills/document-skills/docx/scripts/utilities.py +374 -0
  934. package/dist/.cursor/skills/document-skills/pdf/LICENSE.txt +30 -0
  935. package/dist/.cursor/skills/document-skills/pdf/SKILL.md +294 -0
  936. package/dist/.cursor/skills/document-skills/pdf/forms.md +205 -0
  937. package/dist/.cursor/skills/document-skills/pdf/reference.md +612 -0
  938. package/dist/.cursor/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  939. package/dist/.cursor/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  940. package/dist/.cursor/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  941. package/dist/.cursor/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  942. package/dist/.cursor/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  943. package/dist/.cursor/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  944. package/dist/.cursor/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  945. package/dist/.cursor/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  946. package/dist/.cursor/skills/document-skills/pptx/LICENSE.txt +30 -0
  947. package/dist/.cursor/skills/document-skills/pptx/SKILL.md +484 -0
  948. package/dist/.cursor/skills/document-skills/pptx/html2pptx.md +625 -0
  949. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  950. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  951. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  952. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  953. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  954. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  955. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  956. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  957. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  958. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  959. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  960. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  961. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  962. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  963. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  964. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  965. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  966. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  967. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  968. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  969. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  970. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  971. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  972. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  973. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  974. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  975. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  976. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  977. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  978. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  979. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  980. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  981. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  982. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  983. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  984. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  985. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  986. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  987. package/dist/.cursor/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  988. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  989. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  990. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  991. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  992. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  993. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  994. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  995. package/dist/.cursor/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  996. package/dist/.cursor/skills/document-skills/pptx/ooxml.md +427 -0
  997. package/dist/.cursor/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  998. package/dist/.cursor/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  999. package/dist/.cursor/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  1000. package/dist/.cursor/skills/document-skills/pptx/scripts/replace.py +385 -0
  1001. package/dist/.cursor/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  1002. package/dist/.cursor/skills/document-skills/xlsx/LICENSE.txt +30 -0
  1003. package/dist/.cursor/skills/document-skills/xlsx/SKILL.md +289 -0
  1004. package/dist/.cursor/skills/document-skills/xlsx/recalc.py +178 -0
  1005. package/dist/.cursor/skills/frontend-design/SKILL.md +91 -0
  1006. package/dist/.cursor/skills/frontend-design/references/ai-multimodal-overview.md +165 -0
  1007. package/dist/.cursor/skills/frontend-design/references/analysis-best-practices.md +80 -0
  1008. package/dist/.cursor/skills/frontend-design/references/analysis-prompts.md +141 -0
  1009. package/dist/.cursor/skills/frontend-design/references/analysis-techniques.md +118 -0
  1010. package/dist/.cursor/skills/frontend-design/references/animejs.md +396 -0
  1011. package/dist/.cursor/skills/frontend-design/references/asset-generation.md +337 -0
  1012. package/dist/.cursor/skills/frontend-design/references/design-extraction-overview.md +71 -0
  1013. package/dist/.cursor/skills/frontend-design/references/extraction-best-practices.md +141 -0
  1014. package/dist/.cursor/skills/frontend-design/references/extraction-output-templates.md +162 -0
  1015. package/dist/.cursor/skills/frontend-design/references/extraction-prompts.md +127 -0
  1016. package/dist/.cursor/skills/frontend-design/references/technical-accessibility.md +119 -0
  1017. package/dist/.cursor/skills/frontend-design/references/technical-best-practices.md +97 -0
  1018. package/dist/.cursor/skills/frontend-design/references/technical-optimization.md +44 -0
  1019. package/dist/.cursor/skills/frontend-design/references/technical-overview.md +90 -0
  1020. package/dist/.cursor/skills/frontend-design/references/technical-workflows.md +150 -0
  1021. package/dist/.cursor/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  1022. package/dist/.cursor/skills/frontend-design-pro/SKILL.md +58 -0
  1023. package/dist/.cursor/skills/frontend-development/SKILL.md +399 -0
  1024. package/dist/.cursor/skills/frontend-development/resources/common-patterns.md +331 -0
  1025. package/dist/.cursor/skills/frontend-development/resources/complete-examples.md +872 -0
  1026. package/dist/.cursor/skills/frontend-development/resources/component-patterns.md +502 -0
  1027. package/dist/.cursor/skills/frontend-development/resources/data-fetching.md +767 -0
  1028. package/dist/.cursor/skills/frontend-development/resources/file-organization.md +502 -0
  1029. package/dist/.cursor/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  1030. package/dist/.cursor/skills/frontend-development/resources/performance.md +406 -0
  1031. package/dist/.cursor/skills/frontend-development/resources/routing-guide.md +364 -0
  1032. package/dist/.cursor/skills/frontend-development/resources/styling-guide.md +428 -0
  1033. package/dist/.cursor/skills/frontend-development/resources/typescript-standards.md +418 -0
  1034. package/dist/.cursor/skills/google-adk-python/SKILL.md +237 -0
  1035. package/dist/.cursor/skills/install.ps1 +600 -0
  1036. package/dist/.cursor/skills/install.sh +685 -0
  1037. package/dist/.cursor/skills/mcp-builder/LICENSE.txt +202 -0
  1038. package/dist/.cursor/skills/mcp-builder/SKILL.md +328 -0
  1039. package/dist/.cursor/skills/mcp-builder/reference/evaluation.md +602 -0
  1040. package/dist/.cursor/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  1041. package/dist/.cursor/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  1042. package/dist/.cursor/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  1043. package/dist/.cursor/skills/mcp-builder/scripts/connections.py +151 -0
  1044. package/dist/.cursor/skills/mcp-builder/scripts/evaluation.py +373 -0
  1045. package/dist/.cursor/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  1046. package/dist/.cursor/skills/mcp-builder/scripts/requirements.txt +2 -0
  1047. package/dist/.cursor/skills/mcp-management/SKILL.md +209 -0
  1048. package/dist/.cursor/skills/mcp-management/assets/tools.json +3146 -0
  1049. package/dist/.cursor/skills/mcp-management/references/configuration.md +114 -0
  1050. package/dist/.cursor/skills/mcp-management/references/gemini-cli-integration.md +215 -0
  1051. package/dist/.cursor/skills/mcp-management/references/mcp-protocol.md +116 -0
  1052. package/dist/.cursor/skills/mcp-management/scripts/cli.ts +195 -0
  1053. package/dist/.cursor/skills/mcp-management/scripts/mcp-client.ts +230 -0
  1054. package/dist/.cursor/skills/mcp-management/scripts/package.json +20 -0
  1055. package/dist/.cursor/skills/mcp-management/scripts/tsconfig.json +15 -0
  1056. package/dist/.cursor/skills/media-processing/SKILL.md +91 -0
  1057. package/dist/.cursor/skills/media-processing/references/common-workflows.md +132 -0
  1058. package/dist/.cursor/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  1059. package/dist/.cursor/skills/media-processing/references/ffmpeg-filters.md +503 -0
  1060. package/dist/.cursor/skills/media-processing/references/ffmpeg-streaming.md +403 -0
  1061. package/dist/.cursor/skills/media-processing/references/format-compatibility.md +375 -0
  1062. package/dist/.cursor/skills/media-processing/references/imagemagick-batch.md +612 -0
  1063. package/dist/.cursor/skills/media-processing/references/imagemagick-editing.md +623 -0
  1064. package/dist/.cursor/skills/media-processing/references/rmbg-background-removal.md +66 -0
  1065. package/dist/.cursor/skills/media-processing/references/troubleshooting.md +109 -0
  1066. package/dist/.cursor/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  1067. package/dist/.cursor/skills/media-processing/scripts/batch_resize.py +342 -0
  1068. package/dist/.cursor/skills/media-processing/scripts/media_convert.py +311 -0
  1069. package/dist/.cursor/skills/media-processing/scripts/remove-background.sh +96 -0
  1070. package/dist/.cursor/skills/media-processing/scripts/remove-bg-node.js +158 -0
  1071. package/dist/.cursor/skills/media-processing/scripts/requirements.txt +24 -0
  1072. package/dist/.cursor/skills/media-processing/scripts/tests/requirements.txt +2 -0
  1073. package/dist/.cursor/skills/media-processing/scripts/tests/test_batch_resize.py +372 -0
  1074. package/dist/.cursor/skills/media-processing/scripts/tests/test_media_convert.py +259 -0
  1075. package/dist/.cursor/skills/media-processing/scripts/tests/test_video_optimize.py +397 -0
  1076. package/dist/.cursor/skills/media-processing/scripts/video_optimize.py +414 -0
  1077. package/dist/.cursor/skills/mobile-development/SKILL.md +212 -0
  1078. package/dist/.cursor/skills/mobile-development/references/mobile-android.md +604 -0
  1079. package/dist/.cursor/skills/mobile-development/references/mobile-best-practices.md +545 -0
  1080. package/dist/.cursor/skills/mobile-development/references/mobile-debugging.md +1089 -0
  1081. package/dist/.cursor/skills/mobile-development/references/mobile-frameworks.md +465 -0
  1082. package/dist/.cursor/skills/mobile-development/references/mobile-ios.md +496 -0
  1083. package/dist/.cursor/skills/mobile-development/references/mobile-mindset.md +544 -0
  1084. package/dist/.cursor/skills/payment-integration/SKILL.md +118 -0
  1085. package/dist/.cursor/skills/payment-integration/references/polar/benefits.md +396 -0
  1086. package/dist/.cursor/skills/payment-integration/references/polar/best-practices.md +482 -0
  1087. package/dist/.cursor/skills/payment-integration/references/polar/checkouts.md +266 -0
  1088. package/dist/.cursor/skills/payment-integration/references/polar/overview.md +184 -0
  1089. package/dist/.cursor/skills/payment-integration/references/polar/products.md +244 -0
  1090. package/dist/.cursor/skills/payment-integration/references/polar/sdk.md +436 -0
  1091. package/dist/.cursor/skills/payment-integration/references/polar/subscriptions.md +340 -0
  1092. package/dist/.cursor/skills/payment-integration/references/polar/webhooks.md +405 -0
  1093. package/dist/.cursor/skills/payment-integration/references/sepay/api.md +140 -0
  1094. package/dist/.cursor/skills/payment-integration/references/sepay/best-practices.md +337 -0
  1095. package/dist/.cursor/skills/payment-integration/references/sepay/overview.md +138 -0
  1096. package/dist/.cursor/skills/payment-integration/references/sepay/qr-codes.md +228 -0
  1097. package/dist/.cursor/skills/payment-integration/references/sepay/sdk.md +213 -0
  1098. package/dist/.cursor/skills/payment-integration/references/sepay/webhooks.md +208 -0
  1099. package/dist/.cursor/skills/payment-integration/scripts/checkout-helper.js +244 -0
  1100. package/dist/.cursor/skills/payment-integration/scripts/package.json +17 -0
  1101. package/dist/.cursor/skills/payment-integration/scripts/polar-webhook-verify.js +202 -0
  1102. package/dist/.cursor/skills/payment-integration/scripts/sepay-webhook-verify.js +193 -0
  1103. package/dist/.cursor/skills/payment-integration/scripts/test-scripts.js +237 -0
  1104. package/dist/.cursor/skills/planning/SKILL.md +121 -0
  1105. package/dist/.cursor/skills/planning/references/codebase-understanding.md +62 -0
  1106. package/dist/.cursor/skills/planning/references/output-standards.md +87 -0
  1107. package/dist/.cursor/skills/planning/references/plan-organization.md +123 -0
  1108. package/dist/.cursor/skills/planning/references/research-phase.md +49 -0
  1109. package/dist/.cursor/skills/planning/references/solution-design.md +63 -0
  1110. package/dist/.cursor/skills/problem-solving/SKILL.md +96 -0
  1111. package/dist/.cursor/skills/problem-solving/references/attribution.md +69 -0
  1112. package/dist/.cursor/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  1113. package/dist/.cursor/skills/problem-solving/references/inversion-exercise.md +91 -0
  1114. package/dist/.cursor/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  1115. package/dist/.cursor/skills/problem-solving/references/scale-game.md +95 -0
  1116. package/dist/.cursor/skills/problem-solving/references/simplification-cascades.md +80 -0
  1117. package/dist/.cursor/skills/problem-solving/references/when-stuck.md +72 -0
  1118. package/dist/.cursor/skills/repomix/SKILL.md +247 -0
  1119. package/dist/.cursor/skills/repomix/references/configuration.md +211 -0
  1120. package/dist/.cursor/skills/repomix/references/usage-patterns.md +232 -0
  1121. package/dist/.cursor/skills/repomix/scripts/repomix_batch.py +455 -0
  1122. package/dist/.cursor/skills/repomix/scripts/repos.example.json +15 -0
  1123. package/dist/.cursor/skills/repomix/scripts/requirements.txt +15 -0
  1124. package/dist/.cursor/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  1125. package/dist/.cursor/skills/research/SKILL.md +168 -0
  1126. package/dist/.cursor/skills/sequential-thinking/SKILL.md +94 -0
  1127. package/dist/.cursor/skills/sequential-thinking/package.json +31 -0
  1128. package/dist/.cursor/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  1129. package/dist/.cursor/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  1130. package/dist/.cursor/skills/sequential-thinking/references/core-patterns.md +95 -0
  1131. package/dist/.cursor/skills/sequential-thinking/references/examples-api.md +88 -0
  1132. package/dist/.cursor/skills/sequential-thinking/references/examples-architecture.md +94 -0
  1133. package/dist/.cursor/skills/sequential-thinking/references/examples-debug.md +90 -0
  1134. package/dist/.cursor/skills/sequential-thinking/scripts/format-thought.js +159 -0
  1135. package/dist/.cursor/skills/sequential-thinking/scripts/process-thought.js +236 -0
  1136. package/dist/.cursor/skills/sequential-thinking/tests/format-thought.test.js +133 -0
  1137. package/dist/.cursor/skills/sequential-thinking/tests/process-thought.test.js +215 -0
  1138. package/dist/.cursor/skills/shopify/SKILL.md +319 -0
  1139. package/dist/.cursor/skills/shopify/references/app-development.md +470 -0
  1140. package/dist/.cursor/skills/shopify/references/extensions.md +493 -0
  1141. package/dist/.cursor/skills/shopify/references/themes.md +498 -0
  1142. package/dist/.cursor/skills/shopify/scripts/requirements.txt +19 -0
  1143. package/dist/.cursor/skills/shopify/scripts/shopify_init.py +423 -0
  1144. package/dist/.cursor/skills/shopify/scripts/tests/test_shopify_init.py +385 -0
  1145. package/dist/.cursor/skills/skill-creator/LICENSE.txt +202 -0
  1146. package/dist/.cursor/skills/skill-creator/SKILL.md +266 -0
  1147. package/dist/.cursor/skills/skill-creator/scripts/init_skill.py +303 -0
  1148. package/dist/.cursor/skills/skill-creator/scripts/package_skill.py +110 -0
  1149. package/dist/.cursor/skills/skill-creator/scripts/quick_validate.py +65 -0
  1150. package/dist/.cursor/skills/template-skill/SKILL.md +6 -0
  1151. package/dist/.cursor/skills/threejs/SKILL.md +89 -0
  1152. package/dist/.cursor/skills/threejs/references/01-getting-started.md +177 -0
  1153. package/dist/.cursor/skills/threejs/references/02-loaders.md +169 -0
  1154. package/dist/.cursor/skills/threejs/references/03-textures.md +170 -0
  1155. package/dist/.cursor/skills/threejs/references/04-cameras.md +195 -0
  1156. package/dist/.cursor/skills/threejs/references/05-lights.md +183 -0
  1157. package/dist/.cursor/skills/threejs/references/06-animations.md +214 -0
  1158. package/dist/.cursor/skills/threejs/references/07-math.md +260 -0
  1159. package/dist/.cursor/skills/threejs/references/08-interaction.md +267 -0
  1160. package/dist/.cursor/skills/threejs/references/09-postprocessing.md +240 -0
  1161. package/dist/.cursor/skills/threejs/references/10-controls.md +259 -0
  1162. package/dist/.cursor/skills/threejs/references/11-materials-advanced.md +270 -0
  1163. package/dist/.cursor/skills/threejs/references/12-performance.md +269 -0
  1164. package/dist/.cursor/skills/threejs/references/13-node-materials.md +298 -0
  1165. package/dist/.cursor/skills/threejs/references/14-physics-vr.md +304 -0
  1166. package/dist/.cursor/skills/threejs/references/15-specialized-loaders.md +333 -0
  1167. package/dist/.cursor/skills/threejs/references/16-webgpu.md +302 -0
  1168. package/dist/.cursor/skills/ui-styling/LICENSE.txt +202 -0
  1169. package/dist/.cursor/skills/ui-styling/SKILL.md +321 -0
  1170. package/dist/.cursor/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  1171. package/dist/.cursor/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1172. package/dist/.cursor/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1173. package/dist/.cursor/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  1174. package/dist/.cursor/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1175. package/dist/.cursor/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  1176. package/dist/.cursor/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1177. package/dist/.cursor/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1178. package/dist/.cursor/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  1179. package/dist/.cursor/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1180. package/dist/.cursor/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1181. package/dist/.cursor/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1182. package/dist/.cursor/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  1183. package/dist/.cursor/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1184. package/dist/.cursor/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  1185. package/dist/.cursor/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  1186. package/dist/.cursor/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  1187. package/dist/.cursor/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1188. package/dist/.cursor/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1189. package/dist/.cursor/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  1190. package/dist/.cursor/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1191. package/dist/.cursor/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  1192. package/dist/.cursor/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  1193. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1194. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  1195. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1196. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1197. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1198. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1199. package/dist/.cursor/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1200. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1201. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1202. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1203. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  1204. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1205. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1206. package/dist/.cursor/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1207. package/dist/.cursor/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  1208. package/dist/.cursor/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  1209. package/dist/.cursor/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1210. package/dist/.cursor/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  1211. package/dist/.cursor/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1212. package/dist/.cursor/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  1213. package/dist/.cursor/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  1214. package/dist/.cursor/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  1215. package/dist/.cursor/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  1216. package/dist/.cursor/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1217. package/dist/.cursor/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1218. package/dist/.cursor/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1219. package/dist/.cursor/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1220. package/dist/.cursor/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  1221. package/dist/.cursor/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1222. package/dist/.cursor/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1223. package/dist/.cursor/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  1224. package/dist/.cursor/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1225. package/dist/.cursor/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1226. package/dist/.cursor/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1227. package/dist/.cursor/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1228. package/dist/.cursor/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  1229. package/dist/.cursor/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1230. package/dist/.cursor/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1231. package/dist/.cursor/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1232. package/dist/.cursor/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1233. package/dist/.cursor/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1234. package/dist/.cursor/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1235. package/dist/.cursor/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1236. package/dist/.cursor/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1237. package/dist/.cursor/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1238. package/dist/.cursor/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1239. package/dist/.cursor/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1240. package/dist/.cursor/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1241. package/dist/.cursor/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1242. package/dist/.cursor/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  1243. package/dist/.cursor/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1244. package/dist/.cursor/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1245. package/dist/.cursor/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1246. package/dist/.cursor/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1247. package/dist/.cursor/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  1248. package/dist/.cursor/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1249. package/dist/.cursor/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1250. package/dist/.cursor/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1251. package/dist/.cursor/skills/ui-styling/references/canvas-design-system.md +320 -0
  1252. package/dist/.cursor/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  1253. package/dist/.cursor/skills/ui-styling/references/shadcn-components.md +424 -0
  1254. package/dist/.cursor/skills/ui-styling/references/shadcn-theming.md +373 -0
  1255. package/dist/.cursor/skills/ui-styling/references/tailwind-customization.md +483 -0
  1256. package/dist/.cursor/skills/ui-styling/references/tailwind-responsive.md +382 -0
  1257. package/dist/.cursor/skills/ui-styling/references/tailwind-utilities.md +455 -0
  1258. package/dist/.cursor/skills/ui-styling/scripts/requirements.txt +17 -0
  1259. package/dist/.cursor/skills/ui-styling/scripts/shadcn_add.py +292 -0
  1260. package/dist/.cursor/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  1261. package/dist/.cursor/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  1262. package/dist/.cursor/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  1263. package/dist/.cursor/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  1264. package/dist/.cursor/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  1265. package/dist/.cursor/skills/ui-ux-pro-max/SKILL.md +227 -0
  1266. package/dist/.cursor/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1267. package/dist/.cursor/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1268. package/dist/.cursor/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1269. package/dist/.cursor/skills/ui-ux-pro-max/data/products.csv +97 -0
  1270. package/dist/.cursor/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1271. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1272. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  1273. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1274. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1275. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1276. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1277. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1278. package/dist/.cursor/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1279. package/dist/.cursor/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1280. package/dist/.cursor/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1281. package/dist/.cursor/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1282. package/dist/.cursor/skills/ui-ux-pro-max/scripts/core.py +236 -0
  1283. package/dist/.cursor/skills/ui-ux-pro-max/scripts/search.py +61 -0
  1284. package/dist/.cursor/skills/web-frameworks/SKILL.md +324 -0
  1285. package/dist/.cursor/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  1286. package/dist/.cursor/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  1287. package/dist/.cursor/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  1288. package/dist/.cursor/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  1289. package/dist/.cursor/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  1290. package/dist/.cursor/skills/web-frameworks/references/turborepo-caching.md +551 -0
  1291. package/dist/.cursor/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  1292. package/dist/.cursor/skills/web-frameworks/references/turborepo-setup.md +542 -0
  1293. package/dist/.cursor/skills/web-frameworks/scripts/__init__.py +0 -0
  1294. package/dist/.cursor/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  1295. package/dist/.cursor/skills/web-frameworks/scripts/requirements.txt +16 -0
  1296. package/dist/.cursor/skills/web-frameworks/scripts/tests/coverage-web.json +1 -0
  1297. package/dist/.cursor/skills/web-frameworks/scripts/tests/requirements.txt +3 -0
  1298. package/dist/.cursor/skills/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  1299. package/dist/.cursor/skills/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  1300. package/dist/.cursor/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  1301. package/dist/.cursor/statusline.cjs +274 -0
  1302. package/dist/.cursor/statusline.ps1 +318 -0
  1303. package/dist/.cursor/statusline.sh +165 -0
  1304. package/dist/.cursor/team.yaml +154 -0
  1305. package/dist/.cursor/workflows/development-rules.md +42 -0
  1306. package/dist/.cursor/workflows/documentation-management.md +121 -0
  1307. package/dist/.cursor/workflows/feature.yaml +51 -0
  1308. package/dist/.cursor/workflows/hotfix.yaml +35 -0
  1309. package/dist/.cursor/workflows/orchestration-protocol.md +16 -0
  1310. package/dist/.cursor/workflows/primary-workflow.md +45 -0
  1311. package/dist/.cursor/workflows/release.yaml +61 -0
  1312. package/dist/.cursorrules +106 -0
  1313. package/dist/ANTIGRAVITY.md +84 -0
  1314. package/dist/CURSOR.md +84 -0
  1315. package/dist/MODEL_COSTS.md +61 -0
  1316. package/dist/agents/brainstormer.md +115 -0
  1317. package/dist/agents/code-reviewer.md +168 -0
  1318. package/dist/agents/copywriter.md +110 -0
  1319. package/dist/agents/database-admin.md +104 -0
  1320. package/dist/agents/ddd-architect.md +128 -0
  1321. package/dist/agents/debugger.md +149 -0
  1322. package/dist/agents/design-system-architect.md +166 -0
  1323. package/dist/agents/docs-manager.md +133 -0
  1324. package/dist/agents/fullstack-developer.md +105 -0
  1325. package/dist/agents/git-manager.md +321 -0
  1326. package/dist/agents/graph-architect.md +30 -0
  1327. package/dist/agents/journal-writer.md +113 -0
  1328. package/dist/agents/mcp-manager.md +93 -0
  1329. package/dist/agents/planner.md +61 -0
  1330. package/dist/agents/project-manager.md +131 -0
  1331. package/dist/agents/researcher.md +50 -0
  1332. package/dist/agents/scout-external.md +151 -0
  1333. package/dist/agents/scout.md +117 -0
  1334. package/dist/agents/tester.md +117 -0
  1335. package/dist/agents/trend-watcher.md +24 -0
  1336. package/dist/agents/ui-ux-designer.md +233 -0
  1337. package/dist/commands/audit.md +116 -0
  1338. package/dist/commands/commit.md +116 -0
  1339. package/dist/commands/config.md +144 -0
  1340. package/dist/commands/demo.md +50 -0
  1341. package/dist/commands/design.md +177 -0
  1342. package/dist/commands/do.md +403 -0
  1343. package/dist/commands/docs.md +101 -0
  1344. package/dist/commands/generate.md +140 -0
  1345. package/dist/commands/help.md +128 -0
  1346. package/dist/commands/integrate.md +119 -0
  1347. package/dist/commands/memory.md +97 -0
  1348. package/dist/commands/migrate.md +180 -0
  1349. package/dist/commands/review.md +108 -0
  1350. package/dist/commands/scout.md +111 -0
  1351. package/dist/commands/skill-learn.md +48 -0
  1352. package/dist/commands/start.md +56 -0
  1353. package/dist/commands/status.md +163 -0
  1354. package/dist/commands/test.md +121 -0
  1355. package/dist/commands/theme.md +158 -0
  1356. package/dist/commands/undo.md +166 -0
  1357. package/dist/commands/why.md +155 -0
  1358. package/dist/docs/AI_CONTRACT.md +150 -0
  1359. package/dist/docs/ALL_COMMANDS.md +52 -0
  1360. package/dist/docs/ARCHITECTURE.md +186 -0
  1361. package/dist/docs/CI_CD.md +44 -0
  1362. package/dist/docs/CODE_STYLE.md +333 -0
  1363. package/dist/docs/COMPARISON.md +65 -0
  1364. package/dist/docs/ORCHESTRATION.md +345 -0
  1365. package/dist/docs/PROJECT.md +140 -0
  1366. package/dist/docs/ROADMAP.md +75 -0
  1367. package/dist/docs/UX_MODES.md +173 -0
  1368. package/dist/docs/WORKFLOW.md +125 -0
  1369. package/dist/index.js +1 -0
  1370. package/dist/presets/MIGRATION_GUIDE.md +270 -0
  1371. package/dist/presets/ci-cd/ai-review.yml +49 -0
  1372. package/dist/presets/enterprise/contract.json +93 -0
  1373. package/dist/presets/professional/contract.json +72 -0
  1374. package/dist/presets/rapid/contract.json +53 -0
  1375. package/dist/scripts/check-setup.ps1 +59 -0
  1376. package/dist/scripts/install-hooks.ps1 +74 -0
  1377. package/dist/scripts/install-hooks.sh +69 -0
  1378. package/dist/scripts/install.ps1 +204 -0
  1379. package/dist/scripts/install.sh +208 -0
  1380. package/dist/scripts/new-project.ps1 +101 -0
  1381. package/dist/scripts/new-project.sh +61 -0
  1382. package/dist/scripts/setup-enterprise.ps1 +319 -0
  1383. package/dist/scripts/setup-enterprise.sh +259 -0
  1384. package/dist/scripts/setup-professional.ps1 +232 -0
  1385. package/dist/scripts/setup-professional.sh +146 -0
  1386. package/dist/scripts/setup-rapid.ps1 +138 -0
  1387. package/dist/scripts/setup-rapid.sh +134 -0
  1388. package/dist/skills/INSTALLATION.md +360 -0
  1389. package/dist/skills/SKILLS_INDEX.md +118 -0
  1390. package/dist/skills/THIRD_PARTY_NOTICES.md +405 -0
  1391. package/dist/skills/_template.md +30 -0
  1392. package/dist/skills/aesthetic/SKILL.md +121 -0
  1393. package/dist/skills/aesthetic/assets/design-guideline-template.md +163 -0
  1394. package/dist/skills/aesthetic/assets/design-story-template.md +135 -0
  1395. package/dist/skills/aesthetic/references/design-principles.md +62 -0
  1396. package/dist/skills/aesthetic/references/design-resources.md +75 -0
  1397. package/dist/skills/aesthetic/references/micro-interactions.md +53 -0
  1398. package/dist/skills/aesthetic/references/storytelling-design.md +50 -0
  1399. package/dist/skills/agent_skills_spec.md +55 -0
  1400. package/dist/skills/ai-multimodal/SKILL.md +65 -0
  1401. package/dist/skills/ai-multimodal/references/audio-processing.md +386 -0
  1402. package/dist/skills/ai-multimodal/references/image-generation.md +722 -0
  1403. package/dist/skills/ai-multimodal/references/video-analysis.md +515 -0
  1404. package/dist/skills/ai-multimodal/references/video-generation.md +457 -0
  1405. package/dist/skills/ai-multimodal/references/vision-understanding.md +492 -0
  1406. package/dist/skills/ai-multimodal/scripts/check_setup.py +299 -0
  1407. package/dist/skills/ai-multimodal/scripts/document_converter.py +395 -0
  1408. package/dist/skills/ai-multimodal/scripts/gemini_batch_process.py +896 -0
  1409. package/dist/skills/ai-multimodal/scripts/media_optimizer.py +506 -0
  1410. package/dist/skills/ai-multimodal/scripts/requirements.txt +26 -0
  1411. package/dist/skills/ai-multimodal/scripts/tests/requirements.txt +20 -0
  1412. package/dist/skills/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
  1413. package/dist/skills/ai-multimodal/scripts/tests/test_failures.log +258 -0
  1414. package/dist/skills/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
  1415. package/dist/skills/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
  1416. package/dist/skills/backend-development/SKILL.md +95 -0
  1417. package/dist/skills/backend-development/references/backend-api-design.md +495 -0
  1418. package/dist/skills/backend-development/references/backend-architecture.md +454 -0
  1419. package/dist/skills/backend-development/references/backend-authentication.md +338 -0
  1420. package/dist/skills/backend-development/references/backend-code-quality.md +659 -0
  1421. package/dist/skills/backend-development/references/backend-debugging.md +904 -0
  1422. package/dist/skills/backend-development/references/backend-devops.md +494 -0
  1423. package/dist/skills/backend-development/references/backend-mindset.md +387 -0
  1424. package/dist/skills/backend-development/references/backend-performance.md +397 -0
  1425. package/dist/skills/backend-development/references/backend-security.md +290 -0
  1426. package/dist/skills/backend-development/references/backend-technologies.md +256 -0
  1427. package/dist/skills/backend-development/references/backend-testing.md +429 -0
  1428. package/dist/skills/better-auth/SKILL.md +204 -0
  1429. package/dist/skills/better-auth/references/advanced-features.md +553 -0
  1430. package/dist/skills/better-auth/references/database-integration.md +577 -0
  1431. package/dist/skills/better-auth/references/email-password-auth.md +416 -0
  1432. package/dist/skills/better-auth/references/oauth-providers.md +430 -0
  1433. package/dist/skills/better-auth/scripts/better_auth_init.py +521 -0
  1434. package/dist/skills/better-auth/scripts/requirements.txt +15 -0
  1435. package/dist/skills/better-auth/scripts/tests/test_better_auth_init.py +421 -0
  1436. package/dist/skills/chrome-devtools/SKILL.md +360 -0
  1437. package/dist/skills/chrome-devtools/references/cdp-domains.md +694 -0
  1438. package/dist/skills/chrome-devtools/references/performance-guide.md +940 -0
  1439. package/dist/skills/chrome-devtools/references/puppeteer-reference.md +953 -0
  1440. package/dist/skills/chrome-devtools/scripts/__tests__/selector.test.js +210 -0
  1441. package/dist/skills/chrome-devtools/scripts/click.js +79 -0
  1442. package/dist/skills/chrome-devtools/scripts/console.js +75 -0
  1443. package/dist/skills/chrome-devtools/scripts/evaluate.js +49 -0
  1444. package/dist/skills/chrome-devtools/scripts/fill.js +72 -0
  1445. package/dist/skills/chrome-devtools/scripts/install-deps.sh +181 -0
  1446. package/dist/skills/chrome-devtools/scripts/install.sh +83 -0
  1447. package/dist/skills/chrome-devtools/scripts/lib/browser.js +122 -0
  1448. package/dist/skills/chrome-devtools/scripts/lib/selector.js +178 -0
  1449. package/dist/skills/chrome-devtools/scripts/navigate.js +46 -0
  1450. package/dist/skills/chrome-devtools/scripts/network.js +102 -0
  1451. package/dist/skills/chrome-devtools/scripts/package.json +15 -0
  1452. package/dist/skills/chrome-devtools/scripts/performance.js +145 -0
  1453. package/dist/skills/chrome-devtools/scripts/screenshot.js +180 -0
  1454. package/dist/skills/chrome-devtools/scripts/snapshot.js +131 -0
  1455. package/dist/skills/claude-code/references/advanced-features.md +399 -0
  1456. package/dist/skills/claude-code/references/agent-skills.md +399 -0
  1457. package/dist/skills/claude-code/references/api-reference.md +498 -0
  1458. package/dist/skills/claude-code/references/best-practices.md +447 -0
  1459. package/dist/skills/claude-code/references/cicd-integration.md +428 -0
  1460. package/dist/skills/claude-code/references/common-workflows.md +119 -0
  1461. package/dist/skills/claude-code/references/configuration.md +480 -0
  1462. package/dist/skills/claude-code/references/enterprise-features.md +472 -0
  1463. package/dist/skills/claude-code/references/getting-started.md +252 -0
  1464. package/dist/skills/claude-code/references/hooks-and-plugins.md +444 -0
  1465. package/dist/skills/claude-code/references/hooks-comprehensive.md +622 -0
  1466. package/dist/skills/claude-code/references/ide-integration.md +316 -0
  1467. package/dist/skills/claude-code/references/mcp-integration.md +386 -0
  1468. package/dist/skills/claude-code/references/slash-commands.md +489 -0
  1469. package/dist/skills/claude-code/references/troubleshooting.md +456 -0
  1470. package/dist/skills/claude-code/skill.md +60 -0
  1471. package/dist/skills/code-review/SKILL.md +143 -0
  1472. package/dist/skills/code-review/references/code-review-reception.md +209 -0
  1473. package/dist/skills/code-review/references/requesting-code-review.md +105 -0
  1474. package/dist/skills/code-review/references/verification-before-completion.md +139 -0
  1475. package/dist/skills/common/api_key_helper.py +300 -0
  1476. package/dist/skills/databases/SKILL.md +232 -0
  1477. package/dist/skills/databases/references/mongodb-aggregation.md +447 -0
  1478. package/dist/skills/databases/references/mongodb-atlas.md +465 -0
  1479. package/dist/skills/databases/references/mongodb-crud.md +408 -0
  1480. package/dist/skills/databases/references/mongodb-indexing.md +442 -0
  1481. package/dist/skills/databases/references/postgresql-administration.md +594 -0
  1482. package/dist/skills/databases/references/postgresql-performance.md +527 -0
  1483. package/dist/skills/databases/references/postgresql-psql-cli.md +467 -0
  1484. package/dist/skills/databases/references/postgresql-queries.md +475 -0
  1485. package/dist/skills/databases/scripts/db_backup.py +502 -0
  1486. package/dist/skills/databases/scripts/db_migrate.py +414 -0
  1487. package/dist/skills/databases/scripts/db_performance_check.py +444 -0
  1488. package/dist/skills/databases/scripts/requirements.txt +20 -0
  1489. package/dist/skills/databases/scripts/tests/coverage-db.json +1 -0
  1490. package/dist/skills/databases/scripts/tests/requirements.txt +4 -0
  1491. package/dist/skills/databases/scripts/tests/test_db_backup.py +340 -0
  1492. package/dist/skills/databases/scripts/tests/test_db_migrate.py +277 -0
  1493. package/dist/skills/databases/scripts/tests/test_db_performance_check.py +370 -0
  1494. package/dist/skills/debugging/SKILL.md +84 -0
  1495. package/dist/skills/debugging/references/defense-in-depth.md +124 -0
  1496. package/dist/skills/debugging/references/root-cause-tracing.md +122 -0
  1497. package/dist/skills/debugging/references/systematic-debugging.md +102 -0
  1498. package/dist/skills/debugging/references/verification.md +123 -0
  1499. package/dist/skills/debugging/scripts/find-polluter.sh +63 -0
  1500. package/dist/skills/debugging/scripts/find-polluter.test.md +102 -0
  1501. package/dist/skills/devops/SKILL.md +285 -0
  1502. package/dist/skills/devops/references/browser-rendering.md +305 -0
  1503. package/dist/skills/devops/references/cloudflare-d1-kv.md +123 -0
  1504. package/dist/skills/devops/references/cloudflare-platform.md +271 -0
  1505. package/dist/skills/devops/references/cloudflare-r2-storage.md +280 -0
  1506. package/dist/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  1507. package/dist/skills/devops/references/cloudflare-workers-apis.md +309 -0
  1508. package/dist/skills/devops/references/cloudflare-workers-basics.md +418 -0
  1509. package/dist/skills/devops/references/docker-basics.md +297 -0
  1510. package/dist/skills/devops/references/docker-compose.md +292 -0
  1511. package/dist/skills/devops/references/gcloud-platform.md +297 -0
  1512. package/dist/skills/devops/references/gcloud-services.md +304 -0
  1513. package/dist/skills/devops/scripts/cloudflare_deploy.py +269 -0
  1514. package/dist/skills/devops/scripts/docker_optimize.py +320 -0
  1515. package/dist/skills/devops/scripts/requirements.txt +20 -0
  1516. package/dist/skills/devops/scripts/tests/requirements.txt +3 -0
  1517. package/dist/skills/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  1518. package/dist/skills/devops/scripts/tests/test_docker_optimize.py +436 -0
  1519. package/dist/skills/docs-seeker/SKILL.md +97 -0
  1520. package/dist/skills/docs-seeker/package.json +25 -0
  1521. package/dist/skills/docs-seeker/references/advanced.md +79 -0
  1522. package/dist/skills/docs-seeker/references/context7-patterns.md +68 -0
  1523. package/dist/skills/docs-seeker/references/errors.md +68 -0
  1524. package/dist/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  1525. package/dist/skills/docs-seeker/scripts/detect-topic.js +172 -0
  1526. package/dist/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  1527. package/dist/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  1528. package/dist/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  1529. package/dist/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  1530. package/dist/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  1531. package/dist/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  1532. package/dist/skills/docs-seeker/workflows/library-search.md +87 -0
  1533. package/dist/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  1534. package/dist/skills/docs-seeker/workflows/topic-search.md +77 -0
  1535. package/dist/skills/document-skills/docx/LICENSE.txt +30 -0
  1536. package/dist/skills/document-skills/docx/SKILL.md +197 -0
  1537. package/dist/skills/document-skills/docx/docx-js.md +350 -0
  1538. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1539. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1540. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1541. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1542. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1543. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1544. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1545. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1546. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1547. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1548. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1549. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1550. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1551. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1552. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1553. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1554. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1555. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1556. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1557. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1558. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1559. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1560. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1561. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1562. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1563. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1564. package/dist/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1565. package/dist/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1566. package/dist/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1567. package/dist/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1568. package/dist/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1569. package/dist/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  1570. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  1571. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  1572. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  1573. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1574. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1575. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1576. package/dist/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1577. package/dist/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  1578. package/dist/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  1579. package/dist/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  1580. package/dist/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  1581. package/dist/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  1582. package/dist/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  1583. package/dist/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  1584. package/dist/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  1585. package/dist/skills/document-skills/docx/ooxml.md +610 -0
  1586. package/dist/skills/document-skills/docx/scripts/__init__.py +1 -0
  1587. package/dist/skills/document-skills/docx/scripts/document.py +1276 -0
  1588. package/dist/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  1589. package/dist/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  1590. package/dist/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  1591. package/dist/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  1592. package/dist/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  1593. package/dist/skills/document-skills/docx/scripts/utilities.py +374 -0
  1594. package/dist/skills/document-skills/pdf/LICENSE.txt +30 -0
  1595. package/dist/skills/document-skills/pdf/SKILL.md +294 -0
  1596. package/dist/skills/document-skills/pdf/forms.md +205 -0
  1597. package/dist/skills/document-skills/pdf/reference.md +612 -0
  1598. package/dist/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  1599. package/dist/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  1600. package/dist/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  1601. package/dist/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  1602. package/dist/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  1603. package/dist/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  1604. package/dist/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  1605. package/dist/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  1606. package/dist/skills/document-skills/pptx/LICENSE.txt +30 -0
  1607. package/dist/skills/document-skills/pptx/SKILL.md +484 -0
  1608. package/dist/skills/document-skills/pptx/html2pptx.md +625 -0
  1609. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1610. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1611. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1612. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1613. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1614. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1615. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1616. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1617. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1618. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1619. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1620. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1621. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1622. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1623. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1624. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1625. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1626. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1627. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1628. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1629. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1630. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1631. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1632. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1633. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1634. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1635. package/dist/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1636. package/dist/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1637. package/dist/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1638. package/dist/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1639. package/dist/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1640. package/dist/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  1641. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  1642. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  1643. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  1644. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1645. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1646. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1647. package/dist/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1648. package/dist/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  1649. package/dist/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  1650. package/dist/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  1651. package/dist/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  1652. package/dist/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  1653. package/dist/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  1654. package/dist/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  1655. package/dist/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  1656. package/dist/skills/document-skills/pptx/ooxml.md +427 -0
  1657. package/dist/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  1658. package/dist/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  1659. package/dist/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  1660. package/dist/skills/document-skills/pptx/scripts/replace.py +385 -0
  1661. package/dist/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  1662. package/dist/skills/document-skills/xlsx/LICENSE.txt +30 -0
  1663. package/dist/skills/document-skills/xlsx/SKILL.md +289 -0
  1664. package/dist/skills/document-skills/xlsx/recalc.py +178 -0
  1665. package/dist/skills/frontend-design/SKILL.md +91 -0
  1666. package/dist/skills/frontend-design/references/ai-multimodal-overview.md +165 -0
  1667. package/dist/skills/frontend-design/references/analysis-best-practices.md +80 -0
  1668. package/dist/skills/frontend-design/references/analysis-prompts.md +141 -0
  1669. package/dist/skills/frontend-design/references/analysis-techniques.md +118 -0
  1670. package/dist/skills/frontend-design/references/animejs.md +396 -0
  1671. package/dist/skills/frontend-design/references/asset-generation.md +337 -0
  1672. package/dist/skills/frontend-design/references/design-extraction-overview.md +71 -0
  1673. package/dist/skills/frontend-design/references/extraction-best-practices.md +141 -0
  1674. package/dist/skills/frontend-design/references/extraction-output-templates.md +162 -0
  1675. package/dist/skills/frontend-design/references/extraction-prompts.md +127 -0
  1676. package/dist/skills/frontend-design/references/technical-accessibility.md +119 -0
  1677. package/dist/skills/frontend-design/references/technical-best-practices.md +97 -0
  1678. package/dist/skills/frontend-design/references/technical-optimization.md +44 -0
  1679. package/dist/skills/frontend-design/references/technical-overview.md +90 -0
  1680. package/dist/skills/frontend-design/references/technical-workflows.md +150 -0
  1681. package/dist/skills/frontend-design/references/visual-analysis-overview.md +95 -0
  1682. package/dist/skills/frontend-design-pro/SKILL.md +58 -0
  1683. package/dist/skills/frontend-development/SKILL.md +399 -0
  1684. package/dist/skills/frontend-development/resources/common-patterns.md +331 -0
  1685. package/dist/skills/frontend-development/resources/complete-examples.md +872 -0
  1686. package/dist/skills/frontend-development/resources/component-patterns.md +502 -0
  1687. package/dist/skills/frontend-development/resources/data-fetching.md +767 -0
  1688. package/dist/skills/frontend-development/resources/file-organization.md +502 -0
  1689. package/dist/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  1690. package/dist/skills/frontend-development/resources/performance.md +406 -0
  1691. package/dist/skills/frontend-development/resources/routing-guide.md +364 -0
  1692. package/dist/skills/frontend-development/resources/styling-guide.md +428 -0
  1693. package/dist/skills/frontend-development/resources/typescript-standards.md +418 -0
  1694. package/dist/skills/google-adk-python/SKILL.md +237 -0
  1695. package/dist/skills/install.ps1 +600 -0
  1696. package/dist/skills/install.sh +685 -0
  1697. package/dist/skills/mcp-builder/LICENSE.txt +202 -0
  1698. package/dist/skills/mcp-builder/SKILL.md +328 -0
  1699. package/dist/skills/mcp-builder/reference/evaluation.md +602 -0
  1700. package/dist/skills/mcp-builder/reference/mcp_best_practices.md +915 -0
  1701. package/dist/skills/mcp-builder/reference/node_mcp_server.md +916 -0
  1702. package/dist/skills/mcp-builder/reference/python_mcp_server.md +752 -0
  1703. package/dist/skills/mcp-builder/scripts/connections.py +151 -0
  1704. package/dist/skills/mcp-builder/scripts/evaluation.py +373 -0
  1705. package/dist/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  1706. package/dist/skills/mcp-builder/scripts/requirements.txt +2 -0
  1707. package/dist/skills/mcp-management/SKILL.md +209 -0
  1708. package/dist/skills/mcp-management/assets/tools.json +3146 -0
  1709. package/dist/skills/mcp-management/references/configuration.md +114 -0
  1710. package/dist/skills/mcp-management/references/gemini-cli-integration.md +215 -0
  1711. package/dist/skills/mcp-management/references/mcp-protocol.md +116 -0
  1712. package/dist/skills/mcp-management/scripts/cli.ts +195 -0
  1713. package/dist/skills/mcp-management/scripts/mcp-client.ts +230 -0
  1714. package/dist/skills/mcp-management/scripts/package.json +20 -0
  1715. package/dist/skills/mcp-management/scripts/tsconfig.json +15 -0
  1716. package/dist/skills/media-processing/SKILL.md +91 -0
  1717. package/dist/skills/media-processing/references/common-workflows.md +132 -0
  1718. package/dist/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  1719. package/dist/skills/media-processing/references/ffmpeg-filters.md +503 -0
  1720. package/dist/skills/media-processing/references/ffmpeg-streaming.md +403 -0
  1721. package/dist/skills/media-processing/references/format-compatibility.md +375 -0
  1722. package/dist/skills/media-processing/references/imagemagick-batch.md +612 -0
  1723. package/dist/skills/media-processing/references/imagemagick-editing.md +623 -0
  1724. package/dist/skills/media-processing/references/rmbg-background-removal.md +66 -0
  1725. package/dist/skills/media-processing/references/troubleshooting.md +109 -0
  1726. package/dist/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  1727. package/dist/skills/media-processing/scripts/batch_resize.py +342 -0
  1728. package/dist/skills/media-processing/scripts/media_convert.py +311 -0
  1729. package/dist/skills/media-processing/scripts/remove-background.sh +96 -0
  1730. package/dist/skills/media-processing/scripts/remove-bg-node.js +158 -0
  1731. package/dist/skills/media-processing/scripts/requirements.txt +24 -0
  1732. package/dist/skills/media-processing/scripts/tests/requirements.txt +2 -0
  1733. package/dist/skills/media-processing/scripts/tests/test_batch_resize.py +372 -0
  1734. package/dist/skills/media-processing/scripts/tests/test_media_convert.py +259 -0
  1735. package/dist/skills/media-processing/scripts/tests/test_video_optimize.py +397 -0
  1736. package/dist/skills/media-processing/scripts/video_optimize.py +414 -0
  1737. package/dist/skills/mobile-development/SKILL.md +212 -0
  1738. package/dist/skills/mobile-development/references/mobile-android.md +604 -0
  1739. package/dist/skills/mobile-development/references/mobile-best-practices.md +545 -0
  1740. package/dist/skills/mobile-development/references/mobile-debugging.md +1089 -0
  1741. package/dist/skills/mobile-development/references/mobile-frameworks.md +465 -0
  1742. package/dist/skills/mobile-development/references/mobile-ios.md +496 -0
  1743. package/dist/skills/mobile-development/references/mobile-mindset.md +544 -0
  1744. package/dist/skills/payment-integration/SKILL.md +118 -0
  1745. package/dist/skills/payment-integration/references/polar/benefits.md +396 -0
  1746. package/dist/skills/payment-integration/references/polar/best-practices.md +482 -0
  1747. package/dist/skills/payment-integration/references/polar/checkouts.md +266 -0
  1748. package/dist/skills/payment-integration/references/polar/overview.md +184 -0
  1749. package/dist/skills/payment-integration/references/polar/products.md +244 -0
  1750. package/dist/skills/payment-integration/references/polar/sdk.md +436 -0
  1751. package/dist/skills/payment-integration/references/polar/subscriptions.md +340 -0
  1752. package/dist/skills/payment-integration/references/polar/webhooks.md +405 -0
  1753. package/dist/skills/payment-integration/references/sepay/api.md +140 -0
  1754. package/dist/skills/payment-integration/references/sepay/best-practices.md +337 -0
  1755. package/dist/skills/payment-integration/references/sepay/overview.md +138 -0
  1756. package/dist/skills/payment-integration/references/sepay/qr-codes.md +228 -0
  1757. package/dist/skills/payment-integration/references/sepay/sdk.md +213 -0
  1758. package/dist/skills/payment-integration/references/sepay/webhooks.md +208 -0
  1759. package/dist/skills/payment-integration/scripts/checkout-helper.js +244 -0
  1760. package/dist/skills/payment-integration/scripts/package.json +17 -0
  1761. package/dist/skills/payment-integration/scripts/polar-webhook-verify.js +202 -0
  1762. package/dist/skills/payment-integration/scripts/sepay-webhook-verify.js +193 -0
  1763. package/dist/skills/payment-integration/scripts/test-scripts.js +237 -0
  1764. package/dist/skills/planning/SKILL.md +121 -0
  1765. package/dist/skills/planning/references/codebase-understanding.md +62 -0
  1766. package/dist/skills/planning/references/output-standards.md +87 -0
  1767. package/dist/skills/planning/references/plan-organization.md +123 -0
  1768. package/dist/skills/planning/references/research-phase.md +49 -0
  1769. package/dist/skills/planning/references/solution-design.md +63 -0
  1770. package/dist/skills/problem-solving/SKILL.md +96 -0
  1771. package/dist/skills/problem-solving/references/attribution.md +69 -0
  1772. package/dist/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  1773. package/dist/skills/problem-solving/references/inversion-exercise.md +91 -0
  1774. package/dist/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  1775. package/dist/skills/problem-solving/references/scale-game.md +95 -0
  1776. package/dist/skills/problem-solving/references/simplification-cascades.md +80 -0
  1777. package/dist/skills/problem-solving/references/when-stuck.md +72 -0
  1778. package/dist/skills/repomix/SKILL.md +247 -0
  1779. package/dist/skills/repomix/references/configuration.md +211 -0
  1780. package/dist/skills/repomix/references/usage-patterns.md +232 -0
  1781. package/dist/skills/repomix/scripts/repomix_batch.py +455 -0
  1782. package/dist/skills/repomix/scripts/repos.example.json +15 -0
  1783. package/dist/skills/repomix/scripts/requirements.txt +15 -0
  1784. package/dist/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  1785. package/dist/skills/research/SKILL.md +168 -0
  1786. package/dist/skills/sequential-thinking/SKILL.md +94 -0
  1787. package/dist/skills/sequential-thinking/package.json +31 -0
  1788. package/dist/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  1789. package/dist/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  1790. package/dist/skills/sequential-thinking/references/core-patterns.md +95 -0
  1791. package/dist/skills/sequential-thinking/references/examples-api.md +88 -0
  1792. package/dist/skills/sequential-thinking/references/examples-architecture.md +94 -0
  1793. package/dist/skills/sequential-thinking/references/examples-debug.md +90 -0
  1794. package/dist/skills/sequential-thinking/scripts/format-thought.js +159 -0
  1795. package/dist/skills/sequential-thinking/scripts/process-thought.js +236 -0
  1796. package/dist/skills/sequential-thinking/tests/format-thought.test.js +133 -0
  1797. package/dist/skills/sequential-thinking/tests/process-thought.test.js +215 -0
  1798. package/dist/skills/shopify/SKILL.md +319 -0
  1799. package/dist/skills/shopify/references/app-development.md +470 -0
  1800. package/dist/skills/shopify/references/extensions.md +493 -0
  1801. package/dist/skills/shopify/references/themes.md +498 -0
  1802. package/dist/skills/shopify/scripts/requirements.txt +19 -0
  1803. package/dist/skills/shopify/scripts/shopify_init.py +423 -0
  1804. package/dist/skills/shopify/scripts/tests/test_shopify_init.py +385 -0
  1805. package/dist/skills/skill-creator/LICENSE.txt +202 -0
  1806. package/dist/skills/skill-creator/SKILL.md +266 -0
  1807. package/dist/skills/skill-creator/scripts/init_skill.py +303 -0
  1808. package/dist/skills/skill-creator/scripts/package_skill.py +110 -0
  1809. package/dist/skills/skill-creator/scripts/quick_validate.py +65 -0
  1810. package/dist/skills/template-skill/SKILL.md +6 -0
  1811. package/dist/skills/threejs/SKILL.md +89 -0
  1812. package/dist/skills/threejs/references/01-getting-started.md +177 -0
  1813. package/dist/skills/threejs/references/02-loaders.md +169 -0
  1814. package/dist/skills/threejs/references/03-textures.md +170 -0
  1815. package/dist/skills/threejs/references/04-cameras.md +195 -0
  1816. package/dist/skills/threejs/references/05-lights.md +183 -0
  1817. package/dist/skills/threejs/references/06-animations.md +214 -0
  1818. package/dist/skills/threejs/references/07-math.md +260 -0
  1819. package/dist/skills/threejs/references/08-interaction.md +267 -0
  1820. package/dist/skills/threejs/references/09-postprocessing.md +240 -0
  1821. package/dist/skills/threejs/references/10-controls.md +259 -0
  1822. package/dist/skills/threejs/references/11-materials-advanced.md +270 -0
  1823. package/dist/skills/threejs/references/12-performance.md +269 -0
  1824. package/dist/skills/threejs/references/13-node-materials.md +298 -0
  1825. package/dist/skills/threejs/references/14-physics-vr.md +304 -0
  1826. package/dist/skills/threejs/references/15-specialized-loaders.md +333 -0
  1827. package/dist/skills/threejs/references/16-webgpu.md +302 -0
  1828. package/dist/skills/ui-styling/LICENSE.txt +202 -0
  1829. package/dist/skills/ui-styling/SKILL.md +321 -0
  1830. package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  1831. package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1832. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1833. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  1834. package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1835. package/dist/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  1836. package/dist/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1837. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1838. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  1839. package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1840. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1841. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1842. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  1843. package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1844. package/dist/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  1845. package/dist/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  1846. package/dist/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  1847. package/dist/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1848. package/dist/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1849. package/dist/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  1850. package/dist/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1851. package/dist/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  1852. package/dist/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  1853. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1854. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  1855. package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1856. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1857. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1858. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1859. package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1860. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1861. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1862. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1863. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  1864. package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1865. package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1866. package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1867. package/dist/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  1868. package/dist/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  1869. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1870. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  1871. package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1872. package/dist/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  1873. package/dist/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  1874. package/dist/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  1875. package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  1876. package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1877. package/dist/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1878. package/dist/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1879. package/dist/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1880. package/dist/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  1881. package/dist/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1882. package/dist/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1883. package/dist/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  1884. package/dist/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1885. package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1886. package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1887. package/dist/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1888. package/dist/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  1889. package/dist/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1890. package/dist/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1891. package/dist/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1892. package/dist/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1893. package/dist/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1894. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1895. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1896. package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1897. package/dist/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1898. package/dist/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1899. package/dist/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1900. package/dist/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1901. package/dist/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1902. package/dist/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  1903. package/dist/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1904. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1905. package/dist/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1906. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1907. package/dist/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  1908. package/dist/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1909. package/dist/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1910. package/dist/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1911. package/dist/skills/ui-styling/references/canvas-design-system.md +320 -0
  1912. package/dist/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  1913. package/dist/skills/ui-styling/references/shadcn-components.md +424 -0
  1914. package/dist/skills/ui-styling/references/shadcn-theming.md +373 -0
  1915. package/dist/skills/ui-styling/references/tailwind-customization.md +483 -0
  1916. package/dist/skills/ui-styling/references/tailwind-responsive.md +382 -0
  1917. package/dist/skills/ui-styling/references/tailwind-utilities.md +455 -0
  1918. package/dist/skills/ui-styling/scripts/requirements.txt +17 -0
  1919. package/dist/skills/ui-styling/scripts/shadcn_add.py +292 -0
  1920. package/dist/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  1921. package/dist/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  1922. package/dist/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  1923. package/dist/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  1924. package/dist/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  1925. package/dist/skills/ui-ux-pro-max/SKILL.md +227 -0
  1926. package/dist/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1927. package/dist/skills/ui-ux-pro-max/data/colors.csv +97 -0
  1928. package/dist/skills/ui-ux-pro-max/data/landing.csv +31 -0
  1929. package/dist/skills/ui-ux-pro-max/data/products.csv +97 -0
  1930. package/dist/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  1931. package/dist/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  1932. package/dist/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +51 -0
  1933. package/dist/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  1934. package/dist/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1935. package/dist/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  1936. package/dist/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  1937. package/dist/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  1938. package/dist/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  1939. package/dist/skills/ui-ux-pro-max/data/styles.csv +59 -0
  1940. package/dist/skills/ui-ux-pro-max/data/typography.csv +58 -0
  1941. package/dist/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1942. package/dist/skills/ui-ux-pro-max/scripts/core.py +236 -0
  1943. package/dist/skills/ui-ux-pro-max/scripts/search.py +61 -0
  1944. package/dist/skills/web-frameworks/SKILL.md +324 -0
  1945. package/dist/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  1946. package/dist/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  1947. package/dist/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  1948. package/dist/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  1949. package/dist/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  1950. package/dist/skills/web-frameworks/references/turborepo-caching.md +551 -0
  1951. package/dist/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  1952. package/dist/skills/web-frameworks/references/turborepo-setup.md +542 -0
  1953. package/dist/skills/web-frameworks/scripts/__init__.py +0 -0
  1954. package/dist/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  1955. package/dist/skills/web-frameworks/scripts/requirements.txt +16 -0
  1956. package/dist/skills/web-frameworks/scripts/tests/coverage-web.json +1 -0
  1957. package/dist/skills/web-frameworks/scripts/tests/requirements.txt +3 -0
  1958. package/dist/skills/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  1959. package/dist/skills/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  1960. package/dist/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  1961. package/docs/ALL_COMMANDS.md +31 -73
  1962. package/docs/CI_CD.md +44 -0
  1963. package/docs/COMPARISON.md +65 -0
  1964. package/docs/ROADMAP.md +50 -159
  1965. package/docs/WORKFLOW.md +56 -317
  1966. package/package.json +16 -7
  1967. package/presets/ci-cd/ai-review.yml +49 -0
  1968. package/scripts/install-hooks.ps1 +21 -7
  1969. package/scripts/install-hooks.sh +18 -3
  1970. package/docs/CODEBASE.md +0 -178
  1971. package/docs/COMMAND_MAPPING.md +0 -217
  1972. package/docs/FAQ.md +0 -174
  1973. package/docs/ONBOARDING.md +0 -111
  1974. package/docs/ORCHESTRATION_RUNTIME.md +0 -173
  1975. package/docs/WALKTHROUGH.md +0 -192
  1976. package/src/cli.js +0 -449
  1977. package/src/commands/doctor.js +0 -106
  1978. package/src/commands/init.js +0 -340
  1979. package/src/commands/memory.js +0 -158
  1980. package/src/commands/uninstall.js +0 -152
  1981. package/src/commands/update.js +0 -163
  1982. package/src/lib/configManager.js +0 -200
  1983. package/src/lib/contextDatabase.js +0 -362
  1984. package/src/lib/detector.js +0 -140
  1985. package/src/lib/memoryManager.js +0 -250
  1986. package/src/lib/profiles.js +0 -100
  1987. package/src/lib/sizeCalculator.js +0 -121
  1988. package/src/lib/skillPacks.js +0 -109
  1989. /package/.cursor/{anchi-kit.config.yaml → anchi-toolkit.config.yaml} +0 -0
@@ -0,0 +1,1276 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Library for working with Word documents: comments, tracked changes, and editing.
4
+
5
+ Usage:
6
+ from skills.docx.scripts.document import Document
7
+
8
+ # Initialize
9
+ doc = Document('workspace/unpacked')
10
+ doc = Document('workspace/unpacked', author="John Doe", initials="JD")
11
+
12
+ # Find nodes
13
+ node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"})
14
+ node = doc["word/document.xml"].get_node(tag="w:p", line_number=10)
15
+
16
+ # Add comments
17
+ doc.add_comment(start=node, end=node, text="Comment text")
18
+ doc.reply_to_comment(parent_comment_id=0, text="Reply text")
19
+
20
+ # Suggest tracked changes
21
+ doc["word/document.xml"].suggest_deletion(node) # Delete content
22
+ doc["word/document.xml"].revert_insertion(ins_node) # Reject insertion
23
+ doc["word/document.xml"].revert_deletion(del_node) # Reject deletion
24
+
25
+ # Save
26
+ doc.save()
27
+ """
28
+
29
+ import html
30
+ import random
31
+ import shutil
32
+ import tempfile
33
+ from datetime import datetime, timezone
34
+ from pathlib import Path
35
+
36
+ from defusedxml import minidom
37
+ from ooxml.scripts.pack import pack_document
38
+ from ooxml.scripts.validation.docx import DOCXSchemaValidator
39
+ from ooxml.scripts.validation.redlining import RedliningValidator
40
+
41
+ from .utilities import XMLEditor
42
+
43
+ # Path to template files
44
+ TEMPLATE_DIR = Path(__file__).parent / "templates"
45
+
46
+
47
+ class DocxXMLEditor(XMLEditor):
48
+ """XMLEditor that automatically applies RSID, author, and date to new elements.
49
+
50
+ Automatically adds attributes to elements that support them when inserting new content:
51
+ - w:rsidR, w:rsidRDefault, w:rsidP (for w:p and w:r elements)
52
+ - w:author and w:date (for w:ins, w:del, w:comment elements)
53
+ - w:id (for w:ins and w:del elements)
54
+
55
+ Attributes:
56
+ dom (defusedxml.minidom.Document): The DOM document for direct manipulation
57
+ """
58
+
59
+ def __init__(
60
+ self, xml_path, rsid: str, author: str = "Claude", initials: str = "C"
61
+ ):
62
+ """Initialize with required RSID and optional author.
63
+
64
+ Args:
65
+ xml_path: Path to XML file to edit
66
+ rsid: RSID to automatically apply to new elements
67
+ author: Author name for tracked changes and comments (default: "Claude")
68
+ initials: Author initials (default: "C")
69
+ """
70
+ super().__init__(xml_path)
71
+ self.rsid = rsid
72
+ self.author = author
73
+ self.initials = initials
74
+
75
+ def _get_next_change_id(self):
76
+ """Get the next available change ID by checking all tracked change elements."""
77
+ max_id = -1
78
+ for tag in ("w:ins", "w:del"):
79
+ elements = self.dom.getElementsByTagName(tag)
80
+ for elem in elements:
81
+ change_id = elem.getAttribute("w:id")
82
+ if change_id:
83
+ try:
84
+ max_id = max(max_id, int(change_id))
85
+ except ValueError:
86
+ pass
87
+ return max_id + 1
88
+
89
+ def _ensure_w16du_namespace(self):
90
+ """Ensure w16du namespace is declared on the root element."""
91
+ root = self.dom.documentElement
92
+ if not root.hasAttribute("xmlns:w16du"): # type: ignore
93
+ root.setAttribute( # type: ignore
94
+ "xmlns:w16du",
95
+ "http://schemas.microsoft.com/office/word/2023/wordml/word16du",
96
+ )
97
+
98
+ def _ensure_w16cex_namespace(self):
99
+ """Ensure w16cex namespace is declared on the root element."""
100
+ root = self.dom.documentElement
101
+ if not root.hasAttribute("xmlns:w16cex"): # type: ignore
102
+ root.setAttribute( # type: ignore
103
+ "xmlns:w16cex",
104
+ "http://schemas.microsoft.com/office/word/2018/wordml/cex",
105
+ )
106
+
107
+ def _ensure_w14_namespace(self):
108
+ """Ensure w14 namespace is declared on the root element."""
109
+ root = self.dom.documentElement
110
+ if not root.hasAttribute("xmlns:w14"): # type: ignore
111
+ root.setAttribute( # type: ignore
112
+ "xmlns:w14",
113
+ "http://schemas.microsoft.com/office/word/2010/wordml",
114
+ )
115
+
116
+ def _inject_attributes_to_nodes(self, nodes):
117
+ """Inject RSID, author, and date attributes into DOM nodes where applicable.
118
+
119
+ Adds attributes to elements that support them:
120
+ - w:r: gets w:rsidR (or w:rsidDel if inside w:del)
121
+ - w:p: gets w:rsidR, w:rsidRDefault, w:rsidP, w14:paraId, w14:textId
122
+ - w:t: gets xml:space="preserve" if text has leading/trailing whitespace
123
+ - w:ins, w:del: get w:id, w:author, w:date, w16du:dateUtc
124
+ - w:comment: gets w:author, w:date, w:initials
125
+ - w16cex:commentExtensible: gets w16cex:dateUtc
126
+
127
+ Args:
128
+ nodes: List of DOM nodes to process
129
+ """
130
+ from datetime import datetime, timezone
131
+
132
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
133
+
134
+ def is_inside_deletion(elem):
135
+ """Check if element is inside a w:del element."""
136
+ parent = elem.parentNode
137
+ while parent:
138
+ if parent.nodeType == parent.ELEMENT_NODE and parent.tagName == "w:del":
139
+ return True
140
+ parent = parent.parentNode
141
+ return False
142
+
143
+ def add_rsid_to_p(elem):
144
+ if not elem.hasAttribute("w:rsidR"):
145
+ elem.setAttribute("w:rsidR", self.rsid)
146
+ if not elem.hasAttribute("w:rsidRDefault"):
147
+ elem.setAttribute("w:rsidRDefault", self.rsid)
148
+ if not elem.hasAttribute("w:rsidP"):
149
+ elem.setAttribute("w:rsidP", self.rsid)
150
+ # Add w14:paraId and w14:textId if not present
151
+ if not elem.hasAttribute("w14:paraId"):
152
+ self._ensure_w14_namespace()
153
+ elem.setAttribute("w14:paraId", _generate_hex_id())
154
+ if not elem.hasAttribute("w14:textId"):
155
+ self._ensure_w14_namespace()
156
+ elem.setAttribute("w14:textId", _generate_hex_id())
157
+
158
+ def add_rsid_to_r(elem):
159
+ # Use w:rsidDel for <w:r> inside <w:del>, otherwise w:rsidR
160
+ if is_inside_deletion(elem):
161
+ if not elem.hasAttribute("w:rsidDel"):
162
+ elem.setAttribute("w:rsidDel", self.rsid)
163
+ else:
164
+ if not elem.hasAttribute("w:rsidR"):
165
+ elem.setAttribute("w:rsidR", self.rsid)
166
+
167
+ def add_tracked_change_attrs(elem):
168
+ # Auto-assign w:id if not present
169
+ if not elem.hasAttribute("w:id"):
170
+ elem.setAttribute("w:id", str(self._get_next_change_id()))
171
+ if not elem.hasAttribute("w:author"):
172
+ elem.setAttribute("w:author", self.author)
173
+ if not elem.hasAttribute("w:date"):
174
+ elem.setAttribute("w:date", timestamp)
175
+ # Add w16du:dateUtc for tracked changes (same as w:date since we generate UTC timestamps)
176
+ if elem.tagName in ("w:ins", "w:del") and not elem.hasAttribute(
177
+ "w16du:dateUtc"
178
+ ):
179
+ self._ensure_w16du_namespace()
180
+ elem.setAttribute("w16du:dateUtc", timestamp)
181
+
182
+ def add_comment_attrs(elem):
183
+ if not elem.hasAttribute("w:author"):
184
+ elem.setAttribute("w:author", self.author)
185
+ if not elem.hasAttribute("w:date"):
186
+ elem.setAttribute("w:date", timestamp)
187
+ if not elem.hasAttribute("w:initials"):
188
+ elem.setAttribute("w:initials", self.initials)
189
+
190
+ def add_comment_extensible_date(elem):
191
+ # Add w16cex:dateUtc for comment extensible elements
192
+ if not elem.hasAttribute("w16cex:dateUtc"):
193
+ self._ensure_w16cex_namespace()
194
+ elem.setAttribute("w16cex:dateUtc", timestamp)
195
+
196
+ def add_xml_space_to_t(elem):
197
+ # Add xml:space="preserve" to w:t if text has leading/trailing whitespace
198
+ if (
199
+ elem.firstChild
200
+ and elem.firstChild.nodeType == elem.firstChild.TEXT_NODE
201
+ ):
202
+ text = elem.firstChild.data
203
+ if text and (text[0].isspace() or text[-1].isspace()):
204
+ if not elem.hasAttribute("xml:space"):
205
+ elem.setAttribute("xml:space", "preserve")
206
+
207
+ for node in nodes:
208
+ if node.nodeType != node.ELEMENT_NODE:
209
+ continue
210
+
211
+ # Handle the node itself
212
+ if node.tagName == "w:p":
213
+ add_rsid_to_p(node)
214
+ elif node.tagName == "w:r":
215
+ add_rsid_to_r(node)
216
+ elif node.tagName == "w:t":
217
+ add_xml_space_to_t(node)
218
+ elif node.tagName in ("w:ins", "w:del"):
219
+ add_tracked_change_attrs(node)
220
+ elif node.tagName == "w:comment":
221
+ add_comment_attrs(node)
222
+ elif node.tagName == "w16cex:commentExtensible":
223
+ add_comment_extensible_date(node)
224
+
225
+ # Process descendants (getElementsByTagName doesn't return the element itself)
226
+ for elem in node.getElementsByTagName("w:p"):
227
+ add_rsid_to_p(elem)
228
+ for elem in node.getElementsByTagName("w:r"):
229
+ add_rsid_to_r(elem)
230
+ for elem in node.getElementsByTagName("w:t"):
231
+ add_xml_space_to_t(elem)
232
+ for tag in ("w:ins", "w:del"):
233
+ for elem in node.getElementsByTagName(tag):
234
+ add_tracked_change_attrs(elem)
235
+ for elem in node.getElementsByTagName("w:comment"):
236
+ add_comment_attrs(elem)
237
+ for elem in node.getElementsByTagName("w16cex:commentExtensible"):
238
+ add_comment_extensible_date(elem)
239
+
240
+ def replace_node(self, elem, new_content):
241
+ """Replace node with automatic attribute injection."""
242
+ nodes = super().replace_node(elem, new_content)
243
+ self._inject_attributes_to_nodes(nodes)
244
+ return nodes
245
+
246
+ def insert_after(self, elem, xml_content):
247
+ """Insert after with automatic attribute injection."""
248
+ nodes = super().insert_after(elem, xml_content)
249
+ self._inject_attributes_to_nodes(nodes)
250
+ return nodes
251
+
252
+ def insert_before(self, elem, xml_content):
253
+ """Insert before with automatic attribute injection."""
254
+ nodes = super().insert_before(elem, xml_content)
255
+ self._inject_attributes_to_nodes(nodes)
256
+ return nodes
257
+
258
+ def append_to(self, elem, xml_content):
259
+ """Append to with automatic attribute injection."""
260
+ nodes = super().append_to(elem, xml_content)
261
+ self._inject_attributes_to_nodes(nodes)
262
+ return nodes
263
+
264
+ def revert_insertion(self, elem):
265
+ """Reject an insertion by wrapping its content in a deletion.
266
+
267
+ Wraps all runs inside w:ins in w:del, converting w:t to w:delText.
268
+ Can process a single w:ins element or a container element with multiple w:ins.
269
+
270
+ Args:
271
+ elem: Element to process (w:ins, w:p, w:body, etc.)
272
+
273
+ Returns:
274
+ list: List containing the processed element(s)
275
+
276
+ Raises:
277
+ ValueError: If the element contains no w:ins elements
278
+
279
+ Example:
280
+ # Reject a single insertion
281
+ ins = doc["word/document.xml"].get_node(tag="w:ins", attrs={"w:id": "5"})
282
+ doc["word/document.xml"].revert_insertion(ins)
283
+
284
+ # Reject all insertions in a paragraph
285
+ para = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
286
+ doc["word/document.xml"].revert_insertion(para)
287
+ """
288
+ # Collect insertions
289
+ ins_elements = []
290
+ if elem.tagName == "w:ins":
291
+ ins_elements.append(elem)
292
+ else:
293
+ ins_elements.extend(elem.getElementsByTagName("w:ins"))
294
+
295
+ # Validate that there are insertions to reject
296
+ if not ins_elements:
297
+ raise ValueError(
298
+ f"revert_insertion requires w:ins elements. "
299
+ f"The provided element <{elem.tagName}> contains no insertions. "
300
+ )
301
+
302
+ # Process all insertions - wrap all children in w:del
303
+ for ins_elem in ins_elements:
304
+ runs = list(ins_elem.getElementsByTagName("w:r"))
305
+ if not runs:
306
+ continue
307
+
308
+ # Create deletion wrapper
309
+ del_wrapper = self.dom.createElement("w:del")
310
+
311
+ # Process each run
312
+ for run in runs:
313
+ # Convert w:t → w:delText and w:rsidR → w:rsidDel
314
+ if run.hasAttribute("w:rsidR"):
315
+ run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR"))
316
+ run.removeAttribute("w:rsidR")
317
+ elif not run.hasAttribute("w:rsidDel"):
318
+ run.setAttribute("w:rsidDel", self.rsid)
319
+
320
+ for t_elem in list(run.getElementsByTagName("w:t")):
321
+ del_text = self.dom.createElement("w:delText")
322
+ # Copy ALL child nodes (not just firstChild) to handle entities
323
+ while t_elem.firstChild:
324
+ del_text.appendChild(t_elem.firstChild)
325
+ for i in range(t_elem.attributes.length):
326
+ attr = t_elem.attributes.item(i)
327
+ del_text.setAttribute(attr.name, attr.value)
328
+ t_elem.parentNode.replaceChild(del_text, t_elem)
329
+
330
+ # Move all children from ins to del wrapper
331
+ while ins_elem.firstChild:
332
+ del_wrapper.appendChild(ins_elem.firstChild)
333
+
334
+ # Add del wrapper back to ins
335
+ ins_elem.appendChild(del_wrapper)
336
+
337
+ # Inject attributes to the deletion wrapper
338
+ self._inject_attributes_to_nodes([del_wrapper])
339
+
340
+ return [elem]
341
+
342
+ def revert_deletion(self, elem):
343
+ """Reject a deletion by re-inserting the deleted content.
344
+
345
+ Creates w:ins elements after each w:del, copying deleted content and
346
+ converting w:delText back to w:t.
347
+ Can process a single w:del element or a container element with multiple w:del.
348
+
349
+ Args:
350
+ elem: Element to process (w:del, w:p, w:body, etc.)
351
+
352
+ Returns:
353
+ list: If elem is w:del, returns [elem, new_ins]. Otherwise returns [elem].
354
+
355
+ Raises:
356
+ ValueError: If the element contains no w:del elements
357
+
358
+ Example:
359
+ # Reject a single deletion - returns [w:del, w:ins]
360
+ del_elem = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "3"})
361
+ nodes = doc["word/document.xml"].revert_deletion(del_elem)
362
+
363
+ # Reject all deletions in a paragraph - returns [para]
364
+ para = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
365
+ nodes = doc["word/document.xml"].revert_deletion(para)
366
+ """
367
+ # Collect deletions FIRST - before we modify the DOM
368
+ del_elements = []
369
+ is_single_del = elem.tagName == "w:del"
370
+
371
+ if is_single_del:
372
+ del_elements.append(elem)
373
+ else:
374
+ del_elements.extend(elem.getElementsByTagName("w:del"))
375
+
376
+ # Validate that there are deletions to reject
377
+ if not del_elements:
378
+ raise ValueError(
379
+ f"revert_deletion requires w:del elements. "
380
+ f"The provided element <{elem.tagName}> contains no deletions. "
381
+ )
382
+
383
+ # Track created insertion (only relevant if elem is a single w:del)
384
+ created_insertion = None
385
+
386
+ # Process all deletions - create insertions that copy the deleted content
387
+ for del_elem in del_elements:
388
+ # Clone the deleted runs and convert them to insertions
389
+ runs = list(del_elem.getElementsByTagName("w:r"))
390
+ if not runs:
391
+ continue
392
+
393
+ # Create insertion wrapper
394
+ ins_elem = self.dom.createElement("w:ins")
395
+
396
+ for run in runs:
397
+ # Clone the run
398
+ new_run = run.cloneNode(True)
399
+
400
+ # Convert w:delText → w:t
401
+ for del_text in list(new_run.getElementsByTagName("w:delText")):
402
+ t_elem = self.dom.createElement("w:t")
403
+ # Copy ALL child nodes (not just firstChild) to handle entities
404
+ while del_text.firstChild:
405
+ t_elem.appendChild(del_text.firstChild)
406
+ for i in range(del_text.attributes.length):
407
+ attr = del_text.attributes.item(i)
408
+ t_elem.setAttribute(attr.name, attr.value)
409
+ del_text.parentNode.replaceChild(t_elem, del_text)
410
+
411
+ # Update run attributes: w:rsidDel → w:rsidR
412
+ if new_run.hasAttribute("w:rsidDel"):
413
+ new_run.setAttribute("w:rsidR", new_run.getAttribute("w:rsidDel"))
414
+ new_run.removeAttribute("w:rsidDel")
415
+ elif not new_run.hasAttribute("w:rsidR"):
416
+ new_run.setAttribute("w:rsidR", self.rsid)
417
+
418
+ ins_elem.appendChild(new_run)
419
+
420
+ # Insert the new insertion after the deletion
421
+ nodes = self.insert_after(del_elem, ins_elem.toxml())
422
+
423
+ # If processing a single w:del, track the created insertion
424
+ if is_single_del and nodes:
425
+ created_insertion = nodes[0]
426
+
427
+ # Return based on input type
428
+ if is_single_del and created_insertion:
429
+ return [elem, created_insertion]
430
+ else:
431
+ return [elem]
432
+
433
+ @staticmethod
434
+ def suggest_paragraph(xml_content: str) -> str:
435
+ """Transform paragraph XML to add tracked change wrapping for insertion.
436
+
437
+ Wraps runs in <w:ins> and adds <w:ins/> to w:rPr in w:pPr for numbered lists.
438
+
439
+ Args:
440
+ xml_content: XML string containing a <w:p> element
441
+
442
+ Returns:
443
+ str: Transformed XML with tracked change wrapping
444
+ """
445
+ wrapper = f'<root xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">{xml_content}</root>'
446
+ doc = minidom.parseString(wrapper)
447
+ para = doc.getElementsByTagName("w:p")[0]
448
+
449
+ # Ensure w:pPr exists
450
+ pPr_list = para.getElementsByTagName("w:pPr")
451
+ if not pPr_list:
452
+ pPr = doc.createElement("w:pPr")
453
+ para.insertBefore(
454
+ pPr, para.firstChild
455
+ ) if para.firstChild else para.appendChild(pPr)
456
+ else:
457
+ pPr = pPr_list[0]
458
+
459
+ # Ensure w:rPr exists in w:pPr
460
+ rPr_list = pPr.getElementsByTagName("w:rPr")
461
+ if not rPr_list:
462
+ rPr = doc.createElement("w:rPr")
463
+ pPr.appendChild(rPr)
464
+ else:
465
+ rPr = rPr_list[0]
466
+
467
+ # Add <w:ins/> to w:rPr
468
+ ins_marker = doc.createElement("w:ins")
469
+ rPr.insertBefore(
470
+ ins_marker, rPr.firstChild
471
+ ) if rPr.firstChild else rPr.appendChild(ins_marker)
472
+
473
+ # Wrap all non-pPr children in <w:ins>
474
+ ins_wrapper = doc.createElement("w:ins")
475
+ for child in [c for c in para.childNodes if c.nodeName != "w:pPr"]:
476
+ para.removeChild(child)
477
+ ins_wrapper.appendChild(child)
478
+ para.appendChild(ins_wrapper)
479
+
480
+ return para.toxml()
481
+
482
+ def suggest_deletion(self, elem):
483
+ """Mark a w:r or w:p element as deleted with tracked changes (in-place DOM manipulation).
484
+
485
+ For w:r: wraps in <w:del>, converts <w:t> to <w:delText>, preserves w:rPr
486
+ For w:p (regular): wraps content in <w:del>, converts <w:t> to <w:delText>
487
+ For w:p (numbered list): adds <w:del/> to w:rPr in w:pPr, wraps content in <w:del>
488
+
489
+ Args:
490
+ elem: A w:r or w:p DOM element without existing tracked changes
491
+
492
+ Returns:
493
+ Element: The modified element
494
+
495
+ Raises:
496
+ ValueError: If element has existing tracked changes or invalid structure
497
+ """
498
+ if elem.nodeName == "w:r":
499
+ # Check for existing w:delText
500
+ if elem.getElementsByTagName("w:delText"):
501
+ raise ValueError("w:r element already contains w:delText")
502
+
503
+ # Convert w:t → w:delText
504
+ for t_elem in list(elem.getElementsByTagName("w:t")):
505
+ del_text = self.dom.createElement("w:delText")
506
+ # Copy ALL child nodes (not just firstChild) to handle entities
507
+ while t_elem.firstChild:
508
+ del_text.appendChild(t_elem.firstChild)
509
+ # Preserve attributes like xml:space
510
+ for i in range(t_elem.attributes.length):
511
+ attr = t_elem.attributes.item(i)
512
+ del_text.setAttribute(attr.name, attr.value)
513
+ t_elem.parentNode.replaceChild(del_text, t_elem)
514
+
515
+ # Update run attributes: w:rsidR → w:rsidDel
516
+ if elem.hasAttribute("w:rsidR"):
517
+ elem.setAttribute("w:rsidDel", elem.getAttribute("w:rsidR"))
518
+ elem.removeAttribute("w:rsidR")
519
+ elif not elem.hasAttribute("w:rsidDel"):
520
+ elem.setAttribute("w:rsidDel", self.rsid)
521
+
522
+ # Wrap in w:del
523
+ del_wrapper = self.dom.createElement("w:del")
524
+ parent = elem.parentNode
525
+ parent.insertBefore(del_wrapper, elem)
526
+ parent.removeChild(elem)
527
+ del_wrapper.appendChild(elem)
528
+
529
+ # Inject attributes to the deletion wrapper
530
+ self._inject_attributes_to_nodes([del_wrapper])
531
+
532
+ return del_wrapper
533
+
534
+ elif elem.nodeName == "w:p":
535
+ # Check for existing tracked changes
536
+ if elem.getElementsByTagName("w:ins") or elem.getElementsByTagName("w:del"):
537
+ raise ValueError("w:p element already contains tracked changes")
538
+
539
+ # Check if it's a numbered list item
540
+ pPr_list = elem.getElementsByTagName("w:pPr")
541
+ is_numbered = pPr_list and pPr_list[0].getElementsByTagName("w:numPr")
542
+
543
+ if is_numbered:
544
+ # Add <w:del/> to w:rPr in w:pPr
545
+ pPr = pPr_list[0]
546
+ rPr_list = pPr.getElementsByTagName("w:rPr")
547
+
548
+ if not rPr_list:
549
+ rPr = self.dom.createElement("w:rPr")
550
+ pPr.appendChild(rPr)
551
+ else:
552
+ rPr = rPr_list[0]
553
+
554
+ # Add <w:del/> marker
555
+ del_marker = self.dom.createElement("w:del")
556
+ rPr.insertBefore(
557
+ del_marker, rPr.firstChild
558
+ ) if rPr.firstChild else rPr.appendChild(del_marker)
559
+
560
+ # Convert w:t → w:delText in all runs
561
+ for t_elem in list(elem.getElementsByTagName("w:t")):
562
+ del_text = self.dom.createElement("w:delText")
563
+ # Copy ALL child nodes (not just firstChild) to handle entities
564
+ while t_elem.firstChild:
565
+ del_text.appendChild(t_elem.firstChild)
566
+ # Preserve attributes like xml:space
567
+ for i in range(t_elem.attributes.length):
568
+ attr = t_elem.attributes.item(i)
569
+ del_text.setAttribute(attr.name, attr.value)
570
+ t_elem.parentNode.replaceChild(del_text, t_elem)
571
+
572
+ # Update run attributes: w:rsidR → w:rsidDel
573
+ for run in elem.getElementsByTagName("w:r"):
574
+ if run.hasAttribute("w:rsidR"):
575
+ run.setAttribute("w:rsidDel", run.getAttribute("w:rsidR"))
576
+ run.removeAttribute("w:rsidR")
577
+ elif not run.hasAttribute("w:rsidDel"):
578
+ run.setAttribute("w:rsidDel", self.rsid)
579
+
580
+ # Wrap all non-pPr children in <w:del>
581
+ del_wrapper = self.dom.createElement("w:del")
582
+ for child in [c for c in elem.childNodes if c.nodeName != "w:pPr"]:
583
+ elem.removeChild(child)
584
+ del_wrapper.appendChild(child)
585
+ elem.appendChild(del_wrapper)
586
+
587
+ # Inject attributes to the deletion wrapper
588
+ self._inject_attributes_to_nodes([del_wrapper])
589
+
590
+ return elem
591
+
592
+ else:
593
+ raise ValueError(f"Element must be w:r or w:p, got {elem.nodeName}")
594
+
595
+
596
+ def _generate_hex_id() -> str:
597
+ """Generate random 8-character hex ID for para/durable IDs.
598
+
599
+ Values are constrained to be less than 0x7FFFFFFF per OOXML spec:
600
+ - paraId must be < 0x80000000
601
+ - durableId must be < 0x7FFFFFFF
602
+ We use the stricter constraint (0x7FFFFFFF) for both.
603
+ """
604
+ return f"{random.randint(1, 0x7FFFFFFE):08X}"
605
+
606
+
607
+ def _generate_rsid() -> str:
608
+ """Generate random 8-character hex RSID."""
609
+ return "".join(random.choices("0123456789ABCDEF", k=8))
610
+
611
+
612
+ class Document:
613
+ """Manages comments in unpacked Word documents."""
614
+
615
+ def __init__(
616
+ self,
617
+ unpacked_dir,
618
+ rsid=None,
619
+ track_revisions=False,
620
+ author="Claude",
621
+ initials="C",
622
+ ):
623
+ """
624
+ Initialize with path to unpacked Word document directory.
625
+ Automatically sets up comment infrastructure (people.xml, RSIDs).
626
+
627
+ Args:
628
+ unpacked_dir: Path to unpacked DOCX directory (must contain word/ subdirectory)
629
+ rsid: Optional RSID to use for all comment elements. If not provided, one will be generated.
630
+ track_revisions: If True, enables track revisions in settings.xml (default: False)
631
+ author: Default author name for comments (default: "Claude")
632
+ initials: Default author initials for comments (default: "C")
633
+ """
634
+ self.original_path = Path(unpacked_dir)
635
+
636
+ if not self.original_path.exists() or not self.original_path.is_dir():
637
+ raise ValueError(f"Directory not found: {unpacked_dir}")
638
+
639
+ # Create temporary directory with subdirectories for unpacked content and baseline
640
+ self.temp_dir = tempfile.mkdtemp(prefix="docx_")
641
+ self.unpacked_path = Path(self.temp_dir) / "unpacked"
642
+ shutil.copytree(self.original_path, self.unpacked_path)
643
+
644
+ # Pack original directory into temporary .docx for validation baseline (outside unpacked dir)
645
+ self.original_docx = Path(self.temp_dir) / "original.docx"
646
+ pack_document(self.original_path, self.original_docx, validate=False)
647
+
648
+ self.word_path = self.unpacked_path / "word"
649
+
650
+ # Generate RSID if not provided
651
+ self.rsid = rsid if rsid else _generate_rsid()
652
+ print(f"Using RSID: {self.rsid}")
653
+
654
+ # Set default author and initials
655
+ self.author = author
656
+ self.initials = initials
657
+
658
+ # Cache for lazy-loaded editors
659
+ self._editors = {}
660
+
661
+ # Comment file paths
662
+ self.comments_path = self.word_path / "comments.xml"
663
+ self.comments_extended_path = self.word_path / "commentsExtended.xml"
664
+ self.comments_ids_path = self.word_path / "commentsIds.xml"
665
+ self.comments_extensible_path = self.word_path / "commentsExtensible.xml"
666
+
667
+ # Load existing comments and determine next ID (before setup modifies files)
668
+ self.existing_comments = self._load_existing_comments()
669
+ self.next_comment_id = self._get_next_comment_id()
670
+
671
+ # Convenient access to document.xml editor (semi-private)
672
+ self._document = self["word/document.xml"]
673
+
674
+ # Setup tracked changes infrastructure
675
+ self._setup_tracking(track_revisions=track_revisions)
676
+
677
+ # Add author to people.xml
678
+ self._add_author_to_people(author)
679
+
680
+ def __getitem__(self, xml_path: str) -> DocxXMLEditor:
681
+ """
682
+ Get or create a DocxXMLEditor for the specified XML file.
683
+
684
+ Enables lazy-loaded editors with bracket notation:
685
+ node = doc["word/document.xml"].get_node(tag="w:p", line_number=42)
686
+
687
+ Args:
688
+ xml_path: Relative path to XML file (e.g., "word/document.xml", "word/comments.xml")
689
+
690
+ Returns:
691
+ DocxXMLEditor instance for the specified file
692
+
693
+ Raises:
694
+ ValueError: If the file does not exist
695
+
696
+ Example:
697
+ # Get node from document.xml
698
+ node = doc["word/document.xml"].get_node(tag="w:del", attrs={"w:id": "1"})
699
+
700
+ # Get node from comments.xml
701
+ comment = doc["word/comments.xml"].get_node(tag="w:comment", attrs={"w:id": "0"})
702
+ """
703
+ if xml_path not in self._editors:
704
+ file_path = self.unpacked_path / xml_path
705
+ if not file_path.exists():
706
+ raise ValueError(f"XML file not found: {xml_path}")
707
+ # Use DocxXMLEditor with RSID, author, and initials for all editors
708
+ self._editors[xml_path] = DocxXMLEditor(
709
+ file_path, rsid=self.rsid, author=self.author, initials=self.initials
710
+ )
711
+ return self._editors[xml_path]
712
+
713
+ def add_comment(self, start, end, text: str) -> int:
714
+ """
715
+ Add a comment spanning from one element to another.
716
+
717
+ Args:
718
+ start: DOM element for the starting point
719
+ end: DOM element for the ending point
720
+ text: Comment content
721
+
722
+ Returns:
723
+ The comment ID that was created
724
+
725
+ Example:
726
+ start_node = cm.get_document_node(tag="w:del", id="1")
727
+ end_node = cm.get_document_node(tag="w:ins", id="2")
728
+ cm.add_comment(start=start_node, end=end_node, text="Explanation")
729
+ """
730
+ comment_id = self.next_comment_id
731
+ para_id = _generate_hex_id()
732
+ durable_id = _generate_hex_id()
733
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
734
+
735
+ # Add comment ranges to document.xml immediately
736
+ self._document.insert_before(start, self._comment_range_start_xml(comment_id))
737
+
738
+ # If end node is a paragraph, append comment markup inside it
739
+ # Otherwise insert after it (for run-level anchors)
740
+ if end.tagName == "w:p":
741
+ self._document.append_to(end, self._comment_range_end_xml(comment_id))
742
+ else:
743
+ self._document.insert_after(end, self._comment_range_end_xml(comment_id))
744
+
745
+ # Add to comments.xml immediately
746
+ self._add_to_comments_xml(
747
+ comment_id, para_id, text, self.author, self.initials, timestamp
748
+ )
749
+
750
+ # Add to commentsExtended.xml immediately
751
+ self._add_to_comments_extended_xml(para_id, parent_para_id=None)
752
+
753
+ # Add to commentsIds.xml immediately
754
+ self._add_to_comments_ids_xml(para_id, durable_id)
755
+
756
+ # Add to commentsExtensible.xml immediately
757
+ self._add_to_comments_extensible_xml(durable_id)
758
+
759
+ # Update existing_comments so replies work
760
+ self.existing_comments[comment_id] = {"para_id": para_id}
761
+
762
+ self.next_comment_id += 1
763
+ return comment_id
764
+
765
+ def reply_to_comment(
766
+ self,
767
+ parent_comment_id: int,
768
+ text: str,
769
+ ) -> int:
770
+ """
771
+ Add a reply to an existing comment.
772
+
773
+ Args:
774
+ parent_comment_id: The w:id of the parent comment to reply to
775
+ text: Reply text
776
+
777
+ Returns:
778
+ The comment ID that was created for the reply
779
+
780
+ Example:
781
+ cm.reply_to_comment(parent_comment_id=0, text="I agree with this change")
782
+ """
783
+ if parent_comment_id not in self.existing_comments:
784
+ raise ValueError(f"Parent comment with id={parent_comment_id} not found")
785
+
786
+ parent_info = self.existing_comments[parent_comment_id]
787
+ comment_id = self.next_comment_id
788
+ para_id = _generate_hex_id()
789
+ durable_id = _generate_hex_id()
790
+ timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
791
+
792
+ # Add comment ranges to document.xml immediately
793
+ parent_start_elem = self._document.get_node(
794
+ tag="w:commentRangeStart", attrs={"w:id": str(parent_comment_id)}
795
+ )
796
+ parent_ref_elem = self._document.get_node(
797
+ tag="w:commentReference", attrs={"w:id": str(parent_comment_id)}
798
+ )
799
+
800
+ self._document.insert_after(
801
+ parent_start_elem, self._comment_range_start_xml(comment_id)
802
+ )
803
+ parent_ref_run = parent_ref_elem.parentNode
804
+ self._document.insert_after(
805
+ parent_ref_run, f'<w:commentRangeEnd w:id="{comment_id}"/>'
806
+ )
807
+ self._document.insert_after(
808
+ parent_ref_run, self._comment_ref_run_xml(comment_id)
809
+ )
810
+
811
+ # Add to comments.xml immediately
812
+ self._add_to_comments_xml(
813
+ comment_id, para_id, text, self.author, self.initials, timestamp
814
+ )
815
+
816
+ # Add to commentsExtended.xml immediately (with parent)
817
+ self._add_to_comments_extended_xml(
818
+ para_id, parent_para_id=parent_info["para_id"]
819
+ )
820
+
821
+ # Add to commentsIds.xml immediately
822
+ self._add_to_comments_ids_xml(para_id, durable_id)
823
+
824
+ # Add to commentsExtensible.xml immediately
825
+ self._add_to_comments_extensible_xml(durable_id)
826
+
827
+ # Update existing_comments so replies work
828
+ self.existing_comments[comment_id] = {"para_id": para_id}
829
+
830
+ self.next_comment_id += 1
831
+ return comment_id
832
+
833
+ def __del__(self):
834
+ """Clean up temporary directory on deletion."""
835
+ if hasattr(self, "temp_dir") and Path(self.temp_dir).exists():
836
+ shutil.rmtree(self.temp_dir)
837
+
838
+ def validate(self) -> None:
839
+ """
840
+ Validate the document against XSD schema and redlining rules.
841
+
842
+ Raises:
843
+ ValueError: If validation fails.
844
+ """
845
+ # Create validators with current state
846
+ schema_validator = DOCXSchemaValidator(
847
+ self.unpacked_path, self.original_docx, verbose=False
848
+ )
849
+ redlining_validator = RedliningValidator(
850
+ self.unpacked_path, self.original_docx, verbose=False
851
+ )
852
+
853
+ # Run validations
854
+ if not schema_validator.validate():
855
+ raise ValueError("Schema validation failed")
856
+ if not redlining_validator.validate():
857
+ raise ValueError("Redlining validation failed")
858
+
859
+ def save(self, destination=None, validate=True) -> None:
860
+ """
861
+ Save all modified XML files to disk and copy to destination directory.
862
+
863
+ This persists all changes made via add_comment() and reply_to_comment().
864
+
865
+ Args:
866
+ destination: Optional path to save to. If None, saves back to original directory.
867
+ validate: If True, validates document before saving (default: True).
868
+ """
869
+ # Only ensure comment relationships and content types if comment files exist
870
+ if self.comments_path.exists():
871
+ self._ensure_comment_relationships()
872
+ self._ensure_comment_content_types()
873
+
874
+ # Save all modified XML files in temp directory
875
+ for editor in self._editors.values():
876
+ editor.save()
877
+
878
+ # Validate by default
879
+ if validate:
880
+ self.validate()
881
+
882
+ # Copy contents from temp directory to destination (or original directory)
883
+ target_path = Path(destination) if destination else self.original_path
884
+ shutil.copytree(self.unpacked_path, target_path, dirs_exist_ok=True)
885
+
886
+ # ==================== Private: Initialization ====================
887
+
888
+ def _get_next_comment_id(self):
889
+ """Get the next available comment ID."""
890
+ if not self.comments_path.exists():
891
+ return 0
892
+
893
+ editor = self["word/comments.xml"]
894
+ max_id = -1
895
+ for comment_elem in editor.dom.getElementsByTagName("w:comment"):
896
+ comment_id = comment_elem.getAttribute("w:id")
897
+ if comment_id:
898
+ try:
899
+ max_id = max(max_id, int(comment_id))
900
+ except ValueError:
901
+ pass
902
+ return max_id + 1
903
+
904
+ def _load_existing_comments(self):
905
+ """Load existing comments from files to enable replies."""
906
+ if not self.comments_path.exists():
907
+ return {}
908
+
909
+ editor = self["word/comments.xml"]
910
+ existing = {}
911
+
912
+ for comment_elem in editor.dom.getElementsByTagName("w:comment"):
913
+ comment_id = comment_elem.getAttribute("w:id")
914
+ if not comment_id:
915
+ continue
916
+
917
+ # Find para_id from the w:p element within the comment
918
+ para_id = None
919
+ for p_elem in comment_elem.getElementsByTagName("w:p"):
920
+ para_id = p_elem.getAttribute("w14:paraId")
921
+ if para_id:
922
+ break
923
+
924
+ if not para_id:
925
+ continue
926
+
927
+ existing[int(comment_id)] = {"para_id": para_id}
928
+
929
+ return existing
930
+
931
+ # ==================== Private: Setup Methods ====================
932
+
933
+ def _setup_tracking(self, track_revisions=False):
934
+ """Set up comment infrastructure in unpacked directory.
935
+
936
+ Args:
937
+ track_revisions: If True, enables track revisions in settings.xml
938
+ """
939
+ # Create or update word/people.xml
940
+ people_file = self.word_path / "people.xml"
941
+ self._update_people_xml(people_file)
942
+
943
+ # Update XML files
944
+ self._add_content_type_for_people(self.unpacked_path / "[Content_Types].xml")
945
+ self._add_relationship_for_people(
946
+ self.word_path / "_rels" / "document.xml.rels"
947
+ )
948
+
949
+ # Always add RSID to settings.xml, optionally enable trackRevisions
950
+ self._update_settings(
951
+ self.word_path / "settings.xml", track_revisions=track_revisions
952
+ )
953
+
954
+ def _update_people_xml(self, path):
955
+ """Create people.xml if it doesn't exist."""
956
+ if not path.exists():
957
+ # Copy from template
958
+ shutil.copy(TEMPLATE_DIR / "people.xml", path)
959
+
960
+ def _add_content_type_for_people(self, path):
961
+ """Add people.xml content type to [Content_Types].xml if not already present."""
962
+ editor = self["[Content_Types].xml"]
963
+
964
+ if self._has_override(editor, "/word/people.xml"):
965
+ return
966
+
967
+ # Add Override element
968
+ root = editor.dom.documentElement
969
+ override_xml = '<Override PartName="/word/people.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.people+xml"/>'
970
+ editor.append_to(root, override_xml)
971
+
972
+ def _add_relationship_for_people(self, path):
973
+ """Add people.xml relationship to document.xml.rels if not already present."""
974
+ editor = self["word/_rels/document.xml.rels"]
975
+
976
+ if self._has_relationship(editor, "people.xml"):
977
+ return
978
+
979
+ root = editor.dom.documentElement
980
+ root_tag = root.tagName # type: ignore
981
+ prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else ""
982
+ next_rid = editor.get_next_rid()
983
+
984
+ # Create the relationship entry
985
+ rel_xml = f'<{prefix}Relationship Id="{next_rid}" Type="http://schemas.microsoft.com/office/2011/relationships/people" Target="people.xml"/>'
986
+ editor.append_to(root, rel_xml)
987
+
988
+ def _update_settings(self, path, track_revisions=False):
989
+ """Add RSID and optionally enable track revisions in settings.xml.
990
+
991
+ Args:
992
+ path: Path to settings.xml
993
+ track_revisions: If True, adds trackRevisions element
994
+
995
+ Places elements per OOXML schema order:
996
+ - trackRevisions: early (before defaultTabStop)
997
+ - rsids: late (after compat)
998
+ """
999
+ editor = self["word/settings.xml"]
1000
+ root = editor.get_node(tag="w:settings")
1001
+ prefix = root.tagName.split(":")[0] if ":" in root.tagName else "w"
1002
+
1003
+ # Conditionally add trackRevisions if requested
1004
+ if track_revisions:
1005
+ track_revisions_exists = any(
1006
+ elem.tagName == f"{prefix}:trackRevisions"
1007
+ for elem in editor.dom.getElementsByTagName(f"{prefix}:trackRevisions")
1008
+ )
1009
+
1010
+ if not track_revisions_exists:
1011
+ track_rev_xml = f"<{prefix}:trackRevisions/>"
1012
+ # Try to insert before documentProtection, defaultTabStop, or at start
1013
+ inserted = False
1014
+ for tag in [f"{prefix}:documentProtection", f"{prefix}:defaultTabStop"]:
1015
+ elements = editor.dom.getElementsByTagName(tag)
1016
+ if elements:
1017
+ editor.insert_before(elements[0], track_rev_xml)
1018
+ inserted = True
1019
+ break
1020
+ if not inserted:
1021
+ # Insert as first child of settings
1022
+ if root.firstChild:
1023
+ editor.insert_before(root.firstChild, track_rev_xml)
1024
+ else:
1025
+ editor.append_to(root, track_rev_xml)
1026
+
1027
+ # Always check if rsids section exists
1028
+ rsids_elements = editor.dom.getElementsByTagName(f"{prefix}:rsids")
1029
+
1030
+ if not rsids_elements:
1031
+ # Add new rsids section
1032
+ rsids_xml = f'''<{prefix}:rsids>
1033
+ <{prefix}:rsidRoot {prefix}:val="{self.rsid}"/>
1034
+ <{prefix}:rsid {prefix}:val="{self.rsid}"/>
1035
+ </{prefix}:rsids>'''
1036
+
1037
+ # Try to insert after compat, before clrSchemeMapping, or before closing tag
1038
+ inserted = False
1039
+ compat_elements = editor.dom.getElementsByTagName(f"{prefix}:compat")
1040
+ if compat_elements:
1041
+ editor.insert_after(compat_elements[0], rsids_xml)
1042
+ inserted = True
1043
+
1044
+ if not inserted:
1045
+ clr_elements = editor.dom.getElementsByTagName(
1046
+ f"{prefix}:clrSchemeMapping"
1047
+ )
1048
+ if clr_elements:
1049
+ editor.insert_before(clr_elements[0], rsids_xml)
1050
+ inserted = True
1051
+
1052
+ if not inserted:
1053
+ editor.append_to(root, rsids_xml)
1054
+ else:
1055
+ # Check if this rsid already exists
1056
+ rsids_elem = rsids_elements[0]
1057
+ rsid_exists = any(
1058
+ elem.getAttribute(f"{prefix}:val") == self.rsid
1059
+ for elem in rsids_elem.getElementsByTagName(f"{prefix}:rsid")
1060
+ )
1061
+
1062
+ if not rsid_exists:
1063
+ rsid_xml = f'<{prefix}:rsid {prefix}:val="{self.rsid}"/>'
1064
+ editor.append_to(rsids_elem, rsid_xml)
1065
+
1066
+ # ==================== Private: XML File Creation ====================
1067
+
1068
+ def _add_to_comments_xml(
1069
+ self, comment_id, para_id, text, author, initials, timestamp
1070
+ ):
1071
+ """Add a single comment to comments.xml."""
1072
+ if not self.comments_path.exists():
1073
+ shutil.copy(TEMPLATE_DIR / "comments.xml", self.comments_path)
1074
+
1075
+ editor = self["word/comments.xml"]
1076
+ root = editor.get_node(tag="w:comments")
1077
+
1078
+ escaped_text = (
1079
+ text.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")
1080
+ )
1081
+ # Note: w:rsidR, w:rsidRDefault, w:rsidP on w:p, w:rsidR on w:r,
1082
+ # and w:author, w:date, w:initials on w:comment are automatically added by DocxXMLEditor
1083
+ comment_xml = f'''<w:comment w:id="{comment_id}">
1084
+ <w:p w14:paraId="{para_id}" w14:textId="77777777">
1085
+ <w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr><w:annotationRef/></w:r>
1086
+ <w:r><w:rPr><w:color w:val="000000"/><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr><w:t>{escaped_text}</w:t></w:r>
1087
+ </w:p>
1088
+ </w:comment>'''
1089
+ editor.append_to(root, comment_xml)
1090
+
1091
+ def _add_to_comments_extended_xml(self, para_id, parent_para_id):
1092
+ """Add a single comment to commentsExtended.xml."""
1093
+ if not self.comments_extended_path.exists():
1094
+ shutil.copy(
1095
+ TEMPLATE_DIR / "commentsExtended.xml", self.comments_extended_path
1096
+ )
1097
+
1098
+ editor = self["word/commentsExtended.xml"]
1099
+ root = editor.get_node(tag="w15:commentsEx")
1100
+
1101
+ if parent_para_id:
1102
+ xml = f'<w15:commentEx w15:paraId="{para_id}" w15:paraIdParent="{parent_para_id}" w15:done="0"/>'
1103
+ else:
1104
+ xml = f'<w15:commentEx w15:paraId="{para_id}" w15:done="0"/>'
1105
+ editor.append_to(root, xml)
1106
+
1107
+ def _add_to_comments_ids_xml(self, para_id, durable_id):
1108
+ """Add a single comment to commentsIds.xml."""
1109
+ if not self.comments_ids_path.exists():
1110
+ shutil.copy(TEMPLATE_DIR / "commentsIds.xml", self.comments_ids_path)
1111
+
1112
+ editor = self["word/commentsIds.xml"]
1113
+ root = editor.get_node(tag="w16cid:commentsIds")
1114
+
1115
+ xml = f'<w16cid:commentId w16cid:paraId="{para_id}" w16cid:durableId="{durable_id}"/>'
1116
+ editor.append_to(root, xml)
1117
+
1118
+ def _add_to_comments_extensible_xml(self, durable_id):
1119
+ """Add a single comment to commentsExtensible.xml."""
1120
+ if not self.comments_extensible_path.exists():
1121
+ shutil.copy(
1122
+ TEMPLATE_DIR / "commentsExtensible.xml", self.comments_extensible_path
1123
+ )
1124
+
1125
+ editor = self["word/commentsExtensible.xml"]
1126
+ root = editor.get_node(tag="w16cex:commentsExtensible")
1127
+
1128
+ xml = f'<w16cex:commentExtensible w16cex:durableId="{durable_id}"/>'
1129
+ editor.append_to(root, xml)
1130
+
1131
+ # ==================== Private: XML Fragments ====================
1132
+
1133
+ def _comment_range_start_xml(self, comment_id):
1134
+ """Generate XML for comment range start."""
1135
+ return f'<w:commentRangeStart w:id="{comment_id}"/>'
1136
+
1137
+ def _comment_range_end_xml(self, comment_id):
1138
+ """Generate XML for comment range end with reference run.
1139
+
1140
+ Note: w:rsidR is automatically added by DocxXMLEditor.
1141
+ """
1142
+ return f'''<w:commentRangeEnd w:id="{comment_id}"/>
1143
+ <w:r>
1144
+ <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr>
1145
+ <w:commentReference w:id="{comment_id}"/>
1146
+ </w:r>'''
1147
+
1148
+ def _comment_ref_run_xml(self, comment_id):
1149
+ """Generate XML for comment reference run.
1150
+
1151
+ Note: w:rsidR is automatically added by DocxXMLEditor.
1152
+ """
1153
+ return f'''<w:r>
1154
+ <w:rPr><w:rStyle w:val="CommentReference"/></w:rPr>
1155
+ <w:commentReference w:id="{comment_id}"/>
1156
+ </w:r>'''
1157
+
1158
+ # ==================== Private: Metadata Updates ====================
1159
+
1160
+ def _has_relationship(self, editor, target):
1161
+ """Check if a relationship with given target exists."""
1162
+ for rel_elem in editor.dom.getElementsByTagName("Relationship"):
1163
+ if rel_elem.getAttribute("Target") == target:
1164
+ return True
1165
+ return False
1166
+
1167
+ def _has_override(self, editor, part_name):
1168
+ """Check if an override with given part name exists."""
1169
+ for override_elem in editor.dom.getElementsByTagName("Override"):
1170
+ if override_elem.getAttribute("PartName") == part_name:
1171
+ return True
1172
+ return False
1173
+
1174
+ def _has_author(self, editor, author):
1175
+ """Check if an author already exists in people.xml."""
1176
+ for person_elem in editor.dom.getElementsByTagName("w15:person"):
1177
+ if person_elem.getAttribute("w15:author") == author:
1178
+ return True
1179
+ return False
1180
+
1181
+ def _add_author_to_people(self, author):
1182
+ """Add author to people.xml (called during initialization)."""
1183
+ people_path = self.word_path / "people.xml"
1184
+
1185
+ # people.xml should already exist from _setup_tracking
1186
+ if not people_path.exists():
1187
+ raise ValueError("people.xml should exist after _setup_tracking")
1188
+
1189
+ editor = self["word/people.xml"]
1190
+ root = editor.get_node(tag="w15:people")
1191
+
1192
+ # Check if author already exists
1193
+ if self._has_author(editor, author):
1194
+ return
1195
+
1196
+ # Add author with proper XML escaping to prevent injection
1197
+ escaped_author = html.escape(author, quote=True)
1198
+ person_xml = f'''<w15:person w15:author="{escaped_author}">
1199
+ <w15:presenceInfo w15:providerId="None" w15:userId="{escaped_author}"/>
1200
+ </w15:person>'''
1201
+ editor.append_to(root, person_xml)
1202
+
1203
+ def _ensure_comment_relationships(self):
1204
+ """Ensure word/_rels/document.xml.rels has comment relationships."""
1205
+ editor = self["word/_rels/document.xml.rels"]
1206
+
1207
+ if self._has_relationship(editor, "comments.xml"):
1208
+ return
1209
+
1210
+ root = editor.dom.documentElement
1211
+ root_tag = root.tagName # type: ignore
1212
+ prefix = root_tag.split(":")[0] + ":" if ":" in root_tag else ""
1213
+ next_rid_num = int(editor.get_next_rid()[3:])
1214
+
1215
+ # Add relationship elements
1216
+ rels = [
1217
+ (
1218
+ next_rid_num,
1219
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",
1220
+ "comments.xml",
1221
+ ),
1222
+ (
1223
+ next_rid_num + 1,
1224
+ "http://schemas.microsoft.com/office/2011/relationships/commentsExtended",
1225
+ "commentsExtended.xml",
1226
+ ),
1227
+ (
1228
+ next_rid_num + 2,
1229
+ "http://schemas.microsoft.com/office/2016/09/relationships/commentsIds",
1230
+ "commentsIds.xml",
1231
+ ),
1232
+ (
1233
+ next_rid_num + 3,
1234
+ "http://schemas.microsoft.com/office/2018/08/relationships/commentsExtensible",
1235
+ "commentsExtensible.xml",
1236
+ ),
1237
+ ]
1238
+
1239
+ for rel_id, rel_type, target in rels:
1240
+ rel_xml = f'<{prefix}Relationship Id="rId{rel_id}" Type="{rel_type}" Target="{target}"/>'
1241
+ editor.append_to(root, rel_xml)
1242
+
1243
+ def _ensure_comment_content_types(self):
1244
+ """Ensure [Content_Types].xml has comment content types."""
1245
+ editor = self["[Content_Types].xml"]
1246
+
1247
+ if self._has_override(editor, "/word/comments.xml"):
1248
+ return
1249
+
1250
+ root = editor.dom.documentElement
1251
+
1252
+ # Add Override elements
1253
+ overrides = [
1254
+ (
1255
+ "/word/comments.xml",
1256
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml",
1257
+ ),
1258
+ (
1259
+ "/word/commentsExtended.xml",
1260
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml",
1261
+ ),
1262
+ (
1263
+ "/word/commentsIds.xml",
1264
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsIds+xml",
1265
+ ),
1266
+ (
1267
+ "/word/commentsExtensible.xml",
1268
+ "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtensible+xml",
1269
+ ),
1270
+ ]
1271
+
1272
+ for part_name, content_type in overrides:
1273
+ override_xml = (
1274
+ f'<Override PartName="{part_name}" ContentType="{content_type}"/>'
1275
+ )
1276
+ editor.append_to(root, override_xml)