@mytechtoday/augment-extensions 0.2.0 → 0.5.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 (420) hide show
  1. package/README.md +614 -39
  2. package/augment-extensions/coding-standards/bash/README.md +196 -0
  3. package/augment-extensions/coding-standards/bash/module.json +163 -0
  4. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
  5. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
  6. package/augment-extensions/coding-standards/css/README.md +40 -0
  7. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
  8. package/augment-extensions/coding-standards/css/module.json +44 -0
  9. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
  10. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
  11. package/augment-extensions/coding-standards/html/README.md +40 -0
  12. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
  13. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
  14. package/augment-extensions/coding-standards/html/module.json +44 -0
  15. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
  16. package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
  17. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
  18. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
  19. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
  20. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
  21. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
  22. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
  23. package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
  24. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
  25. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
  27. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
  28. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
  29. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
  30. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
  31. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
  32. package/augment-extensions/coding-standards/js/README.md +46 -0
  33. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
  34. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
  35. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
  36. package/augment-extensions/coding-standards/js/module.json +49 -0
  37. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
  38. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
  39. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
  40. package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
  41. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
  42. package/augment-extensions/coding-standards/php/README.md +248 -0
  43. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
  44. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
  45. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
  46. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
  47. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
  48. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
  49. package/augment-extensions/coding-standards/php/module.json +166 -0
  50. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
  51. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
  52. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
  53. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
  54. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
  55. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
  56. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
  57. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
  58. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
  59. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
  60. package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
  61. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
  62. package/augment-extensions/coding-standards/php/rules/security.md +358 -0
  63. package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
  64. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
  65. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
  66. package/augment-extensions/coding-standards/powershell/README.md +154 -0
  67. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
  68. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
  69. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
  70. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
  71. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
  72. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
  73. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
  74. package/augment-extensions/coding-standards/powershell/module.json +165 -0
  75. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
  76. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
  77. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
  78. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
  79. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
  80. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
  81. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
  82. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
  83. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
  84. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
  85. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
  86. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
  87. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
  88. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
  89. package/augment-extensions/coding-standards/python/README.md +12 -8
  90. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
  91. package/augment-extensions/coding-standards/python/module.json +8 -4
  92. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
  93. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
  94. package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
  95. package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
  96. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
  97. package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
  98. package/augment-extensions/collections/html-css-js/README.md +82 -0
  99. package/augment-extensions/collections/html-css-js/collection.json +41 -0
  100. package/augment-extensions/domain-rules/database/README.md +161 -0
  101. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
  102. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
  103. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
  104. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
  105. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
  106. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
  107. package/augment-extensions/domain-rules/database/module.json +28 -0
  108. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
  109. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
  110. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
  111. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
  112. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
  113. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
  114. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
  115. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
  116. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
  117. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
  118. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
  119. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
  120. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
  121. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
  122. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
  123. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
  124. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
  125. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
  126. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
  127. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
  128. package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
  129. package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
  130. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
  131. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
  132. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
  133. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
  134. package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
  135. package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
  136. package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
  137. package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
  138. package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
  139. package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
  140. package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
  141. package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
  142. package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
  143. package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
  144. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
  145. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
  146. package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
  147. package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
  148. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
  149. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
  150. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
  151. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
  152. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
  153. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
  154. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
  155. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
  156. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
  157. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
  158. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
  159. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
  160. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
  161. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
  162. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
  163. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
  164. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
  165. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
  166. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
  167. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
  168. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
  169. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
  170. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
  171. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
  172. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
  173. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
  174. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
  175. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
  176. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
  177. package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
  178. package/augment-extensions/domain-rules/mcp/README.md +150 -0
  179. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  180. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  181. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  182. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  183. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  184. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  185. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  186. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  187. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  188. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  189. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  190. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  191. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  192. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  193. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  194. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  195. package/augment-extensions/workflows/beads/module.json +4 -3
  196. package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
  197. package/augment-extensions/workflows/beads-integration/README.md +143 -0
  198. package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
  199. package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
  200. package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
  201. package/augment-extensions/workflows/beads-integration/module.json +75 -0
  202. package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
  203. package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
  204. package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
  205. package/augment-extensions/workflows/database/README.md +195 -0
  206. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  207. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  208. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  209. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  210. package/augment-extensions/workflows/database/module.json +42 -0
  211. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  212. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  213. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  214. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  215. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  216. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  217. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  218. package/augment-extensions/workflows/openspec/module.json +4 -3
  219. package/augment-extensions/writing-standards/screenplay/README.md +300 -0
  220. package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
  221. package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
  222. package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
  223. package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
  224. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  225. package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
  226. package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
  227. package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
  228. package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
  229. package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
  230. package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
  231. package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
  232. package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
  233. package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
  234. package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
  235. package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
  236. package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
  237. package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
  238. package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
  239. package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
  240. package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
  241. package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
  242. package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
  243. package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
  244. package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
  245. package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
  246. package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
  247. package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
  248. package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
  249. package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
  250. package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
  251. package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
  252. package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
  253. package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
  254. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  255. package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
  256. package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
  257. package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
  258. package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
  259. package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
  260. package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
  261. package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
  262. package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
  263. package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
  264. package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
  265. package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
  266. package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
  267. package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
  268. package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
  269. package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
  270. package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
  271. package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
  272. package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
  273. package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
  274. package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
  275. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  276. package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
  277. package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
  278. package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
  279. package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
  280. package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
  281. package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
  282. package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
  283. package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
  284. package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
  285. package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
  286. package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
  287. package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
  288. package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
  289. package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
  290. package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
  291. package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
  292. package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
  293. package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
  294. package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
  295. package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
  296. package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
  297. package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
  298. package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
  299. package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
  300. package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
  301. package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
  302. package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
  303. package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
  304. package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
  305. package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
  306. package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
  307. package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
  308. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
  309. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
  310. package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
  311. package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
  312. package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
  313. package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
  314. package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
  315. package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
  316. package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
  317. package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
  318. package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
  319. package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
  320. package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
  321. package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
  322. package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
  323. package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
  324. package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
  325. package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
  326. package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
  327. package/cli/MODULES.md +302 -0
  328. package/cli/dist/cli.js +168 -10
  329. package/cli/dist/cli.js.map +1 -1
  330. package/cli/dist/commands/catalog.d.ts +13 -0
  331. package/cli/dist/commands/catalog.d.ts.map +1 -0
  332. package/cli/dist/commands/catalog.js +104 -0
  333. package/cli/dist/commands/catalog.js.map +1 -0
  334. package/cli/dist/commands/gui.d.ts +6 -0
  335. package/cli/dist/commands/gui.d.ts.map +1 -0
  336. package/cli/dist/commands/gui.js +211 -0
  337. package/cli/dist/commands/gui.js.map +1 -0
  338. package/cli/dist/commands/init.d.ts.map +1 -1
  339. package/cli/dist/commands/init.js +12 -0
  340. package/cli/dist/commands/init.js.map +1 -1
  341. package/cli/dist/commands/install-rules.d.ts +14 -0
  342. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  343. package/cli/dist/commands/install-rules.js +127 -0
  344. package/cli/dist/commands/install-rules.js.map +1 -0
  345. package/cli/dist/commands/link.d.ts.map +1 -1
  346. package/cli/dist/commands/link.js +9 -11
  347. package/cli/dist/commands/link.js.map +1 -1
  348. package/cli/dist/commands/list.d.ts.map +1 -1
  349. package/cli/dist/commands/list.js +11 -28
  350. package/cli/dist/commands/list.js.map +1 -1
  351. package/cli/dist/commands/mcp.d.ts +48 -0
  352. package/cli/dist/commands/mcp.d.ts.map +1 -0
  353. package/cli/dist/commands/mcp.js +229 -0
  354. package/cli/dist/commands/mcp.js.map +1 -0
  355. package/cli/dist/commands/self-remove.d.ts +7 -0
  356. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  357. package/cli/dist/commands/self-remove.js +179 -0
  358. package/cli/dist/commands/self-remove.js.map +1 -0
  359. package/cli/dist/commands/show.d.ts +19 -0
  360. package/cli/dist/commands/show.d.ts.map +1 -1
  361. package/cli/dist/commands/show.js +478 -63
  362. package/cli/dist/commands/show.js.map +1 -1
  363. package/cli/dist/commands/skill.d.ts +67 -0
  364. package/cli/dist/commands/skill.d.ts.map +1 -0
  365. package/cli/dist/commands/skill.js +513 -0
  366. package/cli/dist/commands/skill.js.map +1 -0
  367. package/cli/dist/commands/unlink.d.ts +6 -0
  368. package/cli/dist/commands/unlink.d.ts.map +1 -0
  369. package/cli/dist/commands/unlink.js +115 -0
  370. package/cli/dist/commands/unlink.js.map +1 -0
  371. package/cli/dist/commands/validate.d.ts +6 -0
  372. package/cli/dist/commands/validate.d.ts.map +1 -0
  373. package/cli/dist/commands/validate.js +159 -0
  374. package/cli/dist/commands/validate.js.map +1 -0
  375. package/cli/dist/types/gui.d.ts +62 -0
  376. package/cli/dist/types/gui.d.ts.map +1 -0
  377. package/cli/dist/types/gui.js +30 -0
  378. package/cli/dist/types/gui.js.map +1 -0
  379. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  380. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  381. package/cli/dist/utils/catalog-sync.js +157 -0
  382. package/cli/dist/utils/catalog-sync.js.map +1 -0
  383. package/cli/dist/utils/character-count.d.ts +56 -0
  384. package/cli/dist/utils/character-count.d.ts.map +1 -0
  385. package/cli/dist/utils/character-count.js +190 -0
  386. package/cli/dist/utils/character-count.js.map +1 -0
  387. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  388. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  389. package/cli/dist/utils/documentation-validator.js +233 -0
  390. package/cli/dist/utils/documentation-validator.js.map +1 -0
  391. package/cli/dist/utils/gui-helpers.d.ts +23 -0
  392. package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
  393. package/cli/dist/utils/gui-helpers.js +159 -0
  394. package/cli/dist/utils/gui-helpers.js.map +1 -0
  395. package/cli/dist/utils/install-rules.d.ts +32 -0
  396. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  397. package/cli/dist/utils/install-rules.js +375 -0
  398. package/cli/dist/utils/install-rules.js.map +1 -0
  399. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  400. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  401. package/cli/dist/utils/mcp-integration.js +292 -0
  402. package/cli/dist/utils/mcp-integration.js.map +1 -0
  403. package/cli/dist/utils/module-system.d.ts +232 -0
  404. package/cli/dist/utils/module-system.d.ts.map +1 -0
  405. package/cli/dist/utils/module-system.js +900 -0
  406. package/cli/dist/utils/module-system.js.map +1 -0
  407. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  408. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  409. package/cli/dist/utils/modules-catalog.js +163 -0
  410. package/cli/dist/utils/modules-catalog.js.map +1 -0
  411. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  412. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  413. package/cli/dist/utils/rule-install-hooks.js +224 -0
  414. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  415. package/cli/dist/utils/skill-system.d.ts +95 -0
  416. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  417. package/cli/dist/utils/skill-system.js +313 -0
  418. package/cli/dist/utils/skill-system.js.map +1 -0
  419. package/modules.md +559 -105
  420. package/package.json +17 -6
@@ -0,0 +1,234 @@
1
+ <?php
2
+
3
+ /**
4
+ * Legacy Code Refactoring Example
5
+ *
6
+ * This example demonstrates refactoring procedural PHP code to modern OOP with:
7
+ * - Namespaces (PSR-4)
8
+ * - Type hints (PHP 8+)
9
+ * - Dependency injection
10
+ * - Single responsibility principle
11
+ * - Proper error handling
12
+ */
13
+
14
+ // ============================================================================
15
+ // BEFORE: Legacy Procedural Code
16
+ // ============================================================================
17
+
18
+ /**
19
+ * Legacy user management functions (BAD EXAMPLE - DO NOT USE)
20
+ */
21
+
22
+ // Global database connection
23
+ $db = mysqli_connect('localhost', 'user', 'pass', 'database');
24
+
25
+ // Create user function with global dependency
26
+ function create_user($name, $email, $password)
27
+ {
28
+ global $db;
29
+
30
+ // No validation
31
+ $hashed_password = md5($password); // Weak hashing!
32
+
33
+ // SQL injection vulnerability!
34
+ $query = "INSERT INTO users (name, email, password)
35
+ VALUES ('$name', '$email', '$hashed_password')";
36
+
37
+ $result = mysqli_query($db, $query);
38
+
39
+ if ($result) {
40
+ $user_id = mysqli_insert_id($db);
41
+
42
+ // Send email (tightly coupled)
43
+ mail($email, 'Welcome', 'Welcome to our site!');
44
+
45
+ return $user_id;
46
+ }
47
+
48
+ return false;
49
+ }
50
+
51
+ // Get user function
52
+ function get_user($id)
53
+ {
54
+ global $db;
55
+
56
+ // SQL injection vulnerability!
57
+ $query = "SELECT * FROM users WHERE id = $id";
58
+ $result = mysqli_query($db, $query);
59
+
60
+ return mysqli_fetch_assoc($result);
61
+ }
62
+
63
+ // Update user function
64
+ function update_user($id, $name, $email)
65
+ {
66
+ global $db;
67
+
68
+ // SQL injection vulnerability!
69
+ $query = "UPDATE users SET name = '$name', email = '$email' WHERE id = $id";
70
+
71
+ return mysqli_query($db, $query);
72
+ }
73
+
74
+ // Delete user function
75
+ function delete_user($id)
76
+ {
77
+ global $db;
78
+
79
+ // SQL injection vulnerability!
80
+ $query = "DELETE FROM users WHERE id = $id";
81
+
82
+ return mysqli_query($db, $query);
83
+ }
84
+
85
+ // Usage (legacy)
86
+ $user_id = create_user('John Doe', 'john@example.com', 'password123');
87
+ $user = get_user($user_id);
88
+ update_user($user_id, 'Jane Doe', 'jane@example.com');
89
+ delete_user($user_id);
90
+
91
+ // ============================================================================
92
+ // AFTER: Modern OOP Code with Best Practices
93
+ // ============================================================================
94
+
95
+ declare(strict_types=1);
96
+
97
+ namespace App\Models;
98
+
99
+ /**
100
+ * User Model
101
+ */
102
+ class User
103
+ {
104
+ public function __construct(
105
+ private ?int $id = null,
106
+ private string $name = '',
107
+ private string $email = '',
108
+ private string $passwordHash = '',
109
+ private ?\DateTimeImmutable $createdAt = null,
110
+ private ?\DateTimeImmutable $updatedAt = null
111
+ ) {}
112
+
113
+ // Getters
114
+ public function getId(): ?int
115
+ {
116
+ return $this->id;
117
+ }
118
+
119
+ public function getName(): string
120
+ {
121
+ return $this->name;
122
+ }
123
+
124
+ public function getEmail(): string
125
+ {
126
+ return $this->email;
127
+ }
128
+
129
+ public function getPasswordHash(): string
130
+ {
131
+ return $this->passwordHash;
132
+ }
133
+
134
+ // Setters with validation
135
+ public function setName(string $name): self
136
+ {
137
+ if (empty($name)) {
138
+ throw new \InvalidArgumentException('Name cannot be empty');
139
+ }
140
+
141
+ $this->name = $name;
142
+ return $this;
143
+ }
144
+
145
+ public function setEmail(string $email): self
146
+ {
147
+ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
148
+ throw new \InvalidArgumentException('Invalid email address');
149
+ }
150
+
151
+ $this->email = $email;
152
+ return $this;
153
+ }
154
+
155
+ public function setPassword(string $password): self
156
+ {
157
+ if (strlen($password) < 8) {
158
+ throw new \InvalidArgumentException('Password must be at least 8 characters');
159
+ }
160
+
161
+ // Use secure password hashing
162
+ $this->passwordHash = password_hash($password, PASSWORD_ARGON2ID);
163
+ return $this;
164
+ }
165
+
166
+ public function verifyPassword(string $password): bool
167
+ {
168
+ return password_verify($password, $this->passwordHash);
169
+ }
170
+ }
171
+
172
+ // ============================================================================
173
+
174
+ namespace App\Repositories;
175
+
176
+ use App\Models\User;
177
+ use PDO;
178
+
179
+ /**
180
+ * User Repository - Database operations
181
+ */
182
+ class UserRepository
183
+ {
184
+ public function __construct(
185
+ private PDO $db
186
+ ) {}
187
+
188
+ public function create(User $user): User
189
+ {
190
+ $stmt = $this->db->prepare(
191
+ "INSERT INTO users (name, email, password_hash, created_at, updated_at)
192
+ VALUES (:name, :email, :password_hash, NOW(), NOW())"
193
+ );
194
+
195
+ $stmt->execute([
196
+ 'name' => $user->getName(),
197
+ 'email' => $user->getEmail(),
198
+ 'password_hash' => $user->getPasswordHash()
199
+ ]);
200
+
201
+ $id = (int) $this->db->lastInsertId();
202
+
203
+ return $this->findById($id);
204
+ }
205
+
206
+ public function findById(int $id): ?User
207
+ {
208
+ $stmt = $this->db->prepare("SELECT * FROM users WHERE id = :id");
209
+ $stmt->execute(['id' => $id]);
210
+
211
+ $data = $stmt->fetch(PDO::FETCH_ASSOC);
212
+
213
+ if (!$data) {
214
+ return null;
215
+ }
216
+
217
+ return $this->hydrate($data);
218
+ }
219
+
220
+ public function findByEmail(string $email): ?User
221
+ {
222
+ $stmt = $this->db->prepare("SELECT * FROM users WHERE email = :email");
223
+ $stmt->execute(['email' => $email]);
224
+
225
+ $data = $stmt->fetch(PDO::FETCH_ASSOC);
226
+
227
+ if (!$data) {
228
+ return null;
229
+ }
230
+
231
+ return $this->hydrate($data);
232
+ }
233
+ }
234
+
@@ -0,0 +1,211 @@
1
+ <?php
2
+
3
+ /**
4
+ * Web Application Example - Laravel User Authentication Module
5
+ *
6
+ * This example demonstrates best practices for PHP web applications including:
7
+ * - MVC architecture with thin controllers
8
+ * - Eloquent ORM for database interactions
9
+ * - Form validation with Form Requests
10
+ * - Middleware for authentication and authorization
11
+ * - Blade templating with auto-escaping
12
+ * - CSRF protection
13
+ * - Session management
14
+ */
15
+
16
+ namespace App\Http\Controllers;
17
+
18
+ use App\Http\Requests\StoreUserRequest;
19
+ use App\Http\Requests\UpdateUserRequest;
20
+ use App\Services\UserService;
21
+ use Illuminate\Http\Request;
22
+ use Illuminate\Http\RedirectResponse;
23
+ use Illuminate\View\View;
24
+
25
+ /**
26
+ * User Controller - Thin controller delegating to service layer
27
+ */
28
+ class UserController extends Controller
29
+ {
30
+ public function __construct(
31
+ private UserService $userService
32
+ ) {
33
+ $this->middleware('auth');
34
+ $this->middleware('can:manage-users')->except(['index', 'show']);
35
+ }
36
+
37
+ /**
38
+ * Display a listing of users
39
+ */
40
+ public function index(Request $request): View
41
+ {
42
+ $users = $this->userService->getPaginatedUsers(
43
+ perPage: $request->input('per_page', 20),
44
+ search: $request->input('search')
45
+ );
46
+
47
+ return view('users.index', [
48
+ 'users' => $users,
49
+ 'search' => $request->input('search')
50
+ ]);
51
+ }
52
+
53
+ /**
54
+ * Show the form for creating a new user
55
+ */
56
+ public function create(): View
57
+ {
58
+ return view('users.create', [
59
+ 'roles' => $this->userService->getAvailableRoles()
60
+ ]);
61
+ }
62
+
63
+ /**
64
+ * Store a newly created user
65
+ */
66
+ public function store(StoreUserRequest $request): RedirectResponse
67
+ {
68
+ $user = $this->userService->createUser($request->validated());
69
+
70
+ return redirect()
71
+ ->route('users.show', $user)
72
+ ->with('success', 'User created successfully!');
73
+ }
74
+
75
+ /**
76
+ * Display the specified user
77
+ */
78
+ public function show(int $id): View
79
+ {
80
+ $user = $this->userService->findUserById($id);
81
+
82
+ return view('users.show', ['user' => $user]);
83
+ }
84
+
85
+ /**
86
+ * Show the form for editing the specified user
87
+ */
88
+ public function edit(int $id): View
89
+ {
90
+ $user = $this->userService->findUserById($id);
91
+
92
+ return view('users.edit', [
93
+ 'user' => $user,
94
+ 'roles' => $this->userService->getAvailableRoles()
95
+ ]);
96
+ }
97
+
98
+ /**
99
+ * Update the specified user
100
+ */
101
+ public function update(UpdateUserRequest $request, int $id): RedirectResponse
102
+ {
103
+ $user = $this->userService->updateUser($id, $request->validated());
104
+
105
+ return redirect()
106
+ ->route('users.show', $user)
107
+ ->with('success', 'User updated successfully!');
108
+ }
109
+
110
+ /**
111
+ * Remove the specified user
112
+ */
113
+ public function destroy(int $id): RedirectResponse
114
+ {
115
+ $this->userService->deleteUser($id);
116
+
117
+ return redirect()
118
+ ->route('users.index')
119
+ ->with('success', 'User deleted successfully!');
120
+ }
121
+ }
122
+
123
+ // ============================================================================
124
+ // Form Request - Validation Logic
125
+ // ============================================================================
126
+
127
+ namespace App\Http\Requests;
128
+
129
+ use Illuminate\Foundation\Http\FormRequest;
130
+ use Illuminate\Validation\Rule;
131
+
132
+ class StoreUserRequest extends FormRequest
133
+ {
134
+ public function authorize(): bool
135
+ {
136
+ return $this->user()->can('create', User::class);
137
+ }
138
+
139
+ public function rules(): array
140
+ {
141
+ return [
142
+ 'name' => 'required|string|max:255',
143
+ 'email' => 'required|email|unique:users,email',
144
+ 'password' => 'required|min:8|confirmed',
145
+ 'role' => ['required', Rule::in(['user', 'admin', 'moderator'])],
146
+ 'is_active' => 'boolean'
147
+ ];
148
+ }
149
+
150
+ public function messages(): array
151
+ {
152
+ return [
153
+ 'name.required' => 'Please provide a name for the user',
154
+ 'email.unique' => 'This email address is already registered',
155
+ 'password.min' => 'Password must be at least 8 characters long'
156
+ ];
157
+ }
158
+ }
159
+
160
+ // ============================================================================
161
+ // Service Layer - Business Logic
162
+ // ============================================================================
163
+
164
+ namespace App\Services;
165
+
166
+ use App\Models\User;
167
+ use App\Repositories\UserRepository;
168
+ use Illuminate\Pagination\LengthAwarePaginator;
169
+ use Illuminate\Support\Facades\Hash;
170
+ use Illuminate\Support\Facades\DB;
171
+
172
+ class UserService
173
+ {
174
+ public function __construct(
175
+ private UserRepository $userRepository
176
+ ) {}
177
+
178
+ public function getPaginatedUsers(int $perPage = 20, ?string $search = null): LengthAwarePaginator
179
+ {
180
+ return $this->userRepository->paginate($perPage, $search);
181
+ }
182
+
183
+ public function findUserById(int $id): User
184
+ {
185
+ return $this->userRepository->findOrFail($id);
186
+ }
187
+
188
+ public function createUser(array $data): User
189
+ {
190
+ return DB::transaction(function () use ($data) {
191
+ $user = User::create([
192
+ 'name' => $data['name'],
193
+ 'email' => $data['email'],
194
+ 'password' => Hash::make($data['password']),
195
+ 'role' => $data['role'],
196
+ 'is_active' => $data['is_active'] ?? true
197
+ ]);
198
+
199
+ // Send welcome email
200
+ $user->sendWelcomeEmail();
201
+
202
+ // Log activity
203
+ activity()
204
+ ->performedOn($user)
205
+ ->log('User created');
206
+
207
+ return $user;
208
+ });
209
+ }
210
+ }
211
+
@@ -0,0 +1,215 @@
1
+ <?php
2
+ /**
3
+ * Plugin Name: WooCommerce Custom Cart Handler
4
+ * Plugin URI: https://example.com/woo-custom-cart
5
+ * Description: Custom shopping cart handler with stock validation and secure payment tokenization
6
+ * Version: 1.0.0
7
+ * Author: Your Name
8
+ * Author URI: https://example.com
9
+ * WC requires at least: 5.0
10
+ * WC tested up to: 7.0
11
+ * License: GPL v2 or later
12
+ * Text Domain: woo-custom-cart
13
+ */
14
+
15
+ // Prevent direct access
16
+ if (!defined('ABSPATH')) {
17
+ exit;
18
+ }
19
+
20
+ // Check if WooCommerce is active
21
+ if (!in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
22
+ return;
23
+ }
24
+
25
+ /**
26
+ * Main Plugin Class
27
+ */
28
+ class WC_Custom_Cart_Handler
29
+ {
30
+ private static $instance = null;
31
+
32
+ public static function get_instance()
33
+ {
34
+ if (null === self::$instance) {
35
+ self::$instance = new self();
36
+ }
37
+ return self::$instance;
38
+ }
39
+
40
+ private function __construct()
41
+ {
42
+ $this->init_hooks();
43
+ }
44
+
45
+ private function init_hooks()
46
+ {
47
+ // Cart hooks
48
+ add_filter('woocommerce_add_to_cart_validation', [$this, 'validate_add_to_cart'], 10, 3);
49
+ add_action('woocommerce_before_calculate_totals', [$this, 'modify_cart_prices']);
50
+ add_action('woocommerce_check_cart_items', [$this, 'validate_cart_stock']);
51
+
52
+ // Checkout hooks
53
+ add_action('woocommerce_checkout_process', [$this, 'validate_checkout']);
54
+ add_action('woocommerce_checkout_create_order', [$this, 'add_order_meta'], 10, 2);
55
+ add_action('woocommerce_checkout_order_processed', [$this, 'process_order'], 10, 3);
56
+
57
+ // Order status hooks
58
+ add_action('woocommerce_order_status_completed', [$this, 'handle_order_completed']);
59
+ add_action('woocommerce_order_status_cancelled', [$this, 'handle_order_cancelled']);
60
+
61
+ // Payment hooks
62
+ add_filter('woocommerce_payment_gateways', [$this, 'add_payment_gateway']);
63
+ }
64
+
65
+ /**
66
+ * Validate product before adding to cart
67
+ */
68
+ public function validate_add_to_cart($passed, $product_id, $quantity)
69
+ {
70
+ $product = wc_get_product($product_id);
71
+
72
+ if (!$product) {
73
+ wc_add_notice(__('Product not found.', 'woo-custom-cart'), 'error');
74
+ return false;
75
+ }
76
+
77
+ // Check if product is purchasable
78
+ if (!$product->is_purchasable()) {
79
+ wc_add_notice(__('This product cannot be purchased.', 'woo-custom-cart'), 'error');
80
+ return false;
81
+ }
82
+
83
+ // Check stock availability
84
+ if (!$product->has_enough_stock($quantity)) {
85
+ wc_add_notice(
86
+ sprintf(
87
+ __('Sorry, we do not have enough "%s" in stock. Only %d available.', 'woo-custom-cart'),
88
+ $product->get_name(),
89
+ $product->get_stock_quantity()
90
+ ),
91
+ 'error'
92
+ );
93
+ return false;
94
+ }
95
+
96
+ // Custom validation: Check if user has already purchased this product
97
+ if ($this->user_already_purchased($product_id)) {
98
+ wc_add_notice(
99
+ __('You have already purchased this product.', 'woo-custom-cart'),
100
+ 'error'
101
+ );
102
+ return false;
103
+ }
104
+
105
+ return $passed;
106
+ }
107
+
108
+ /**
109
+ * Modify cart item prices based on custom logic
110
+ */
111
+ public function modify_cart_prices($cart)
112
+ {
113
+ if (is_admin() && !defined('DOING_AJAX')) {
114
+ return;
115
+ }
116
+
117
+ foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
118
+ $product = $cart_item['data'];
119
+
120
+ // Apply volume discount
121
+ if ($cart_item['quantity'] >= 10) {
122
+ $discount_percentage = 10; // 10% discount for 10+ items
123
+ $original_price = $product->get_regular_price();
124
+ $discounted_price = $original_price * (1 - $discount_percentage / 100);
125
+
126
+ $product->set_price($discounted_price);
127
+
128
+ // Add notice about discount
129
+ if (!WC()->session->get('volume_discount_notice_shown')) {
130
+ wc_add_notice(
131
+ sprintf(
132
+ __('Volume discount applied: %d%% off!', 'woo-custom-cart'),
133
+ $discount_percentage
134
+ ),
135
+ 'success'
136
+ );
137
+ WC()->session->set('volume_discount_notice_shown', true);
138
+ }
139
+ }
140
+ }
141
+ }
142
+
143
+ /**
144
+ * Validate cart stock before checkout
145
+ */
146
+ public function validate_cart_stock()
147
+ {
148
+ foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
149
+ $product = $cart_item['data'];
150
+ $product_id = $cart_item['product_id'];
151
+ $quantity = $cart_item['quantity'];
152
+
153
+ // Re-check stock (in case it changed since adding to cart)
154
+ $fresh_product = wc_get_product($product_id);
155
+
156
+ if (!$fresh_product->has_enough_stock($quantity)) {
157
+ wc_add_notice(
158
+ sprintf(
159
+ __('Sorry, "%s" stock has changed. Only %d available.', 'woo-custom-cart'),
160
+ $product->get_name(),
161
+ $fresh_product->get_stock_quantity()
162
+ ),
163
+ 'error'
164
+ );
165
+ }
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Validate checkout fields
171
+ */
172
+ public function validate_checkout()
173
+ {
174
+ // Custom field validation
175
+ if (empty($_POST['custom_delivery_instructions'])) {
176
+ wc_add_notice(
177
+ __('Please provide delivery instructions.', 'woo-custom-cart'),
178
+ 'error'
179
+ );
180
+ }
181
+
182
+ // Validate minimum order amount
183
+ $cart_total = WC()->cart->get_total('');
184
+ $minimum_order = 50.00;
185
+
186
+ if ($cart_total < $minimum_order) {
187
+ wc_add_notice(
188
+ sprintf(
189
+ __('Minimum order amount is $%s. Your current total is $%s.', 'woo-custom-cart'),
190
+ number_format($minimum_order, 2),
191
+ number_format($cart_total, 2)
192
+ ),
193
+ 'error'
194
+ );
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Add custom meta to order
200
+ */
201
+ public function add_order_meta($order, $data)
202
+ {
203
+ if (isset($_POST['custom_delivery_instructions'])) {
204
+ $order->update_meta_data(
205
+ '_delivery_instructions',
206
+ sanitize_textarea_field($_POST['custom_delivery_instructions'])
207
+ );
208
+ }
209
+
210
+ // Add custom order number
211
+ $custom_order_number = 'ORD-' . date('Ymd') . '-' . str_pad($order->get_id(), 6, '0', STR_PAD_LEFT);
212
+ $order->update_meta_data('_custom_order_number', $custom_order_number);
213
+ }
214
+ }
215
+