@mytechtoday/augment-extensions 0.1.2 → 0.4.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 (316) 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/mcp/README.md +150 -0
  125. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
  126. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
  127. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
  128. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
  129. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
  130. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
  131. package/augment-extensions/domain-rules/mcp/module.json +49 -0
  132. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
  133. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
  134. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
  135. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
  136. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
  137. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
  138. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
  139. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
  140. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
  141. package/augment-extensions/domain-rules/wordpress/README.md +163 -0
  142. package/augment-extensions/domain-rules/wordpress/module.json +32 -0
  143. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -0
  144. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -0
  145. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -0
  146. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -0
  147. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -0
  148. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -0
  149. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -0
  150. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -0
  151. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -0
  152. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -0
  153. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -0
  154. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -0
  155. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -0
  156. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -0
  157. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -0
  158. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -0
  159. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -0
  160. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -0
  161. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -0
  162. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -0
  163. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -0
  164. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -0
  165. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -0
  166. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -0
  167. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -0
  168. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -0
  169. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -0
  170. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -0
  171. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -0
  172. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -0
  173. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -0
  174. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -0
  175. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -0
  176. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -0
  177. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -0
  178. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -0
  179. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -0
  180. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -0
  181. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -0
  182. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -0
  183. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -0
  184. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -0
  185. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -0
  186. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -0
  187. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -0
  188. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -0
  189. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -0
  190. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -0
  191. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -0
  192. package/augment-extensions/examples/rest-api-plugin/README.md +98 -0
  193. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -0
  194. package/augment-extensions/examples/rest-api-plugin/module.json +40 -0
  195. package/augment-extensions/examples/woocommerce-extension/README.md +98 -0
  196. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -0
  197. package/augment-extensions/examples/woocommerce-extension/module.json +40 -0
  198. package/augment-extensions/workflows/beads/module.json +4 -3
  199. package/augment-extensions/workflows/database/README.md +195 -0
  200. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
  201. package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
  202. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
  203. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
  204. package/augment-extensions/workflows/database/module.json +42 -0
  205. package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
  206. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
  207. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
  208. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
  209. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
  210. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
  211. package/augment-extensions/workflows/database/rules/workflow.md +458 -0
  212. package/augment-extensions/workflows/openspec/module.json +4 -3
  213. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -0
  214. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -0
  215. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -0
  216. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -0
  217. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -0
  218. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -0
  219. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -0
  220. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -0
  221. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -0
  222. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -0
  223. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -0
  224. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -0
  225. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -0
  226. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -0
  227. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -0
  228. package/augment-extensions/writing-standards/screenplay/README.md +171 -0
  229. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
  230. package/augment-extensions/writing-standards/screenplay/module.json +124 -0
  231. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
  232. package/cli/MODULES.md +302 -0
  233. package/cli/dist/cli.js +142 -9
  234. package/cli/dist/cli.js.map +1 -1
  235. package/cli/dist/commands/catalog.d.ts +13 -0
  236. package/cli/dist/commands/catalog.d.ts.map +1 -0
  237. package/cli/dist/commands/catalog.js +104 -0
  238. package/cli/dist/commands/catalog.js.map +1 -0
  239. package/cli/dist/commands/gui.d.ts +6 -0
  240. package/cli/dist/commands/gui.d.ts.map +1 -0
  241. package/cli/dist/commands/gui.js +211 -0
  242. package/cli/dist/commands/gui.js.map +1 -0
  243. package/cli/dist/commands/init.d.ts.map +1 -1
  244. package/cli/dist/commands/init.js +12 -0
  245. package/cli/dist/commands/init.js.map +1 -1
  246. package/cli/dist/commands/install-rules.d.ts +14 -0
  247. package/cli/dist/commands/install-rules.d.ts.map +1 -0
  248. package/cli/dist/commands/install-rules.js +127 -0
  249. package/cli/dist/commands/install-rules.js.map +1 -0
  250. package/cli/dist/commands/link.d.ts.map +1 -1
  251. package/cli/dist/commands/link.js +9 -11
  252. package/cli/dist/commands/link.js.map +1 -1
  253. package/cli/dist/commands/list.d.ts.map +1 -1
  254. package/cli/dist/commands/list.js +11 -28
  255. package/cli/dist/commands/list.js.map +1 -1
  256. package/cli/dist/commands/mcp.d.ts +48 -0
  257. package/cli/dist/commands/mcp.d.ts.map +1 -0
  258. package/cli/dist/commands/mcp.js +229 -0
  259. package/cli/dist/commands/mcp.js.map +1 -0
  260. package/cli/dist/commands/self-remove.d.ts +7 -0
  261. package/cli/dist/commands/self-remove.d.ts.map +1 -0
  262. package/cli/dist/commands/self-remove.js +179 -0
  263. package/cli/dist/commands/self-remove.js.map +1 -0
  264. package/cli/dist/commands/show.d.ts.map +1 -1
  265. package/cli/dist/commands/show.js +42 -71
  266. package/cli/dist/commands/show.js.map +1 -1
  267. package/cli/dist/commands/skill.d.ts +67 -0
  268. package/cli/dist/commands/skill.d.ts.map +1 -0
  269. package/cli/dist/commands/skill.js +513 -0
  270. package/cli/dist/commands/skill.js.map +1 -0
  271. package/cli/dist/commands/unlink.d.ts +6 -0
  272. package/cli/dist/commands/unlink.d.ts.map +1 -0
  273. package/cli/dist/commands/unlink.js +115 -0
  274. package/cli/dist/commands/unlink.js.map +1 -0
  275. package/cli/dist/commands/validate.d.ts +6 -0
  276. package/cli/dist/commands/validate.d.ts.map +1 -0
  277. package/cli/dist/commands/validate.js +159 -0
  278. package/cli/dist/commands/validate.js.map +1 -0
  279. package/cli/dist/utils/catalog-sync.d.ts +22 -0
  280. package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
  281. package/cli/dist/utils/catalog-sync.js +157 -0
  282. package/cli/dist/utils/catalog-sync.js.map +1 -0
  283. package/cli/dist/utils/character-count.d.ts +56 -0
  284. package/cli/dist/utils/character-count.d.ts.map +1 -0
  285. package/cli/dist/utils/character-count.js +190 -0
  286. package/cli/dist/utils/character-count.js.map +1 -0
  287. package/cli/dist/utils/documentation-validator.d.ts +18 -0
  288. package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
  289. package/cli/dist/utils/documentation-validator.js +233 -0
  290. package/cli/dist/utils/documentation-validator.js.map +1 -0
  291. package/cli/dist/utils/install-rules.d.ts +32 -0
  292. package/cli/dist/utils/install-rules.d.ts.map +1 -0
  293. package/cli/dist/utils/install-rules.js +375 -0
  294. package/cli/dist/utils/install-rules.js.map +1 -0
  295. package/cli/dist/utils/mcp-integration.d.ts +70 -0
  296. package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
  297. package/cli/dist/utils/mcp-integration.js +292 -0
  298. package/cli/dist/utils/mcp-integration.js.map +1 -0
  299. package/cli/dist/utils/module-system.d.ts +153 -0
  300. package/cli/dist/utils/module-system.d.ts.map +1 -0
  301. package/cli/dist/utils/module-system.js +528 -0
  302. package/cli/dist/utils/module-system.js.map +1 -0
  303. package/cli/dist/utils/modules-catalog.d.ts +33 -0
  304. package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
  305. package/cli/dist/utils/modules-catalog.js +163 -0
  306. package/cli/dist/utils/modules-catalog.js.map +1 -0
  307. package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
  308. package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
  309. package/cli/dist/utils/rule-install-hooks.js +224 -0
  310. package/cli/dist/utils/rule-install-hooks.js.map +1 -0
  311. package/cli/dist/utils/skill-system.d.ts +95 -0
  312. package/cli/dist/utils/skill-system.d.ts.map +1 -0
  313. package/cli/dist/utils/skill-system.js +313 -0
  314. package/cli/dist/utils/skill-system.js.map +1 -0
  315. package/modules.md +534 -70
  316. package/package.json +12 -3
@@ -0,0 +1,472 @@
1
+ # PHP CLI Tools Best Practices
2
+
3
+ ## Overview
4
+
5
+ This guide provides best practices for developing command-line interface (CLI) tools in PHP using the Symfony Console component, including command structure, argument handling, error handling, and user interaction.
6
+
7
+ ## Symfony Console Component
8
+
9
+ ### Basic Command Structure
10
+
11
+ ```php
12
+ <?php
13
+
14
+ namespace App\Console\Commands;
15
+
16
+ use Symfony\Component\Console\Command\Command;
17
+ use Symfony\Component\Console\Input\InputInterface;
18
+ use Symfony\Component\Console\Input\InputArgument;
19
+ use Symfony\Component\Console\Input\InputOption;
20
+ use Symfony\Component\Console\Output\OutputInterface;
21
+
22
+ class UserCreateCommand extends Command
23
+ {
24
+ protected static $defaultName = 'user:create';
25
+ protected static $defaultDescription = 'Create a new user';
26
+
27
+ protected function configure(): void
28
+ {
29
+ $this
30
+ ->setDescription('Create a new user in the system')
31
+ ->setHelp('This command allows you to create a user...')
32
+ ->addArgument('name', InputArgument::REQUIRED, 'The name of the user')
33
+ ->addArgument('email', InputArgument::REQUIRED, 'The email of the user')
34
+ ->addOption('admin', 'a', InputOption::VALUE_NONE, 'Make the user an admin')
35
+ ->addOption('role', 'r', InputOption::VALUE_REQUIRED, 'User role', 'user');
36
+ }
37
+
38
+ protected function execute(InputInterface $input, OutputInterface $output): int
39
+ {
40
+ $name = $input->getArgument('name');
41
+ $email = $input->getArgument('email');
42
+ $isAdmin = $input->getOption('admin');
43
+ $role = $input->getOption('role');
44
+
45
+ $output->writeln("<info>Creating user: {$name}</info>");
46
+
47
+ try {
48
+ // Create user logic here
49
+ $user = $this->createUser($name, $email, $role, $isAdmin);
50
+
51
+ $output->writeln("<info>User created successfully!</info>");
52
+ $output->writeln("ID: {$user->id}");
53
+
54
+ return Command::SUCCESS;
55
+ } catch (\Exception $e) {
56
+ $output->writeln("<error>Error: {$e->getMessage()}</error>");
57
+ return Command::FAILURE;
58
+ }
59
+ }
60
+
61
+ private function createUser(string $name, string $email, string $role, bool $isAdmin): object
62
+ {
63
+ // Implementation
64
+ return (object)['id' => 123, 'name' => $name, 'email' => $email];
65
+ }
66
+ }
67
+ ```
68
+
69
+ ### Command Naming Conventions
70
+
71
+ Use **namespace:action** format:
72
+
73
+ ```
74
+ ✅ Good:
75
+ user:create
76
+ user:delete
77
+ cache:clear
78
+ db:migrate
79
+ report:generate
80
+
81
+ ❌ Bad:
82
+ createUser
83
+ deleteuser
84
+ clear_cache
85
+ migrate
86
+ ```
87
+
88
+ ## Arguments and Options
89
+
90
+ ### Arguments
91
+
92
+ **Arguments are positional and can be required or optional:**
93
+
94
+ ```php
95
+ <?php
96
+
97
+ // Required argument
98
+ $this->addArgument('filename', InputArgument::REQUIRED, 'The file to process');
99
+
100
+ // Optional argument
101
+ $this->addArgument('output', InputArgument::OPTIONAL, 'Output file', 'output.txt');
102
+
103
+ // Array argument (must be last)
104
+ $this->addArgument('files', InputArgument::IS_ARRAY, 'Files to process');
105
+
106
+ // Usage in execute()
107
+ $filename = $input->getArgument('filename');
108
+ $output = $input->getArgument('output');
109
+ $files = $input->getArgument('files'); // Returns array
110
+ ```
111
+
112
+ ### Options
113
+
114
+ **Options are named and always optional:**
115
+
116
+ ```php
117
+ <?php
118
+
119
+ // Flag option (no value)
120
+ $this->addOption('force', 'f', InputOption::VALUE_NONE, 'Force the operation');
121
+
122
+ // Option with required value
123
+ $this->addOption('format', null, InputOption::VALUE_REQUIRED, 'Output format');
124
+
125
+ // Option with optional value
126
+ $this->addOption('verbose', 'v', InputOption::VALUE_OPTIONAL, 'Verbosity level', 1);
127
+
128
+ // Option with default value
129
+ $this->addOption('limit', 'l', InputOption::VALUE_REQUIRED, 'Limit results', 100);
130
+
131
+ // Array option (can be specified multiple times)
132
+ $this->addOption('exclude', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Exclude patterns');
133
+
134
+ // Usage in execute()
135
+ $force = $input->getOption('force');
136
+ $format = $input->getOption('format');
137
+ $excludes = $input->getOption('exclude'); // Returns array
138
+ ```
139
+
140
+ ## Input/Output Handling
141
+
142
+ ### Output Formatting
143
+
144
+ ```php
145
+ <?php
146
+
147
+ protected function execute(InputInterface $input, OutputInterface $output): int
148
+ {
149
+ // Basic output
150
+ $output->writeln('Normal text');
151
+
152
+ // Styled output
153
+ $output->writeln('<info>Info message</info>');
154
+ $output->writeln('<comment>Comment message</comment>');
155
+ $output->writeln('<question>Question message</question>');
156
+ $output->writeln('<error>Error message</error>');
157
+
158
+ // Custom styles
159
+ $output->writeln('<fg=green>Green text</>');
160
+ $output->writeln('<bg=yellow;fg=black>Yellow background</>');
161
+ $output->writeln('<options=bold>Bold text</>');
162
+
163
+ // Verbosity levels
164
+ $output->writeln('Always shown');
165
+ $output->writeln('Verbose', OutputInterface::VERBOSITY_VERBOSE);
166
+ $output->writeln('Very verbose', OutputInterface::VERBOSITY_VERY_VERBOSE);
167
+ $output->writeln('Debug', OutputInterface::VERBOSITY_DEBUG);
168
+
169
+ return Command::SUCCESS;
170
+ }
171
+ ```
172
+
173
+ ### Interactive Input
174
+
175
+ ```php
176
+ <?php
177
+
178
+ use Symfony\Component\Console\Question\Question;
179
+ use Symfony\Component\Console\Question\ConfirmationQuestion;
180
+ use Symfony\Component\Console\Question\ChoiceQuestion;
181
+
182
+ protected function execute(InputInterface $input, OutputInterface $output): int
183
+ {
184
+ $helper = $this->getHelper('question');
185
+
186
+ // Simple question
187
+ $question = new Question('Please enter your name: ', 'John Doe');
188
+ $name = $helper->ask($input, $output, $question);
189
+
190
+ // Hidden input (for passwords)
191
+ $question = new Question('Please enter your password: ');
192
+ $question->setHidden(true);
193
+ $question->setHiddenFallback(false);
194
+ $password = $helper->ask($input, $output, $question);
195
+
196
+ // Confirmation question
197
+ $question = new ConfirmationQuestion('Continue with this action? (y/n) ', false);
198
+ if (!$helper->ask($input, $output, $question)) {
199
+ return Command::SUCCESS;
200
+ }
201
+
202
+ // Choice question
203
+ $question = new ChoiceQuestion(
204
+ 'Please select your role',
205
+ ['user', 'admin', 'moderator'],
206
+ 0 // Default index
207
+ );
208
+ $role = $helper->ask($input, $output, $question);
209
+
210
+ return Command::SUCCESS;
211
+ }
212
+ ```
213
+
214
+ ## Progress Indicators
215
+
216
+ ### Progress Bar
217
+
218
+ ```php
219
+ <?php
220
+
221
+ use Symfony\Component\Console\Helper\ProgressBar;
222
+
223
+ protected function execute(InputInterface $input, OutputInterface $output): int
224
+ {
225
+ $items = range(1, 100);
226
+
227
+ $progressBar = new ProgressBar($output, count($items));
228
+ $progressBar->start();
229
+
230
+ foreach ($items as $item) {
231
+ // Process item
232
+ sleep(1);
233
+
234
+ $progressBar->advance();
235
+ }
236
+
237
+ $progressBar->finish();
238
+ $output->writeln(''); // New line after progress bar
239
+
240
+ return Command::SUCCESS;
241
+ }
242
+ ```
243
+
244
+ ### Custom Progress Bar Format
245
+
246
+ ```php
247
+ <?php
248
+
249
+ $progressBar = new ProgressBar($output, 100);
250
+ $progressBar->setFormat(' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%');
251
+ $progressBar->start();
252
+
253
+ // Or use predefined formats
254
+ $progressBar->setFormat('verbose');
255
+ $progressBar->setFormat('very_verbose');
256
+ $progressBar->setFormat('debug');
257
+ ```
258
+
259
+ ### Spinner for Indeterminate Progress
260
+
261
+ ```php
262
+ <?php
263
+
264
+ use Symfony\Component\Console\Helper\ProgressIndicator;
265
+
266
+ protected function execute(InputInterface $input, OutputInterface $output): int
267
+ {
268
+ $spinner = new ProgressIndicator($output);
269
+ $spinner->start('Processing...');
270
+
271
+ while ($condition) {
272
+ // Do work
273
+ usleep(100000);
274
+ $spinner->advance();
275
+ }
276
+
277
+ $spinner->finish('Done!');
278
+
279
+ return Command::SUCCESS;
280
+ }
281
+ ```
282
+
283
+ ## Error Handling and Exit Codes
284
+
285
+ ### Exit Codes
286
+
287
+ ```php
288
+ <?php
289
+
290
+ protected function execute(InputInterface $input, OutputInterface $output): int
291
+ {
292
+ try {
293
+ // Successful execution
294
+ return Command::SUCCESS; // 0
295
+
296
+ } catch (ValidationException $e) {
297
+ $output->writeln("<error>Validation error: {$e->getMessage()}</error>");
298
+ return Command::INVALID; // 2
299
+
300
+ } catch (\Exception $e) {
301
+ $output->writeln("<error>Error: {$e->getMessage()}</error>");
302
+ return Command::FAILURE; // 1
303
+ }
304
+ }
305
+ ```
306
+
307
+ ### Custom Exit Codes
308
+
309
+ ```php
310
+ <?php
311
+
312
+ class MyCommand extends Command
313
+ {
314
+ public const EXIT_SUCCESS = 0;
315
+ public const EXIT_GENERAL_ERROR = 1;
316
+ public const EXIT_INVALID_INPUT = 2;
317
+ public const EXIT_FILE_NOT_FOUND = 3;
318
+ public const EXIT_PERMISSION_DENIED = 4;
319
+
320
+ protected function execute(InputInterface $input, OutputInterface $output): int
321
+ {
322
+ if (!file_exists($filename)) {
323
+ $output->writeln("<error>File not found: {$filename}</error>");
324
+ return self::EXIT_FILE_NOT_FOUND;
325
+ }
326
+
327
+ if (!is_readable($filename)) {
328
+ $output->writeln("<error>Permission denied: {$filename}</error>");
329
+ return self::EXIT_PERMISSION_DENIED;
330
+ }
331
+
332
+ return self::EXIT_SUCCESS;
333
+ }
334
+ }
335
+ ```
336
+
337
+ ## Tables
338
+
339
+ ### Displaying Tabular Data
340
+
341
+ ```php
342
+ <?php
343
+
344
+ use Symfony\Component\Console\Helper\Table;
345
+
346
+ protected function execute(InputInterface $input, OutputInterface $output): int
347
+ {
348
+ $table = new Table($output);
349
+ $table
350
+ ->setHeaders(['ID', 'Name', 'Email', 'Status'])
351
+ ->setRows([
352
+ [1, 'John Doe', 'john@example.com', 'Active'],
353
+ [2, 'Jane Smith', 'jane@example.com', 'Inactive'],
354
+ [3, 'Bob Johnson', 'bob@example.com', 'Active'],
355
+ ]);
356
+
357
+ $table->render();
358
+
359
+ return Command::SUCCESS;
360
+ }
361
+ ```
362
+
363
+ ## Idempotency
364
+
365
+ ### Making Commands Idempotent
366
+
367
+ ```php
368
+ <?php
369
+
370
+ class ImportDataCommand extends Command
371
+ {
372
+ protected function execute(InputInterface $input, OutputInterface $output): int
373
+ {
374
+ $filename = $input->getArgument('filename');
375
+
376
+ // Check if already imported
377
+ if ($this->isAlreadyImported($filename)) {
378
+ $output->writeln('<comment>File already imported. Skipping.</comment>');
379
+ return Command::SUCCESS;
380
+ }
381
+
382
+ // Use transactions for database operations
383
+ DB::beginTransaction();
384
+
385
+ try {
386
+ $this->importData($filename);
387
+
388
+ // Mark as imported
389
+ $this->markAsImported($filename);
390
+
391
+ DB::commit();
392
+ $output->writeln('<info>Import completed successfully</info>');
393
+ return Command::SUCCESS;
394
+
395
+ } catch (\Exception $e) {
396
+ DB::rollBack();
397
+ $output->writeln("<error>Import failed: {$e->getMessage()}</error>");
398
+ return Command::FAILURE;
399
+ }
400
+ }
401
+
402
+ private function isAlreadyImported(string $filename): bool
403
+ {
404
+ return ImportLog::where('filename', $filename)->exists();
405
+ }
406
+
407
+ private function markAsImported(string $filename): void
408
+ {
409
+ ImportLog::create([
410
+ 'filename' => $filename,
411
+ 'imported_at' => now()
412
+ ]);
413
+ }
414
+ }
415
+ ```
416
+
417
+ ## Best Practices
418
+
419
+ ### ✅ DO
420
+
421
+ - Use descriptive command names with namespace:action format
422
+ - Provide clear help text and descriptions
423
+ - Validate input arguments and options
424
+ - Use appropriate exit codes
425
+ - Show progress for long-running operations
426
+ - Make commands idempotent when possible
427
+ - Use transactions for database operations
428
+ - Log command execution and errors
429
+ - Provide verbose output options
430
+ - Handle interruptions gracefully (SIGINT, SIGTERM)
431
+ - Use dependency injection for services
432
+ - Write tests for commands
433
+
434
+ ### ❌ DON'T
435
+
436
+ - Use generic command names without namespaces
437
+ - Ignore user input validation
438
+ - Always return 0 (success) regardless of outcome
439
+ - Run long operations without progress indicators
440
+ - Modify data without confirmation in destructive operations
441
+ - Use global state or static methods
442
+ - Hardcode configuration values
443
+ - Suppress error messages
444
+ - Use echo/print instead of OutputInterface
445
+ - Perform operations that can't be rolled back
446
+
447
+ ## Security Checklist
448
+
449
+ - [ ] Validate all input arguments and options
450
+ - [ ] Sanitize file paths to prevent directory traversal
451
+ - [ ] Use parameterized queries for database operations
452
+ - [ ] Don't expose sensitive data in output
453
+ - [ ] Implement proper permission checks
454
+ - [ ] Use secure temporary file handling
455
+ - [ ] Validate file uploads and imports
456
+ - [ ] Log security-relevant events
457
+ - [ ] Don't execute arbitrary code from input
458
+ - [ ] Use environment variables for credentials
459
+
460
+ ## Performance Tips
461
+
462
+ - Use batch processing for large datasets
463
+ - Implement chunking for memory-intensive operations
464
+ - Use database transactions efficiently
465
+ - Optimize queries (avoid N+1 problems)
466
+ - Use caching where appropriate
467
+ - Implement timeout handling for external services
468
+ - Use async operations for I/O-bound tasks
469
+ - Profile long-running commands
470
+ - Implement graceful shutdown on signals
471
+ - Use memory-efficient data structures
472
+