@caddis/cli 0.0.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -1
  3. package/bundles/antigravity-plugin/agents/code-reviewer.md +47 -0
  4. package/bundles/antigravity-plugin/agents/preflight.md +53 -0
  5. package/bundles/antigravity-plugin/guard_agy.py +338 -0
  6. package/bundles/antigravity-plugin/hooks.json +36 -0
  7. package/bundles/antigravity-plugin/mcp_config.json +8 -0
  8. package/bundles/antigravity-plugin/mcp_ping_server.py +55 -0
  9. package/bundles/antigravity-plugin/plugin.json +5 -0
  10. package/bundles/antigravity-plugin/session_end_agy.py +57 -0
  11. package/bundles/antigravity-plugin/skills/_registry.md +115 -0
  12. package/bundles/antigravity-plugin/skills/add-rules/SKILL.md +45 -0
  13. package/bundles/antigravity-plugin/skills/api-design/SKILL.md +249 -0
  14. package/bundles/antigravity-plugin/skills/backend-development/SKILL.md +305 -0
  15. package/bundles/antigravity-plugin/skills/best-practices/SKILL.md +500 -0
  16. package/bundles/antigravity-plugin/skills/best-practices/agents/best-practices-referencer.md +263 -0
  17. package/bundles/antigravity-plugin/skills/best-practices/agents/codebase-context-builder.md +326 -0
  18. package/bundles/antigravity-plugin/skills/best-practices/agents/task-intent-analyzer.md +245 -0
  19. package/bundles/antigravity-plugin/skills/best-practices/references/anti-patterns.md +571 -0
  20. package/bundles/antigravity-plugin/skills/best-practices/references/before-after-examples.md +1114 -0
  21. package/bundles/antigravity-plugin/skills/best-practices/references/best-practices-guide.md +513 -0
  22. package/bundles/antigravity-plugin/skills/best-practices/references/common-workflows.md +692 -0
  23. package/bundles/antigravity-plugin/skills/best-practices/references/prompt-patterns.md +547 -0
  24. package/bundles/antigravity-plugin/skills/brainstorming/SKILL.md +57 -0
  25. package/bundles/antigravity-plugin/skills/ci-cd-pipeline/SKILL.md +315 -0
  26. package/bundles/antigravity-plugin/skills/code-documentation/SKILL.md +271 -0
  27. package/bundles/antigravity-plugin/skills/code-review/SKILL.md +122 -0
  28. package/bundles/antigravity-plugin/skills/codebase-audit/SKILL.md +204 -0
  29. package/bundles/antigravity-plugin/skills/context-curator/SKILL.md +157 -0
  30. package/bundles/antigravity-plugin/skills/cross-review/SKILL.md +40 -0
  31. package/bundles/antigravity-plugin/skills/css-architecture/SKILL.md +305 -0
  32. package/bundles/antigravity-plugin/skills/css-architecture/references/RESPONSIVE-DESIGN.md +604 -0
  33. package/bundles/antigravity-plugin/skills/database-design/SKILL.md +177 -0
  34. package/bundles/antigravity-plugin/skills/db-diagram/SKILL.md +148 -0
  35. package/bundles/antigravity-plugin/skills/db-diagram/scripts/sql_to_graph.py +1212 -0
  36. package/bundles/antigravity-plugin/skills/digress/SKILL.md +61 -0
  37. package/bundles/antigravity-plugin/skills/draw-io/SKILL.md +162 -0
  38. package/bundles/antigravity-plugin/skills/draw-io/references/aws-icons.md +677 -0
  39. package/bundles/antigravity-plugin/skills/draw-io/references/layout-guidelines.md +142 -0
  40. package/bundles/antigravity-plugin/skills/draw-io/references/troubleshooting.md +118 -0
  41. package/bundles/antigravity-plugin/skills/draw-io/references/workflows.md +103 -0
  42. package/bundles/antigravity-plugin/skills/draw-io/scripts/convert-drawio-to-png.sh +25 -0
  43. package/bundles/antigravity-plugin/skills/draw-io/scripts/find_aws_icon.py +79 -0
  44. package/bundles/antigravity-plugin/skills/error-handling/SKILL.md +260 -0
  45. package/bundles/antigravity-plugin/skills/excalidraw-db/SKILL.md +38 -0
  46. package/bundles/antigravity-plugin/skills/fastapi-dev/SKILL.md +300 -0
  47. package/bundles/antigravity-plugin/skills/feature-plan/SKILL.md +198 -0
  48. package/bundles/antigravity-plugin/skills/frontend-design/SKILL.md +193 -0
  49. package/bundles/antigravity-plugin/skills/frontend-design/references/my-tech-stack.md +127 -0
  50. package/bundles/antigravity-plugin/skills/gh-cli/SKILL.md +195 -0
  51. package/bundles/antigravity-plugin/skills/git-commit/SKILL.md +285 -0
  52. package/bundles/antigravity-plugin/skills/golden-plan/SKILL.md +577 -0
  53. package/bundles/antigravity-plugin/skills/handoff/SKILL.md +100 -0
  54. package/bundles/antigravity-plugin/skills/implement/SKILL.md +114 -0
  55. package/bundles/antigravity-plugin/skills/javascript-typescript/SKILL.md +142 -0
  56. package/bundles/antigravity-plugin/skills/kb/SKILL.md +60 -0
  57. package/bundles/antigravity-plugin/skills/mermaid-db/SKILL.md +33 -0
  58. package/bundles/antigravity-plugin/skills/mermaid-diagrams/SKILL.md +236 -0
  59. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/ENHANCEMENTS.md +264 -0
  60. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/MERMAID-SUMMARY.md +137 -0
  61. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/advanced-features.md +556 -0
  62. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/architecture-diagrams.md +192 -0
  63. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/c4-diagrams.md +410 -0
  64. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/class-diagrams.md +361 -0
  65. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/erd-diagrams.md +510 -0
  66. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/flowcharts.md +450 -0
  67. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/sequence-diagrams.md +394 -0
  68. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/troubleshooting.md +335 -0
  69. package/bundles/antigravity-plugin/skills/mermaid-diagrams/references/workflows.md +418 -0
  70. package/bundles/antigravity-plugin/skills/migrate-dir/SKILL.md +68 -0
  71. package/bundles/antigravity-plugin/skills/mockup/SKILL.md +242 -0
  72. package/bundles/antigravity-plugin/skills/particle-art/SKILL.md +243 -0
  73. package/bundles/antigravity-plugin/skills/particle-art/references/canvas-utils.ts +171 -0
  74. package/bundles/antigravity-plugin/skills/particle-art/references/dot-field.template.tsx +203 -0
  75. package/bundles/antigravity-plugin/skills/particle-art/references/flow-field.template.tsx +263 -0
  76. package/bundles/antigravity-plugin/skills/particle-art/references/node-shape.template.tsx +261 -0
  77. package/bundles/antigravity-plugin/skills/particle-art/references/shape-sampler.ts +281 -0
  78. package/bundles/antigravity-plugin/skills/particle-art/references/stipple-morph.template.tsx +167 -0
  79. package/bundles/antigravity-plugin/skills/particle-art/references/stipple.template.tsx +175 -0
  80. package/bundles/antigravity-plugin/skills/particle-art/references/trail-ghost.template.tsx +266 -0
  81. package/bundles/antigravity-plugin/skills/particle-art/references/usage-examples.md +320 -0
  82. package/bundles/antigravity-plugin/skills/playwright/API_REFERENCE.md +653 -0
  83. package/bundles/antigravity-plugin/skills/playwright/SKILL.md +454 -0
  84. package/bundles/antigravity-plugin/skills/playwright/lib/helpers.js +441 -0
  85. package/bundles/antigravity-plugin/skills/playwright/package.json +26 -0
  86. package/bundles/antigravity-plugin/skills/playwright/run.js +228 -0
  87. package/bundles/antigravity-plugin/skills/prd/SKILL.md +107 -0
  88. package/bundles/antigravity-plugin/skills/preflight/SKILL.md +435 -0
  89. package/bundles/antigravity-plugin/skills/python/SKILL.md +388 -0
  90. package/bundles/antigravity-plugin/skills/react-best-practices/SKILL.md +269 -0
  91. package/bundles/antigravity-plugin/skills/react-dev/README.md +404 -0
  92. package/bundles/antigravity-plugin/skills/react-dev/SKILL.md +459 -0
  93. package/bundles/antigravity-plugin/skills/react-dev/examples/generic-components.md +579 -0
  94. package/bundles/antigravity-plugin/skills/react-dev/examples/server-components.md +579 -0
  95. package/bundles/antigravity-plugin/skills/react-dev/references/event-handlers.md +574 -0
  96. package/bundles/antigravity-plugin/skills/react-dev/references/hooks.md +456 -0
  97. package/bundles/antigravity-plugin/skills/react-dev/references/react-19-patterns.md +638 -0
  98. package/bundles/antigravity-plugin/skills/react-dev/references/react-router.md +1002 -0
  99. package/bundles/antigravity-plugin/skills/react-dev/references/tanstack-router.md +587 -0
  100. package/bundles/antigravity-plugin/skills/refactoring/SKILL.md +486 -0
  101. package/bundles/antigravity-plugin/skills/resume/SKILL.md +36 -0
  102. package/bundles/antigravity-plugin/skills/security-review/SKILL.md +196 -0
  103. package/bundles/antigravity-plugin/skills/setup-project-ai/SKILL.md +61 -0
  104. package/bundles/antigravity-plugin/skills/ship/SKILL.md +107 -0
  105. package/bundles/antigravity-plugin/skills/ship-merge/SKILL.md +103 -0
  106. package/bundles/antigravity-plugin/skills/ship-pr/SKILL.md +102 -0
  107. package/bundles/antigravity-plugin/skills/skill-creator/LICENSE.txt +202 -0
  108. package/bundles/antigravity-plugin/skills/skill-creator/SKILL.md +491 -0
  109. package/bundles/antigravity-plugin/skills/skill-creator/agents/analyzer.md +274 -0
  110. package/bundles/antigravity-plugin/skills/skill-creator/agents/comparator.md +202 -0
  111. package/bundles/antigravity-plugin/skills/skill-creator/agents/grader.md +223 -0
  112. package/bundles/antigravity-plugin/skills/skill-creator/assets/eval_review.html +146 -0
  113. package/bundles/antigravity-plugin/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  114. package/bundles/antigravity-plugin/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  115. package/bundles/antigravity-plugin/skills/skill-creator/references/schemas.md +430 -0
  116. package/bundles/antigravity-plugin/skills/skill-creator/scripts/__init__.py +0 -0
  117. package/bundles/antigravity-plugin/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  118. package/bundles/antigravity-plugin/skills/skill-creator/scripts/generate_report.py +326 -0
  119. package/bundles/antigravity-plugin/skills/skill-creator/scripts/improve_description.py +247 -0
  120. package/bundles/antigravity-plugin/skills/skill-creator/scripts/package_skill.py +136 -0
  121. package/bundles/antigravity-plugin/skills/skill-creator/scripts/quick_validate.py +103 -0
  122. package/bundles/antigravity-plugin/skills/skill-creator/scripts/run_eval.py +310 -0
  123. package/bundles/antigravity-plugin/skills/skill-creator/scripts/run_loop.py +328 -0
  124. package/bundles/antigravity-plugin/skills/skill-creator/scripts/utils.py +47 -0
  125. package/bundles/antigravity-plugin/skills/sql/SKILL.md +321 -0
  126. package/bundles/antigravity-plugin/skills/tdd/SKILL.md +37 -0
  127. package/bundles/antigravity-plugin/skills/tdd-workflow/SKILL.md +188 -0
  128. package/bundles/antigravity-plugin/skills/technical-writing/SKILL.md +286 -0
  129. package/bundles/antigravity-plugin/skills/test-strategy/SKILL.md +155 -0
  130. package/bundles/antigravity-plugin/skills/ui-brief/SKILL.md +84 -0
  131. package/bundles/antigravity-plugin/skills/ui-review/SKILL.md +176 -0
  132. package/bundles/antigravity-plugin/skills/ui-review/references/framework-fixes.md +471 -0
  133. package/bundles/antigravity-plugin/skills/ui-review/references/visual-checklist.md +236 -0
  134. package/bundles/antigravity-plugin/skills/usage-review/SKILL.md +77 -0
  135. package/bundles/antigravity-plugin/skills/use-model/SKILL.md +64 -0
  136. package/bundles/antigravity-plugin/skills/using-git-worktrees/SKILL.md +217 -0
  137. package/bundles/antigravity-plugin/skills/version/SKILL.md +18 -0
  138. package/bundles/antigravity-plugin/skills/warm-editorial-ui/DESIGN_TOKENS.md +487 -0
  139. package/bundles/antigravity-plugin/skills/warm-editorial-ui/IMPLEMENTATION_GUIDE.md +177 -0
  140. package/bundles/antigravity-plugin/skills/warm-editorial-ui/SKILL.md +732 -0
  141. package/bundles/antigravity-plugin/skills/webapp-testing/LICENSE.txt +202 -0
  142. package/bundles/antigravity-plugin/skills/webapp-testing/SKILL.md +97 -0
  143. package/bundles/antigravity-plugin/skills/webapp-testing/examples/console_logging.py +35 -0
  144. package/bundles/antigravity-plugin/skills/webapp-testing/examples/element_discovery.py +40 -0
  145. package/bundles/antigravity-plugin/skills/webapp-testing/examples/static_html_automation.py +33 -0
  146. package/bundles/antigravity-plugin/skills/webapp-testing/scripts/with_server.py +106 -0
  147. package/bundles/antigravity-plugin/skills/windows-deployment/SKILL.md +880 -0
  148. package/bundles/antigravity-plugin/skills/writing-plans/SKILL.md +384 -0
  149. package/bundles/antigravity-plugin/statusline-command-agy.sh +91 -0
  150. package/bundles/antigravity-plugin/warm_start_agy.py +149 -0
  151. package/bundles/antigravity-plugin-extras/plugin.json +5 -0
  152. package/bundles/antigravity-plugin-extras/skills/_registry.md +154 -0
  153. package/bundles/antigravity-plugin-extras/skills/agent-md-refactor/SKILL.md +356 -0
  154. package/bundles/antigravity-plugin-extras/skills/agent-orchestration/SKILL.md +517 -0
  155. package/bundles/antigravity-plugin-extras/skills/algorithmic-art/SKILL.md +293 -0
  156. package/bundles/antigravity-plugin-extras/skills/anchor-review/SKILL.md +135 -0
  157. package/bundles/antigravity-plugin-extras/skills/api-client-patterns/SKILL.md +367 -0
  158. package/bundles/antigravity-plugin-extras/skills/architecture-design/SKILL.md +244 -0
  159. package/bundles/antigravity-plugin-extras/skills/architecture-diagram/SKILL.md +156 -0
  160. package/bundles/antigravity-plugin-extras/skills/architecture-document/SKILL.md +321 -0
  161. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/LICENSE.txt +202 -0
  162. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/SKILL.md +74 -0
  163. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
  164. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
  165. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  166. package/bundles/antigravity-plugin-extras/skills/ascii-art/SKILL.md +144 -0
  167. package/bundles/antigravity-plugin-extras/skills/asking-questions/SKILL.md +81 -0
  168. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/SKILL.md +118 -0
  169. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/cross-service/credential-management.md +450 -0
  170. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/browser/README.md +363 -0
  171. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/code-interpreter/README.md +232 -0
  172. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/README.md +100 -0
  173. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deploy-template.sh +117 -0
  174. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deployment-strategies.md +416 -0
  175. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/troubleshooting-guide.md +384 -0
  176. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/validate-deployment.sh +186 -0
  177. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/identity/README.md +186 -0
  178. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/memory/README.md +253 -0
  179. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/observability/README.md +517 -0
  180. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/runtime/README.md +215 -0
  181. package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/SKILL.md +279 -0
  182. package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/references/cdk-patterns.md +431 -0
  183. package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/scripts/validate-stack.sh +240 -0
  184. package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/SKILL.md +318 -0
  185. package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/cloudwatch-alarms.md +567 -0
  186. package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/operations-patterns.md +394 -0
  187. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/SKILL.md +758 -0
  188. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/deployment-best-practices.md +830 -0
  189. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/eda-patterns.md +1002 -0
  190. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/observability-best-practices.md +770 -0
  191. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/performance-optimization.md +671 -0
  192. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/security-best-practices.md +625 -0
  193. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/serverless-patterns.md +838 -0
  194. package/bundles/antigravity-plugin-extras/skills/backend-to-frontend-handoff/SKILL.md +139 -0
  195. package/bundles/antigravity-plugin-extras/skills/banner-design/SKILL.md +188 -0
  196. package/bundles/antigravity-plugin-extras/skills/brand-design/SKILL.md +298 -0
  197. package/bundles/antigravity-plugin-extras/skills/brand-guidelines/LICENSE.txt +202 -0
  198. package/bundles/antigravity-plugin-extras/skills/brand-guidelines/SKILL.md +118 -0
  199. package/bundles/antigravity-plugin-extras/skills/brand-voice/SKILL.md +93 -0
  200. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/SKILL.md +392 -0
  201. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/agent-patterns.md +461 -0
  202. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/examples.md +188 -0
  203. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/state-patterns.md +360 -0
  204. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/troubleshooting.md +362 -0
  205. package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/SKILL.md +266 -0
  206. package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/examples.md +115 -0
  207. package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +338 -0
  208. package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +317 -0
  209. package/bundles/antigravity-plugin-extras/skills/caching-patterns/SKILL.md +385 -0
  210. package/bundles/antigravity-plugin-extras/skills/canvas-design/LICENSE.txt +202 -0
  211. package/bundles/antigravity-plugin-extras/skills/canvas-design/SKILL.md +91 -0
  212. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  213. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  214. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  215. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  216. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  217. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  218. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  219. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  220. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  221. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  222. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  223. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  224. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  225. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  226. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  227. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  228. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  229. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  230. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  231. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  232. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  233. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  234. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  235. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  236. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  237. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  238. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  239. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  240. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  241. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  242. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  243. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  244. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  245. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  246. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  247. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  248. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  249. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  250. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  251. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  252. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  253. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  254. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  255. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  256. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  257. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  258. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  259. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  260. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  261. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  262. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  263. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  264. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  265. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  266. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  267. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  268. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  269. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  270. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  271. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  272. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  273. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  274. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  275. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  276. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  277. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  278. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  279. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  280. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  281. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  282. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  283. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  284. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  285. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  286. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  287. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  288. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  289. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  290. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  291. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  292. package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  293. package/bundles/antigravity-plugin-extras/skills/changelog-generator/SKILL.md +105 -0
  294. package/bundles/antigravity-plugin-extras/skills/code-explainer/SKILL.md +91 -0
  295. package/bundles/antigravity-plugin-extras/skills/competitive-ads-extractor/SKILL.md +294 -0
  296. package/bundles/antigravity-plugin-extras/skills/component-testing/SKILL.md +310 -0
  297. package/bundles/antigravity-plugin-extras/skills/content-research-writer/SKILL.md +539 -0
  298. package/bundles/antigravity-plugin-extras/skills/cross-review/SKILL.md +51 -0
  299. package/bundles/antigravity-plugin-extras/skills/data-analysis/SKILL.md +111 -0
  300. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/README.md +248 -0
  301. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/SKILL.md +203 -0
  302. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/adapter.py.template +44 -0
  303. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/api-router.py.template +43 -0
  304. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/contract-test.py.template +384 -0
  305. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/display-dto.py.template +39 -0
  306. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-service.ts.template +46 -0
  307. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-types.ts.template +38 -0
  308. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/ingestion-model.py.template +42 -0
  309. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/mapping-doc.md.template +46 -0
  310. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/normalizer.py.template +48 -0
  311. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_requirements.md +36 -0
  312. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_ui_demand.md +35 -0
  313. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/reconcile_mapping.md +66 -0
  314. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/query-catalog.md.template +62 -0
  315. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/consumer-driven-contracts.md +131 -0
  316. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/drift-check-catalog.md +305 -0
  317. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/layer-responsibilities.md +333 -0
  318. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_connections.py +170 -0
  319. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_sources.py +161 -0
  320. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/drift_check.py +171 -0
  321. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/extract_schema.py +1363 -0
  322. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_gap_report.py +81 -0
  323. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_mapping_doc.py +294 -0
  324. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/ts_dto_compare.py +214 -0
  325. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/validate_lineage.py +51 -0
  326. package/bundles/antigravity-plugin-extras/skills/data-loader/SKILL.md +753 -0
  327. package/bundles/antigravity-plugin-extras/skills/data-validation/SKILL.md +220 -0
  328. package/bundles/antigravity-plugin-extras/skills/db-testing/SKILL.md +117 -0
  329. package/bundles/antigravity-plugin-extras/skills/deploy-local/SKILL.md +259 -0
  330. package/bundles/antigravity-plugin-extras/skills/design-md/SKILL.md +167 -0
  331. package/bundles/antigravity-plugin-extras/skills/design-system-tokens/SKILL.md +240 -0
  332. package/bundles/antigravity-plugin-extras/skills/design-system-tokens/references/DESIGN-SYSTEM-TEMPLATE.md +577 -0
  333. package/bundles/antigravity-plugin-extras/skills/developer-growth-analysis/SKILL.md +323 -0
  334. package/bundles/antigravity-plugin-extras/skills/doc-coauthoring/SKILL.md +378 -0
  335. package/bundles/antigravity-plugin-extras/skills/documentation-analyzer/SKILL.md +78 -0
  336. package/bundles/antigravity-plugin-extras/skills/domain-name-brainstormer/SKILL.md +213 -0
  337. package/bundles/antigravity-plugin-extras/skills/enterprise-dashboard-aesthetic-system/SKILL.md +120 -0
  338. package/bundles/antigravity-plugin-extras/skills/excalidraw/SKILL.md +193 -0
  339. package/bundles/antigravity-plugin-extras/skills/excalidraw/references/element-types.md +497 -0
  340. package/bundles/antigravity-plugin-extras/skills/excalidraw/references/excalidraw-schema.md +356 -0
  341. package/bundles/antigravity-plugin-extras/skills/excalidraw/references/reliable-diagrams.md +115 -0
  342. package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/README.md +60 -0
  343. package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-arrow.py +354 -0
  344. package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-icon-to-diagram.py +412 -0
  345. package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/split-excalidraw-library.py +183 -0
  346. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/business-flow-swimlane-template.excalidraw +334 -0
  347. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/class-diagram-template.excalidraw +558 -0
  348. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/data-flow-diagram-template.excalidraw +279 -0
  349. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/er-diagram-template.excalidraw +662 -0
  350. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/flowchart-template.excalidraw +179 -0
  351. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/mindmap-template.excalidraw +244 -0
  352. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/relationship-template.excalidraw +145 -0
  353. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/reliable-flowchart.excalidraw +1 -0
  354. package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/sequence-diagram-template.excalidraw +509 -0
  355. package/bundles/antigravity-plugin-extras/skills/file-organizer/SKILL.md +434 -0
  356. package/bundles/antigravity-plugin-extras/skills/game-changing-features/README.md +221 -0
  357. package/bundles/antigravity-plugin-extras/skills/game-changing-features/SKILL.md +265 -0
  358. package/bundles/antigravity-plugin-extras/skills/github-issues/SKILL.md +359 -0
  359. package/bundles/antigravity-plugin-extras/skills/github-issues/references/templates.md +90 -0
  360. package/bundles/antigravity-plugin-extras/skills/golden-nuggets/SKILL.md +192 -0
  361. package/bundles/antigravity-plugin-extras/skills/humanizer/SKILL.md +194 -0
  362. package/bundles/antigravity-plugin-extras/skills/image-enhancer/SKILL.md +100 -0
  363. package/bundles/antigravity-plugin-extras/skills/intent-writer/SKILL.md +201 -0
  364. package/bundles/antigravity-plugin-extras/skills/internal-comms/LICENSE.txt +202 -0
  365. package/bundles/antigravity-plugin-extras/skills/internal-comms/SKILL.md +124 -0
  366. package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/3p-updates.md +47 -0
  367. package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/company-newsletter.md +65 -0
  368. package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/faq-answers.md +30 -0
  369. package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/general-comms.md +16 -0
  370. package/bundles/antigravity-plugin-extras/skills/invoice-organizer/SKILL.md +447 -0
  371. package/bundles/antigravity-plugin-extras/skills/jira-issues/SKILL.md +182 -0
  372. package/bundles/antigravity-plugin-extras/skills/job-application/SKILL.md +188 -0
  373. package/bundles/antigravity-plugin-extras/skills/lead-research-assistant/SKILL.md +200 -0
  374. package/bundles/antigravity-plugin-extras/skills/llm-application-dev/SKILL.md +217 -0
  375. package/bundles/antigravity-plugin-extras/skills/mcp-builder/LICENSE.txt +202 -0
  376. package/bundles/antigravity-plugin-extras/skills/mcp-builder/SKILL.md +100 -0
  377. package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/evaluation.md +602 -0
  378. package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/mcp_best_practices.md +915 -0
  379. package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/node_mcp_server.md +916 -0
  380. package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/python_mcp_server.md +752 -0
  381. package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/connections.py +151 -0
  382. package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/evaluation.py +373 -0
  383. package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  384. package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/requirements.txt +2 -0
  385. package/bundles/antigravity-plugin-extras/skills/meeting-insights-analyzer/SKILL.md +328 -0
  386. package/bundles/antigravity-plugin-extras/skills/monorepo/SKILL.md +267 -0
  387. package/bundles/antigravity-plugin-extras/skills/naming-analyzer/SKILL.md +376 -0
  388. package/bundles/antigravity-plugin-extras/skills/nextjs-app-router/SKILL.md +271 -0
  389. package/bundles/antigravity-plugin-extras/skills/notebooklm/AUTHENTICATION.md +154 -0
  390. package/bundles/antigravity-plugin-extras/skills/notebooklm/SKILL.md +270 -0
  391. package/bundles/antigravity-plugin-extras/skills/notebooklm/references/api_reference.md +309 -0
  392. package/bundles/antigravity-plugin-extras/skills/notebooklm/references/troubleshooting.md +376 -0
  393. package/bundles/antigravity-plugin-extras/skills/notebooklm/references/usage_patterns.md +338 -0
  394. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/__init__.py +81 -0
  395. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/ask_question.py +256 -0
  396. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/auth_manager.py +358 -0
  397. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_session.py +255 -0
  398. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_utils.py +107 -0
  399. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/cleanup_manager.py +302 -0
  400. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/config.py +44 -0
  401. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/notebook_manager.py +410 -0
  402. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/run.py +102 -0
  403. package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/setup_environment.py +204 -0
  404. package/bundles/antigravity-plugin-extras/skills/observability/SKILL.md +371 -0
  405. package/bundles/antigravity-plugin-extras/skills/onboard-project/SKILL.md +192 -0
  406. package/bundles/antigravity-plugin-extras/skills/performance-testing/SKILL.md +226 -0
  407. package/bundles/antigravity-plugin-extras/skills/pipeline-state/SKILL.md +208 -0
  408. package/bundles/antigravity-plugin-extras/skills/plantuml/SKILL.md +228 -0
  409. package/bundles/antigravity-plugin-extras/skills/popular-web-designs/SKILL.md +142 -0
  410. package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/linear.app.md +196 -0
  411. package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/stripe.md +214 -0
  412. package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/vercel.md +218 -0
  413. package/bundles/antigravity-plugin-extras/skills/prd-to-code/SKILL.md +127 -0
  414. package/bundles/antigravity-plugin-extras/skills/raffle-winner-picker/SKILL.md +159 -0
  415. package/bundles/antigravity-plugin-extras/skills/react-useeffect/README.md +320 -0
  416. package/bundles/antigravity-plugin-extras/skills/react-useeffect/SKILL.md +53 -0
  417. package/bundles/antigravity-plugin-extras/skills/react-useeffect/alternatives.md +258 -0
  418. package/bundles/antigravity-plugin-extras/skills/react-useeffect/anti-patterns.md +290 -0
  419. package/bundles/antigravity-plugin-extras/skills/receiving-code-review/SKILL.md +213 -0
  420. package/bundles/antigravity-plugin-extras/skills/relay/SKILL.md +246 -0
  421. package/bundles/antigravity-plugin-extras/skills/requesting-code-review/SKILL.md +105 -0
  422. package/bundles/antigravity-plugin-extras/skills/requesting-code-review/code-reviewer.md +146 -0
  423. package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/SKILL.md +350 -0
  424. package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/pwa-checklist.md +226 -0
  425. package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/touch-and-interaction.md +265 -0
  426. package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/transformation-catalogue.md +326 -0
  427. package/bundles/antigravity-plugin-extras/skills/schema-migration/SKILL.md +275 -0
  428. package/bundles/antigravity-plugin-extras/skills/setup-project-ai/SKILL.md +120 -0
  429. package/bundles/antigravity-plugin-extras/skills/shadcn-radix/SKILL.md +330 -0
  430. package/bundles/antigravity-plugin-extras/skills/sketch/SKILL.md +104 -0
  431. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/LICENSE.txt +202 -0
  432. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/SKILL.md +646 -0
  433. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/color_palettes.py +302 -0
  434. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/easing.py +230 -0
  435. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/frame_composer.py +469 -0
  436. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/gif_builder.py +246 -0
  437. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/typography.py +357 -0
  438. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/validators.py +264 -0
  439. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/visual_effects.py +494 -0
  440. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/requirements.txt +4 -0
  441. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/bounce.py +106 -0
  442. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/explode.py +331 -0
  443. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/fade.py +329 -0
  444. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/flip.py +291 -0
  445. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
  446. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/morph.py +329 -0
  447. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/move.py +293 -0
  448. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/pulse.py +268 -0
  449. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/shake.py +127 -0
  450. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/slide.py +291 -0
  451. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/spin.py +269 -0
  452. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/wiggle.py +300 -0
  453. package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/zoom.py +312 -0
  454. package/bundles/antigravity-plugin-extras/skills/slides/SKILL.md +38 -0
  455. package/bundles/antigravity-plugin-extras/skills/state-tracking/SKILL.md +131 -0
  456. package/bundles/antigravity-plugin-extras/skills/streamlit-dev/SKILL.md +268 -0
  457. package/bundles/antigravity-plugin-extras/skills/svg-create/SKILL.md +251 -0
  458. package/bundles/antigravity-plugin-extras/skills/theme-factory/LICENSE.txt +202 -0
  459. package/bundles/antigravity-plugin-extras/skills/theme-factory/SKILL.md +59 -0
  460. package/bundles/antigravity-plugin-extras/skills/theme-factory/theme-showcase.pdf +0 -0
  461. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/arctic-frost.md +19 -0
  462. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/botanical-garden.md +19 -0
  463. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/desert-rose.md +19 -0
  464. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/forest-canopy.md +19 -0
  465. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/golden-hour.md +19 -0
  466. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  467. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/modern-minimalist.md +19 -0
  468. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/ocean-depths.md +19 -0
  469. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  470. package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/tech-innovation.md +19 -0
  471. package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/LICENSE.txt +202 -0
  472. package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/SKILL.md +320 -0
  473. package/bundles/antigravity-plugin-extras/skills/ui-testing/SKILL.md +660 -0
  474. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/SKILL.md +660 -0
  475. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/_sync_all.py +414 -0
  476. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/app-interface.csv +31 -0
  477. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/charts.csv +26 -0
  478. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/colors.csv +162 -0
  479. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/design.csv +1776 -0
  480. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/draft.csv +1779 -0
  481. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/google-fonts.csv +1924 -0
  482. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/icons.csv +106 -0
  483. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/landing.csv +35 -0
  484. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/products.csv +162 -0
  485. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/react-performance.csv +45 -0
  486. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/styles.csv +85 -0
  487. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/typography.csv +74 -0
  488. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ui-reasoning.csv +162 -0
  489. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ux-guidelines.csv +100 -0
  490. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/core.py +247 -0
  491. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/design_system.py +1067 -0
  492. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/search.py +114 -0
  493. package/bundles/antigravity-plugin-extras/skills/understand-anything/SKILL.md +140 -0
  494. package/bundles/antigravity-plugin-extras/skills/understand-anything/references/commands.md +252 -0
  495. package/bundles/antigravity-plugin-extras/skills/understand-anything/references/graph-schema.md +116 -0
  496. package/bundles/antigravity-plugin-extras/skills/understand-anything/references/pipeline.md +331 -0
  497. package/bundles/antigravity-plugin-extras/skills/update-readme/SKILL.md +74 -0
  498. package/bundles/antigravity-plugin-extras/skills/verification-loop/SKILL.md +209 -0
  499. package/bundles/antigravity-plugin-extras/skills/video-downloader/SKILL.md +107 -0
  500. package/bundles/antigravity-plugin-extras/skills/webapp-development/SKILL.md +288 -0
  501. package/bundles/antigravity-plugin-extras/skills/word-cloud/SKILL.md +339 -0
  502. package/bundles/antigravity-plugin-extras/skills/word-cloud/agents/agent-interface.md +175 -0
  503. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/html.md +384 -0
  504. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/nlp-keywords.md +127 -0
  505. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/palettes.md +149 -0
  506. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/python.md +249 -0
  507. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/react.md +427 -0
  508. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/shapes.md +135 -0
  509. package/bundles/antigravity-plugin-extras/skills/word-cloud/references/stopwords.md +115 -0
  510. package/bundles/antigravity-plugin-extras/skills/youtube-transcript/SKILL.md +416 -0
  511. package/bundles/manifest.json +7 -0
  512. package/dist/cli.js +5492 -0
  513. package/package.json +61 -4
@@ -0,0 +1,35 @@
1
+ # Sub-prompt: Extract UI Demand
2
+
3
+ Use this prompt to extract data demand from existing frontend components (JSX, TSX, HTML, Vue templates).
4
+ Paste the component source after the divider, then run this prompt.
5
+
6
+ ---
7
+
8
+ You are extracting data field demand from a frontend component or page.
9
+
10
+ For each field, prop, variable, or binding that renders or filters data, produce a JSON entry:
11
+
12
+ ```json
13
+ {
14
+ "display_label": "Text shown to the user (from label, column header, tooltip, etc.)",
15
+ "prop_or_key": "The prop name or object key used in code (e.g. row.customerId)",
16
+ "component": "Component or page file name",
17
+ "context": "table-column | kpi-card | chart-axis | filter | export | badge | detail-panel | other",
18
+ "inferred_type": "string | number | boolean | date | list | enum | unknown",
19
+ "nullable_in_ui": "true if the UI renders a fallback (e.g. '—', 'N/A') for missing values",
20
+ "current_source": "Where does the value come from? (mock constant, API call, prop, store, hardcoded)",
21
+ "backed": "true | false | unknown — is this connected to a real API or DB?",
22
+ "notes": "Anything suspicious: hardcoded data, TODO comments, demo-only flags"
23
+ }
24
+ ```
25
+
26
+ Rules:
27
+ - Include EVERY rendered field, even if it appears backed by mock data.
28
+ - Mark `backed: false` when value is a hardcoded string, imported mock constant, or demo fixture.
29
+ - Mark `backed: unknown` when you cannot determine the source from the component alone.
30
+ - Do not skip fields because they seem obvious — completeness is required.
31
+ - Output a JSON array of demand objects, followed by a `## Mock/Unbacked Fields` section listing fields that are NOT currently connected to real data.
32
+
33
+ ---
34
+
35
+ COMPONENT SOURCE:
@@ -0,0 +1,66 @@
1
+ # Sub-prompt: Reconcile Mapping
2
+
3
+ Use this prompt to map source columns → normalizer transforms → DisplayDTO fields.
4
+ Provide the source column list and requirements list, then run this prompt.
5
+
6
+ ---
7
+
8
+ You are reconciling data source capabilities against product requirements and UI demand.
9
+
10
+ ## Inputs
11
+
12
+ You will receive:
13
+ 1. `SOURCE_COLUMNS` — columns from the ingestion model or DB schema
14
+ 2. `REQUIREMENTS` — field requirements extracted from docs or tickets
15
+ 3. `UI_DEMAND` — fields extracted from frontend components
16
+ 4. `EXISTING_CONTRACT` — existing `.contracts/*.contract.json` (if any)
17
+
18
+ ## Task
19
+
20
+ For each DisplayDTO field that should exist (derived from requirements + UI demand):
21
+
22
+ 1. Find the best matching source column(s).
23
+ 2. Determine what adapter and normalizer transform is needed.
24
+ 3. Assign a status:
25
+
26
+ | Status | Assign when |
27
+ |---|---|
28
+ | `contract-backed` | Source column maps cleanly; transform is deterministic; test exists |
29
+ | `partially-backed` | Derives from nullable embedded payload; may degrade to blocked at runtime |
30
+ | `blocked` | Required column is always NULL in prod, or formula is undefined |
31
+ | `required-unplaced` | Frontend/requirements demand it; no source column found |
32
+ | `source-capability-only` | Source has it; no requirement or UI demand |
33
+ | `mockup-only` | In UI mockup only; no backend path |
34
+ | `deferred` | Explicitly out of scope |
35
+
36
+ 4. Output one JSON entry per DisplayDTO field:
37
+
38
+ ```json
39
+ {
40
+ "field_key": "camelCase DTO key",
41
+ "source_column": "column_name (or null if required-unplaced)",
42
+ "adapter": "scalar | csv | embedded_json | embedded_markdown | embedded_text | none",
43
+ "transform": "Description of normalizer logic (e.g. 'split CSV, preserve quoted commas')",
44
+ "status": "contract-backed | partially-backed | ...",
45
+ "null_handling": "What the normalizer returns when source is NULL",
46
+ "type": "Python type annotation for DisplayDTO",
47
+ "fe_type": "TypeScript type for frontend",
48
+ "notes": "Any caveats, edge cases, or open questions"
49
+ }
50
+ ```
51
+
52
+ ## Output format
53
+
54
+ 1. JSON array of mapping entries (one per DisplayDTO field).
55
+ 2. `## Gaps` — fields that are `required-unplaced` or `blocked`, with recommended next action.
56
+ 3. `## Orphans` — source columns that are `source-capability-only`, listed for product review.
57
+
58
+ ---
59
+
60
+ SOURCE_COLUMNS:
61
+
62
+ REQUIREMENTS:
63
+
64
+ UI_DEMAND:
65
+
66
+ EXISTING_CONTRACT:
@@ -0,0 +1,62 @@
1
+ # Query Catalog — {FeatureName}
2
+ # Generated: {date}
3
+ # Target: {DB server / environment}
4
+ # Schema: {schema} (default: dbo)
5
+ #
6
+ # PURPOSE: Every SQL query that populates a DB-backed UI field is listed here.
7
+ # Queries use named bind parameters and are bounded — safe to run during data analysis.
8
+ # Substitute {schema} → dbo (or your override) before executing.
9
+
10
+ ---
11
+
12
+ ## {EntityName} — {repository_module}.fetch_{entity}_list
13
+
14
+ **UI fields populated:** `fieldA`, `fieldB`, `fieldC`, `embeddedStatus`
15
+ **Called by:** `{EntityService}.get_list` → `normalize_{entity}` → `{EntityResponse}`
16
+ **Paging:** OFFSET + FETCH, max {MAX_PAGE} rows
17
+
18
+ ```sql
19
+ -- List query — paged, optional filter
20
+ -- Parameters:
21
+ -- :filter_value VARCHAR optional WHERE filter (pass NULL to skip)
22
+ -- :offset INT OFFSET rows (0-based)
23
+ -- :page_size INT rows per page (max {MAX_PAGE})
24
+ SELECT
25
+ t.primary_key_col AS primary_key,
26
+ t.display_col_a AS field_a,
27
+ t.display_col_b AS field_b,
28
+ t.embedded_col AS embedded_col -- NVARCHAR(MAX): see derived fields below
29
+ FROM {schema}.{SourceTable} AS t
30
+ WHERE (:filter_value IS NULL OR t.filter_col = :filter_value)
31
+ ORDER BY t.created_at DESC
32
+ OFFSET :offset ROWS FETCH NEXT :page_size ROWS ONLY;
33
+ ```
34
+
35
+ **Derived fields from `embedded_col` (extracted by normalizer, not in SQL):**
36
+
37
+ | UI field | Payload path | Adapter | Null behaviour |
38
+ |---|---|---|---|
39
+ | `embeddedStatus` | NULL check on `embedded_col` | n/a | `blocked` |
40
+ | `derivedField1` | `embedded_col → json_key` | `embedded_json_adapter` | `[]` |
41
+ | `derivedField2` | `embedded_col → ## Section Header` | `embedded_markdown_adapter` | `None` |
42
+
43
+ ---
44
+
45
+ ## {EntityName} — {repository_module}.fetch_{entity}_by_id
46
+
47
+ **UI fields populated:** same as list + detail-only fields
48
+ **Called by:** `{EntityService}.get_by_id` → `normalize_{entity}` → `{EntityResponse}`
49
+
50
+ ```sql
51
+ -- Single-row lookup by primary key
52
+ -- Parameters:
53
+ -- :record_id VARCHAR primary key value
54
+ SELECT
55
+ t.primary_key_col AS primary_key,
56
+ t.display_col_a AS field_a,
57
+ t.display_col_b AS field_b,
58
+ t.detail_only_col AS detail_field,
59
+ t.embedded_col AS embedded_col
60
+ FROM {schema}.{SourceTable} AS t
61
+ WHERE t.primary_key_col = :record_id;
62
+ ```
@@ -0,0 +1,131 @@
1
+ # Consumer-Driven Contracts
2
+
3
+ Reference summary of the Consumer-Driven Contracts pattern for data pipeline alignment.
4
+
5
+ ---
6
+
7
+ ## Origin
8
+
9
+ **Consumer-Driven Contracts** (Ian Robinson, Martin Fowler — 2006) is a pattern for managing service integration where the **consumer** declares what it needs from a provider, and the provider validates that it satisfies all consumer expectations.
10
+
11
+ ---
12
+
13
+ ## Core Principles
14
+
15
+ ### 1. Contracts Are Code, Not Docs
16
+
17
+ Documentation drifts. Contract **tests** are the source of truth.
18
+
19
+ ```
20
+ ❌ "The API returns these fields" (in a wiki page)
21
+ ✅ test_api_returns_expected_fields() (in the test suite)
22
+ ```
23
+
24
+ ### 2. Consumer Declares Needs
25
+
26
+ The frontend (consumer) declares which fields it needs. The backend (provider) validates it serves them. This inverts the usual direction — instead of the backend dictating "here's what I send", the frontend says "here's what I need."
27
+
28
+ In practice: TypeScript interfaces define the contract. Python DTOs validate they provide those fields.
29
+
30
+ ### 3. Additive Evolution
31
+
32
+ Schema changes are additive — add optional fields with defaults. Never remove or rename a field without coordinating with all consumers.
33
+
34
+ ```python
35
+ # ✅ Safe evolution: new optional field with default
36
+ class MetricsResponse(BaseModel):
37
+ nps: float
38
+ responses: int
39
+ # New field — existing consumers ignore it, new consumers use it
40
+ trend_direction: str = Field(default="stable", alias="trendDirection")
41
+ ```
42
+
43
+ ### 4. Just Enough Validation
44
+
45
+ Validate what matters at each layer:
46
+
47
+ | Layer | Validates |
48
+ |-------|-----------|
49
+ | Ingestion Model | "Does the raw data have the expected shape?" |
50
+ | Display DTO | "Does the API output have the exact contracted shape?" |
51
+ | Contract Test | "Do all layers agree on the same shape?" |
52
+
53
+ Don't over-validate at every layer. The ingestion model can be lenient (`extra="allow"`). The display DTO must be strict (`extra="forbid"`).
54
+
55
+ ### 5. Fail Fast, Fail Loud
56
+
57
+ When a contract violation is detected, it should be an error — not a warning, not a log line.
58
+
59
+ ```python
60
+ # ❌ Silent handling
61
+ try:
62
+ dto = MyDTO.model_validate(data)
63
+ except ValidationError:
64
+ return {} # Silent failure — consumer gets empty data
65
+
66
+ # ✅ Fail loud
67
+ dto = MyDTO.model_validate(data) # Raises ValidationError with details
68
+ ```
69
+
70
+ ---
71
+
72
+ ## How This Maps to Our Pipeline
73
+
74
+ | CDC Concept | Our Implementation |
75
+ |-------------|-------------------|
76
+ | Consumer | Frontend TypeScript types + service functions |
77
+ | Provider | Backend display DTO + API router |
78
+ | Contract | Contract tests in `tests/unit/test_contract_*.py` |
79
+ | Contract verification | `pytest` (local) → CI pipeline (when available) |
80
+ | Golden sample | `tests/fixtures/payloads/{source}/sample.json` |
81
+ | Schema evolution | Additive fields with defaults, never `extra="ignore"` |
82
+
83
+ ---
84
+
85
+ ## Golden Sample Pattern
86
+
87
+ A **golden sample** is a curated, representative payload from the source that serves as the reference for all contract tests.
88
+
89
+ ### Properties of a Good Golden Sample
90
+
91
+ 1. **Complete**: Contains all known keys, including optional ones
92
+ 2. **Representative**: Values are realistic (not all null or placeholder)
93
+ 3. **Sanitized**: No PII, credentials, or sensitive data
94
+ 4. **Versioned**: Old samples renamed (not deleted) when schema changes
95
+ 5. **Committed**: Checked into version control, not generated at test time
96
+
97
+ ### How to Create One
98
+
99
+ 1. Copy a real payload from the source (API response, JSON file, DB query result)
100
+ 2. Sanitize: replace real names, emails, IDs with realistic fakes
101
+ 3. Save to `tests/fixtures/payloads/{source_name}/sample.json`
102
+ 4. Commit with a descriptive message: `test: add golden sample for {source_name}`
103
+
104
+ ---
105
+
106
+ ## Postel's Law and Its Limits
107
+
108
+ > "Be conservative in what you send, liberal in what you accept."
109
+ > — *Jon Postel, RFC 761 (1980)*
110
+
111
+ This works for **ingestion models** (accept broad input to avoid brittle failures on new keys).
112
+
113
+ It does NOT work for **display DTOs** at the API boundary. Display DTOs must be explicit:
114
+
115
+ - **Conservative in what you send**: Only send fields the consumer declared it needs
116
+ - **Explicit about what you accept**: `extra="forbid"` — don't silently drop or add fields
117
+
118
+ The failure mode of Postel's Law at API boundaries: the backend silently drops a field (`extra="ignore"`), the frontend silently renders `undefined`, and nobody notices until a stakeholder asks "why is this blank?"
119
+
120
+ ---
121
+
122
+ ## When to Use CDC vs. Other Patterns
123
+
124
+ | Pattern | Best For |
125
+ |---------|----------|
126
+ | Consumer-Driven Contracts | Frontend ↔ Backend in same team/repo |
127
+ | Provider Contracts (Pact) | Microservices across teams |
128
+ | Schema Registry (Avro/Protobuf) | Event streaming (Kafka, EventBridge) |
129
+ | OpenAPI / Swagger | Public APIs with external consumers |
130
+
131
+ For most internal dashboards and applications, Consumer-Driven Contracts with golden sample tests is the right level of formality.
@@ -0,0 +1,305 @@
1
+ # Drift Check Catalog
2
+
3
+ Complete reference of contract drift types, detection methods, and fix patterns.
4
+
5
+ ---
6
+
7
+ ## Drift Types
8
+
9
+ ### D1 — Payload Key Not in Ingestion Model
10
+
11
+ **What**: A key exists in the source payload but has no corresponding field in the ingestion model — at **any nesting depth**, not just top-level.
12
+
13
+ **Risk**: New data from the source is silently ignored. If the ingestion model uses `extra="ignore"`, this is invisible.
14
+
15
+ **Detection — flat (top-level only)**:
16
+ ```python
17
+ payload_keys = set(payload.keys())
18
+ model_aliases = {
19
+ info.alias or name for name, info in IngestionModel.model_fields.items()
20
+ }
21
+ uncovered = payload_keys - model_aliases
22
+ ```
23
+
24
+ **Detection — recursive (recommended)**:
25
+ ```python
26
+ from contract_test_helpers import _collect_dropped_keys
27
+
28
+ dropped = _collect_dropped_keys(payload, IngestionModel)
29
+ # Returns dot-path list: ["surveys.broadband.newField", "metadata.x"]
30
+ ```
31
+
32
+ The recursive variant (`_collect_dropped_keys` in the contract-test template) walks nested dicts and lists-of-dicts, comparing keys against model field aliases at every depth. It also respects the `KNOWN_EXCLUDED_KEYS` allow-list (see D12).
33
+
34
+ **Fix**: Add the missing field to the ingestion model with the correct type.
35
+
36
+ ---
37
+
38
+ ### D2 — Ingestion Field Not in Display DTO
39
+
40
+ **What**: The ingestion model has a field that doesn't map to any display DTO field. The normalizer silently drops it.
41
+
42
+ **Risk**: Data is fetched and validated but never reaches the API consumer. If intentional, it should be documented.
43
+
44
+ **Detection — flat (top-level only)**:
45
+ ```python
46
+ ingestion_fields = set(IngestionModel.model_fields.keys())
47
+ dto_fields = set(DisplayDTO.model_fields.keys())
48
+ dropped = ingestion_fields - dto_fields # Approximate — normalizer may rename
49
+ ```
50
+
51
+ **Detection — recursive (recommended)**:
52
+ ```python
53
+ from contract_test_helpers import _collect_dropped_keys
54
+
55
+ dropped = _collect_dropped_keys(payload, DisplayDTO)
56
+ # Returns dot-path list at every nesting level
57
+ ```
58
+
59
+ **Fix**: Either add the field to the display DTO, or add the key to `KNOWN_EXCLUDED_KEYS` (see D12) with a ticket reference explaining why it's excluded.
60
+
61
+ ---
62
+
63
+ ### D3 — Display DTO Uses `extra="ignore"`
64
+
65
+ **What**: The display DTO silently drops unknown fields during validation.
66
+
67
+ **Risk**: When the source adds new keys, they pass through ingestion but vanish at the DTO layer. This causes data loss bugs that are nearly impossible to debug because no error is raised.
68
+
69
+ **Detection**:
70
+ ```python
71
+ config = DisplayDTO.model_config
72
+ assert config.get("extra") != "ignore", "Display DTO must not use extra='ignore'"
73
+ ```
74
+
75
+ **Fix**: Change to `extra="forbid"` (strict) or `extra="allow"` (migration period).
76
+
77
+ ---
78
+
79
+ ### D4 — DTO Alias Mismatch with TypeScript
80
+
81
+ **What**: A DTO field alias (the camelCase name sent over the API) doesn't match the corresponding TypeScript interface property name.
82
+
83
+ **Risk**: Frontend receives the data but accesses it with the wrong key → `undefined` values, silent display bugs.
84
+
85
+ **Detection**:
86
+ ```python
87
+ # Extract DTO aliases
88
+ dto_aliases = {
89
+ info.alias or name for name, info in DisplayDTO.model_fields.items()
90
+ }
91
+
92
+ # Extract TypeScript property names (parse the .ts file)
93
+ ts_props = extract_ts_interface_properties("frontend/src/types/source.ts")
94
+
95
+ # Compare
96
+ missing_in_ts = dto_aliases - ts_props
97
+ extra_in_ts = ts_props - dto_aliases
98
+ ```
99
+
100
+ **Fix**: Update the TypeScript interface to match DTO aliases exactly.
101
+
102
+ ---
103
+
104
+ ### D5 — DTO Type Mismatch with TypeScript
105
+
106
+ **What**: A DTO field type doesn't correspond to the TypeScript type.
107
+
108
+ **Risk**: Runtime type errors, NaN from treating strings as numbers, etc.
109
+
110
+ **Detection**: Compare using the type mapping table:
111
+
112
+ | Python | TypeScript |
113
+ |--------|-----------|
114
+ | `str` | `string` |
115
+ | `int`, `float` | `number` |
116
+ | `bool` | `boolean` |
117
+ | `list[T]` | `T[]` |
118
+ | `dict[str, T]` | `Record<string, T>` |
119
+ | `Optional[T]` | `T \| null` |
120
+
121
+ **Fix**: Update the TypeScript type to match.
122
+
123
+ ---
124
+
125
+ ### D6 — API Router Missing `response_model`
126
+
127
+ **What**: FastAPI endpoint doesn't specify `response_model=DtoName`.
128
+
129
+ **Risk**: FastAPI won't validate the response shape. If the service returns a dict with wrong keys, the API sends it as-is.
130
+
131
+ **Detection**:
132
+ ```python
133
+ # Check router decorators
134
+ # @router.get("/", response_model=DtoName) ← must be present
135
+ ```
136
+
137
+ **Fix**: Add `response_model=DtoName` to the endpoint decorator.
138
+
139
+ ---
140
+
141
+ ### D7 — Mapping Doc Stale
142
+
143
+ **What**: A data mapping document (e.g., `ui-json-data-mapping.md`) claims a UI element reads from `data.foo.bar`, but the code actually reads from `data.baz.qux`.
144
+
145
+ **Risk**: Document misleads developers, causes incorrect debugging assumptions.
146
+
147
+ **Detection**: Compare doc field paths against actual code references. This is a manual review item — scripts can't reliably parse prose mapping docs.
148
+
149
+ **Fix**: Regenerate the mapping doc from the contract tests and DTO definitions.
150
+
151
+ ---
152
+
153
+ ### D8 — Golden Sample Missing or Stale
154
+
155
+ **What**: No `tests/fixtures/payloads/source/sample.json` exists, or it's from an old schema version.
156
+
157
+ **Risk**: Contract tests run against outdated data, pass despite real drift.
158
+
159
+ **Detection**:
160
+ ```python
161
+ sample_path = Path("tests/fixtures/payloads/source/sample.json")
162
+ assert sample_path.exists(), "Golden sample missing"
163
+
164
+ # Optionally check freshness
165
+ payload = json.loads(sample_path.read_text())
166
+ # Compare key count against actual source
167
+ ```
168
+
169
+ **Fix**: Copy a real payload from the source, sanitize PII, save as golden sample.
170
+
171
+ ---
172
+
173
+ ### D9 — Frontend Service Return Type Wrong
174
+
175
+ **What**: The frontend service function's return type doesn't match the TypeScript interface.
176
+
177
+ **Risk**: TypeScript compiler may not catch it if the return type is `any` or a superset.
178
+
179
+ **Detection**:
180
+ ```typescript
181
+ // Check that the service function's return type matches the interface
182
+ export async function getData(): Promise<CorrectType> { ... }
183
+ // ^^^^^^^^^^^^ must match
184
+ ```
185
+
186
+ **Fix**: Update the return type annotation.
187
+
188
+ ---
189
+
190
+ ### D10 — Normalizer Produces Wrong Shape
191
+
192
+ **What**: The normalizer function's output doesn't match the display DTO fields.
193
+
194
+ **Risk**: Runtime `ValidationError` when the DTO tries to validate the normalizer output.
195
+
196
+ **Detection**: Unit test — pass a valid ingestion model through the normalizer and validate the result against the DTO.
197
+
198
+ **Fix**: Update the normalizer to produce all required DTO fields.
199
+
200
+ ---
201
+
202
+ ### D11 — Drift Test Mode Mismatch
203
+
204
+ **What**: The drift test uses hard assertions (`assert dropped == []`) while the upstream schema is still evolving, OR uses soft warnings (`warnings.warn`) after the schema has been frozen.
205
+
206
+ **Risk**:
207
+ - Hard asserts during evolution: CI breaks on every upstream change → drift tests get skipped or deleted.
208
+ - Soft warnings after freeze: Regressions slip through because CI never fails.
209
+
210
+ **Detection**:
211
+ ```python
212
+ # Check freeze resolution precedence in the contract test file:
213
+ # 1) CONTRACT_SCHEMA_FROZEN env var
214
+ # 2) _contract_state.json marker
215
+ # 3) CI fallback (CI=true + sample exists)
216
+ import os
217
+ schema_frozen = resolve_schema_frozen()
218
+
219
+ # If the upstream schema is frozen, SCHEMA_FROZEN should be True
220
+ # If the upstream schema is still evolving, SCHEMA_FROZEN should be False
221
+ ```
222
+
223
+ **Modes**:
224
+
225
+ | Schema state | `SCHEMA_FROZEN` | Drift detection behaviour |
226
+ |---|---|---|
227
+ | Evolving daily | `False` | `warnings.warn()` — CI passes, drift is visible in test output |
228
+ | Stabilised / frozen | `True` | `assert` — CI blocks, any untyped key is a failure |
229
+
230
+ **Fix**: Prefer explicit CI override (`CONTRACT_SCHEMA_FROZEN=1`) once the upstream schema is stable. If explicit env is missing, maintain `_contract_state.json` (`{"schema_frozen": true}`) to avoid ambiguous mode selection.
231
+
232
+ ---
233
+
234
+ ### D12 — Missing Exclusion Allow-List Entry
235
+
236
+ **What**: A JSON key is intentionally NOT typed in the DTO (deprecated, experimental, frontend-only metadata) but has no entry in `KNOWN_EXCLUDED_KEYS`, so it triggers noisy drift warnings.
237
+
238
+ **Risk**: Drift reports become cluttered with known intentional gaps. Teams learn to ignore warnings, defeating the purpose of drift detection.
239
+
240
+ **Detection**:
241
+ ```python
242
+ from fnmatch import fnmatch
243
+
244
+ # KNOWN_EXCLUDED_KEYS uses dot-path globs (fnmatch syntax)
245
+ KNOWN_EXCLUDED_KEYS: dict[str, set[str]] = {
246
+ "root.section.*": {"experimental_field"}, # TICKET-123
247
+ }
248
+
249
+ # A key is excluded if its full dot-path matches a pattern AND
250
+ # the leaf key name is in the exclusion set for that pattern.
251
+ is_excluded = any(
252
+ fnmatch(full_path, pattern) and key in excl
253
+ for pattern, excl in KNOWN_EXCLUDED_KEYS.items()
254
+ )
255
+ ```
256
+
257
+ **Rules**:
258
+ - Every entry MUST have a ticket reference or justification comment
259
+ - Review the list periodically — remove entries once the key is typed or removed upstream
260
+ - Use dot-path + fnmatch globs: `"surveys.*"` matches `surveys.broadband`, `surveys.mobile`, etc.
261
+ - If a key appears in many paths, use a broad glob; if it's specific, use the exact path
262
+
263
+ **Fix**: Add the intentionally excluded key to `KNOWN_EXCLUDED_KEYS` in the contract test file with a justification.
264
+
265
+ ---
266
+
267
+ ## Drift Check Execution Order
268
+
269
+ Run checks in this order for the most useful output:
270
+
271
+ 1. **D8** — Golden sample exists?
272
+ 2. **D1** — Payload keys covered by ingestion model? (recursive)
273
+ 3. **D3** — DTO `extra` config safe?
274
+ 4. **D2** — Ingestion fields mapped to DTO? (recursive)
275
+ 5. **D10** — Normalizer produces valid DTO?
276
+ 6. **D11** — Schema frozen flag matches upstream state?
277
+ 7. **D12** — Exclusion allow-list entries all have justifications?
278
+ 8. **D4** — DTO aliases match TypeScript?
279
+ 9. **D5** — DTO types match TypeScript?
280
+ 10. **D6** — Router has `response_model`?
281
+ 11. **D9** — Frontend service return type correct?
282
+ 12. **D7** — Mapping doc current?
283
+
284
+ ---
285
+
286
+ ## Drift Report Format
287
+
288
+ When reporting drift, use this format:
289
+
290
+ ```markdown
291
+ ## Drift Report — {{source_name}}
292
+
293
+ | Check | Status | Details |
294
+ |-------|--------|---------|
295
+ | D1 — Payload Coverage | ✅ PASS | 42/42 keys covered |
296
+ | D2 — DTO Coverage | ❌ FAIL | `byPlay` in ingestion, not in DTO |
297
+ | D3 — DTO Extra Config | ✅ PASS | `extra="forbid"` |
298
+ | D4 — TS Alias Match | ❌ FAIL | DTO alias `npsDeltas`, TS has `nps_deltas` |
299
+ | ... | ... | ... |
300
+
301
+ ### Fixes Required
302
+
303
+ 1. **D2 — `byPlay` not in DTO**: Add `by_play: dict = Field(alias="byPlay")` to `NpsMonthlyResponse`
304
+ 2. **D4 — `npsDeltas` alias**: Rename TS property from `nps_deltas` to `npsDeltas`
305
+ ```