@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,314 @@
1
+ # PowerShell Security Practices
2
+
3
+ Security best practices for PowerShell scripts and modules.
4
+
5
+ ## Credential Management
6
+
7
+ ### Use PSCredential Objects
8
+
9
+ ```powershell
10
+ # ✅ Correct: Use PSCredential
11
+ function Connect-Service
12
+ {
13
+ [CmdletBinding()]
14
+ param(
15
+ [Parameter(Mandatory)]
16
+ [PSCredential]$Credential
17
+ )
18
+
19
+ $userName = $Credential.UserName
20
+ $password = $Credential.GetNetworkCredential().Password
21
+
22
+ # Use credentials securely
23
+ }
24
+
25
+ # Usage
26
+ $cred = Get-Credential -Message "Enter service credentials"
27
+ Connect-Service -Credential $cred
28
+ ```
29
+
30
+ ### Never Store Plain-Text Passwords
31
+
32
+ ```powershell
33
+ # ❌ NEVER do this
34
+ $password = "MyPassword123"
35
+ $userName = "admin"
36
+
37
+ # ❌ NEVER do this
38
+ $password = "MyPassword123" | ConvertTo-SecureString -AsPlainText -Force
39
+
40
+ # ✅ Correct: Prompt for credentials
41
+ $cred = Get-Credential
42
+
43
+ # ✅ Correct: Use Windows Credential Manager
44
+ $cred = Get-StoredCredential -Target "MyService"
45
+ ```
46
+
47
+ ### Secure String Storage
48
+
49
+ ```powershell
50
+ # Export encrypted credential (user-specific)
51
+ $cred = Get-Credential
52
+ $cred.Password | ConvertFrom-SecureString | Out-File "C:\Secure\cred.txt"
53
+
54
+ # Import encrypted credential
55
+ $password = Get-Content "C:\Secure\cred.txt" | ConvertTo-SecureString
56
+ $cred = New-Object PSCredential("username", $password)
57
+ ```
58
+
59
+ **WARNING:** This encryption is user and machine-specific. Not portable.
60
+
61
+ ### Azure Key Vault Integration
62
+
63
+ ```powershell
64
+ # ✅ Best practice for production
65
+ function Get-SecurePassword
66
+ {
67
+ param([string]$SecretName)
68
+
69
+ $secret = Get-AzKeyVaultSecret -VaultName "MyVault" -Name $SecretName
70
+ return $secret.SecretValue
71
+ }
72
+ ```
73
+
74
+ ## Script Signing
75
+
76
+ ### Sign Scripts for Production
77
+
78
+ ```powershell
79
+ # Get code signing certificate
80
+ $cert = Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert
81
+
82
+ # Sign script
83
+ Set-AuthenticodeSignature -FilePath ".\MyScript.ps1" -Certificate $cert
84
+ ```
85
+
86
+ ### Verify Signatures
87
+
88
+ ```powershell
89
+ # Check signature
90
+ $signature = Get-AuthenticodeSignature -FilePath ".\MyScript.ps1"
91
+
92
+ if ($signature.Status -eq 'Valid')
93
+ {
94
+ Write-Output "Script signature is valid"
95
+ }
96
+ else
97
+ {
98
+ Write-Warning "Script signature is invalid or missing"
99
+ }
100
+ ```
101
+
102
+ ## Execution Policies
103
+
104
+ ### Understanding Execution Policies
105
+
106
+ ```powershell
107
+ # Check current policy
108
+ Get-ExecutionPolicy
109
+
110
+ # Set execution policy (requires admin)
111
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
112
+
113
+ # Bypass for specific script (use cautiously)
114
+ PowerShell.exe -ExecutionPolicy Bypass -File ".\MyScript.ps1"
115
+ ```
116
+
117
+ **Execution Policy Levels:**
118
+ - `Restricted` - No scripts allowed
119
+ - `AllSigned` - Only signed scripts
120
+ - `RemoteSigned` - Downloaded scripts must be signed
121
+ - `Unrestricted` - All scripts allowed (prompts for downloaded)
122
+ - `Bypass` - No restrictions (dangerous)
123
+
124
+ ### Recommended Settings
125
+
126
+ ```powershell
127
+ # Development
128
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
129
+
130
+ # Production
131
+ Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope LocalMachine
132
+ ```
133
+
134
+ ## Input Validation
135
+
136
+ ### Validate All Input
137
+
138
+ ```powershell
139
+ function Remove-UserFiles
140
+ {
141
+ [CmdletBinding(SupportsShouldProcess)]
142
+ param(
143
+ [Parameter(Mandatory)]
144
+ [ValidateNotNullOrEmpty()]
145
+ [ValidatePattern('^[a-zA-Z0-9_-]+$')] # Alphanumeric only
146
+ [string]$UserName,
147
+
148
+ [Parameter(Mandatory)]
149
+ [ValidateScript({ Test-Path $_ -PathType Container })]
150
+ [string]$BasePath
151
+ )
152
+
153
+ # Prevent path traversal
154
+ $safePath = Join-Path $BasePath $UserName
155
+ $resolvedPath = Resolve-Path $safePath -ErrorAction Stop
156
+
157
+ if (-not $resolvedPath.Path.StartsWith($BasePath))
158
+ {
159
+ throw "Path traversal detected"
160
+ }
161
+
162
+ if ($PSCmdlet.ShouldProcess($resolvedPath, "Remove files"))
163
+ {
164
+ Remove-Item -Path $resolvedPath -Recurse -Force
165
+ }
166
+ }
167
+ ```
168
+
169
+ ### Sanitize File Paths
170
+
171
+ ```powershell
172
+ function Get-SafeFileName
173
+ {
174
+ param([string]$FileName)
175
+
176
+ # Remove invalid characters
177
+ $invalidChars = [System.IO.Path]::GetInvalidFileNameChars()
178
+ $safeName = $FileName
179
+
180
+ foreach ($char in $invalidChars)
181
+ {
182
+ $safeName = $safeName.Replace($char, '_')
183
+ }
184
+
185
+ return $safeName
186
+ }
187
+ ```
188
+
189
+ ## Prevent Injection Attacks
190
+
191
+ ### SQL Injection Prevention
192
+
193
+ ```powershell
194
+ # ❌ Vulnerable to SQL injection
195
+ $query = "SELECT * FROM Users WHERE UserName = '$userName'"
196
+
197
+ # ✅ Use parameterized queries
198
+ $query = "SELECT * FROM Users WHERE UserName = @UserName"
199
+ $cmd = New-Object System.Data.SqlClient.SqlCommand($query, $connection)
200
+ $cmd.Parameters.AddWithValue("@UserName", $userName)
201
+ ```
202
+
203
+ ### Command Injection Prevention
204
+
205
+ ```powershell
206
+ # ❌ Vulnerable to command injection
207
+ $output = cmd.exe /c "ping $hostName"
208
+
209
+ # ✅ Use native cmdlets
210
+ $output = Test-Connection -ComputerName $hostName -Count 4
211
+
212
+ # ✅ If external command needed, validate input
213
+ if ($hostName -match '^[a-zA-Z0-9.-]+$')
214
+ {
215
+ $output = & ping.exe $hostName
216
+ }
217
+ ```
218
+
219
+ ## Secure Coding Patterns
220
+
221
+ ### Least Privilege
222
+
223
+ ```powershell
224
+ # ✅ Check if admin rights are needed
225
+ function Test-IsAdmin
226
+ {
227
+ $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
228
+ $principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
229
+ return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
230
+ }
231
+
232
+ if (-not (Test-IsAdmin))
233
+ {
234
+ throw "This script requires administrator privileges"
235
+ }
236
+ ```
237
+
238
+ ### Secure Temporary Files
239
+
240
+ ```powershell
241
+ # ✅ Use secure temp file creation
242
+ $tempFile = [System.IO.Path]::GetTempFileName()
243
+
244
+ try
245
+ {
246
+ # Use temp file
247
+ Set-Content -Path $tempFile -Value $data
248
+ # Process...
249
+ }
250
+ finally
251
+ {
252
+ # Always clean up
253
+ if (Test-Path $tempFile)
254
+ {
255
+ Remove-Item $tempFile -Force
256
+ }
257
+ }
258
+ ```
259
+
260
+ ### Avoid Invoke-Expression
261
+
262
+ ```powershell
263
+ # ❌ Dangerous: Arbitrary code execution
264
+ $command = "Get-Process"
265
+ Invoke-Expression $command
266
+
267
+ # ✅ Use safer alternatives
268
+ $command = "Get-Process"
269
+ & $command
270
+
271
+ # ✅ Or use scriptblock
272
+ $scriptBlock = { Get-Process }
273
+ & $scriptBlock
274
+ ```
275
+
276
+ ## Logging and Auditing
277
+
278
+ ### Log Security Events
279
+
280
+ ```powershell
281
+ function Write-SecurityLog
282
+ {
283
+ param(
284
+ [string]$Message,
285
+ [string]$User = $env:USERNAME
286
+ )
287
+
288
+ $logEntry = @{
289
+ Timestamp = Get-Date -Format 'o'
290
+ User = $User
291
+ Computer = $env:COMPUTERNAME
292
+ Message = $Message
293
+ }
294
+
295
+ $logEntry | ConvertTo-Json | Out-File "C:\Logs\security.log" -Append
296
+ }
297
+
298
+ # Usage
299
+ Write-SecurityLog -Message "User attempted to access restricted resource"
300
+ ```
301
+
302
+ ## Best Practices Summary
303
+
304
+ 1. **Never store plain-text passwords** - Use PSCredential or Key Vault
305
+ 2. **Sign production scripts** - Use code signing certificates
306
+ 3. **Validate all input** - Use parameter validation attributes
307
+ 4. **Prevent injection** - Use parameterized queries and native cmdlets
308
+ 5. **Follow least privilege** - Request only necessary permissions
309
+ 6. **Clean up resources** - Remove temp files and close connections
310
+ 7. **Avoid Invoke-Expression** - Use safer alternatives
311
+ 8. **Log security events** - Maintain audit trail
312
+ 9. **Use execution policies** - RemoteSigned minimum for production
313
+ 10. **Encrypt sensitive data** - Use SecureString or Key Vault
314
+
@@ -0,0 +1,268 @@
1
+ # PowerShell Testing Guidelines
2
+
3
+ Comprehensive testing standards using Pester framework for PowerShell code.
4
+
5
+ ## Pester Framework
6
+
7
+ ### Installation
8
+
9
+ ```powershell
10
+ # Install Pester 5.x
11
+ Install-Module -Name Pester -Force -SkipPublisherCheck
12
+
13
+ # Verify installation
14
+ Get-Module -Name Pester -ListAvailable
15
+ ```
16
+
17
+ ### Test File Structure
18
+
19
+ **ALWAYS** follow these conventions:
20
+
21
+ ```powershell
22
+ # Test files: *.Tests.ps1
23
+ Get-UserData.ps1 # Source file
24
+ Get-UserData.Tests.ps1 # Test file
25
+
26
+ # Directory structure
27
+ MyModule/
28
+ ├── Public/
29
+ │ └── Get-UserData.ps1
30
+ ├── Private/
31
+ │ └── Helper.ps1
32
+ └── Tests/
33
+ ├── Public/
34
+ │ └── Get-UserData.Tests.ps1
35
+ └── Private/
36
+ └── Helper.Tests.ps1
37
+ ```
38
+
39
+ ## Test Structure (Pester 5.x)
40
+
41
+ ### Describe, Context, It Blocks
42
+
43
+ ```powershell
44
+ # ✅ GOOD: Proper test structure
45
+ Describe 'Get-UserData' {
46
+ BeforeAll {
47
+ # Setup runs once before all tests
48
+ $testUser = @{
49
+ Name = 'TestUser'
50
+ Email = 'test@example.com'
51
+ }
52
+ }
53
+
54
+ Context 'When user exists' {
55
+ It 'Should return user data' {
56
+ # Arrange
57
+ $userId = 1
58
+
59
+ # Act
60
+ $result = Get-UserData -UserId $userId
61
+
62
+ # Assert
63
+ $result.Name | Should -Be 'TestUser'
64
+ $result.Email | Should -Be 'test@example.com'
65
+ }
66
+ }
67
+
68
+ Context 'When user does not exist' {
69
+ It 'Should throw an error' {
70
+ # Arrange
71
+ $userId = 999
72
+
73
+ # Act & Assert
74
+ { Get-UserData -UserId $userId } | Should -Throw
75
+ }
76
+ }
77
+
78
+ AfterAll {
79
+ # Cleanup runs once after all tests
80
+ Remove-Variable -Name testUser -ErrorAction SilentlyContinue
81
+ }
82
+ }
83
+ ```
84
+
85
+ ### BeforeEach and AfterEach
86
+
87
+ ```powershell
88
+ Describe 'Set-Configuration' {
89
+ BeforeEach {
90
+ # Runs before each test
91
+ $script:tempFile = New-TemporaryFile
92
+ }
93
+
94
+ It 'Should save configuration' {
95
+ Set-Configuration -Path $tempFile -Value 'test'
96
+ $tempFile | Should -Exist
97
+ }
98
+
99
+ AfterEach {
100
+ # Runs after each test
101
+ Remove-Item $tempFile -ErrorAction SilentlyContinue
102
+ }
103
+ }
104
+ ```
105
+
106
+ ## Assertions (Should)
107
+
108
+ ### Common Assertions
109
+
110
+ ```powershell
111
+ # Equality
112
+ $result | Should -Be 'expected'
113
+ $result | Should -Not -Be 'unexpected'
114
+
115
+ # Null checks
116
+ $result | Should -BeNullOrEmpty
117
+ $result | Should -Not -BeNullOrEmpty
118
+
119
+ # Type checks
120
+ $result | Should -BeOfType [string]
121
+ $result | Should -BeOfType [System.Collections.Hashtable]
122
+
123
+ # Boolean
124
+ $result | Should -BeTrue
125
+ $result | Should -BeFalse
126
+
127
+ # Exceptions
128
+ { Get-Item 'C:\NonExistent' } | Should -Throw
129
+ { Get-Item 'C:\NonExistent' } | Should -Throw -ExpectedMessage '*cannot find*'
130
+
131
+ # File/Path
132
+ 'C:\Temp\file.txt' | Should -Exist
133
+ 'C:\Temp\file.txt' | Should -FileContentMatch 'pattern'
134
+
135
+ # Collections
136
+ $array | Should -Contain 'item'
137
+ $array | Should -HaveCount 5
138
+ ```
139
+
140
+ ## Mocking
141
+
142
+ ### Mock Functions and Cmdlets
143
+
144
+ ```powershell
145
+ Describe 'Send-Notification' {
146
+ It 'Should call Send-MailMessage' {
147
+ # Arrange
148
+ Mock Send-MailMessage { }
149
+
150
+ # Act
151
+ Send-Notification -To 'user@example.com' -Message 'Test'
152
+
153
+ # Assert
154
+ Should -Invoke Send-MailMessage -Times 1 -Exactly
155
+ Should -Invoke Send-MailMessage -ParameterFilter {
156
+ $To -eq 'user@example.com'
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### Mock Return Values
163
+
164
+ ```powershell
165
+ Describe 'Get-ProcessedData' {
166
+ It 'Should process API response' {
167
+ # Arrange
168
+ Mock Invoke-RestMethod {
169
+ return @{
170
+ Status = 'Success'
171
+ Data = @('Item1', 'Item2')
172
+ }
173
+ }
174
+
175
+ # Act
176
+ $result = Get-ProcessedData
177
+
178
+ # Assert
179
+ $result.Data | Should -HaveCount 2
180
+ }
181
+ }
182
+ ```
183
+
184
+ ## Test Organization
185
+
186
+ ### Unit Tests
187
+
188
+ Test individual functions in isolation:
189
+
190
+ ```powershell
191
+ Describe 'ConvertTo-TitleCase' -Tag 'Unit' {
192
+ It 'Should capitalize first letter of each word' {
193
+ $result = ConvertTo-TitleCase -Text 'hello world'
194
+ $result | Should -Be 'Hello World'
195
+ }
196
+ }
197
+ ```
198
+
199
+ ### Integration Tests
200
+
201
+ Test multiple components together:
202
+
203
+ ```powershell
204
+ Describe 'User Management Integration' -Tag 'Integration' {
205
+ It 'Should create and retrieve user' {
206
+ # Create user
207
+ New-User -Name 'TestUser' -Email 'test@example.com'
208
+
209
+ # Retrieve user
210
+ $user = Get-User -Name 'TestUser'
211
+ $user.Email | Should -Be 'test@example.com'
212
+ }
213
+ }
214
+ ```
215
+
216
+ ## Running Tests
217
+
218
+ ### Command Line
219
+
220
+ ```powershell
221
+ # Run all tests
222
+ Invoke-Pester
223
+
224
+ # Run specific file
225
+ Invoke-Pester -Path .\Tests\Get-UserData.Tests.ps1
226
+
227
+ # Run tests with tag
228
+ Invoke-Pester -Tag 'Unit'
229
+
230
+ # Generate code coverage
231
+ Invoke-Pester -CodeCoverage .\Public\*.ps1 -CodeCoverageOutputFile coverage.xml
232
+ ```
233
+
234
+ ### Configuration File
235
+
236
+ Create `PesterConfiguration.psd1`:
237
+
238
+ ```powershell
239
+ @{
240
+ Run = @{
241
+ Path = './Tests'
242
+ Exit = $true
243
+ }
244
+ CodeCoverage = @{
245
+ Enabled = $true
246
+ Path = './Public/*.ps1', './Private/*.ps1'
247
+ OutputFormat = 'JaCoCo'
248
+ }
249
+ TestResult = @{
250
+ Enabled = $true
251
+ OutputFormat = 'NUnitXml'
252
+ }
253
+ }
254
+ ```
255
+
256
+ ## Best Practices
257
+
258
+ 1. **Use Pester 5.x** - Latest version with improved performance
259
+ 2. **Follow AAA pattern** - Arrange, Act, Assert
260
+ 3. **One assertion per test** - Keep tests focused
261
+ 4. **Use descriptive names** - Test names should explain what is tested
262
+ 5. **Mock external dependencies** - Isolate unit tests
263
+ 6. **Use tags** - Organize tests (Unit, Integration, Slow)
264
+ 7. **Test edge cases** - Null, empty, invalid inputs
265
+ 8. **Aim for 80%+ coverage** - Use code coverage reports
266
+ 9. **Run tests in CI/CD** - Automate testing
267
+ 10. **Keep tests fast** - Unit tests should run in milliseconds
268
+