@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,248 @@
1
+ # PHP Coding Standards Module
2
+
3
+ ## Overview
4
+
5
+ Comprehensive PHP coding standards module for Augment Extensions, providing guidelines for modern PHP development following PSR standards and best practices across various project types.
6
+
7
+ **Version:** 1.0.0
8
+ **Character Count:** ~186,539
9
+
10
+ ---
11
+
12
+ ## Key Benefits
13
+
14
+ ✅ **PSR Compliance** - Full coverage of PSR-1, PSR-12, PSR-4, PSR-7, PSR-11, PSR-15, PSR-18
15
+ ✅ **Category-Specific Rules** - Tailored guidelines for web, API, CLI, CMS, e-commerce, and legacy projects
16
+ ✅ **Security-First** - OWASP PHP security best practices built-in
17
+ ✅ **Modern PHP** - PHP 8+ features including typed properties, union types, attributes
18
+ ✅ **Quality Tools** - Integration with PHPStan, Psalm, PHP-CS-Fixer, PHPUnit
19
+ ✅ **Flexible Configuration** - Category selection system for project-specific needs
20
+
21
+ ---
22
+
23
+ ## Installation
24
+
25
+ ### With CLI (Future)
26
+
27
+ ```bash
28
+ augx link coding-standards/php
29
+ ```
30
+
31
+ ### Manual Setup
32
+
33
+ 1. Copy module contents to your project's `.augment/` folder
34
+ 2. Create configuration file at `.augment/php-config.json`
35
+ 3. Configure categories for your project type
36
+
37
+ ---
38
+
39
+ ## Configuration
40
+
41
+ Create `.augment/php-config.json` in your project root:
42
+
43
+ ```json
44
+ {
45
+ "php_categories": ["web", "api"],
46
+ "psr_standards": ["PSR-1", "PSR-12", "PSR-4", "PSR-7"],
47
+ "php_version": "8.2",
48
+ "strict_types": true,
49
+ "static_analysis": {
50
+ "tool": "phpstan",
51
+ "level": 8
52
+ },
53
+ "code_style": {
54
+ "tool": "php-cs-fixer",
55
+ "ruleset": "PSR-12"
56
+ }
57
+ }
58
+ ```
59
+
60
+ ### Supported Categories
61
+
62
+ - **web** - Web applications (MVC, template engines, form handling)
63
+ - **api** - RESTful APIs (HTTP methods, authentication, response formatting)
64
+ - **cli** - Command-line tools (Symfony Console, argument handling)
65
+ - **cms** - CMS integrations (WordPress, Drupal plugins/themes)
66
+ - **ecommerce** - E-commerce systems (shopping carts, payment gateways, WooCommerce)
67
+ - **legacy** - Legacy code migration (refactoring, namespace introduction, type hints)
68
+
69
+ ---
70
+
71
+ ## Directory Structure
72
+
73
+ ```
74
+ augment-extensions/coding-standards/php/
75
+ ├── module.json # Module metadata and configuration
76
+ ├── README.md # This file
77
+ ├── rules/ # Rule files
78
+ │ ├── psr-standards.md # PSR-1, PSR-12, PSR-4, PSR-7, PSR-11
79
+ │ ├── naming-conventions.md # Variables, functions, classes, constants
80
+ │ ├── type-declarations.md # Type hints, return types, strict types
81
+ │ ├── error-handling.md # Exceptions, logging, retry patterns
82
+ │ ├── security.md # OWASP guidelines, input validation, XSS/SQL injection
83
+ │ ├── performance.md # OPcache, database optimization, caching
84
+ │ ├── testing.md # PHPUnit, unit tests, integration tests
85
+ │ ├── documentation.md # PHPDoc standards, inline comments
86
+ │ ├── code-quality.md # PHPStan, PHP-CS-Fixer, Composer
87
+ │ ├── category-configuration.md # Category selection and configuration
88
+ │ ├── web-applications.md # MVC, template engines, form handling
89
+ │ ├── api-development.md # RESTful design, authentication, responses
90
+ │ ├── cli-tools.md # Symfony Console, argument handling
91
+ │ ├── cms-integration.md # WordPress, Drupal hooks and security
92
+ │ ├── ecommerce.md # Shopping carts, payment gateways, WooCommerce
93
+ │ └── legacy-migration.md # Refactoring strategies, type hints, DI
94
+ └── examples/ # Code examples
95
+ ├── web-application-example.php
96
+ ├── api-endpoint-example.php
97
+ ├── cli-command-example.php
98
+ ├── wordpress-plugin-example.php
99
+ ├── woocommerce-extension-example.php
100
+ └── legacy-refactoring-example.php
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Core Workflows
106
+
107
+ ### 1. New PHP Project
108
+
109
+ ```json
110
+ {
111
+ "php_categories": ["web"],
112
+ "php_version": "8.2",
113
+ "strict_types": true,
114
+ "static_analysis": {
115
+ "tool": "phpstan",
116
+ "level": 8
117
+ }
118
+ }
119
+ ```
120
+
121
+ ### 2. RESTful API
122
+
123
+ ```json
124
+ {
125
+ "php_categories": ["api"],
126
+ "psr_standards": ["PSR-1", "PSR-12", "PSR-4", "PSR-7"],
127
+ "php_version": "8.2",
128
+ "strict_types": true
129
+ }
130
+ ```
131
+
132
+ ### 3. WordPress Plugin
133
+
134
+ ```json
135
+ {
136
+ "php_categories": ["cms"],
137
+ "php_version": "7.4",
138
+ "strict_types": false,
139
+ "static_analysis": {
140
+ "tool": "phpstan",
141
+ "level": 4
142
+ }
143
+ }
144
+ ```
145
+
146
+ ### 4. Legacy Migration
147
+
148
+ ```json
149
+ {
150
+ "php_categories": ["legacy"],
151
+ "php_version": "7.4",
152
+ "strict_types": false,
153
+ "static_analysis": {
154
+ "tool": "phpstan",
155
+ "level": 2
156
+ }
157
+ }
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Universal Rules (Applied to All Categories)
163
+
164
+ 1. **PSR Standards** - PSR-1, PSR-12, PSR-4, PSR-7, PSR-11
165
+ 2. **Naming Conventions** - camelCase, PascalCase, UPPER_SNAKE_CASE
166
+ 3. **Type Declarations** - Strict types, type hints, return types
167
+ 4. **Error Handling** - Exceptions, PSR-3 logging, retry patterns
168
+ 5. **Security** - OWASP guidelines, input validation, XSS/SQL injection prevention
169
+ 6. **Performance** - OPcache, database optimization, caching strategies
170
+ 7. **Testing** - PHPUnit, AAA pattern, mocks and stubs
171
+ 8. **Documentation** - PHPDoc blocks, inline comments
172
+ 9. **Code Quality** - PHPStan, PHP-CS-Fixer, Composer best practices
173
+
174
+ ---
175
+
176
+ ## Category-Specific Rules
177
+
178
+ ### Web Applications
179
+ - MVC architecture patterns
180
+ - Template engine usage (Twig, Blade)
181
+ - Form handling and CSRF protection
182
+ - Session management
183
+
184
+ ### API Development
185
+ - RESTful design principles
186
+ - HTTP method semantics
187
+ - Authentication (OAuth 2.0, JWT)
188
+ - Response formatting and pagination
189
+
190
+ ### CLI Tools
191
+ - Symfony Console component
192
+ - Argument and option handling
193
+ - Exit codes and error handling
194
+ - Progress bars for long operations
195
+
196
+ ### CMS Integration
197
+ - WordPress/Drupal coding standards
198
+ - Hook and filter usage
199
+ - Nonce verification
200
+ - Shortcode implementation
201
+
202
+ ### E-commerce
203
+ - Shopping cart management
204
+ - Payment gateway integration (PCI DSS)
205
+ - Order processing with transactions
206
+ - WooCommerce hooks and classes
207
+
208
+ ### Legacy Migration
209
+ - Incremental refactoring strategies
210
+ - Namespace introduction
211
+ - Type hint addition
212
+ - Dependency injection patterns
213
+
214
+ ---
215
+
216
+ ## Contents
217
+
218
+ - **15 rule files** covering all aspects of PHP development
219
+ - **6 code examples** demonstrating best practices for each category
220
+ - **Configuration system** for category selection
221
+ - **Conflict detection** for overlapping rules
222
+ - **PSR compliance** for all major standards
223
+
224
+ ---
225
+
226
+ ## Dependencies
227
+
228
+ ### Recommended Composer Packages
229
+
230
+ ```json
231
+ {
232
+ "require-dev": {
233
+ "phpunit/phpunit": "^10.0",
234
+ "phpstan/phpstan": "^1.10",
235
+ "friendsofphp/php-cs-fixer": "^3.0"
236
+ }
237
+ }
238
+ ```
239
+
240
+ ---
241
+
242
+ ## Links
243
+
244
+ - [PHP-FIG PSR Standards](https://www.php-fig.org/psr/)
245
+ - [PHPStan Documentation](https://phpstan.org/)
246
+ - [PHP-CS-Fixer Documentation](https://cs.symfony.com/)
247
+ - [OWASP PHP Security Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/PHP_Configuration_Cheat_Sheet.html)
248
+
@@ -0,0 +1,204 @@
1
+ <?php
2
+
3
+ /**
4
+ * RESTful API Endpoint Example - Product Resource CRUD
5
+ *
6
+ * This example demonstrates best practices for PHP API development including:
7
+ * - RESTful design with proper HTTP methods
8
+ * - PSR-7 compliant responses
9
+ * - JWT authentication
10
+ * - API Resources for consistent response formatting
11
+ * - HATEOAS links
12
+ * - Proper HTTP status codes
13
+ * - Input validation
14
+ * - Error handling
15
+ * - Rate limiting
16
+ * - Pagination
17
+ */
18
+
19
+ namespace App\Http\Controllers\Api\V1;
20
+
21
+ use App\Http\Requests\Api\StoreProductRequest;
22
+ use App\Http\Requests\Api\UpdateProductRequest;
23
+ use App\Http\Resources\ProductResource;
24
+ use App\Http\Resources\ProductCollection;
25
+ use App\Models\Product;
26
+ use Illuminate\Http\JsonResponse;
27
+ use Illuminate\Http\Request;
28
+ use Illuminate\Http\Response;
29
+
30
+ /**
31
+ * Product API Controller
32
+ *
33
+ * @OA\Tag(name="Products", description="Product management endpoints")
34
+ */
35
+ class ProductController extends Controller
36
+ {
37
+ public function __construct()
38
+ {
39
+ $this->middleware('auth:api');
40
+ $this->middleware('throttle:60,1'); // Rate limiting: 60 requests per minute
41
+ }
42
+
43
+ /**
44
+ * List all products with pagination
45
+ *
46
+ * @OA\Get(
47
+ * path="/api/v1/products",
48
+ * summary="Get list of products",
49
+ * tags={"Products"},
50
+ * @OA\Parameter(
51
+ * name="page",
52
+ * in="query",
53
+ * description="Page number",
54
+ * required=false,
55
+ * @OA\Schema(type="integer")
56
+ * ),
57
+ * @OA\Parameter(
58
+ * name="per_page",
59
+ * in="query",
60
+ * description="Items per page",
61
+ * required=false,
62
+ * @OA\Schema(type="integer", default=20)
63
+ * ),
64
+ * @OA\Response(
65
+ * response=200,
66
+ * description="Successful operation"
67
+ * ),
68
+ * security={{"bearerAuth": {}}}
69
+ * )
70
+ */
71
+ public function index(Request $request): JsonResponse
72
+ {
73
+ $perPage = $request->input('per_page', 20);
74
+ $products = Product::with('category')
75
+ ->paginate($perPage);
76
+
77
+ return (new ProductCollection($products))
78
+ ->response()
79
+ ->setStatusCode(200);
80
+ }
81
+
82
+ /**
83
+ * Get a single product
84
+ *
85
+ * GET /api/v1/products/{id}
86
+ */
87
+ public function show(int $id): JsonResponse
88
+ {
89
+ $product = Product::with(['category', 'reviews'])
90
+ ->findOrFail($id);
91
+
92
+ return (new ProductResource($product))
93
+ ->response()
94
+ ->setStatusCode(200);
95
+ }
96
+
97
+ /**
98
+ * Create a new product
99
+ *
100
+ * POST /api/v1/products
101
+ */
102
+ public function store(StoreProductRequest $request): JsonResponse
103
+ {
104
+ $product = Product::create($request->validated());
105
+
106
+ return (new ProductResource($product))
107
+ ->response()
108
+ ->setStatusCode(201)
109
+ ->header('Location', route('api.v1.products.show', $product));
110
+ }
111
+
112
+ /**
113
+ * Update an existing product (full replacement)
114
+ *
115
+ * PUT /api/v1/products/{id}
116
+ */
117
+ public function update(UpdateProductRequest $request, int $id): JsonResponse
118
+ {
119
+ $product = Product::findOrFail($id);
120
+ $product->update($request->validated());
121
+
122
+ return (new ProductResource($product))
123
+ ->response()
124
+ ->setStatusCode(200);
125
+ }
126
+
127
+ /**
128
+ * Partially update a product
129
+ *
130
+ * PATCH /api/v1/products/{id}
131
+ */
132
+ public function patch(Request $request, int $id): JsonResponse
133
+ {
134
+ $product = Product::findOrFail($id);
135
+
136
+ $validated = $request->validate([
137
+ 'name' => 'sometimes|string|max:255',
138
+ 'price' => 'sometimes|numeric|min:0',
139
+ 'stock' => 'sometimes|integer|min:0'
140
+ ]);
141
+
142
+ $product->update($validated);
143
+
144
+ return (new ProductResource($product))
145
+ ->response()
146
+ ->setStatusCode(200);
147
+ }
148
+
149
+ /**
150
+ * Delete a product
151
+ *
152
+ * DELETE /api/v1/products/{id}
153
+ */
154
+ public function destroy(int $id): Response
155
+ {
156
+ $product = Product::findOrFail($id);
157
+ $product->delete();
158
+
159
+ return response()->noContent(); // 204 No Content
160
+ }
161
+ }
162
+
163
+ // ============================================================================
164
+ // API Resource - Response Formatting with HATEOAS
165
+ // ============================================================================
166
+
167
+ namespace App\Http\Resources;
168
+
169
+ use Illuminate\Http\Resources\Json\JsonResource;
170
+
171
+ class ProductResource extends JsonResource
172
+ {
173
+ /**
174
+ * Transform the resource into an array with HATEOAS links
175
+ */
176
+ public function toArray($request): array
177
+ {
178
+ return [
179
+ 'id' => $this->id,
180
+ 'name' => $this->name,
181
+ 'description' => $this->description,
182
+ 'price' => [
183
+ 'amount' => $this->price,
184
+ 'currency' => 'USD',
185
+ 'formatted' => '$' . number_format($this->price, 2)
186
+ ],
187
+ 'stock' => $this->stock,
188
+ 'category' => [
189
+ 'id' => $this->category->id,
190
+ 'name' => $this->category->name
191
+ ],
192
+ 'created_at' => $this->created_at->toIso8601String(),
193
+ 'updated_at' => $this->updated_at->toIso8601String(),
194
+
195
+ // HATEOAS links
196
+ 'links' => [
197
+ 'self' => route('api.v1.products.show', $this->id),
198
+ 'category' => route('api.v1.categories.show', $this->category_id),
199
+ 'reviews' => route('api.v1.products.reviews.index', $this->id)
200
+ ]
201
+ ];
202
+ }
203
+ }
204
+
@@ -0,0 +1,206 @@
1
+ <?php
2
+
3
+ /**
4
+ * CLI Command Example - Data Migration Script
5
+ *
6
+ * This example demonstrates best practices for PHP CLI tools including:
7
+ * - Symfony Console component usage
8
+ * - Argument and option handling with validation
9
+ * - Progress bars for long-running operations
10
+ * - Proper error handling and exit codes
11
+ * - Idempotency (can be run multiple times safely)
12
+ * - Database transactions
13
+ * - Logging
14
+ */
15
+
16
+ namespace App\Console\Commands;
17
+
18
+ use Symfony\Component\Console\Command\Command;
19
+ use Symfony\Component\Console\Input\InputInterface;
20
+ use Symfony\Component\Console\Input\InputArgument;
21
+ use Symfony\Component\Console\Input\InputOption;
22
+ use Symfony\Component\Console\Output\OutputInterface;
23
+ use Symfony\Component\Console\Helper\ProgressBar;
24
+ use Symfony\Component\Console\Question\ConfirmationQuestion;
25
+ use Illuminate\Support\Facades\DB;
26
+ use Illuminate\Support\Facades\Log;
27
+
28
+ /**
29
+ * Migrate user data from legacy system to new system
30
+ *
31
+ * Usage:
32
+ * php artisan users:migrate legacy_users.csv --batch-size=100 --dry-run
33
+ */
34
+ class MigrateUsersCommand extends Command
35
+ {
36
+ protected static $defaultName = 'users:migrate';
37
+ protected static $defaultDescription = 'Migrate users from legacy CSV file to new system';
38
+
39
+ private int $successCount = 0;
40
+ private int $errorCount = 0;
41
+ private int $skippedCount = 0;
42
+
43
+ protected function configure(): void
44
+ {
45
+ $this
46
+ ->setDescription('Migrate users from a CSV file to the new database')
47
+ ->setHelp('This command migrates user data from a legacy CSV file...')
48
+ ->addArgument(
49
+ 'file',
50
+ InputArgument::REQUIRED,
51
+ 'Path to the CSV file containing user data'
52
+ )
53
+ ->addOption(
54
+ 'batch-size',
55
+ 'b',
56
+ InputOption::VALUE_REQUIRED,
57
+ 'Number of records to process in each batch',
58
+ 100
59
+ )
60
+ ->addOption(
61
+ 'dry-run',
62
+ null,
63
+ InputOption::VALUE_NONE,
64
+ 'Run without making any changes to the database'
65
+ )
66
+ ->addOption(
67
+ 'force',
68
+ 'f',
69
+ InputOption::VALUE_NONE,
70
+ 'Skip confirmation prompt'
71
+ );
72
+ }
73
+
74
+ protected function execute(InputInterface $input, OutputInterface $output): int
75
+ {
76
+ $filename = $input->getArgument('file');
77
+ $batchSize = (int) $input->getOption('batch-size');
78
+ $isDryRun = $input->getOption('dry-run');
79
+ $force = $input->getOption('force');
80
+
81
+ // Validate file exists
82
+ if (!file_exists($filename)) {
83
+ $output->writeln("<error>File not found: {$filename}</error>");
84
+ return Command::FAILURE;
85
+ }
86
+
87
+ // Validate file is readable
88
+ if (!is_readable($filename)) {
89
+ $output->writeln("<error>File is not readable: {$filename}</error>");
90
+ return Command::FAILURE;
91
+ }
92
+
93
+ // Count total records
94
+ $totalRecords = $this->countRecords($filename);
95
+
96
+ $output->writeln("<info>Found {$totalRecords} records to migrate</info>");
97
+
98
+ if ($isDryRun) {
99
+ $output->writeln("<comment>DRY RUN MODE - No changes will be made</comment>");
100
+ }
101
+
102
+ // Confirmation prompt
103
+ if (!$force && !$isDryRun) {
104
+ $helper = $this->getHelper('question');
105
+ $question = new ConfirmationQuestion(
106
+ 'Continue with migration? (y/n) ',
107
+ false
108
+ );
109
+
110
+ if (!$helper->ask($input, $output, $question)) {
111
+ $output->writeln('<comment>Migration cancelled</comment>');
112
+ return Command::SUCCESS;
113
+ }
114
+ }
115
+
116
+ // Create progress bar
117
+ $progressBar = new ProgressBar($output, $totalRecords);
118
+ $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%');
119
+ $progressBar->start();
120
+
121
+ // Process file in batches
122
+ try {
123
+ $this->processFile($filename, $batchSize, $isDryRun, $progressBar);
124
+
125
+ $progressBar->finish();
126
+ $output->writeln('');
127
+
128
+ // Display summary
129
+ $this->displaySummary($output, $isDryRun);
130
+
131
+ // Log completion
132
+ Log::info('User migration completed', [
133
+ 'file' => $filename,
134
+ 'success' => $this->successCount,
135
+ 'errors' => $this->errorCount,
136
+ 'skipped' => $this->skippedCount,
137
+ 'dry_run' => $isDryRun
138
+ ]);
139
+
140
+ return Command::SUCCESS;
141
+
142
+ } catch (\Exception $e) {
143
+ $progressBar->finish();
144
+ $output->writeln('');
145
+ $output->writeln("<error>Migration failed: {$e->getMessage()}</error>");
146
+
147
+ Log::error('User migration failed', [
148
+ 'file' => $filename,
149
+ 'error' => $e->getMessage(),
150
+ 'trace' => $e->getTraceAsString()
151
+ ]);
152
+
153
+ return Command::FAILURE;
154
+ }
155
+ }
156
+
157
+ private function countRecords(string $filename): int
158
+ {
159
+ $count = 0;
160
+ $handle = fopen($filename, 'r');
161
+
162
+ // Skip header
163
+ fgetcsv($handle);
164
+
165
+ while (fgetcsv($handle) !== false) {
166
+ $count++;
167
+ }
168
+
169
+ fclose($handle);
170
+ return $count;
171
+ }
172
+
173
+ private function processFile(
174
+ string $filename,
175
+ int $batchSize,
176
+ bool $isDryRun,
177
+ ProgressBar $progressBar
178
+ ): void {
179
+ $handle = fopen($filename, 'r');
180
+
181
+ // Read header
182
+ $header = fgetcsv($handle);
183
+
184
+ $batch = [];
185
+
186
+ while (($row = fgetcsv($handle)) !== false) {
187
+ $data = array_combine($header, $row);
188
+ $batch[] = $data;
189
+
190
+ if (count($batch) >= $batchSize) {
191
+ $this->processBatch($batch, $isDryRun);
192
+ $progressBar->advance(count($batch));
193
+ $batch = [];
194
+ }
195
+ }
196
+
197
+ // Process remaining records
198
+ if (!empty($batch)) {
199
+ $this->processBatch($batch, $isDryRun);
200
+ $progressBar->advance(count($batch));
201
+ }
202
+
203
+ fclose($handle);
204
+ }
205
+ }
206
+