@wazir-dev/cli 1.0.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 (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,597 @@
1
+ # Cloud AWS — Expertise Module
2
+
3
+ > An AWS cloud specialist designs, builds, and operates production infrastructure on Amazon Web Services,
4
+ > covering account governance, networking, compute, storage, databases, security, and cost optimization.
5
+ > Scope spans from single-service deployments to enterprise multi-account, multi-region architectures.
6
+
7
+ ---
8
+
9
+ ## Core Patterns & Conventions
10
+
11
+ ### Account Structure
12
+
13
+ - **AWS Organizations** — group accounts into Organizational Units (OUs): Security, Infrastructure, Workloads (prod/staging/dev), Sandbox.
14
+ - **Control Tower** — automated landing zone with guardrails (SCPs + Config rules). Use Account Factory for self-service account provisioning.
15
+ - **Dedicated accounts** — separate accounts for: log archive, security tooling, shared networking, each workload environment. Never mix dev and prod in one account.
16
+ - **Service Control Policies (SCPs)** — enforce organization-wide guardrails (deny region sprawl, deny root usage, restrict service access). Test SCPs in a sandbox OU before applying broadly.
17
+ - **Resource Control Policies (RCPs)** — introduced late 2024, complement SCPs by controlling resource-based policies directly. Use RCPs to build a data perimeter ensuring only trusted identities access resources.
18
+
19
+ ### Networking
20
+
21
+ - **VPC design** — use `/16` VPCs unless constrained. Allocate at least 3 subnets per AZ: public, private (app), private (data). Reserve CIDR space for future growth.
22
+ - **Security groups** — stateful, instance-level firewalls. Reference other security groups instead of CIDR ranges where possible. Never use `0.0.0.0/0` on ingress except for public ALBs/NLBs.
23
+ - **NACLs** — stateless, subnet-level. Use as a coarse second layer; primary filtering should be via security groups.
24
+ - **Transit Gateway** — hub for >5 VPCs. Place in a dedicated Network Services account, share via AWS RAM. Use a single TGW per Region; attach at least one subnet per AZ. Route untrusted traffic through a Security VPC — never allow direct untrusted-to-production routes.
25
+ - **VPC Endpoints** — use Gateway endpoints (S3, DynamoDB — free) and Interface endpoints (other services) to keep traffic off the public internet. Apply endpoint policies for least-privilege access.
26
+ - **DNS** — Route 53 private hosted zones associated with VPCs. Use Route 53 Resolver for hybrid DNS with on-premises.
27
+
28
+ ### Compute Patterns
29
+
30
+ - **Lambda** — event-driven, sub-15-minute tasks. Use ARM64 (Graviton) for 20% cost savings and 45-65% cold start reduction. Use SnapStart for Java workloads (reduces cold starts to 90-140ms). Memory allocation directly proportional to CPU — right-size with AWS Lambda Power Tuning.
31
+ - **ECS/Fargate** — containerized workloads without managing instances. Fargate for variable workloads; EC2 launch type for steady-state with Savings Plans. Use ECS Exec for debugging. Native blue/green deployments available since July 2025.
32
+ - **EKS** — when Kubernetes is a hard requirement (multi-cloud portability, existing K8s tooling, complex service mesh). Higher operational cost than ECS; justified only at scale or with existing K8s expertise.
33
+ - **EC2** — full control needed (GPU, custom kernels, license-bound software). Always use Auto Scaling Groups. Use Graviton (arm64) instances for 40% better price-performance.
34
+ - **App Runner** — simplest container deployment for web apps/APIs when you want zero infrastructure management.
35
+
36
+ ### Storage
37
+
38
+ - **S3** — default storage for objects. Enable versioning on production buckets. Use lifecycle policies: Standard -> Intelligent-Tiering -> Glacier Instant Retrieval -> Glacier Deep Archive.
39
+ - **S3 security** — Block Public Access at account level. Enforce SSE-KMS encryption via bucket policy. Enable S3 Access Logging and S3 Object Lock for compliance.
40
+ - **EBS** — gp3 is the default choice (3,000 IOPS baseline, cheaper than gp2). Use io2 Block Express for high-IOPS databases. Snapshot lifecycle policies for backups.
41
+ - **EFS** — shared POSIX file system for multi-AZ access. Enable Infrequent Access (IA) tiering for cost savings. Use throughput modes appropriate to workload: bursting vs. provisioned vs. elastic.
42
+
43
+ ### Database Services
44
+
45
+ - **RDS** — managed relational databases (PostgreSQL, MySQL, SQL Server, Oracle). Multi-AZ for HA. Use read replicas for read scaling. Enable automated backups with sufficient retention.
46
+ - **Aurora** — 5x throughput over standard MySQL, 3x over PostgreSQL. Aurora Serverless v2 for variable workloads (scales in 0.5 ACU increments). Aurora Global Database for cross-region DR with <1s replication lag.
47
+ - **DynamoDB** — single-digit ms latency NoSQL. Use on-demand capacity for unpredictable traffic, provisioned with auto-scaling for steady workloads. Design partition keys for uniform distribution (high cardinality). Use single-table design for related entities. Enable Point-in-Time Recovery. DynamoDB Accelerator (DAX) for microsecond read caching.
48
+ - **ElastiCache** — Redis for caching, session storage, leaderboards. Memcached for simple key-value caching. Use cluster mode for horizontal scaling. Enable encryption in-transit and at-rest.
49
+
50
+ ### Messaging & Orchestration
51
+
52
+ - **SQS** — decoupled async processing. Standard queues for high throughput; FIFO for exactly-once, ordered delivery. Set visibility timeout > processing time. Use Dead Letter Queues (DLQ) with maxReceiveCount.
53
+ - **SNS** — fan-out pub/sub. Combine with SQS for reliable fan-out (SNS -> multiple SQS queues). Use message filtering to reduce unnecessary processing.
54
+ - **EventBridge** — event bus for event-driven architectures. Schema registry for governance. Content-based filtering in rules. Supports 1M events/sec with sub-50ms latency. Over 50 SaaS integrations. Use for cross-account and cross-service event routing.
55
+ - **Step Functions** — orchestrate multi-step workflows. Use Standard workflows for long-running (up to 1 year); Express workflows for high-volume, short-duration (<5 min). Prefer direct SDK integrations over Lambda proxies.
56
+
57
+ ### IAM Best Practices
58
+
59
+ - **Never use root account** — enable MFA (hardware/FIDO2), delete root access keys, lock with SCP.
60
+ - **Least privilege** — start with zero permissions, add only what is needed. Use IAM Access Analyzer to identify unused permissions and external access. Review service-last-accessed data to prune unused permissions.
61
+ - **Roles over users** — use IAM roles for services, EC2 instances, Lambda, ECS tasks. Use IAM Identity Center (successor to SSO) for human access with federated identity.
62
+ - **Permission boundaries** — cap maximum permissions for delegated admin scenarios. Layer with SCPs for defense in depth.
63
+ - **Conditions** — use `aws:SourceVpc`, `aws:PrincipalOrgID`, `aws:RequestedRegion` conditions to narrow access. Tag-based access control (ABAC) for scalable permissions.
64
+
65
+ ### Infrastructure as Code
66
+
67
+ - **AWS CDK** — preferred for teams writing application code (TypeScript, Python, Java, Go). L2/L3 constructs for best-practice defaults. Use `cdk-nag` for compliance checks. Use Aspects for cross-cutting concerns. CDK Refactor (since September 2025) for safe stack reorganization. Separate stacks by lifecycle (stateful vs. stateless).
68
+ - **Terraform** — preferred for multi-cloud or when team has existing Terraform expertise. Use remote state (S3 + DynamoDB locking). Modules for reusable components. Use `checkov` or `tfsec` for security scanning.
69
+ - **CloudFormation** — underlying engine for CDK. Use directly only when CDK/Terraform are not viable. StackSets for multi-account/multi-region deployments.
70
+ - **General IaC rules** — never make manual console changes to production. Use drift detection. Pin provider/module versions. Review plans/diffs before apply.
71
+
72
+ ---
73
+
74
+ ## Anti-Patterns & Pitfalls
75
+
76
+ ### 1. Single-Account Everything
77
+ **Problem:** Mixing dev/staging/prod in one account. No blast radius isolation. A dev mistake can take down production. Cost attribution is impossible.
78
+ **Fix:** AWS Organizations with dedicated accounts per environment. Control Tower for governance.
79
+
80
+ ### 2. Long-Lived IAM Access Keys
81
+ **Problem:** Static credentials stored in code, CI/CD secrets, or developer machines. Key rotation is manual and rarely done. Leaked keys are the #1 cause of AWS breaches.
82
+ **Fix:** Use IAM roles with temporary credentials. OIDC federation for CI/CD (GitHub Actions, GitLab). IAM Identity Center for human access.
83
+
84
+ ### 3. Overly Permissive IAM Policies
85
+ **Problem:** Using `Action: "*"` or `Resource: "*"` grants far more access than needed. 44% of cloud data thefts in 2025 involved IAM misconfigurations.
86
+ **Fix:** Start with zero permissions. Use IAM Access Analyzer. Scope policies to specific actions and resources. Use permission boundaries.
87
+
88
+ ### 4. No Encryption Strategy
89
+ **Problem:** Data at rest and in transit left unencrypted. Compliance violations (HIPAA, PCI, GDPR). Regulatory fines and data breach liability.
90
+ **Fix:** Enforce encryption everywhere: SSE-KMS for S3, encrypted EBS/RDS, TLS for data in transit. Use KMS customer-managed keys (CMKs) with automatic rotation.
91
+
92
+ ### 5. Ignoring Cost Management
93
+ **Problem:** No budgets, no alerts, no right-sizing. Surprise bills from forgotten resources, over-provisioned instances, or unoptimized storage classes. Hidden data transfer costs.
94
+ **Fix:** AWS Budgets with alerts. Cost Explorer for analysis. Savings Plans for steady workloads. Spot instances for fault-tolerant jobs. Tag everything for cost allocation.
95
+
96
+ ### 6. Manual Infrastructure Changes
97
+ **Problem:** Console clickops creates configuration drift, is unreproducible, and impossible to audit. Leads to inconsistencies between environments.
98
+ **Fix:** All changes through IaC (CDK/Terraform). Use SCPs to deny console write access in production accounts. Enable CloudFormation drift detection.
99
+
100
+ ### 7. Single-AZ Deployments
101
+ **Problem:** An AZ failure takes down the entire application. No redundancy. Violates the reliability pillar of Well-Architected Framework.
102
+ **Fix:** Multi-AZ for RDS, ElastiCache, ECS/EKS. ALB/NLB across AZs. Auto Scaling Groups spanning at least 2 AZs (preferably 3).
103
+
104
+ ### 8. Monolithic Lambda Functions
105
+ **Problem:** Cramming entire applications into a single Lambda. Large deployment packages cause slow cold starts. 10GB memory and 15-minute limits are not substitutes for proper architecture.
106
+ **Fix:** Decompose into focused, single-purpose functions. Use Step Functions for orchestration. Move long-running tasks to ECS/Fargate.
107
+
108
+ ### 9. DynamoDB Hot Partitions
109
+ **Problem:** Low-cardinality partition keys (e.g., `status: active/inactive`) concentrate traffic on few partitions. Causes throttling despite available table capacity.
110
+ **Fix:** Choose high-cardinality partition keys. Use write sharding for hot keys. Leverage adaptive capacity and split-for-heat (automatic since 2024). Consider composite keys in GSIs (supported since November 2025).
111
+
112
+ ### 10. No Backup and Recovery Testing
113
+ **Problem:** Assuming AWS handles all backups automatically. No tested recovery procedures. RTO/RPO targets undefined.
114
+ **Fix:** AWS Backup with cross-region/cross-account copies. Regular recovery drills. Automate RDS snapshot schedules. Test restore procedures quarterly.
115
+
116
+ ### 11. Public S3 Buckets
117
+ **Problem:** Data exposure leading to breaches. S3 bucket misconfigurations are still one of the most common breach vectors.
118
+ **Fix:** Enable S3 Block Public Access at the account level. Use bucket policies with explicit deny for non-TLS access. Monitor with Access Analyzer for S3.
119
+
120
+ ### 12. Neglecting Logging and Monitoring
121
+ **Problem:** No audit trail for security incidents. No metrics for capacity planning. Incident response is blind.
122
+ **Fix:** CloudTrail in all regions (organization trail). VPC Flow Logs. CloudWatch alarms for key metrics. Centralize logs in a dedicated log archive account.
123
+
124
+ ### 13. Hardcoding Configuration
125
+ **Problem:** Region names, account IDs, endpoints baked into code. Breaks multi-region/multi-account deployments. Secrets in plaintext in config files.
126
+ **Fix:** Use SSM Parameter Store for configuration, Secrets Manager for secrets (with automatic rotation). Environment variables for Lambda.
127
+
128
+ ### 14. Ignoring Data Transfer Costs
129
+ **Problem:** Cross-AZ, cross-region, and internet egress charges can exceed compute costs. NAT Gateway data processing fees often surprise teams.
130
+ **Fix:** Use VPC endpoints (especially S3 Gateway endpoint — free). Keep traffic within AZ where possible. Use CloudFront for egress reduction. Monitor Data Transfer line items in Cost Explorer.
131
+
132
+ ---
133
+
134
+ ## Testing Strategy
135
+
136
+ ### Infrastructure Testing
137
+
138
+ - **CDK Assertions** — unit test CDK stacks with `assertions` module. Verify resource properties, resource counts, and template structure. Run in CI on every PR.
139
+ ```typescript
140
+ const template = Template.fromStack(stack);
141
+ template.hasResourceProperties('AWS::Lambda::Function', {
142
+ Runtime: 'nodejs20.x',
143
+ MemorySize: 1024,
144
+ Timeout: 30,
145
+ });
146
+ template.resourceCountIs('AWS::DynamoDB::Table', 1);
147
+ ```
148
+
149
+ - **Terratest** — write Go tests for Terraform modules. Deploy real infrastructure, validate, then destroy. Use for integration testing of modules.
150
+ - **cdk-nag / checkov / tfsec** — static analysis for IaC security and compliance. Integrate into CI pipelines as a gate. Catch misconfigurations before deployment.
151
+ - **CloudFormation Guard** — policy-as-code rules engine. Write rules to validate CloudFormation/CDK output templates against organizational policies.
152
+
153
+ ### Load Testing
154
+
155
+ - **AWS Distributed Load Testing Solution** — CloudFormation-based solution using ECS Fargate to generate load with JMeter scripts. Scales to thousands of concurrent users.
156
+ - **Artillery / k6** — open-source load testing tools that integrate with CI/CD. Deploy agents on Fargate or Lambda for distributed testing.
157
+ - **Production load testing** — use canary deployments to gradually shift real traffic. Monitor latency percentiles (p50, p95, p99), error rates, and saturation.
158
+
159
+ ### Chaos Engineering
160
+
161
+ - **AWS Fault Injection Service (FIS)** — managed chaos experiments. Scenario Library provides pre-built templates (AZ power interruption, EC2 instance termination, network latency injection, EBS I/O pause).
162
+ - **Integrate with CI/CD** — automate chaos experiments in deployment pipelines. Run FIS experiments after each deployment to validate resilience.
163
+ - **Targets** — EC2, ECS, EKS, RDS, Lambda, S3. Simulate AZ failures, network disruptions, CPU/memory stress, and DNS failures.
164
+ - **Guardrails** — set stop conditions (CloudWatch alarms) to automatically halt experiments if impact exceeds thresholds.
165
+
166
+ ### Cost Testing and Estimation
167
+
168
+ - **Infracost** — estimate cost impact of IaC changes in PR reviews. Shows cost diff in CI comments.
169
+ - **AWS Pricing Calculator** — model costs before deployment.
170
+ - **Cost Anomaly Detection** — ML-based alerting for unexpected spend spikes. Configure monitors per service, account, or cost category.
171
+
172
+ ---
173
+
174
+ ## Performance Considerations
175
+
176
+ ### Lambda Cold Starts
177
+
178
+ - **Runtime selection matters** — Python and Node.js: 100-200ms cold starts. Java/C#: 500ms-2s without SnapStart. Use SnapStart for Java to achieve 90-140ms consistently.
179
+ - **ARM64 (Graviton2)** — 45-65% cold start reduction across all runtimes, plus 20% cost savings.
180
+ - **Memory = CPU** — Lambda allocates CPU proportionally to memory. A function at 512MB cold starts ~40% faster than at 128MB. Use Lambda Power Tuning to find the optimal setting.
181
+ - **Package size** — every MB adds milliseconds. Use Lambda Layers for shared dependencies. Tree-shake unused code. Use bundlers (esbuild for Node.js).
182
+ - **Provisioned Concurrency** — eliminates cold starts entirely but incurs continuous cost. Use for latency-sensitive endpoints. Schedule scaling for predictable traffic patterns.
183
+ - **INIT phase billing** — since August 2025, AWS bills for the INIT phase. Functions with heavy startup logic see 10-50% increased costs. Move expensive initialization to lazy patterns.
184
+ - **VPC-attached Lambda** — Hyperplane ENIs reduced VPC overhead to ~100ms (down from 10+ seconds pre-2019). Still, avoid VPC attachment unless you need private resource access.
185
+
186
+ ### DynamoDB Partition Design
187
+
188
+ - **Partition limits** — 3,000 RCU and 1,000 WCU per partition. Design keys to distribute load uniformly.
189
+ - **High cardinality keys** — use `userId`, `orderId`, or `tenantId#timestamp` as partition keys. Avoid `status`, `date`, or any low-cardinality attribute.
190
+ - **Write sharding** — for hot keys, append a random suffix (`item#1` through `item#10`) and scatter-gather on reads.
191
+ - **Single-table design** — store multiple entity types in one table using composite sort keys (`PK: USER#123`, `SK: ORDER#456`). Reduces table count and enables transactional access across entity types.
192
+ - **Adaptive capacity** — DynamoDB automatically splits hot partitions (split-for-heat), but initial design should still aim for uniformity.
193
+
194
+ ### CloudFront Caching Strategies
195
+
196
+ - **Cache policies** — use managed policies (`CachingOptimized` for static assets, `CachingDisabled` for dynamic APIs). Create custom policies to include only necessary headers/cookies/query strings in the cache key.
197
+ - **Origin request policies** — forward data to origins without affecting cache keys (e.g., forward `Authorization` header to origin but exclude from cache key).
198
+ - **Cache invalidation** — expensive and slow at scale. Use versioned file names (`app.v2.js`) or content hashes instead.
199
+ - **TTLs** — set minimum/maximum/default TTLs at the behavior level. Use `Cache-Control` headers from the origin for fine-grained control.
200
+ - **Origin Shield** — additional caching layer that reduces origin load. Enable for high-traffic distributions with origins in a single region.
201
+
202
+ ### Auto-Scaling Policies
203
+
204
+ - **Target tracking** — preferred for most workloads. Set target CPU utilization (60-70%), request count per target, or custom metrics.
205
+ - **Step scaling** — for workloads with known scaling thresholds. More granular control over scaling actions.
206
+ - **Predictive scaling** — ML-based forecasting for recurring traffic patterns. Proactively scales capacity before demand arrives.
207
+ - **Cooldown periods** — prevent oscillation. Set scale-in cooldown longer than scale-out (e.g., 300s in vs. 60s out) to avoid aggressive scale-in.
208
+
209
+ ### Cost Optimization
210
+
211
+ - **Savings Plans** — Compute Savings Plans (1yr: up to 66% savings, 3yr: up to 72%) apply across EC2, Fargate, Lambda. No instance family lock-in. Use Cost Explorer recommendations to right-size commitment.
212
+ - **Spot Instances** — up to 90% savings. Use for batch processing, CI/CD, data analysis, dev/test. Not for stateful or latency-sensitive workloads. Use Spot Fleet or EC2 Auto Scaling with mixed instances policy.
213
+ - **Right-sizing** — use AWS Compute Optimizer for recommendations based on CloudWatch metrics. Review every quarter. Graviton instances provide ~40% better price-performance.
214
+ - **Storage tiering** — S3 Intelligent-Tiering for unpredictable access patterns. gp3 EBS over gp2 (20% cheaper, better baseline IOPS). Delete unattached EBS volumes and unused snapshots.
215
+ - **Reserved capacity** — still available for RDS, ElastiCache, Redshift, OpenSearch. 1-year or 3-year commitments with significant discounts.
216
+
217
+ ---
218
+
219
+ ## Security Considerations
220
+
221
+ ### AWS Well-Architected Security Pillar
222
+
223
+ The security pillar focuses on seven design principles:
224
+ 1. **Strong identity foundation** — centralize identity management, least privilege, eliminate long-term credentials.
225
+ 2. **Traceability** — monitor, alert, and audit all actions and changes.
226
+ 3. **Security at all layers** — defense in depth at edge, VPC, subnet, instance, OS, and application layers.
227
+ 4. **Automate security** — treat security controls as code. Automate response to security events.
228
+ 5. **Protect data in transit and at rest** — encryption, tokenization, access control.
229
+ 6. **Keep people away from data** — eliminate direct access or manual processing of data.
230
+ 7. **Prepare for security events** — incident management, forensics readiness, game days.
231
+
232
+ ### Threat Detection and Posture Management
233
+
234
+ - **GuardDuty** — enable in all regions, all accounts (organization-wide). Covers EC2, EKS, ECS, Lambda, S3, RDS login activity. Extended Threat Detection (2025) correlates multi-stage attack sequences across services.
235
+ - **Security Hub** — aggregates findings from GuardDuty, Inspector, Macie, Config, Access Analyzer, and third-party tools. Enable CIS AWS Foundations and AWS Foundational Security Best Practices standards. Use automated remediation via EventBridge + Lambda/SSM.
236
+ - **Inspector** — continuous vulnerability scanning for EC2, ECR images, and Lambda functions. Integrates with Security Hub for centralized findings.
237
+ - **Macie** — ML-based sensitive data discovery in S3. Use for PII/PHI detection and compliance.
238
+ - **Access Analyzer** — identifies resources shared externally and unused access. Use for external access auditing and least-privilege refinement.
239
+
240
+ ### KMS and Encryption Patterns
241
+
242
+ - **Envelope encryption** — AWS services (S3, EBS, RDS) use data keys encrypted by KMS master keys. The plaintext data key encrypts data, then is discarded from memory. Only the encrypted data key is stored alongside the ciphertext.
243
+ - **Customer-managed keys (CMKs)** — use for production workloads. Enable automatic key rotation (every year). Separate keys per service/environment.
244
+ - **Key policies** — never use `kms:*`. Grant `kms:Encrypt`, `kms:Decrypt`, `kms:GenerateDataKey` to specific roles. Separate key administrators from key users.
245
+ - **Encrypt everything** — S3 (SSE-KMS with bucket policy enforcement), EBS (default encryption at account level), RDS (encryption at creation, cannot be added later), DynamoDB (AWS-owned keys or CMKs).
246
+
247
+ ### VPC Endpoint Policies
248
+
249
+ - Apply least-privilege policies to VPC endpoints restricting which principals can access which resources through the endpoint.
250
+ - S3 Gateway endpoint policy: restrict to specific buckets and actions.
251
+ - Use `aws:PrincipalOrgID` condition to restrict access to organization members only.
252
+
253
+ ### Audit Logging
254
+
255
+ - **CloudTrail** — organization-wide trail logging all management events. Enable data events for S3 and Lambda selectively (high volume). Send to centralized log archive account. Enable CloudTrail Lake for SQL-based queries.
256
+ - **VPC Flow Logs** — enable for all VPCs. Send to CloudWatch Logs or S3. Use for network forensics and anomaly detection.
257
+ - **Config** — continuous compliance monitoring. Config rules evaluate resource configurations against policies. Aggregator for multi-account/multi-region view.
258
+
259
+ ---
260
+
261
+ ## Integration Patterns
262
+
263
+ ### Event-Driven Architectures
264
+
265
+ - **EventBridge as backbone** — central event bus for domain events. Use schema registry for event contract governance. Content-based filtering in rules reduces downstream processing by up to 30%.
266
+ - **SQS for buffering** — decouple producers from consumers. Use DLQs for failed message inspection. Combine SNS fan-out with SQS for reliable multi-consumer delivery.
267
+ - **Lambda as glue** — event handlers for transforms, enrichment, and routing. Use event source mappings for SQS, Kinesis, DynamoDB Streams.
268
+ - **Choreography vs. orchestration** — use EventBridge for choreography (services react independently). Use Step Functions for orchestration (centralized workflow control with retries, error handling, parallel execution).
269
+
270
+ ### API Gateway Patterns
271
+
272
+ - **REST API** — full-featured: usage plans, API keys, request validation, WAF integration, caching. Use for public APIs requiring throttling and monetization.
273
+ - **HTTP API** — lower latency, lower cost (up to 71% cheaper), simpler. Use for internal APIs, Lambda proxies, JWT authorization. Preferred for most new APIs.
274
+ - **WebSocket API** — persistent connections for real-time apps (chat, dashboards, notifications). Use with DynamoDB for connection management.
275
+ - **Direct service integrations** — API Gateway can invoke DynamoDB, SQS, Step Functions, and S3 directly without Lambda. Reduces cost, latency, and failure points.
276
+
277
+ ### Cross-Account Access
278
+
279
+ - **Resource-based policies** — S3 bucket policies, KMS key policies, Lambda resource policies. Grant access to specific principals in other accounts.
280
+ - **IAM role assumption** — `sts:AssumeRole` with external ID for third-party access. Cross-account roles for internal account access via trust policies scoped to `aws:PrincipalOrgID`.
281
+ - **AWS RAM** — share resources (Transit Gateway, Subnets, License Manager configs, Route 53 Resolver rules) across accounts in the organization.
282
+ - **EventBridge cross-account** — send events between accounts via event bus policies. Use organization-wide event buses for shared domain events.
283
+
284
+ ### Hybrid Cloud Connectivity
285
+
286
+ - **Direct Connect** — dedicated network connection from on-premises to AWS. Use for high-throughput, low-latency, consistent-bandwidth requirements. Deploy redundant connections across different locations for HA.
287
+ - **Site-to-Site VPN** — encrypted tunnel over public internet. Use as a backup for Direct Connect or for lower-bandwidth requirements. Use BGP for dynamic routing.
288
+ - **Transit Gateway** — central hub for both VPC and on-premises connectivity. Attach Direct Connect Gateway and VPN connections to TGW.
289
+
290
+ ### Data Lake Patterns
291
+
292
+ - **S3 as data lake storage** — organize with prefixes: `raw/`, `curated/`, `aggregated/`. Use partitioning by date/category for query performance.
293
+ - **Glue** — crawlers for schema discovery, ETL jobs for transformation, Data Catalog as a centralized metadata store. Use Glue 4.0+ for Spark-based transforms.
294
+ - **Athena** — serverless SQL queries on S3 data. Use columnar formats (Parquet, ORC) for 30-90% cost reduction and 2-10x performance improvement. Partition data to reduce scan volume.
295
+ - **Lake Formation** — centralized access control for data lake. Fine-grained column and row-level security.
296
+
297
+ ---
298
+
299
+ ## DevOps & Deployment
300
+
301
+ ### CI/CD Pipelines
302
+
303
+ - **GitHub Actions with OIDC** — preferred for teams using GitHub. Authenticate to AWS via OIDC federation (no long-lived credentials). Scope IAM trust policies to specific repos and branches. Use `aws-actions/configure-aws-credentials@v4` action.
304
+ ```yaml
305
+ permissions:
306
+ id-token: write
307
+ contents: read
308
+ steps:
309
+ - uses: aws-actions/configure-aws-credentials@v4
310
+ with:
311
+ role-to-arn: arn:aws:iam::123456789012:role/GitHubActionsRole
312
+ aws-region: us-east-1
313
+ ```
314
+
315
+ - **CodePipeline** — native AWS CI/CD. Use for teams fully in the AWS ecosystem. Integrates with CodeCommit, CodeBuild, CodeDeploy. Use cross-account pipelines for deployment across environments.
316
+ - **General CI/CD rules** — infrastructure and application deployments should share the same pipeline. Run IaC validation (cdk-nag, checkov) as a gate before deployment. Require approval for production deployments.
317
+
318
+ ### Deployment Strategies
319
+
320
+ - **ECS blue/green (native)** — since July 2025, ECS supports native blue/green without CodeDeploy. Lifecycle hooks for validation, bake time, and automatic rollback. Dark canary testing via test listeners for pre-production validation with zero user impact.
321
+ - **ECS blue/green (CodeDeploy)** — use when you need canary (e.g., 10% traffic, then 100%) or linear (10% every 5 minutes) traffic shifting. More complex but more gradual.
322
+ - **EKS deployments** — use Kubernetes native rolling updates. For blue/green, use Argo Rollouts or Flagger with weighted routing. Use ArgoCD for GitOps-style deployments.
323
+ - **Lambda versioning** — publish versions for immutable snapshots. Use aliases (`prod`, `staging`) for routing. Weighted aliases for canary deployments (e.g., 95% to v5, 5% to v6).
324
+
325
+ ### Monitoring and Observability
326
+
327
+ - **CloudWatch Metrics** — custom metrics for business KPIs. Use metric math for derived metrics. Set alarms on p99 latency, error rates, and saturation.
328
+ - **CloudWatch Logs Insights** — query log groups with a purpose-built query language. Use for ad-hoc investigation. Create dashboard widgets from queries.
329
+ - **X-Ray** — distributed tracing for request flows across Lambda, API Gateway, ECS, and downstream services. Use X-Ray SDK or OpenTelemetry ADOT collector.
330
+ - **CloudWatch Synthetics** — canary scripts that probe endpoints on a schedule. Alert on availability and latency degradation before users notice.
331
+ - **Contributor Insights** — identify top-N contributors to resource consumption (e.g., top DynamoDB partition keys, top API callers).
332
+ - **Application Signals** — standardized application performance monitoring (APM) for ECS and EKS workloads. Pre-built SLO dashboards.
333
+
334
+ ---
335
+
336
+ ## Decision Trees
337
+
338
+ ### Which Compute Service?
339
+
340
+ ```
341
+ Start
342
+ |
343
+ ├─ Event-driven, short-lived (<15min), stateless?
344
+ │ ├─ Yes → AWS Lambda
345
+ │ │ ├─ Need sub-100ms cold starts? → Provisioned Concurrency or SnapStart
346
+ │ │ └─ >10GB memory or >15min? → Not Lambda, continue below
347
+ │ └─ No ↓
348
+ |
349
+ ├─ Containerized workload?
350
+ │ ├─ Yes → Need Kubernetes specifically?
351
+ │ │ ├─ Yes (multi-cloud, existing K8s, service mesh) → EKS
352
+ │ │ │ └─ Want to manage nodes? → EC2 nodes : Fargate
353
+ │ │ └─ No → ECS
354
+ │ │ └─ Want to manage instances? → EC2 launch type : Fargate
355
+ │ └─ No ↓
356
+ |
357
+ ├─ Need GPU, custom kernel, or full OS control?
358
+ │ └─ Yes → EC2 (with Auto Scaling Group)
359
+ │ ├─ Fault-tolerant? → Spot Instances
360
+ │ └─ Steady-state? → Savings Plan + On-Demand
361
+ |
362
+ └─ Simple web app/API, minimal ops burden?
363
+ └─ App Runner
364
+ ```
365
+
366
+ ### Which Database Service?
367
+
368
+ ```
369
+ Start
370
+ |
371
+ ├─ Relational data model? (joins, transactions, complex queries)
372
+ │ ├─ Yes → High throughput or availability needs?
373
+ │ │ ├─ Yes → Aurora (Serverless v2 for variable traffic)
374
+ │ │ │ ├─ Global: Aurora Global Database (<1s cross-region)
375
+ │ │ │ └─ Distributed ACID: Aurora DSQL
376
+ │ │ └─ Standard workload → RDS (PostgreSQL or MySQL)
377
+ │ │ └─ Multi-AZ for production
378
+ │ └─ No ↓
379
+ |
380
+ ├─ Key-value or document access patterns? Single-digit ms latency?
381
+ │ ├─ Yes → DynamoDB
382
+ │ │ ├─ Microsecond reads? → DAX
383
+ │ │ ├─ Unpredictable traffic? → On-demand capacity
384
+ │ │ └─ Steady traffic? → Provisioned with auto-scaling
385
+ │ └─ No ↓
386
+ |
387
+ ├─ Full-text search, log analytics?
388
+ │ └─ OpenSearch Service
389
+ |
390
+ ├─ In-memory caching, session store, leaderboards?
391
+ │ └─ ElastiCache (Redis for features, Memcached for simple caching)
392
+ |
393
+ └─ Time-series data (IoT, metrics)?
394
+ └─ Timestream
395
+ ```
396
+
397
+ ### Serverless vs. Containers?
398
+
399
+ ```
400
+ Start
401
+ |
402
+ ├─ Workload characteristics:
403
+ │ ├─ Sporadic, event-driven, <15min tasks → Serverless (Lambda)
404
+ │ ├─ Long-running, steady traffic, >10GB memory → Containers (ECS/EKS)
405
+ │ └─ Mixed → Hybrid: Lambda for events, ECS for services
406
+ |
407
+ ├─ Team expertise:
408
+ │ ├─ No container experience → Lambda (lower learning curve)
409
+ │ ├─ Docker/K8s expertise → ECS or EKS
410
+ │ └─ Want zero infrastructure → Lambda or App Runner
411
+ |
412
+ ├─ Cost crossover:
413
+ │ ├─ <100K requests/day → Lambda usually cheaper
414
+ │ ├─ >100K requests/day, steady → ECS Fargate with Savings Plans
415
+ │ └─ >1M requests/day, predictable → ECS on EC2 with Spot/Savings Plans
416
+ |
417
+ └─ Latency requirements:
418
+ ├─ Tolerant of cold starts (<1s) → Lambda
419
+ ├─ Need consistent <50ms → Containers or Lambda Provisioned Concurrency
420
+ └─ Need persistent connections (WebSockets, gRPC) → Containers
421
+ ```
422
+
423
+ ---
424
+
425
+ ## Code Examples
426
+
427
+ ### 1. CDK: VPC with Public/Private Subnets and NAT Gateway
428
+
429
+ ```typescript
430
+ import * as cdk from 'aws-cdk-lib';
431
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
432
+
433
+ const vpc = new ec2.Vpc(this, 'AppVpc', {
434
+ maxAzs: 3,
435
+ ipAddresses: ec2.IpAddresses.cidr('10.0.0.0/16'),
436
+ natGateways: 1, // cost-optimize: 1 NAT GW for non-prod, 3 for prod
437
+ subnetConfiguration: [
438
+ { name: 'Public', subnetType: ec2.SubnetType.PUBLIC, cidrMask: 24 },
439
+ { name: 'App', subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS, cidrMask: 22 },
440
+ { name: 'Data', subnetType: ec2.SubnetType.PRIVATE_ISOLATED, cidrMask: 24 },
441
+ ],
442
+ });
443
+
444
+ // S3 Gateway Endpoint (free — avoids NAT Gateway data charges)
445
+ vpc.addGatewayEndpoint('S3Endpoint', {
446
+ service: ec2.GatewayVpcEndpointAwsService.S3,
447
+ });
448
+
449
+ // DynamoDB Gateway Endpoint (free)
450
+ vpc.addGatewayEndpoint('DynamoEndpoint', {
451
+ service: ec2.GatewayVpcEndpointAwsService.DYNAMODB,
452
+ });
453
+ ```
454
+
455
+ ### 2. CDK: Lambda with Best-Practice Configuration
456
+
457
+ ```typescript
458
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
459
+ import * as logs from 'aws-cdk-lib/aws-logs';
460
+
461
+ const fn = new lambda.Function(this, 'ProcessOrder', {
462
+ runtime: lambda.Runtime.NODEJS_20_X,
463
+ architecture: lambda.Architecture.ARM_64, // Graviton: 20% cheaper, faster cold starts
464
+ handler: 'index.handler',
465
+ code: lambda.Code.fromAsset('lambda/process-order'),
466
+ memorySize: 1024, // Right-size with Power Tuning
467
+ timeout: cdk.Duration.seconds(30),
468
+ tracing: lambda.Tracing.ACTIVE, // X-Ray tracing
469
+ insightsVersion: lambda.LambdaInsightsVersion.VERSION_1_0_229_0,
470
+ logRetention: logs.RetentionDays.TWO_WEEKS,
471
+ environment: {
472
+ TABLE_NAME: table.tableName,
473
+ POWERTOOLS_SERVICE_NAME: 'order-service',
474
+ },
475
+ reservedConcurrentExecutions: 100, // Prevent runaway scaling
476
+ });
477
+
478
+ // Grant least-privilege access
479
+ table.grantReadWriteData(fn);
480
+ ```
481
+
482
+ ### 3. Terraform: S3 Bucket with Security Best Practices
483
+
484
+ ```hcl
485
+ resource "aws_s3_bucket" "data" {
486
+ bucket = "myapp-data-${var.environment}-${data.aws_caller_identity.current.account_id}"
487
+ }
488
+
489
+ resource "aws_s3_bucket_versioning" "data" {
490
+ bucket = aws_s3_bucket.data.id
491
+ versioning_configuration { status = "Enabled" }
492
+ }
493
+
494
+ resource "aws_s3_bucket_server_side_encryption_configuration" "data" {
495
+ bucket = aws_s3_bucket.data.id
496
+ rule {
497
+ apply_server_side_encryption_by_default {
498
+ sse_algorithm = "aws:kms"
499
+ kms_master_key_id = aws_kms_key.data_key.arn
500
+ }
501
+ bucket_key_enabled = true # Reduces KMS API calls and costs
502
+ }
503
+ }
504
+
505
+ resource "aws_s3_bucket_public_access_block" "data" {
506
+ bucket = aws_s3_bucket.data.id
507
+ block_public_acls = true
508
+ block_public_policy = true
509
+ ignore_public_acls = true
510
+ restrict_public_buckets = true
511
+ }
512
+
513
+ resource "aws_s3_bucket_lifecycle_configuration" "data" {
514
+ bucket = aws_s3_bucket.data.id
515
+ rule {
516
+ id = "archive"
517
+ status = "Enabled"
518
+ transition {
519
+ days = 90
520
+ storage_class = "INTELLIGENT_TIERING"
521
+ }
522
+ transition {
523
+ days = 365
524
+ storage_class = "GLACIER_IR"
525
+ }
526
+ noncurrent_version_expiration { noncurrent_days = 90 }
527
+ }
528
+ }
529
+ ```
530
+
531
+ ### 4. CDK: DynamoDB Single-Table Design with Auto-Scaling
532
+
533
+ ```typescript
534
+ import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
535
+
536
+ const table = new dynamodb.Table(this, 'AppTable', {
537
+ partitionKey: { name: 'PK', type: dynamodb.AttributeType.STRING },
538
+ sortKey: { name: 'SK', type: dynamodb.AttributeType.STRING },
539
+ billingMode: dynamodb.BillingMode.PROVISIONED,
540
+ readCapacity: 10,
541
+ writeCapacity: 10,
542
+ pointInTimeRecovery: true,
543
+ removalPolicy: cdk.RemovalPolicy.RETAIN,
544
+ encryption: dynamodb.TableEncryption.CUSTOMER_MANAGED,
545
+ encryptionKey: kmsKey,
546
+ });
547
+
548
+ // Auto-scaling: target 70% utilization
549
+ const readScaling = table.autoScaleReadCapacity({ minCapacity: 5, maxCapacity: 500 });
550
+ readScaling.scaleOnUtilization({ targetUtilizationPercent: 70 });
551
+
552
+ const writeScaling = table.autoScaleWriteCapacity({ minCapacity: 5, maxCapacity: 500 });
553
+ writeScaling.scaleOnUtilization({ targetUtilizationPercent: 70 });
554
+
555
+ // GSI for access pattern: query by type + date
556
+ table.addGlobalSecondaryIndex({
557
+ indexName: 'GSI1',
558
+ partitionKey: { name: 'GSI1PK', type: dynamodb.AttributeType.STRING },
559
+ sortKey: { name: 'GSI1SK', type: dynamodb.AttributeType.STRING },
560
+ projectionType: dynamodb.ProjectionType.ALL,
561
+ });
562
+ ```
563
+
564
+ ### 5. GitHub Actions: OIDC-Based AWS Deployment
565
+
566
+ ```yaml
567
+ name: Deploy to AWS
568
+ on:
569
+ push:
570
+ branches: [main]
571
+
572
+ permissions:
573
+ id-token: write
574
+ contents: read
575
+
576
+ jobs:
577
+ deploy:
578
+ runs-on: ubuntu-latest
579
+ steps:
580
+ - uses: actions/checkout@v4
581
+
582
+ - uses: aws-actions/configure-aws-credentials@v4
583
+ with:
584
+ role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GitHubDeploy
585
+ aws-region: us-east-1
586
+ # No access keys — OIDC provides temporary credentials
587
+
588
+ - name: CDK Deploy
589
+ run: |
590
+ npm ci
591
+ npx cdk diff
592
+ npx cdk deploy --require-approval never --all
593
+ ```
594
+
595
+ ---
596
+
597
+ *Researched: 2026-03-07 | Sources: [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html), [AWS Multi-Account Strategy](https://docs.aws.amazon.com/controltower/latest/userguide/aws-multi-account-landing-zone.html), [AWS CDK Best Practices](https://docs.aws.amazon.com/cdk/v2/guide/best-practices.html), [Lambda Cold Start Optimization](https://aws.amazon.com/blogs/compute/understanding-and-remediating-cold-starts-an-aws-lambda-perspective/), [DynamoDB Partition Design](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-partition-key-design.html), [GuardDuty Best Practices](https://aws.github.io/aws-security-services-best-practices/guides/guardduty/), [Security Hub Best Practices](https://aws.github.io/aws-security-services-best-practices/guides/security-hub/), [Transit Gateway Design](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-best-design-practices.html), [ECS Blue/Green Native](https://aws.amazon.com/blogs/devops/choosing-between-amazon-ecs-blue-green-native-or-aws-codedeploy-in-aws-cdk/), [GitHub Actions OIDC](https://aws.amazon.com/blogs/security/use-iam-roles-to-connect-github-actions-to-actions-in-aws/), [AWS KMS Best Practices](https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-kms-best-practices/data-protection-encryption.html), [AWS Fault Injection Service](https://aws.amazon.com/blogs/architecture/chaos-testing-with-aws-fault-injection-simulator-and-aws-codepipeline/), [IAM Least Privilege](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html), [AWS Cost Optimization](https://aws.amazon.com/blogs/aws-cloud-financial-management/), [EventBridge Patterns](https://aws.amazon.com/event-driven-architecture/), [CloudFront Cache Policies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html)*