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,751 @@
1
+ ---
2
+ name: regex-patterns
3
+ description: "Comprehensive regular expressions guide covering character classes, quantifiers, anchors, groups (capturing, non-capturing, named), lookahead/lookbehind, backreferences, common patterns (email, URL, IP, phone, dates, semver), ReDoS prevention, Unicode support, flags, regex in multiple languages (JS, Python, Go, Rust), debugging techniques, and when NOT to use regex. Use when writing, debugging, or optimizing regular expressions."
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Regular Expressions Mastery
8
+
9
+ ## 1. Fundamentals
10
+
11
+ ### Character Classes
12
+
13
+ ```
14
+ . Any character except newline (unless /s flag)
15
+ \d Digit [0-9]
16
+ \D Non-digit [^0-9]
17
+ \w Word character [a-zA-Z0-9_]
18
+ \W Non-word character [^a-zA-Z0-9_]
19
+ \s Whitespace [ \t\n\r\f\v]
20
+ \S Non-whitespace
21
+ [abc] Any of a, b, or c
22
+ [^abc] Not a, b, or c
23
+ [a-z] Range: a through z
24
+ [a-zA-Z] Any letter
25
+ [0-9a-fA-F] Hexadecimal digit
26
+ ```
27
+
28
+ ### Custom Character Classes
29
+
30
+ ```
31
+ [aeiou] Vowels
32
+ [^aeiou] Non-vowels (consonants and non-letters)
33
+ [\d\s] Digit or whitespace
34
+ [.\-+] Literal dot, hyphen, or plus (hyphen escaped or at start/end)
35
+ [\[\]] Literal square brackets
36
+ [^\n\r] Any character except newline
37
+ ```
38
+
39
+ ### Quantifiers
40
+
41
+ ```
42
+ * Zero or more (greedy)
43
+ + One or more (greedy)
44
+ ? Zero or one (optional)
45
+ {3} Exactly 3
46
+ {2,5} Between 2 and 5
47
+ {3,} 3 or more
48
+
49
+ *? Zero or more (lazy -- match as few as possible)
50
+ +? One or more (lazy)
51
+ ?? Zero or one (lazy)
52
+ {2,5}? Between 2 and 5 (lazy)
53
+
54
+ *+ Zero or more (possessive -- no backtracking, not in all engines)
55
+ ++ One or more (possessive)
56
+ ```
57
+
58
+ ### Greedy vs Lazy
59
+
60
+ ```
61
+ Input: <b>bold</b> and <b>more bold</b>
62
+
63
+ <b>.*</b> Greedy: matches "<b>bold</b> and <b>more bold</b>" (one match)
64
+ <b>.*?</b> Lazy: matches "<b>bold</b>" and "<b>more bold</b>" (two matches)
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 2. Anchors and Boundaries
70
+
71
+ ```
72
+ ^ Start of string (or start of line with /m flag)
73
+ $ End of string (or end of line with /m flag)
74
+ \b Word boundary (between \w and \W)
75
+ \B Non-word boundary
76
+ \A Start of string (never affected by /m flag -- Python, Ruby)
77
+ \z End of string (absolute -- Python, Ruby)
78
+ \Z End of string or before final newline (Python, Ruby)
79
+ ```
80
+
81
+ ### Word Boundary Examples
82
+
83
+ ```
84
+ Pattern: \bcat\b
85
+ Matches: "The cat sat" (matches "cat")
86
+ No match: "concatenate" (cat is inside a word)
87
+
88
+ Pattern: \bpre\w+
89
+ Matches: "prefix", "preview", "predict"
90
+ No match: "compress" (pre not at word boundary)
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 3. Groups
96
+
97
+ ### Capturing Groups
98
+
99
+ ```
100
+ (abc) Capture group -- stores the match for backreference
101
+ (\d{4}) Capture the year
102
+ (\w+)@(\w+) Two capture groups: username and domain
103
+
104
+ # Backreferences (refer to captured group)
105
+ (.)\1 Matches repeated character: "aa", "bb", "cc"
106
+ (\w+)\s+\1 Matches repeated word: "the the", "is is"
107
+ ```
108
+
109
+ ### Named Groups
110
+
111
+ ```javascript
112
+ // JavaScript
113
+ const re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
114
+ const match = re.exec('2025-06-15');
115
+ // match.groups.year === '2025'
116
+ // match.groups.month === '06'
117
+ // match.groups.day === '15'
118
+ ```
119
+
120
+ ```python
121
+ # Python
122
+ import re
123
+ pattern = r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})'
124
+ match = re.match(pattern, '2025-06-15')
125
+ # match.group('year') == '2025'
126
+ # match.group('month') == '06'
127
+ ```
128
+
129
+ ### Non-Capturing Groups
130
+
131
+ ```
132
+ (?:abc) Groups but does NOT capture (no backreference)
133
+
134
+ # Use non-capturing groups for alternation without capturing
135
+ (?:com|org|net) Matches "com", "org", or "net" without storing
136
+
137
+ # Performance: non-capturing groups are slightly faster
138
+ ```
139
+
140
+ ### Alternation
141
+
142
+ ```
143
+ cat|dog Matches "cat" or "dog"
144
+ (cat|dog)s Matches "cats" or "dogs"
145
+ (?:Mr|Mrs|Ms) Matches title without capturing
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 4. Lookahead and Lookbehind
151
+
152
+ ### Lookahead (Zero-Width Assertion -- Looks Forward)
153
+
154
+ ```
155
+ (?=pattern) Positive lookahead: followed by pattern
156
+ (?!pattern) Negative lookahead: NOT followed by pattern
157
+
158
+ # Password validation: at least one digit, one uppercase, one lowercase
159
+ ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$
160
+
161
+ # Match "foo" only if followed by "bar"
162
+ foo(?=bar) Matches "foo" in "foobar", not in "foobaz"
163
+
164
+ # Match a number NOT followed by a percent sign
165
+ \d+(?!%) Matches "42" in "42 items", not in "42%"
166
+ ```
167
+
168
+ ### Lookbehind (Zero-Width Assertion -- Looks Backward)
169
+
170
+ ```
171
+ (?<=pattern) Positive lookbehind: preceded by pattern
172
+ (?<!pattern) Negative lookbehind: NOT preceded by pattern
173
+
174
+ # Match digits preceded by a dollar sign
175
+ (?<=\$)\d+ Matches "50" in "$50", not in "50 items"
176
+
177
+ # Match a word NOT preceded by "un"
178
+ (?<!un)happy Matches "happy" but not "unhappy"
179
+
180
+ # Note: lookbehinds must be fixed-width in most engines
181
+ # (?<=ab|abc) -- not allowed in some engines (variable-width)
182
+ # JavaScript supports variable-width lookbehind since ES2018
183
+ ```
184
+
185
+ ### Practical Lookaround Examples
186
+
187
+ ```javascript
188
+ // Format number with commas: 1234567 -> 1,234,567
189
+ '1234567'.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
190
+ // Result: "1,234,567"
191
+
192
+ // Extract values from key=value pairs without capturing the key
193
+ const re = /(?<=name=)\w+/g;
194
+ 'name=Alice age=30'.match(re);
195
+ // Result: ["Alice"]
196
+
197
+ // Match word that is not inside quotes
198
+ // \b\w+\b(?=(?:[^"]*"[^"]*")*[^"]*$)
199
+ ```
200
+
201
+ ---
202
+
203
+ ## 5. Common Patterns
204
+
205
+ ### Email (Simplified, RFC-Compliant Enough for Most Uses)
206
+
207
+ ```
208
+ ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$
209
+
210
+ # Breakdown:
211
+ # ^ Start of string
212
+ # [a-zA-Z0-9._%+\-]+ Local part (letters, digits, dots, etc.)
213
+ # @ Literal @
214
+ # [a-zA-Z0-9.\-]+ Domain (letters, digits, dots, hyphens)
215
+ # \. Literal dot
216
+ # [a-zA-Z]{2,} TLD (at least 2 letters)
217
+ # $ End of string
218
+
219
+ # WARNING: For production, use a library. RFC 5322 email regex is 6,300+ chars.
220
+ ```
221
+
222
+ ### URL
223
+
224
+ ```
225
+ https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)
226
+
227
+ # For strict validation, use the URL constructor instead:
228
+ # new URL(input) -- throws on invalid URL
229
+ ```
230
+
231
+ ### IPv4 Address
232
+
233
+ ```
234
+ \b(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\b
235
+
236
+ # Breakdown:
237
+ # 25[0-5] 250-255
238
+ # 2[0-4]\d 200-249
239
+ # [01]?\d\d? 0-199
240
+ # Repeated 4 times separated by dots
241
+ ```
242
+
243
+ ### Phone Number (US)
244
+
245
+ ```
246
+ ^(?:\+1[-.\s]?)?(?:\(?\d{3}\)?[-.\s]?)?\d{3}[-.\s]?\d{4}$
247
+
248
+ # Matches:
249
+ # (555) 123-4567
250
+ # 555-123-4567
251
+ # 5551234567
252
+ # +1 555 123 4567
253
+ ```
254
+
255
+ ### Date (YYYY-MM-DD)
256
+
257
+ ```
258
+ ^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$
259
+
260
+ # Validates format but NOT calendar correctness (e.g., 2025-02-31 matches).
261
+ # For real date validation, parse with Date or a date library.
262
+ ```
263
+
264
+ ### Semantic Versioning (SemVer)
265
+
266
+ ```
267
+ ^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:(?:0|[1-9]\d*|\d*[a-zA-Z\-][\da-zA-Z\-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z\-][\da-zA-Z\-]*))*))?(?:\+[\da-zA-Z\-]+(?:\.[\da-zA-Z\-]+)*)?$
268
+
269
+ # Matches: 1.0.0, 2.1.3-beta.1, 0.0.1+build.123
270
+ ```
271
+
272
+ ### Hex Color Code
273
+
274
+ ```
275
+ ^#(?:[0-9a-fA-F]{3}){1,2}$
276
+
277
+ # Matches: #fff, #FFF, #a1b2c3, #A1B2C3
278
+ ```
279
+
280
+ ### Slug (URL-Safe String)
281
+
282
+ ```
283
+ ^[a-z0-9]+(?:-[a-z0-9]+)*$
284
+
285
+ # Matches: "hello-world", "my-blog-post", "v2"
286
+ # No match: "-start", "end-", "double--dash"
287
+ ```
288
+
289
+ ---
290
+
291
+ ## 6. ReDoS Prevention (Catastrophic Backtracking)
292
+
293
+ ### The Problem
294
+
295
+ Some regex patterns can take exponential time on certain inputs, causing denial of service.
296
+
297
+ ```
298
+ # DANGEROUS patterns -- O(2^n) on adversarial input
299
+ (a+)+$ Nested quantifiers
300
+ (a|a)+$ Overlapping alternation
301
+ (\w+\s*)+$ Repeated group with optional separator
302
+
303
+ # Example attack:
304
+ # Pattern: (a+)+$
305
+ # Input: "aaaaaaaaaaaaaaaaaaaaaaaa!"
306
+ # The engine backtracks exponentially trying to match
307
+ ```
308
+
309
+ ### Prevention Rules
310
+
311
+ ```
312
+ # 1. NEVER nest quantifiers: (a+)+, (\w+)*, (.*)+
313
+ # Fix: Flatten to a single quantifier
314
+
315
+ # BAD: (a+)+
316
+ # GOOD: a+
317
+
318
+ # 2. NEVER use overlapping alternation with quantifiers
319
+ # BAD: (a|a)+
320
+ # GOOD: a+
321
+
322
+ # 3. NEVER use .* inside a repeated group
323
+ # BAD: (.*,)+
324
+ # GOOD: ([^,]*,)+
325
+
326
+ # 4. Use atomic groups or possessive quantifiers when available
327
+ # a++b Possessive: never backtracks into a+ match
328
+ # (?>a+)b Atomic group: same effect
329
+
330
+ # 5. Use negated character classes instead of lazy quantifiers
331
+ # BAD: ".*?" (lazy dot-star between quotes)
332
+ # GOOD: "[^"]*" (negated class -- no backtracking needed)
333
+
334
+ # 6. Set regex timeouts in production
335
+ ```
336
+
337
+ ### Language-Specific Timeout
338
+
339
+ ```javascript
340
+ // JavaScript: no built-in timeout, use a wrapper
341
+ function safeMatch(str, pattern, timeoutMs = 1000) {
342
+ // Run in a worker with a timeout, or use a library like re2
343
+ // Node.js: consider the 're2' package (linear-time regex engine)
344
+ }
345
+ ```
346
+
347
+ ```python
348
+ # Python: use the 'regex' package with timeout
349
+ import regex
350
+ try:
351
+ regex.match(r'(a+)+$', input_string, timeout=1.0)
352
+ except regex.error:
353
+ pass # Timed out
354
+ ```
355
+
356
+ ### Safe Alternatives
357
+
358
+ ```
359
+ # Use RE2 (linear-time regex engine, no backtracking)
360
+ # - Available as npm 're2', Python 'google-re2', Go 'regexp' (uses RE2 by default)
361
+ # - RE2 does NOT support backreferences or lookaround
362
+ # - Trade-off: fewer features, guaranteed linear performance
363
+ ```
364
+
365
+ ---
366
+
367
+ ## 7. Unicode Support
368
+
369
+ ### Unicode Categories (\p{})
370
+
371
+ ```javascript
372
+ // Requires /u or /v flag in JavaScript
373
+
374
+ // Match any letter (any script)
375
+ /\p{L}+/u // "Hello", "Bonjour", etc.
376
+
377
+ // Match any number
378
+ /\p{N}+/u // "123", etc.
379
+
380
+ // Match any punctuation
381
+ /\p{P}/u
382
+
383
+ // Match emoji (requires /v flag in JS)
384
+ /\p{Emoji}/v
385
+
386
+ // Match specific scripts
387
+ /\p{Script=Greek}+/u
388
+ /\p{Script=Han}+/u
389
+ /\p{Script=Arabic}+/u
390
+
391
+ // Common categories:
392
+ // \p{L} Letter (any script)
393
+ // \p{Lu} Uppercase letter
394
+ // \p{Ll} Lowercase letter
395
+ // \p{N} Number
396
+ // \p{Nd} Decimal digit
397
+ // \p{P} Punctuation
398
+ // \p{S} Symbol
399
+ // \p{Z} Separator (spaces)
400
+ // \p{M} Mark (combining characters)
401
+ ```
402
+
403
+ ### Unicode-Aware Patterns
404
+
405
+ ```javascript
406
+ // BAD: ASCII-only word matching
407
+ /[a-zA-Z]+/
408
+
409
+ // GOOD: Unicode-aware word matching
410
+ /[\p{L}\p{M}]+/u
411
+
412
+ // BAD: ASCII-only digit matching
413
+ /[0-9]+/
414
+
415
+ // GOOD: Unicode-aware digit matching (includes Arabic-Indic, etc.)
416
+ /\p{Nd}+/u
417
+
418
+ // Match a "word" in any language
419
+ /\b\p{L}+\b/gu
420
+ ```
421
+
422
+ ---
423
+
424
+ ## 8. Flags
425
+
426
+ ```
427
+ g Global: find all matches, not just the first
428
+ i Case-insensitive
429
+ m Multiline: ^ and $ match line boundaries, not just string boundaries
430
+ s DotAll: . matches newline characters
431
+ u Unicode: enables \p{}, correct handling of surrogate pairs
432
+ v UnicodeSets: extended Unicode support (JS, newer)
433
+ d HasIndices: capture group start/end indices (JS)
434
+ y Sticky: match at exact position (lastIndex)
435
+ x Extended/Verbose: ignore whitespace and allow comments (Python, Ruby, PCRE)
436
+ ```
437
+
438
+ ### Extended Mode (Verbose Regex)
439
+
440
+ ```python
441
+ # Python: re.VERBOSE or re.X
442
+ import re
443
+
444
+ pattern = re.compile(r"""
445
+ ^ # Start of string
446
+ (?P<protocol>https?) # Protocol (http or https)
447
+ :// # Separator
448
+ (?P<domain> # Domain group
449
+ [a-zA-Z0-9.-]+ # Domain name
450
+ \.[a-zA-Z]{2,} # TLD
451
+ )
452
+ (?P<path>/\S*)? # Optional path
453
+ $ # End of string
454
+ """, re.VERBOSE)
455
+ ```
456
+
457
+ ---
458
+
459
+ ## 9. Regex in Different Languages
460
+
461
+ ### JavaScript
462
+
463
+ ```javascript
464
+ // Literal syntax
465
+ const re = /^hello\s+(\w+)$/i;
466
+
467
+ // Constructor (for dynamic patterns)
468
+ const pattern = 'hello';
469
+ const re2 = new RegExp(`^${escapeRegExp(pattern)}$`, 'i');
470
+
471
+ // Methods
472
+ const match = str.match(re); // Returns match array or null
473
+ const allMatches = [...str.matchAll(/\d+/g)]; // Iterator of all matches
474
+ const replaced = str.replace(/foo/g, 'bar');
475
+ const parts = str.split(/[,;\s]+/);
476
+ const isValid = re.test(str); // Returns boolean
477
+
478
+ // Named groups
479
+ const { groups } = /(?<year>\d{4})-(?<month>\d{2})/.exec('2025-06');
480
+ // groups.year === '2025'
481
+
482
+ // Escape special characters for use in RegExp constructor
483
+ function escapeRegExp(str) {
484
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
485
+ }
486
+ ```
487
+
488
+ ### Python
489
+
490
+ ```python
491
+ import re
492
+
493
+ # Compile for reuse
494
+ pattern = re.compile(r'^hello\s+(\w+)$', re.IGNORECASE)
495
+
496
+ # Methods
497
+ match = pattern.match(string) # Match at start
498
+ match = pattern.search(string) # Search anywhere
499
+ matches = pattern.findall(string) # All matches (list of strings/tuples)
500
+ matches = pattern.finditer(string) # Iterator of Match objects
501
+ result = pattern.sub(r'bar', string) # Replace
502
+ parts = pattern.split(string) # Split
503
+
504
+ # Match object
505
+ if match:
506
+ match.group(0) # Full match
507
+ match.group(1) # First capture group
508
+ match.group('name') # Named group
509
+ match.start() # Start position
510
+ match.end() # End position
511
+
512
+ # Raw strings: always use r'...' for regex patterns in Python
513
+ # r'\n' is a literal backslash-n, not a newline
514
+ ```
515
+
516
+ ### Go
517
+
518
+ ```go
519
+ package main
520
+
521
+ import (
522
+ "fmt"
523
+ "regexp"
524
+ )
525
+
526
+ func main() {
527
+ // Compile (returns error if invalid)
528
+ re, err := regexp.Compile(`^hello\s+(\w+)$`)
529
+ if err != nil {
530
+ panic(err)
531
+ }
532
+
533
+ // MustCompile panics on invalid pattern (use for constants)
534
+ re = regexp.MustCompile(`\d+`)
535
+
536
+ // Methods
537
+ matched := re.MatchString("hello world") // bool
538
+ result := re.FindString("abc 123 def") // "123"
539
+ allResults := re.FindAllString("a1 b2 c3", -1) // ["1", "2", "3"]
540
+ submatch := re.FindStringSubmatch("hello world") // ["hello world", "world"]
541
+ replaced := re.ReplaceAllString("foo 123", "NUM") // "foo NUM"
542
+
543
+ // Note: Go uses RE2 engine -- no backreferences or lookaround
544
+ fmt.Println(matched, result, allResults, submatch, replaced)
545
+ }
546
+ ```
547
+
548
+ ### Rust
549
+
550
+ ```rust
551
+ use regex::Regex;
552
+
553
+ fn main() {
554
+ // Compile
555
+ let re = Regex::new(r"^hello\s+(\w+)$").unwrap();
556
+
557
+ // Methods
558
+ let is_match = re.is_match("hello world"); // bool
559
+ let caps = re.captures("hello world").unwrap();
560
+ let name = &caps[1]; // "world"
561
+
562
+ // Named captures
563
+ let re = Regex::new(r"(?P<year>\d{4})-(?P<month>\d{2})").unwrap();
564
+ let caps = re.captures("2025-06").unwrap();
565
+ let year = &caps["year"]; // "2025"
566
+
567
+ // Find all matches
568
+ let re = Regex::new(r"\d+").unwrap();
569
+ let matches: Vec<&str> = re.find_iter("a1 b2 c3").map(|m| m.as_str()).collect();
570
+ // ["1", "2", "3"]
571
+
572
+ // Replace
573
+ let result = re.replace_all("foo 123 bar 456", "NUM");
574
+ // "foo NUM bar NUM"
575
+
576
+ // Note: Rust regex crate uses finite automata (like RE2)
577
+ // No backreferences or lookaround by default
578
+ // Use the 'fancy-regex' crate for those features
579
+ }
580
+ ```
581
+
582
+ ---
583
+
584
+ ## 10. Debugging Regex
585
+
586
+ ### Techniques
587
+
588
+ ```
589
+ 1. Use regex101.com (supports PCRE, Python, JavaScript, Go, Rust)
590
+ - Shows match highlighting in real time
591
+ - Explains each token
592
+ - Shows capture groups
593
+ - Has a debugger that shows backtracking steps
594
+
595
+ 2. Break complex patterns into named pieces:
596
+
597
+ JavaScript:
598
+ const year = '(?<year>\\d{4})';
599
+ const month = '(?<month>0[1-9]|1[0-2])';
600
+ const day = '(?<day>0[1-9]|[12]\\d|3[01])';
601
+ const datePattern = new RegExp(`^${year}-${month}-${day}$`);
602
+
603
+ 3. Test incrementally:
604
+ - Start with the simplest subpattern
605
+ - Add one element at a time
606
+ - Test with both matching and non-matching inputs
607
+
608
+ 4. Check edge cases:
609
+ - Empty string
610
+ - Very long string
611
+ - Unicode characters
612
+ - Newlines
613
+ - String with only whitespace
614
+
615
+ 5. Log intermediate results:
616
+ const re = /(\w+)\s+(\w+)/;
617
+ const match = re.exec(input);
618
+ console.log('Full match:', match[0]);
619
+ console.log('Group 1:', match[1]);
620
+ console.log('Group 2:', match[2]);
621
+ ```
622
+
623
+ ### Common Debugging Mistakes
624
+
625
+ ```
626
+ # Forgetting to escape special characters
627
+ /file.txt/ # Matches "file_txt" too (dot matches anything)
628
+ /file\.txt/ # Correct: matches only "file.txt"
629
+
630
+ # Forgetting anchors
631
+ /\d{3}/ # Matches "123" inside "abc12345def"
632
+ /^\d{3}$/ # Matches only strings that are exactly 3 digits
633
+
634
+ # Greedy matching eating too much
635
+ /<.*>/ # On "<a>text</a>", matches the entire string
636
+ /<[^>]*>/ # Correct: matches "<a>" and "</a>" separately
637
+
638
+ # Multiline misunderstanding
639
+ /^line$/ # Only matches if entire string is "line"
640
+ /^line$/m # Matches "line" on any line in a multiline string
641
+ ```
642
+
643
+ ---
644
+
645
+ ## 11. When NOT to Use Regex
646
+
647
+ ### HTML/XML Parsing
648
+
649
+ ```
650
+ # NEVER parse HTML with regex. Use a DOM parser.
651
+
652
+ # BAD:
653
+ /<div class="title">(.*?)<\/div>/
654
+
655
+ # Why it fails:
656
+ # - Nested divs
657
+ # - Attributes in different orders
658
+ # - Self-closing tags
659
+ # - Comments containing tags
660
+ # - Malformed HTML
661
+
662
+ # GOOD:
663
+ # JavaScript: DOMParser, cheerio
664
+ # Python: BeautifulSoup, lxml
665
+ ```
666
+
667
+ ### Complex Grammars
668
+
669
+ ```
670
+ # Regex cannot parse:
671
+ # - Nested parentheses of arbitrary depth: ((()))
672
+ # - Matching braces in programming languages
673
+ # - JSON, YAML, TOML
674
+ # - Programming language syntax
675
+ # - Mathematical expressions
676
+
677
+ # Use a parser (PEG, ANTLR, tree-sitter) for these.
678
+ ```
679
+
680
+ ### Simple String Operations
681
+
682
+ ```
683
+ # Do not use regex when simple string methods work:
684
+
685
+ # BAD: /^prefix/.test(str)
686
+ # GOOD: str.startsWith('prefix')
687
+
688
+ # BAD: /suffix$/.test(str)
689
+ # GOOD: str.endsWith('suffix')
690
+
691
+ # BAD: str.replace(/foo/g, 'bar') (for literal strings)
692
+ # GOOD: str.replaceAll('foo', 'bar')
693
+
694
+ # BAD: /^$/.test(str)
695
+ # GOOD: str.length === 0
696
+
697
+ # BAD: str.split(/,/)
698
+ # GOOD: str.split(',') (for literal delimiters)
699
+ ```
700
+
701
+ ### URL Parsing
702
+
703
+ ```
704
+ # Do not regex URLs. Use the URL API.
705
+
706
+ # BAD:
707
+ const match = url.match(/^(https?):\/\/([^\/]+)(\/.*)?$/);
708
+
709
+ # GOOD:
710
+ const parsed = new URL(url);
711
+ // parsed.protocol, parsed.hostname, parsed.pathname, parsed.searchParams
712
+ ```
713
+
714
+ ### When Regex IS the Right Tool
715
+
716
+ ```
717
+ # Regex excels at:
718
+ # - Pattern matching in text (log parsing, data extraction)
719
+ # - Input validation (format checks)
720
+ # - Search and replace with pattern awareness
721
+ # - Tokenizing simple grammars (CSV fields, log lines)
722
+ # - Text cleanup (normalize whitespace, strip control characters)
723
+ # - Splitting on complex delimiters
724
+ ```
725
+
726
+ ---
727
+
728
+ ## 12. Critical Reminders
729
+
730
+ ### ALWAYS
731
+
732
+ - Use raw strings (Python: `r'...'`) to avoid double-escaping backslashes
733
+ - Anchor patterns with `^` and `$` when validating entire strings
734
+ - Use non-capturing groups `(?:...)` when you do not need the captured value
735
+ - Prefer negated character classes `[^"]*` over lazy quantifiers `.*?` for performance
736
+ - Test with adversarial inputs to check for ReDoS
737
+ - Use named groups for readability in complex patterns
738
+ - Escape user input before inserting into regex (prevent injection)
739
+ - Use the `/u` flag in JavaScript for Unicode correctness
740
+ - Comment complex regex patterns (use verbose mode or build from named parts)
741
+
742
+ ### NEVER
743
+
744
+ - Parse HTML, XML, JSON, or any recursive grammar with regex
745
+ - Use nested quantifiers without understanding backtracking: `(a+)+`
746
+ - Trust regex for email validation beyond basic format checks (use a library)
747
+ - Hardcode regex for international content without Unicode support
748
+ - Use `.` when you mean a specific character class (be explicit)
749
+ - Use `.*` in a pattern that processes user input without backtracking protection
750
+ - Forget that `^` and `$` behave differently with and without the `/m` flag
751
+ - Build regex from untrusted user input without escaping special characters