@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,466 @@
1
+ # PowerShell Legacy Migrations
2
+
3
+ Best practices for migrating from Windows PowerShell to PowerShell Core, handling deprecated features, and compatibility testing.
4
+
5
+ ## Migration Strategy
6
+
7
+ ### Assessment Phase
8
+
9
+ ```powershell
10
+ # Check PowerShell version
11
+ function Get-PowerShellVersion
12
+ {
13
+ [CmdletBinding()]
14
+ param()
15
+
16
+ $version = $PSVersionTable.PSVersion
17
+ $edition = $PSVersionTable.PSEdition
18
+
19
+ [PSCustomObject]@{
20
+ Version = $version
21
+ Edition = $edition
22
+ IsCore = $edition -eq 'Core'
23
+ IsDesktop = $edition -eq 'Desktop'
24
+ Platform = if ($IsWindows) { 'Windows' }
25
+ elseif ($IsLinux) { 'Linux' }
26
+ elseif ($IsMacOS) { 'macOS' }
27
+ else { 'Unknown' }
28
+ }
29
+ }
30
+
31
+ # Scan for compatibility issues
32
+ function Test-ScriptCompatibility
33
+ {
34
+ [CmdletBinding()]
35
+ param(
36
+ [Parameter(Mandatory)]
37
+ [ValidateScript({ Test-Path $_ })]
38
+ [string]$ScriptPath
39
+ )
40
+
41
+ $issues = @()
42
+ $content = Get-Content -Path $ScriptPath -Raw
43
+
44
+ # Check for deprecated cmdlets
45
+ $deprecatedCmdlets = @(
46
+ 'ConvertTo-SecureString -AsPlainText',
47
+ 'New-WebServiceProxy',
48
+ 'Register-PSSessionConfiguration',
49
+ 'Get-WmiObject',
50
+ 'Set-WmiInstance'
51
+ )
52
+
53
+ foreach ($deprecated in $deprecatedCmdlets)
54
+ {
55
+ if ($content -match [regex]::Escape($deprecated))
56
+ {
57
+ $issues += "Found deprecated: $deprecated"
58
+ }
59
+ }
60
+
61
+ # Check for Windows-only cmdlets
62
+ $windowsOnlyCmdlets = @(
63
+ 'Get-EventLog',
64
+ 'Get-Counter',
65
+ 'Get-WinEvent'
66
+ )
67
+
68
+ foreach ($cmdlet in $windowsOnlyCmdlets)
69
+ {
70
+ if ($content -match "\b$cmdlet\b")
71
+ {
72
+ $issues += "Windows-only cmdlet: $cmdlet"
73
+ }
74
+ }
75
+
76
+ return $issues
77
+ }
78
+ ```
79
+
80
+ ## Deprecated Feature Handling
81
+
82
+ ### WMI to CIM Migration
83
+
84
+ ```powershell
85
+ # ❌ OLD: Windows PowerShell (WMI)
86
+ # Get-WmiObject -Class Win32_OperatingSystem
87
+
88
+ # ✅ NEW: PowerShell Core (CIM)
89
+ function Get-OperatingSystemInfo
90
+ {
91
+ [CmdletBinding()]
92
+ param()
93
+
94
+ try
95
+ {
96
+ $os = Get-CimInstance -ClassName Win32_OperatingSystem -ErrorAction Stop
97
+
98
+ [PSCustomObject]@{
99
+ Caption = $os.Caption
100
+ Version = $os.Version
101
+ BuildNumber = $os.BuildNumber
102
+ OSArchitecture = $os.OSArchitecture
103
+ LastBootUpTime = $os.LastBootUpTime
104
+ FreePhysicalMemory = $os.FreePhysicalMemory
105
+ }
106
+ }
107
+ catch
108
+ {
109
+ Write-Error "Failed to get OS info: $_"
110
+ throw
111
+ }
112
+ }
113
+ ```
114
+
115
+ ### Event Log Migration
116
+
117
+ ```powershell
118
+ # ❌ OLD: Get-EventLog (not available in PowerShell Core)
119
+ # Get-EventLog -LogName Application -Newest 100
120
+
121
+ # ✅ NEW: Get-WinEvent (cross-platform where available)
122
+ function Get-ApplicationEvents
123
+ {
124
+ [CmdletBinding()]
125
+ param(
126
+ [Parameter()]
127
+ [int]$MaxEvents = 100,
128
+
129
+ [Parameter()]
130
+ [string]$LogName = 'Application'
131
+ )
132
+
133
+ if (-not $IsWindows)
134
+ {
135
+ Write-Warning "Event logs are only available on Windows"
136
+ return
137
+ }
138
+
139
+ try
140
+ {
141
+ $filterHash = @{
142
+ LogName = $LogName
143
+ MaxEvents = $MaxEvents
144
+ }
145
+
146
+ Get-WinEvent -FilterHashtable $filterHash -ErrorAction Stop
147
+ }
148
+ catch
149
+ {
150
+ Write-Error "Failed to get events: $_"
151
+ throw
152
+ }
153
+ }
154
+ ```
155
+
156
+ ### Secure String Handling
157
+
158
+ ```powershell
159
+ # ❌ OLD: ConvertTo-SecureString with -AsPlainText (deprecated)
160
+ # $securePassword = ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force
161
+
162
+ # ✅ NEW: Use Read-Host or certificate-based encryption
163
+ function New-SecureCredential
164
+ {
165
+ [CmdletBinding()]
166
+ param(
167
+ [Parameter(Mandatory)]
168
+ [string]$UserName
169
+ )
170
+
171
+ # Prompt for password securely
172
+ $securePassword = Read-Host -Prompt "Enter password for $UserName" -AsSecureString
173
+
174
+ $credential = [PSCredential]::new($UserName, $securePassword)
175
+
176
+ return $credential
177
+ }
178
+ ```
179
+
180
+ ## Compatibility Testing
181
+
182
+ ### Multi-Version Testing
183
+
184
+ ```powershell
185
+ function Test-ScriptOnMultipleVersions
186
+ {
187
+ [CmdletBinding()]
188
+ param(
189
+ [Parameter(Mandatory)]
190
+ [string]$ScriptPath,
191
+
192
+ [Parameter()]
193
+ [string[]]$PowerShellVersions = @('5.1', '7.4')
194
+ )
195
+
196
+ $results = @()
197
+
198
+ foreach ($version in $PowerShellVersions)
199
+ {
200
+ Write-Verbose "Testing on PowerShell $version"
201
+
202
+ $pwshPath = if ($version -like '5.*')
203
+ {
204
+ 'powershell.exe'
205
+ }
206
+ else
207
+ {
208
+ 'pwsh.exe'
209
+ }
210
+
211
+ try
212
+ {
213
+ $output = & $pwshPath -File $ScriptPath -ErrorAction Stop
214
+
215
+ $results += [PSCustomObject]@{
216
+ Version = $version
217
+ Success = $true
218
+ Output = $output
219
+ Error = $null
220
+ }
221
+ }
222
+ catch
223
+ {
224
+ $results += [PSCustomObject]@{
225
+ Version = $version
226
+ Success = $false
227
+ Output = $null
228
+ Error = $_.Exception.Message
229
+ }
230
+ }
231
+ }
232
+
233
+ return $results
234
+ }
235
+ ```
236
+
237
+ ### Compatibility Wrapper Functions
238
+
239
+ ```powershell
240
+ function Get-ComputerInfoCompat
241
+ {
242
+ [CmdletBinding()]
243
+ param()
244
+
245
+ if ($PSVersionTable.PSVersion.Major -ge 7)
246
+ {
247
+ # PowerShell Core
248
+ if ($IsWindows)
249
+ {
250
+ Get-ComputerInfo
251
+ }
252
+ else
253
+ {
254
+ Write-Warning "Get-ComputerInfo is Windows-only"
255
+ return $null
256
+ }
257
+ }
258
+ else
259
+ {
260
+ # Windows PowerShell
261
+ Get-ComputerInfo
262
+ }
263
+ }
264
+ ```
265
+
266
+ ## Module Compatibility
267
+
268
+ ### Conditional Module Loading
269
+
270
+ ```powershell
271
+ function Import-ModuleCompat
272
+ {
273
+ [CmdletBinding()]
274
+ param(
275
+ [Parameter(Mandatory)]
276
+ [string]$ModuleName,
277
+
278
+ [Parameter()]
279
+ [string]$AlternativeModule
280
+ )
281
+
282
+ try
283
+ {
284
+ Import-Module $ModuleName -ErrorAction Stop
285
+ Write-Verbose "Loaded module: $ModuleName"
286
+ }
287
+ catch
288
+ {
289
+ if ($AlternativeModule)
290
+ {
291
+ Write-Warning "Failed to load $ModuleName, trying $AlternativeModule"
292
+ Import-Module $AlternativeModule -ErrorAction Stop
293
+ }
294
+ else
295
+ {
296
+ throw
297
+ }
298
+ }
299
+ }
300
+
301
+ # Usage
302
+ Import-ModuleCompat -ModuleName 'ActiveDirectory' -AlternativeModule 'Microsoft.Graph.Identity.DirectoryManagement'
303
+ ```
304
+
305
+ ### Windows Compatibility Module
306
+
307
+ ```powershell
308
+ # For PowerShell Core on Windows, use Windows Compatibility
309
+ if ($PSVersionTable.PSVersion.Major -ge 7 -and $IsWindows)
310
+ {
311
+ # Import Windows PowerShell modules via compatibility layer
312
+ Import-Module -Name ActiveDirectory -UseWindowsPowerShell -ErrorAction SilentlyContinue
313
+ }
314
+ ```
315
+
316
+ ## Migration Patterns
317
+
318
+ ### Gradual Migration Approach
319
+
320
+ ```powershell
321
+ # Step 1: Add version detection
322
+ #Requires -Version 5.1
323
+
324
+ $isPowerShellCore = $PSVersionTable.PSEdition -eq 'Core'
325
+
326
+ # Step 2: Use conditional logic for version-specific code
327
+ if ($isPowerShellCore)
328
+ {
329
+ # PowerShell Core implementation
330
+ $os = Get-CimInstance -ClassName Win32_OperatingSystem
331
+ }
332
+ else
333
+ {
334
+ # Windows PowerShell implementation
335
+ $os = Get-WmiObject -Class Win32_OperatingSystem
336
+ }
337
+
338
+ # Step 3: Gradually replace with Core-compatible code
339
+ # Eventually remove conditional logic once fully migrated
340
+ ```
341
+
342
+ ### Feature Detection Over Version Detection
343
+
344
+ ```powershell
345
+ # ✅ GOOD: Feature detection
346
+ function Invoke-CommandWithFeatureDetection
347
+ {
348
+ [CmdletBinding()]
349
+ param()
350
+
351
+ # Check if cmdlet exists
352
+ if (Get-Command -Name Get-CimInstance -ErrorAction SilentlyContinue)
353
+ {
354
+ Get-CimInstance -ClassName Win32_OperatingSystem
355
+ }
356
+ elseif (Get-Command -Name Get-WmiObject -ErrorAction SilentlyContinue)
357
+ {
358
+ Get-WmiObject -Class Win32_OperatingSystem
359
+ }
360
+ else
361
+ {
362
+ throw "No compatible cmdlet found"
363
+ }
364
+ }
365
+
366
+ # ❌ BAD: Hard version checks
367
+ # if ($PSVersionTable.PSVersion.Major -eq 5) { ... }
368
+ ```
369
+
370
+ ## Common Migration Issues
371
+
372
+ ### Issue 1: .NET Framework vs .NET Core
373
+
374
+ ```powershell
375
+ # Windows PowerShell uses .NET Framework
376
+ # PowerShell Core uses .NET Core/.NET 5+
377
+
378
+ # Check .NET runtime
379
+ $runtime = [System.Runtime.InteropServices.RuntimeInformation]::FrameworkDescription
380
+ Write-Output "Running on: $runtime"
381
+
382
+ # Some .NET Framework APIs are not available in .NET Core
383
+ # Use cross-platform alternatives
384
+ ```
385
+
386
+ ### Issue 2: Default Encoding Changes
387
+
388
+ ```powershell
389
+ # Windows PowerShell: Default encoding varies
390
+ # PowerShell Core: Default encoding is UTF-8 (no BOM)
391
+
392
+ # ✅ GOOD: Explicitly specify encoding
393
+ function Write-FileWithEncoding
394
+ {
395
+ [CmdletBinding()]
396
+ param(
397
+ [Parameter(Mandatory)]
398
+ [string]$Path,
399
+
400
+ [Parameter(Mandatory)]
401
+ [string]$Content
402
+ )
403
+
404
+ # Use UTF-8 without BOM for cross-platform compatibility
405
+ $utf8NoBom = [System.Text.UTF8Encoding]::new($false)
406
+ [System.IO.File]::WriteAllText($Path, $Content, $utf8NoBom)
407
+ }
408
+ ```
409
+
410
+ ### Issue 3: Remoting Differences
411
+
412
+ ```powershell
413
+ # Windows PowerShell: Uses WSMan by default
414
+ # PowerShell Core: Supports WSMan and SSH
415
+
416
+ function New-RemoteSessionCompat
417
+ {
418
+ [CmdletBinding()]
419
+ param(
420
+ [Parameter(Mandatory)]
421
+ [string]$ComputerName,
422
+
423
+ [Parameter()]
424
+ [PSCredential]$Credential,
425
+
426
+ [Parameter()]
427
+ [ValidateSet('WSMan', 'SSH')]
428
+ [string]$Protocol = 'WSMan'
429
+ )
430
+
431
+ $sessionParams = @{
432
+ ComputerName = $ComputerName
433
+ }
434
+
435
+ if ($Credential)
436
+ {
437
+ $sessionParams['Credential'] = $Credential
438
+ }
439
+
440
+ if ($Protocol -eq 'SSH' -and $PSVersionTable.PSVersion.Major -ge 7)
441
+ {
442
+ $sessionParams['HostName'] = $ComputerName
443
+ $sessionParams.Remove('ComputerName')
444
+ New-PSSession @sessionParams -SSHTransport
445
+ }
446
+ else
447
+ {
448
+ New-PSSession @sessionParams
449
+ }
450
+ }
451
+ ```
452
+
453
+ ## Best Practices
454
+
455
+ 1. **Test on both versions** - Validate scripts on Windows PowerShell 5.1 and PowerShell Core 7.4+
456
+ 2. **Use CIM instead of WMI** - CIM cmdlets are cross-platform
457
+ 3. **Avoid deprecated cmdlets** - Replace with modern equivalents
458
+ 4. **Feature detection over version detection** - Check for cmdlet availability
459
+ 5. **Explicit encoding** - Always specify UTF-8 encoding
460
+ 6. **Use compatibility modules** - Leverage Windows Compatibility when needed
461
+ 7. **Gradual migration** - Migrate incrementally, not all at once
462
+ 8. **Document compatibility** - Note minimum PowerShell version requirements
463
+ 9. **Use #Requires statements** - Specify minimum version and modules
464
+ 10. **Automated testing** - Test on multiple PowerShell versions in CI/CD
465
+
466
+
@@ -0,0 +1,244 @@
1
+ # PowerShell Modules and Advanced Functions
2
+
3
+ Best practices for PowerShell module development and advanced function patterns.
4
+
5
+ ## Advanced Functions
6
+
7
+ ### CmdletBinding Attribute
8
+
9
+ **ALWAYS** use `[CmdletBinding()]` for advanced functions:
10
+
11
+ ```powershell
12
+ function Get-UserData
13
+ {
14
+ [CmdletBinding()]
15
+ param(
16
+ [Parameter(Mandatory, ValueFromPipeline)]
17
+ [string]$UserName
18
+ )
19
+
20
+ begin
21
+ {
22
+ Write-Verbose "Starting Get-UserData"
23
+ }
24
+
25
+ process
26
+ {
27
+ Write-Verbose "Processing user: $UserName"
28
+ # Function logic
29
+ }
30
+
31
+ end
32
+ {
33
+ Write-Verbose "Completed Get-UserData"
34
+ }
35
+ }
36
+ ```
37
+
38
+ ### Parameter Attributes
39
+
40
+ ```powershell
41
+ function Set-Configuration
42
+ {
43
+ [CmdletBinding()]
44
+ param(
45
+ # Mandatory parameter
46
+ [Parameter(Mandatory)]
47
+ [string]$ConfigPath,
48
+
49
+ # Pipeline input by value
50
+ [Parameter(ValueFromPipeline)]
51
+ [string]$Value,
52
+
53
+ # Pipeline input by property name
54
+ [Parameter(ValueFromPipelineByPropertyName)]
55
+ [string]$Name,
56
+
57
+ # Parameter validation
58
+ [Parameter()]
59
+ [ValidateSet('Development', 'Staging', 'Production')]
60
+ [string]$Environment = 'Development',
61
+
62
+ # Range validation
63
+ [Parameter()]
64
+ [ValidateRange(1, 100)]
65
+ [int]$RetryCount = 3,
66
+
67
+ # Script validation
68
+ [Parameter()]
69
+ [ValidateScript({ Test-Path $_ })]
70
+ [string]$LogPath
71
+ )
72
+ }
73
+ ```
74
+
75
+ ## Parameter Sets
76
+
77
+ ### Multiple Parameter Sets
78
+
79
+ ```powershell
80
+ function Get-Data
81
+ {
82
+ [CmdletBinding(DefaultParameterSetName = 'ByName')]
83
+ param(
84
+ [Parameter(Mandatory, ParameterSetName = 'ByName')]
85
+ [string]$Name,
86
+
87
+ [Parameter(Mandatory, ParameterSetName = 'ById')]
88
+ [int]$Id,
89
+
90
+ [Parameter(ParameterSetName = 'ByName')]
91
+ [Parameter(ParameterSetName = 'ById')]
92
+ [switch]$IncludeDetails
93
+ )
94
+
95
+ switch ($PSCmdlet.ParameterSetName)
96
+ {
97
+ 'ByName' { Write-Output "Getting data by name: $Name" }
98
+ 'ById' { Write-Output "Getting data by ID: $Id" }
99
+ }
100
+ }
101
+
102
+ # Usage
103
+ Get-Data -Name 'User1'
104
+ Get-Data -Id 123
105
+ ```
106
+
107
+ ## SupportsShouldProcess
108
+
109
+ ### WhatIf and Confirm Support
110
+
111
+ ```powershell
112
+ function Remove-UserData
113
+ {
114
+ [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')]
115
+ param(
116
+ [Parameter(Mandatory)]
117
+ [string]$UserName
118
+ )
119
+
120
+ if ($PSCmdlet.ShouldProcess($UserName, 'Remove user data'))
121
+ {
122
+ # Perform deletion
123
+ Write-Output "Removing data for $UserName"
124
+ }
125
+ }
126
+
127
+ # Usage
128
+ Remove-UserData -UserName 'TestUser' -WhatIf
129
+ Remove-UserData -UserName 'TestUser' -Confirm:$false
130
+ ```
131
+
132
+ ## Module Structure
133
+
134
+ ### Module Directory Layout
135
+
136
+ ```
137
+ MyModule/
138
+ ├── MyModule.psd1 # Module manifest
139
+ ├── MyModule.psm1 # Module script
140
+ ├── Public/ # Exported functions
141
+ │ ├── Get-Something.ps1
142
+ │ └── Set-Something.ps1
143
+ ├── Private/ # Internal functions
144
+ │ └── Helper.ps1
145
+ ├── Classes/ # PowerShell classes
146
+ │ └── MyClass.ps1
147
+ ├── Data/ # Data files
148
+ │ └── config.json
149
+ └── Tests/ # Pester tests
150
+ └── MyModule.Tests.ps1
151
+ ```
152
+
153
+ ### Module Manifest (.psd1)
154
+
155
+ ```powershell
156
+ @{
157
+ RootModule = 'MyModule.psm1'
158
+ ModuleVersion = '1.0.0'
159
+ GUID = 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'
160
+ Author = 'Your Name'
161
+ CompanyName = 'Your Company'
162
+ Copyright = '(c) 2024. All rights reserved.'
163
+ Description = 'Module description'
164
+
165
+ PowerShellVersion = '7.4'
166
+
167
+ FunctionsToExport = @('Get-Something', 'Set-Something')
168
+ CmdletsToExport = @()
169
+ VariablesToExport = @()
170
+ AliasesToExport = @()
171
+
172
+ PrivateData = @{
173
+ PSData = @{
174
+ Tags = @('Tag1', 'Tag2')
175
+ LicenseUri = 'https://github.com/user/repo/blob/main/LICENSE'
176
+ ProjectUri = 'https://github.com/user/repo'
177
+ }
178
+ }
179
+ }
180
+ ```
181
+
182
+ ### Module Script (.psm1)
183
+
184
+ ```powershell
185
+ #Requires -Version 7.4
186
+
187
+ # Import public functions
188
+ $publicFunctions = @(Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue)
189
+
190
+ # Import private functions
191
+ $privateFunctions = @(Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue)
192
+
193
+ # Dot source the files
194
+ foreach ($import in @($publicFunctions + $privateFunctions))
195
+ {
196
+ try
197
+ {
198
+ . $import.FullName
199
+ }
200
+ catch
201
+ {
202
+ Write-Error "Failed to import function $($import.FullName): $_"
203
+ }
204
+ }
205
+
206
+ # Export public functions
207
+ Export-ModuleMember -Function $publicFunctions.BaseName
208
+ ```
209
+
210
+ ## Output Types
211
+
212
+ ### Specify Output Type
213
+
214
+ ```powershell
215
+ function Get-UserInfo
216
+ {
217
+ [CmdletBinding()]
218
+ [OutputType([PSCustomObject])]
219
+ param(
220
+ [Parameter(Mandatory)]
221
+ [string]$UserName
222
+ )
223
+
224
+ [PSCustomObject]@{
225
+ UserName = $UserName
226
+ Email = "$UserName@example.com"
227
+ Created = Get-Date
228
+ }
229
+ }
230
+ ```
231
+
232
+ ## Best Practices
233
+
234
+ 1. **Use CmdletBinding** - Enable advanced function features
235
+ 2. **Validate parameters** - Use validation attributes
236
+ 3. **Support pipeline** - Use ValueFromPipeline
237
+ 4. **Use parameter sets** - For mutually exclusive parameters
238
+ 5. **Implement ShouldProcess** - For destructive operations
239
+ 6. **Specify output types** - Use [OutputType()] attribute
240
+ 7. **Export selectively** - Only export public functions
241
+ 8. **Use begin/process/end** - For pipeline processing
242
+ 9. **Write verbose output** - Use Write-Verbose
243
+ 10. **Follow naming conventions** - Verb-Noun format
244
+