cfsa-antigravity 1.0.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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,248 @@
1
+ ---
2
+ name: elasticsearch
3
+ description: "Expert Elasticsearch guide covering index design (mappings, analyzers, sharding), query DSL (full-text, filters, aggregations, fuzzy), indexing patterns (bulk API, ingest pipelines), performance (query profiling, caching, segment management), and operational best practices. Use when building search features, log analytics, or autocomplete with Elasticsearch or OpenSearch."
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Elasticsearch Expert Guide
8
+
9
+ > Use this skill when building full-text search, autocomplete, log analytics, or faceted navigation with Elasticsearch (8.x) or OpenSearch.
10
+
11
+ ## When to Use This Skill
12
+
13
+ - Building search features (product search, site search, document search)
14
+ - Implementing autocomplete / search-as-you-type
15
+ - Log analytics and aggregation dashboards
16
+ - Faceted navigation with filters and counts
17
+ - Geo-spatial search
18
+
19
+ ## When NOT to Use This Skill
20
+
21
+ - Primary database → use PostgreSQL or MongoDB
22
+ - Simple key-value lookups → use Redis
23
+ - Vector similarity search → use a vector DB (Qdrant, Pinecone)
24
+ - Small dataset (<100K docs) with basic search → PostgreSQL full-text may suffice
25
+
26
+ ---
27
+
28
+ ## 1. Index Design (CRITICAL)
29
+
30
+ ### Mapping
31
+
32
+ ```json
33
+ {
34
+ "mappings": {
35
+ "properties": {
36
+ "title": {
37
+ "type": "text",
38
+ "analyzer": "english",
39
+ "fields": {
40
+ "keyword": { "type": "keyword" },
41
+ "autocomplete": {
42
+ "type": "text",
43
+ "analyzer": "autocomplete_analyzer"
44
+ }
45
+ }
46
+ },
47
+ "description": { "type": "text", "analyzer": "english" },
48
+ "price": { "type": "scaled_float", "scaling_factor": 100 },
49
+ "category": { "type": "keyword" },
50
+ "tags": { "type": "keyword" },
51
+ "created_at": { "type": "date" },
52
+ "location": { "type": "geo_point" },
53
+ "in_stock": { "type": "boolean" }
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ ### Field Type Selection
60
+
61
+ | Data | Type | When |
62
+ |------|------|------|
63
+ | Full-text search | `text` | Search with relevance scoring |
64
+ | Exact match / filter / sort | `keyword` | Enums, IDs, tags, status |
65
+ | Both search + filter | Multi-field (`text` + `.keyword`) | Title, name |
66
+ | Numbers | `integer`, `long`, `scaled_float` | Prices, counts |
67
+ | Dates | `date` | Timestamps, created_at |
68
+ | Booleans | `boolean` | Flags |
69
+ | Geo | `geo_point` | Coordinates |
70
+
71
+ ### Analyzers
72
+
73
+ ```json
74
+ {
75
+ "settings": {
76
+ "analysis": {
77
+ "analyzer": {
78
+ "autocomplete_analyzer": {
79
+ "type": "custom",
80
+ "tokenizer": "autocomplete_tokenizer",
81
+ "filter": ["lowercase"]
82
+ }
83
+ },
84
+ "tokenizer": {
85
+ "autocomplete_tokenizer": {
86
+ "type": "edge_ngram",
87
+ "min_gram": 2,
88
+ "max_gram": 20,
89
+ "token_chars": ["letter", "digit"]
90
+ }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ ```
96
+
97
+ ### Sharding Strategy
98
+
99
+ | Shard size | Rule |
100
+ |-----------|------|
101
+ | Target | 10–50 GB per shard |
102
+ | Max | Never exceed 65 GB |
103
+ | Small indices (<10GB) | 1 primary shard |
104
+ | Time-series | ILM with rollover |
105
+
106
+ ---
107
+
108
+ ## 2. Query DSL (CRITICAL)
109
+
110
+ ### Full-Text Search
111
+
112
+ ```json
113
+ {
114
+ "query": {
115
+ "bool": {
116
+ "must": [
117
+ {
118
+ "multi_match": {
119
+ "query": "wireless headphones",
120
+ "fields": ["title^3", "description", "tags^2"],
121
+ "type": "best_fields",
122
+ "fuzziness": "AUTO"
123
+ }
124
+ }
125
+ ],
126
+ "filter": [
127
+ { "term": { "category": "electronics" } },
128
+ { "range": { "price": { "gte": 20, "lte": 200 } } },
129
+ { "term": { "in_stock": true } }
130
+ ],
131
+ "should": [
132
+ { "term": { "featured": { "value": true, "boost": 5 } } }
133
+ ]
134
+ }
135
+ },
136
+ "highlight": {
137
+ "fields": { "title": {}, "description": {} }
138
+ },
139
+ "sort": [
140
+ "_score",
141
+ { "created_at": "desc" }
142
+ ],
143
+ "from": 0,
144
+ "size": 20
145
+ }
146
+ ```
147
+
148
+ > **Rule**: Use `filter` for exact matches (no scoring, cached), `must` for relevance-scored text.
149
+
150
+ ### Autocomplete
151
+
152
+ ```json
153
+ {
154
+ "query": {
155
+ "match": {
156
+ "title.autocomplete": {
157
+ "query": "wire",
158
+ "analyzer": "standard"
159
+ }
160
+ }
161
+ },
162
+ "_source": ["title", "category"],
163
+ "size": 5
164
+ }
165
+ ```
166
+
167
+ ### Aggregations
168
+
169
+ ```json
170
+ {
171
+ "size": 0,
172
+ "aggs": {
173
+ "by_category": {
174
+ "terms": { "field": "category", "size": 20 },
175
+ "aggs": {
176
+ "avg_price": { "avg": { "field": "price" } },
177
+ "price_ranges": {
178
+ "range": {
179
+ "field": "price",
180
+ "ranges": [
181
+ { "to": 50 },
182
+ { "from": 50, "to": 100 },
183
+ { "from": 100 }
184
+ ]
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+ ```
192
+
193
+ ---
194
+
195
+ ## 3. Indexing Patterns
196
+
197
+ ### Bulk API
198
+
199
+ ```json
200
+ POST _bulk
201
+ {"index": {"_index": "products", "_id": "1"}}
202
+ {"title": "Wireless Headphones", "price": 79.99, "category": "electronics"}
203
+ {"index": {"_index": "products", "_id": "2"}}
204
+ {"title": "Running Shoes", "price": 129.99, "category": "sports"}
205
+ ```
206
+
207
+ | Rule | Detail |
208
+ |------|--------|
209
+ | Batch size | 5–15 MB per bulk request |
210
+ | Refresh interval | Set `refresh_interval: 30s` during bulk indexing |
211
+ | Replicas | Set `number_of_replicas: 0` during initial load, restore after |
212
+
213
+ ### Index Lifecycle Management (ILM)
214
+
215
+ ```json
216
+ {
217
+ "policy": {
218
+ "phases": {
219
+ "hot": { "actions": { "rollover": { "max_size": "50gb", "max_age": "7d" } } },
220
+ "warm": { "min_age": "30d", "actions": { "shrink": { "number_of_shards": 1 }, "forcemerge": { "max_num_segments": 1 } } },
221
+ "cold": { "min_age": "90d", "actions": { "searchable_snapshot": { "snapshot_repository": "backups" } } },
222
+ "delete": { "min_age": "365d", "actions": { "delete": {} } }
223
+ }
224
+ }
225
+ }
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 4. Common Anti-Patterns
231
+
232
+ 1. **Using ES as a primary database** — it's a search engine, not ACID storage
233
+ 2. **Not setting explicit mappings** — dynamic mapping guesses wrong types
234
+ 3. **Keyword fields for full-text search** — use `text` with analyzers
235
+ 4. **Querying without filters** — filters are cached and avoid scoring overhead
236
+ 5. **Too many shards** — small indices need 1 shard; over-sharding wastes resources
237
+ 6. **Deep pagination with `from`+`size`** — use `search_after` for >10K results
238
+ 7. **Not using bulk API** — single-doc indexing is orders of magnitude slower
239
+ 8. **Wildcard queries on large fields** — extremely expensive; use `edge_ngram` instead
240
+
241
+ ---
242
+
243
+ ## References
244
+
245
+ - [Elasticsearch Guide](https://www.elastic.co/guide/en/elasticsearch/reference/current/)
246
+ - [Query DSL](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html)
247
+ - [Mapping Types](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html)
248
+ - [Index Lifecycle Management](https://www.elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html)
@@ -0,0 +1,385 @@
1
+ ---
2
+ name: meilisearch
3
+ description: Integrate Meilisearch for fast, typo-tolerant full-text search including index management, filtering, faceting, geo search, and relevancy tuning. Use when adding search functionality to applications that need instant, typo-tolerant results.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Meilisearch
8
+
9
+ Integrate Meilisearch for fast, typo-tolerant full-text search. Meilisearch is an open-source search engine designed for instant search experiences with minimal configuration.
10
+
11
+ ## When to Use This Skill
12
+
13
+ - Adding search functionality to web applications
14
+ - Implementing faceted search (filter by category, price range, etc.)
15
+ - Building autocomplete / search-as-you-type experiences
16
+ - Searching content that needs typo tolerance and relevancy ranking
17
+ - Implementing geo-based search (find nearby locations)
18
+ - Multi-tenant search with secure tenant tokens
19
+
20
+ ## Setup
21
+
22
+ ```bash
23
+ # Install JavaScript client
24
+ pnpm add meilisearch
25
+
26
+ # Run Meilisearch locally (Docker)
27
+ docker run -d -p 7700:7700 \
28
+ -v $(pwd)/meili_data:/meili_data \
29
+ -e MEILI_MASTER_KEY='your-master-key' \
30
+ getmeili/meilisearch:latest
31
+ ```
32
+
33
+ ### Client Initialization
34
+
35
+ ```typescript
36
+ // src/lib/search/meilisearch.ts
37
+ import { MeiliSearch } from 'meilisearch';
38
+
39
+ export const meili = new MeiliSearch({
40
+ host: process.env.MEILISEARCH_HOST ?? 'http://localhost:7700',
41
+ apiKey: process.env.MEILISEARCH_ADMIN_KEY, // Admin key for server-side operations
42
+ });
43
+
44
+ // For client-side search, use a search-only API key
45
+ export const meiliSearch = new MeiliSearch({
46
+ host: process.env.MEILISEARCH_HOST ?? 'http://localhost:7700',
47
+ apiKey: process.env.MEILISEARCH_SEARCH_KEY, // Read-only key
48
+ });
49
+ ```
50
+
51
+ ## Index Management
52
+
53
+ ### Creating and Configuring an Index
54
+
55
+ ```typescript
56
+ // Create index with primary key
57
+ const index = await meili.createIndex('products', { primaryKey: 'id' });
58
+
59
+ // Configure searchable attributes (order defines relevancy weight)
60
+ await meili.index('products').updateSearchableAttributes([
61
+ 'name', // Highest weight
62
+ 'description',
63
+ 'category',
64
+ 'brand', // Lowest weight
65
+ ]);
66
+
67
+ // Configure filterable attributes (for filtering and faceting)
68
+ await meili.index('products').updateFilterableAttributes([
69
+ 'category',
70
+ 'brand',
71
+ 'price',
72
+ 'inStock',
73
+ 'rating',
74
+ 'tags',
75
+ '_geo', // Required for geo search
76
+ ]);
77
+
78
+ // Configure sortable attributes
79
+ await meili.index('products').updateSortableAttributes([
80
+ 'price',
81
+ 'rating',
82
+ 'createdAt',
83
+ ]);
84
+
85
+ // Configure displayed attributes (what is returned in results)
86
+ await meili.index('products').updateDisplayedAttributes([
87
+ 'id', 'name', 'description', 'price', 'category',
88
+ 'brand', 'imageUrl', 'rating', 'slug',
89
+ ]);
90
+
91
+ // Configure ranking rules (order matters)
92
+ await meili.index('products').updateRankingRules([
93
+ 'words', // Number of matched query words
94
+ 'typo', // Number of typos
95
+ 'proximity', // Distance between matched words
96
+ 'attribute', // Position in searchableAttributes list
97
+ 'sort', // User-defined sort
98
+ 'exactness', // Exact vs prefix match
99
+ 'rating:desc', // Custom ranking: higher rating first
100
+ ]);
101
+ ```
102
+
103
+ ### Typo Tolerance
104
+
105
+ ```typescript
106
+ await meili.index('products').updateTypoTolerance({
107
+ enabled: true,
108
+ minWordSizeForTypos: {
109
+ oneTypo: 4, // Allow 1 typo for words >= 4 chars
110
+ twoTypos: 8, // Allow 2 typos for words >= 8 chars
111
+ },
112
+ disableOnAttributes: ['sku', 'barcode'], // Exact match only for these
113
+ disableOnWords: ['iPhone', 'MacBook'], // Exact match for specific terms
114
+ });
115
+ ```
116
+
117
+ ### Synonyms
118
+
119
+ ```typescript
120
+ await meili.index('products').updateSynonyms({
121
+ 'phone': ['smartphone', 'mobile', 'cellphone'],
122
+ 'laptop': ['notebook', 'portable computer'],
123
+ 'tv': ['television', 'monitor', 'screen'],
124
+ // One-way synonym
125
+ 'iphone': ['phone'],
126
+ });
127
+ ```
128
+
129
+ ### Stop Words
130
+
131
+ ```typescript
132
+ await meili.index('products').updateStopWords([
133
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'of', 'for', 'in',
134
+ ]);
135
+ ```
136
+
137
+ ## Document Operations
138
+
139
+ ### Adding Documents
140
+
141
+ ```typescript
142
+ const products = [
143
+ {
144
+ id: 'prod_1',
145
+ name: 'Wireless Noise-Canceling Headphones',
146
+ description: 'Premium wireless headphones with active noise cancellation',
147
+ category: 'Electronics',
148
+ brand: 'AudioTech',
149
+ price: 299.99,
150
+ rating: 4.7,
151
+ inStock: true,
152
+ tags: ['wireless', 'noise-canceling', 'bluetooth'],
153
+ slug: 'wireless-noise-canceling-headphones',
154
+ _geo: { lat: 40.7128, lng: -74.0060 },
155
+ },
156
+ // ... more products
157
+ ];
158
+
159
+ // Add or replace documents
160
+ const task = await meili.index('products').addDocuments(products);
161
+
162
+ // Wait for indexing to complete
163
+ await meili.waitForTask(task.taskUid);
164
+
165
+ // Update specific documents (partial update)
166
+ await meili.index('products').updateDocuments([
167
+ { id: 'prod_1', price: 249.99, inStock: false },
168
+ ]);
169
+
170
+ // Delete documents
171
+ await meili.index('products').deleteDocument('prod_1');
172
+ await meili.index('products').deleteDocuments(['prod_1', 'prod_2']);
173
+ await meili.index('products').deleteAllDocuments();
174
+ ```
175
+
176
+ ### Batch Indexing
177
+
178
+ ```typescript
179
+ // For large datasets, batch in chunks
180
+ async function indexAllProducts(products: Product[]) {
181
+ const BATCH_SIZE = 1000;
182
+ const tasks: number[] = [];
183
+
184
+ for (let i = 0; i < products.length; i += BATCH_SIZE) {
185
+ const batch = products.slice(i, i + BATCH_SIZE);
186
+ const task = await meili.index('products').addDocuments(batch);
187
+ tasks.push(task.taskUid);
188
+ }
189
+
190
+ // Wait for all batches to finish
191
+ for (const taskUid of tasks) {
192
+ await meili.waitForTask(taskUid);
193
+ }
194
+ }
195
+ ```
196
+
197
+ ## Searching
198
+
199
+ ### Basic Search
200
+
201
+ ```typescript
202
+ const results = await meili.index('products').search('wireless headphones');
203
+
204
+ // results shape:
205
+ // {
206
+ // hits: [...], // Matching documents
207
+ // query: 'wireless headphones',
208
+ // processingTimeMs: 2,
209
+ // limit: 20,
210
+ // offset: 0,
211
+ // estimatedTotalHits: 42,
212
+ // }
213
+ ```
214
+
215
+ ### Search with Filters
216
+
217
+ ```typescript
218
+ const results = await meili.index('products').search('headphones', {
219
+ filter: [
220
+ 'category = "Electronics"',
221
+ 'price >= 50 AND price <= 300',
222
+ 'inStock = true',
223
+ 'rating >= 4.0',
224
+ ],
225
+ sort: ['price:asc'],
226
+ limit: 20,
227
+ offset: 0,
228
+ });
229
+
230
+ // Array of filter strings are ANDed together
231
+ // Use OR within a string: 'category = "Electronics" OR category = "Audio"'
232
+ // Use arrays for AND between groups, strings for OR within groups:
233
+ // filter: [['category = "Electronics"', 'category = "Audio"'], 'inStock = true']
234
+ // = (Electronics OR Audio) AND inStock
235
+ ```
236
+
237
+ ### Search with Facets
238
+
239
+ ```typescript
240
+ const results = await meili.index('products').search('headphones', {
241
+ facets: ['category', 'brand', 'tags'],
242
+ filter: ['inStock = true'],
243
+ });
244
+
245
+ // results.facetDistribution:
246
+ // {
247
+ // category: { Electronics: 15, Audio: 8, Accessories: 3 },
248
+ // brand: { AudioTech: 10, SoundMax: 8, BassKing: 5 },
249
+ // tags: { wireless: 18, bluetooth: 15, 'noise-canceling': 12 },
250
+ // }
251
+ ```
252
+
253
+ ### Search with Highlighting
254
+
255
+ ```typescript
256
+ const results = await meili.index('products').search('wireless headphones', {
257
+ attributesToHighlight: ['name', 'description'],
258
+ highlightPreTag: '<mark>',
259
+ highlightPostTag: '</mark>',
260
+ attributesToCrop: ['description'],
261
+ cropLength: 30,
262
+ });
263
+
264
+ // Each hit includes _formatted with highlighted matches:
265
+ // hit._formatted.name = '<mark>Wireless</mark> Noise-Canceling <mark>Headphones</mark>'
266
+ ```
267
+
268
+ ### Geo Search
269
+
270
+ ```typescript
271
+ // Find products within 10km of a location
272
+ const results = await meili.index('products').search('coffee shop', {
273
+ filter: ['_geoRadius(40.7128, -74.0060, 10000)'], // lat, lng, radius in meters
274
+ sort: ['_geoPoint(40.7128, -74.0060):asc'], // Sort by distance
275
+ });
276
+
277
+ // Bounding box filter
278
+ const results2 = await meili.index('products').search('', {
279
+ filter: ['_geoBoundingBox([40.82, -74.02], [40.70, -73.95])'], // top-left, bottom-right
280
+ });
281
+ ```
282
+
283
+ ### Multi-Index Search
284
+
285
+ ```typescript
286
+ const results = await meili.multiSearch({
287
+ queries: [
288
+ { indexUid: 'products', q: 'wireless', limit: 5 },
289
+ { indexUid: 'articles', q: 'wireless', limit: 5 },
290
+ { indexUid: 'categories', q: 'wireless', limit: 3 },
291
+ ],
292
+ });
293
+
294
+ // results.results is an array of search results, one per query
295
+ ```
296
+
297
+ ## Tenant Tokens (Multi-Tenancy)
298
+
299
+ Tenant tokens restrict search to specific filter rules. Generate them server-side, use them client-side.
300
+
301
+ ```typescript
302
+ // Server: Generate a tenant token
303
+ import { MeiliSearch } from 'meilisearch';
304
+
305
+ const client = new MeiliSearch({
306
+ host: process.env.MEILISEARCH_HOST!,
307
+ apiKey: process.env.MEILISEARCH_ADMIN_KEY!,
308
+ });
309
+
310
+ function generateTenantToken(tenantId: string): string {
311
+ return client.generateTenantToken(
312
+ process.env.MEILISEARCH_SEARCH_KEY_UID!, // UID of the search key
313
+ {
314
+ products: {
315
+ filter: `tenantId = "${tenantId}"`, // Enforced filter
316
+ },
317
+ },
318
+ {
319
+ expiresAt: new Date(Date.now() + 3600 * 1000), // 1 hour
320
+ },
321
+ );
322
+ }
323
+ ```
324
+
325
+ ```typescript
326
+ // Client: Use the tenant token
327
+ const tenantClient = new MeiliSearch({
328
+ host: 'https://search.example.com',
329
+ apiKey: tenantToken, // Token from server
330
+ });
331
+
332
+ // All searches are automatically scoped to the tenant
333
+ const results = await tenantClient.index('products').search('headphones');
334
+ // Only returns products where tenantId matches
335
+ ```
336
+
337
+ ## Syncing Data
338
+
339
+ ```typescript
340
+ // Pattern: Sync database changes to Meilisearch
341
+ // Call this from your database hooks/triggers
342
+
343
+ async function syncProductToSearch(product: Product, action: 'upsert' | 'delete') {
344
+ const index = meili.index('products');
345
+
346
+ if (action === 'delete') {
347
+ await index.deleteDocument(product.id);
348
+ return;
349
+ }
350
+
351
+ await index.addDocuments([{
352
+ id: product.id,
353
+ name: product.name,
354
+ description: product.description,
355
+ category: product.category,
356
+ brand: product.brand,
357
+ price: product.price,
358
+ rating: product.rating,
359
+ inStock: product.inStock,
360
+ tags: product.tags,
361
+ slug: product.slug,
362
+ updatedAt: product.updatedAt,
363
+ }]);
364
+ }
365
+ ```
366
+
367
+ ## Anti-Patterns
368
+
369
+ | Anti-Pattern | Correct Approach |
370
+ |-------------|-----------------|
371
+ | Using the admin key on the client | Use search-only keys or tenant tokens client-side |
372
+ | Not configuring searchableAttributes | Without it, all fields are searchable (slow, noisy results) |
373
+ | Indexing raw database rows with all columns | Index only fields needed for search, display, and filtering |
374
+ | Calling `waitForTask` in request handlers | Indexing is async -- return immediately, let it process in background |
375
+ | Re-indexing entire dataset on every change | Use incremental `addDocuments` (upserts by primary key) |
376
+ | Using Meilisearch as a primary database | It is a search index -- your database is the source of truth |
377
+
378
+ ## Environment Variables
379
+
380
+ ```env
381
+ MEILISEARCH_HOST=http://localhost:7700
382
+ MEILISEARCH_ADMIN_KEY= # Admin key -- server-side only
383
+ MEILISEARCH_SEARCH_KEY= # Search-only key -- safe for client
384
+ MEILISEARCH_SEARCH_KEY_UID= # UID of search key (for tenant tokens)
385
+ ```