@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,433 @@
1
+ # CORS and Security Headers
2
+
3
+ > Expertise module for AI agents configuring secure HTTP headers and CORS policies.
4
+
5
+ ---
6
+
7
+ ## 1. Threat Landscape
8
+
9
+ CORS misconfigurations are among the most prevalent web vulnerabilities. In 2025, research indicated nearly 90% of successful API attacks exploited poorly configured CORS as their initial vector. The root cause: developers implement CORS as a quick fix to cross-origin errors without understanding security implications.
10
+
11
+ **Real-world exploits:**
12
+ - **Bitcoin Wallet Theft (PortSwigger Research):** CORS misconfigurations on cryptocurrency exchanges allowed stealing encrypted wallet backups via cross-origin requests, enabling offline brute-force of wallet passwords.
13
+ - **Financial Services API Compromise (2025):** Reflected origins with credentials enabled led to compromise of 35 financial APIs, affecting 2M+ users.
14
+ - **Admin Account Creation (Bug Bounty):** A login endpoint reflected Origin, accepted null, and returned wildcard -- attackers crafted sandboxed iframes causing victims to unknowingly create admin accounts.
15
+
16
+ | Missing Header | Attack Enabled | Impact |
17
+ |-------------------------|----------------------------------|-----------------------|
18
+ | CSP | Cross-site scripting (XSS) | Full account takeover |
19
+ | X-Frame-Options | Clickjacking | UI redress, phishing |
20
+ | HSTS | Protocol downgrade, cookie theft | Session hijacking |
21
+ | X-Content-Type-Options | MIME sniffing | Code execution |
22
+ | Referrer-Policy | URL data leakage | Token/PII exposure |
23
+ | Permissions-Policy | Unauthorized API access | Privacy violation |
24
+ | CORS (misconfigured) | Cross-origin data theft | Full data exfiltration|
25
+
26
+ CORS misconfiguration maps to OWASP Top 10 2021 **A05: Security Misconfiguration**. Missing CSP enabling XSS maps to **A03: Injection**.
27
+
28
+ ---
29
+
30
+ ## 2. Core Security Principles
31
+
32
+ ### Same-Origin Policy (SOP)
33
+ Two URLs share an origin only when **scheme**, **host**, and **port** all match. SOP prevents scripts on one origin from reading responses from another. CORS is the controlled relaxation of SOP -- every CORS header is a hole in SOP that must be justified.
34
+
35
+ ### CORS Headers
36
+
37
+ | Header | Purpose |
38
+ |-------------------------------------|-------------------------------------------|
39
+ | Access-Control-Allow-Origin | Which origins may read the response |
40
+ | Access-Control-Allow-Credentials | Whether cookies/auth headers are sent |
41
+ | Access-Control-Allow-Methods | Permitted HTTP methods |
42
+ | Access-Control-Allow-Headers | Permitted request headers |
43
+ | Access-Control-Expose-Headers | Response headers readable by client |
44
+ | Access-Control-Max-Age | Preflight cache duration (seconds) |
45
+
46
+ **Critical rule:** When `Access-Control-Allow-Credentials: true`, `Access-Control-Allow-Origin` MUST NOT be `*`. Servers that reflect arbitrary origins with credentials create an equivalent vulnerability.
47
+
48
+ ### Defense Headers
49
+
50
+ - **CSP:** Defines allowlist of content sources; second layer of XSS defense even when injection exists. Without it, any XSS is trivially exploitable.
51
+ - **HSTS:** Forces HTTPS-only connections. Without it, MITM can intercept the first HTTP request and steal session cookies. Recommended: `max-age=63072000; includeSubDomains; preload`.
52
+ - **X-Frame-Options:** Prevents clickjacking. Use `DENY` or `SAMEORIGIN`. Prefer CSP `frame-ancestors` for modern browsers.
53
+ - **X-Content-Type-Options:** `nosniff` prevents MIME-sniffing, blocking execution of disguised uploaded files.
54
+ - **Referrer-Policy:** `strict-origin-when-cross-origin` prevents leaking full URLs (with tokens/IDs) to third parties.
55
+ - **Permissions-Policy:** Disables unused browser APIs (camera, microphone, geolocation). Limits XSS payload capabilities.
56
+
57
+ ---
58
+
59
+ ## 3. Implementation Patterns
60
+
61
+ ### 3.1 CORS Whitelist Middleware (TypeScript)
62
+
63
+ ```typescript
64
+ import cors from 'cors';
65
+
66
+ const ALLOWED_ORIGINS = new Set([
67
+ 'https://app.example.com',
68
+ 'https://admin.example.com',
69
+ ]);
70
+
71
+ app.use(cors({
72
+ origin: (origin, callback) => {
73
+ if (!origin || ALLOWED_ORIGINS.has(origin)) callback(null, true);
74
+ else callback(new Error(`Origin ${origin} not allowed`));
75
+ },
76
+ credentials: true,
77
+ methods: ['GET', 'POST', 'PUT', 'DELETE'],
78
+ allowedHeaders: ['Content-Type', 'Authorization', 'X-Request-ID'],
79
+ maxAge: 86400,
80
+ }));
81
+ ```
82
+
83
+ **Anti-patterns:** `origin: true` (reflects any), regex without anchoring (`/example\.com/` matches `evil-example.com`), allowing null origin.
84
+
85
+ ### 3.2 CSP with Nonces
86
+
87
+ ```typescript
88
+ import crypto from 'crypto';
89
+
90
+ function cspMiddleware(req, res, next) {
91
+ const nonce = crypto.randomBytes(16).toString('base64');
92
+ res.locals.cspNonce = nonce;
93
+ res.setHeader('Content-Security-Policy', [
94
+ `default-src 'none'`, `script-src 'nonce-${nonce}' 'strict-dynamic'`,
95
+ `style-src 'nonce-${nonce}'`, `img-src 'self' https:`, `connect-src 'self'`,
96
+ `frame-ancestors 'none'`, `base-uri 'none'`, `form-action 'self'`,
97
+ ].join('; '));
98
+ res.setHeader('Cache-Control', 'no-store'); // CRITICAL: prevent nonce caching
99
+ next();
100
+ }
101
+ ```
102
+
103
+ Nonce rules: generate per-request (128+ bits entropy), never accept from user input, disable HTML caching, use `strict-dynamic` for dependency loading.
104
+
105
+ ### 3.3 Helmet.js for Express
106
+
107
+ ```typescript
108
+ import helmet from 'helmet';
109
+ import crypto from 'crypto';
110
+
111
+ app.use((req, res, next) => {
112
+ res.locals.nonce = crypto.randomBytes(16).toString('base64');
113
+ next();
114
+ });
115
+
116
+ app.use(helmet({
117
+ contentSecurityPolicy: {
118
+ directives: {
119
+ defaultSrc: ["'none'"],
120
+ scriptSrc: [(req, res) => `'nonce-${res.locals.nonce}'`, "'strict-dynamic'"],
121
+ styleSrc: [(req, res) => `'nonce-${res.locals.nonce}'`],
122
+ imgSrc: ["'self'", 'https:'], connectSrc: ["'self'"],
123
+ frameAncestors: ["'none'"], baseUri: ["'none'"], formAction: ["'self'"],
124
+ },
125
+ },
126
+ strictTransportSecurity: { maxAge: 63072000, includeSubDomains: true, preload: true },
127
+ referrerPolicy: { policy: 'strict-origin-when-cross-origin' },
128
+ }));
129
+
130
+ // Permissions-Policy (not included in Helmet)
131
+ app.use((req, res, next) => {
132
+ res.setHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=(), payment=()');
133
+ next();
134
+ });
135
+ ```
136
+
137
+ ### 3.4 Nginx Security Headers
138
+
139
+ ```nginx
140
+ add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
141
+ add_header X-Frame-Options "DENY" always;
142
+ add_header X-Content-Type-Options "nosniff" always;
143
+ add_header Referrer-Policy "strict-origin-when-cross-origin" always;
144
+ add_header Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()" always;
145
+ add_header Content-Security-Policy "default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self' https:; connect-src 'self'; frame-ancestors 'none'; base-uri 'none';" always;
146
+ add_header Cross-Origin-Opener-Policy "same-origin" always;
147
+ add_header Cross-Origin-Resource-Policy "same-origin" always;
148
+ server_tokens off;
149
+ ```
150
+
151
+ **Pitfall:** Nginx `add_header` in an inner block (e.g., `location`) drops ALL parent-block headers. Use the `always` parameter and consider `headers-more-nginx-module`.
152
+
153
+ ### 3.5 Subresource Integrity (SRI)
154
+
155
+ ```html
156
+ <script src="https://cdn.example.com/lib.js"
157
+ integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/ux"
158
+ crossorigin="anonymous"></script>
159
+ ```
160
+
161
+ Use sha384/sha512, always include `crossorigin="anonymous"`, regenerate hashes on version updates. Generate: `curl -s URL | openssl dgst -sha384 -binary | openssl base64 -A`.
162
+
163
+ ---
164
+
165
+ ## 4. Vulnerability Catalog
166
+
167
+ ### VULN-01: Wildcard Origin with Credentials
168
+ **CWE-942.** `Access-Control-Allow-Origin: *` + `Access-Control-Allow-Credentials: true`. Browsers block this, but developers "fix" it by reflecting origin (VULN-02).
169
+
170
+ ### VULN-02: Reflected Origin Without Validation
171
+ **CWE-346.** Server copies request `Origin` into response ACAO header. Any origin is trusted; attacker page reads authenticated responses.
172
+ ```javascript
173
+ // VULNERABLE
174
+ res.setHeader('Access-Control-Allow-Origin', req.headers.origin);
175
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
176
+ ```
177
+
178
+ ### VULN-03: Null Origin Bypass
179
+ **CWE-346.** Server allows `Access-Control-Allow-Origin: null`. Exploited via sandboxed iframes: `<iframe sandbox="allow-scripts" srcdoc="<script>fetch(url,{credentials:'include'})</script>">`.
180
+
181
+ ### VULN-04: Regex Origin Bypass
182
+ **CWE-942.** `origin.includes('example.com')` matches `evil-example.com`. Fix: exact match or anchored regex `^https:\/\/[\w-]+\.example\.com$`.
183
+
184
+ ### VULN-05: Preflight Cache Poisoning
185
+ **CWE-942.** Long `Access-Control-Max-Age` with dynamic origin. Cached preflight may allow stale origin bypass.
186
+
187
+ ### VULN-06: Missing CSP
188
+ **CWE-693.** No defense-in-depth against XSS. Any injection vulnerability is trivially exploitable.
189
+
190
+ ### VULN-07: CSP with unsafe-inline
191
+ **CWE-693.** `script-src 'unsafe-inline'` defeats CSP entirely. Use nonces instead.
192
+
193
+ ### VULN-08: Missing HSTS
194
+ **CWE-319.** Protocol downgrade via MITM on first visit. Session cookies intercepted over HTTP.
195
+
196
+ ### VULN-09: Clickjacking (Missing Frame Protection)
197
+ **CWE-1021.** Attacker frames target page with transparent iframe overlay. Fix: `X-Frame-Options: DENY` AND `frame-ancestors 'none'`.
198
+
199
+ ### VULN-10: MIME Sniffing
200
+ **CWE-430.** Missing `X-Content-Type-Options: nosniff`. Uploaded files executed as HTML/JS.
201
+
202
+ ### VULN-11: Referrer Leakage
203
+ **CWE-200.** Missing Referrer-Policy. Full URLs with tokens sent to third parties.
204
+
205
+ ### VULN-12: Overly Permissive Permissions-Policy
206
+ **CWE-276.** XSS can activate camera, microphone, geolocation.
207
+
208
+ ### VULN-13: Missing Cross-Origin Isolation
209
+ **CWE-693.** Missing COOP/COEP/CORP headers. Spectre-type side-channel attacks possible.
210
+
211
+ ### VULN-14: CSP Report-Only Without Enforcement
212
+ **CWE-693.** Only `Content-Security-Policy-Report-Only` set. Monitoring without blocking = zero protection.
213
+
214
+ ### VULN-15: No SRI for CDN Resources
215
+ **CWE-353.** Compromised CDN serves malicious scripts. Magecart-style card skimmer injection.
216
+
217
+ ---
218
+
219
+ ## 5. Security Checklist
220
+
221
+ ### CORS
222
+ - [ ] No wildcard `*` in ACAO when credentials are used
223
+ - [ ] Origin validated against explicit allowlist (not substring/regex)
224
+ - [ ] Null origin NOT in allowlist
225
+ - [ ] Allow-Methods restricted to required methods only
226
+ - [ ] Allow-Headers restricted to required headers only
227
+ - [ ] Max-Age set reasonably (< 86400)
228
+ - [ ] Preflight responses contain no sensitive data
229
+ - [ ] `Vary: Origin` set when ACAO changes per request
230
+
231
+ ### Headers
232
+ - [ ] CSP enforced (not just report-only) with nonces, no `unsafe-inline`
233
+ - [ ] CSP `default-src 'none'` with explicit per-directive allowlists
234
+ - [ ] CSP `frame-ancestors 'none'` or specific origins
235
+ - [ ] HSTS with `max-age >= 31536000` and `includeSubDomains`
236
+ - [ ] `X-Frame-Options: DENY` set
237
+ - [ ] `X-Content-Type-Options: nosniff` set
238
+ - [ ] `Referrer-Policy: strict-origin-when-cross-origin` or stricter
239
+ - [ ] Permissions-Policy disables unused browser APIs
240
+ - [ ] `X-Powered-By` and server version headers removed
241
+ - [ ] COOP/CORP headers set to `same-origin`
242
+
243
+ ### Deployment
244
+ - [ ] CSP violations reported to monitoring endpoint
245
+ - [ ] Headers applied on ALL response paths (including errors, redirects)
246
+ - [ ] CDN resources include SRI hashes
247
+ - [ ] HTML with nonces sets `Cache-Control: no-store`
248
+ - [ ] Headers verified after every deployment (CI/CD scan)
249
+ - [ ] CSP deployed in report-only first, then enforced
250
+
251
+ ---
252
+
253
+ ## 6. Tools and Automation
254
+
255
+ | Tool | URL / Package | Purpose |
256
+ |-----------------------|----------------------------------------|--------------------------------------|
257
+ | SecurityHeaders.com | https://securityheaders.com | A-F grade for HTTP security headers |
258
+ | Mozilla Observatory | https://developer.mozilla.org/en-US/observatory | 20+ header checks with guidance |
259
+ | CSP Evaluator | https://csp-evaluator.withgoogle.com | CSP bypass risk analysis |
260
+ | HSTS Preload | https://hstspreload.org | Preload eligibility check |
261
+ | Qualys SSL Labs | https://www.ssllabs.com/ssltest/ | TLS + HSTS verification |
262
+ | helmet (npm) | https://helmetjs.github.io/ | 13+ security headers for Express |
263
+ | cors (npm) | npmjs.com/package/cors | CORS middleware with validation |
264
+ | django-cors-headers | pypi.org/project/django-cors-headers | CORS for Django |
265
+ | report-uri.com | https://report-uri.com | CSP violation aggregation/alerting |
266
+ | Sentry CSP | sentry.io | CSP reports in error tracking |
267
+
268
+ CI/CD integration:
269
+ ```bash
270
+ # Observatory CLI
271
+ observatory --host staging.example.com --min-grade B
272
+ # curl header check
273
+ curl -sI https://staging.example.com | grep -i 'strict-transport-security'
274
+ ```
275
+
276
+ ---
277
+
278
+ ## 7. Platform-Specific Guidance
279
+
280
+ ### Django (django-cors-headers)
281
+ ```python
282
+ # settings.py
283
+ MIDDLEWARE = ['corsheaders.middleware.CorsMiddleware', ...] # BEFORE CommonMiddleware
284
+ CORS_ALLOWED_ORIGINS = ['https://app.example.com']
285
+ CORS_ALLOW_CREDENTIALS = True
286
+ # NEVER: CORS_ALLOW_ALL_ORIGINS = True
287
+
288
+ SECURE_HSTS_SECONDS = 63072000
289
+ SECURE_HSTS_INCLUDE_SUBDOMAINS = True
290
+ SECURE_HSTS_PRELOAD = True
291
+ SECURE_CONTENT_TYPE_NOSNIFF = True
292
+ X_FRAME_OPTIONS = 'DENY'
293
+ ```
294
+
295
+ ### Spring Boot (CorsConfiguration)
296
+ ```java
297
+ @Bean
298
+ public CorsConfigurationSource corsConfigurationSource() {
299
+ CorsConfiguration config = new CorsConfiguration();
300
+ config.setAllowedOrigins(List.of("https://app.example.com")); // NOT "*"
301
+ config.setAllowedMethods(List.of("GET", "POST", "PUT", "DELETE"));
302
+ config.setAllowCredentials(true);
303
+ config.setMaxAge(86400L);
304
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
305
+ source.registerCorsConfiguration("/**", config);
306
+ return source;
307
+ }
308
+ ```
309
+ **Important:** With Spring Security present, configure CORS via `HttpSecurity.cors()`, not `WebMvcConfigurer` -- the Security filter chain runs first and may silently ignore MVC CORS.
310
+
311
+ ### CDN: Cloudflare Workers
312
+ ```javascript
313
+ async function handleRequest(request) {
314
+ const response = await fetch(request);
315
+ const headers = new Headers(response.headers);
316
+ headers.set('Strict-Transport-Security', 'max-age=63072000; includeSubDomains; preload');
317
+ headers.set('X-Frame-Options', 'DENY');
318
+ headers.set('X-Content-Type-Options', 'nosniff');
319
+ headers.set('Referrer-Policy', 'strict-origin-when-cross-origin');
320
+ headers.delete('X-Powered-By');
321
+ return new Response(response.body, { status: response.status, headers });
322
+ }
323
+ ```
324
+
325
+ ### CDN: AWS CloudFront
326
+ Use Response Headers Policies (preferred over Lambda@Edge): configure HSTS, X-Frame-Options, CSP, Referrer-Policy, and X-Content-Type-Options in the CloudFront console or via CloudFormation.
327
+
328
+ ### Mobile WebView
329
+ - Android: `Origin: null` from `file://`. Use `WebViewAssetLoader` for virtual https origin. Set `setAllowUniversalAccessFromFileURLs(false)`.
330
+ - iOS: Use `WKURLSchemeHandler` for local content. WKWebView enforces CORS for XHR/fetch.
331
+ - Never relax server CORS for WebView quirks. Use token auth, not cookies.
332
+
333
+ ---
334
+
335
+ ## 8. Incident Patterns
336
+
337
+ ### CORS Exploitation Chain
338
+ 1. **Recon:** Attacker sends requests with various Origin headers (attacker.com, null, target.com.attacker.com)
339
+ 2. **Discovery:** API reflects origin with `Access-Control-Allow-Credentials: true`
340
+ 3. **Weaponization:** Craft page with `fetch()` using `credentials: 'include'`
341
+ 4. **Delivery:** Phishing/watering hole sends victim to attacker page
342
+ 5. **Exfiltration:** Victim's browser sends credentialed request; JS reads response, forwards to attacker
343
+ 6. **Impact:** Account data, API keys, financial data stolen
344
+
345
+ ### CSP Violation Monitoring
346
+ Report via `report-uri` or `report-to` directive. Monitor `violated-directive`, `blocked-uri`, `source-file`. Filter browser extension noise (`chrome-extension://`, `moz-extension://`). Spike in `inline` violations may indicate active XSS attempt -- correlate with WAF logs.
347
+
348
+ ### Response Playbook
349
+ 1. **Immediate:** Fix header at CDN/reverse proxy (fastest deployment path)
350
+ 2. **Verify:** Scan ALL endpoints (error pages, redirects -- headers often missing there)
351
+ 3. **Prevent:** Add header checks to CI/CD pipeline
352
+
353
+ ---
354
+
355
+ ## 9. Compliance and Standards
356
+
357
+ | Standard | Relevant Section |
358
+ |-----------------------------|----------------------------------------------------------|
359
+ | OWASP Top 10 (2021) | A05: Security Misconfiguration |
360
+ | OWASP ASVS v4.0 | V14: HTTP Security Configuration |
361
+ | OWASP Secure Headers | Full header taxonomy and recommended values |
362
+ | OWASP WSTG | WSTG-CONF-07 (HSTS), WSTG-CLNT-04 (CORS) |
363
+ | NIST SP 800-53 SC-8 | Transmission confidentiality (HSTS) |
364
+ | NIST SP 800-53 SI-10 | Input validation (CSP) |
365
+ | PCI DSS 4.0 Req 6.4.3 | CSP mandatory for payment pages (anti-Magecart) |
366
+ | GDPR Art. 32 / HIPAA | "Appropriate technical measures" -- headers are baseline |
367
+
368
+ ---
369
+
370
+ ## 10. Code Examples: Vulnerable vs. Secure
371
+
372
+ ### CORS Middleware (Full Secure Version)
373
+ ```typescript
374
+ const ALLOWED_ORIGINS: ReadonlySet<string> = new Set([
375
+ 'https://app.example.com', 'https://admin.example.com',
376
+ ]);
377
+
378
+ function corsMiddleware(req, res, next) {
379
+ const origin = req.headers.origin;
380
+ if (origin && ALLOWED_ORIGINS.has(origin)) {
381
+ res.setHeader('Access-Control-Allow-Origin', origin);
382
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
383
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
384
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
385
+ res.setHeader('Access-Control-Max-Age', '86400');
386
+ res.setHeader('Vary', 'Origin'); // CRITICAL for caching correctness
387
+ }
388
+ if (req.method === 'OPTIONS') { res.status(204).end(); return; }
389
+ next();
390
+ }
391
+ ```
392
+
393
+ ### Automated Header Check (CI/CD Script)
394
+ ```bash
395
+ #!/usr/bin/env bash
396
+ set -euo pipefail
397
+ URL="${1:?Usage: $0 <url>}"
398
+ PASS=true
399
+ check() {
400
+ local h="$1" exp="$2"
401
+ local v; v=$(curl -sI "$URL" | grep -i "^${h}:" | head -1 | cut -d: -f2- | xargs)
402
+ if [[ -z "$v" ]]; then echo "FAIL: ${h} MISSING"; PASS=false
403
+ else echo "PASS: ${h}"; fi
404
+ }
405
+ check "Strict-Transport-Security" "max-age="
406
+ check "Content-Security-Policy" "default-src"
407
+ check "X-Frame-Options" ""
408
+ check "X-Content-Type-Options" "nosniff"
409
+ check "Referrer-Policy" ""
410
+ if curl -sI "$URL" | grep -qi "^X-Powered-By:"; then
411
+ echo "FAIL: X-Powered-By should be removed"; PASS=false
412
+ fi
413
+ $PASS && echo "ALL PASSED" || { echo "FAILURES DETECTED"; exit 1; }
414
+ ```
415
+
416
+ ---
417
+
418
+ ## References
419
+
420
+ - OWASP Secure Headers Project: https://owasp.org/www-project-secure-headers/
421
+ - OWASP HTTP Headers Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/HTTP_Headers_Cheat_Sheet.html
422
+ - OWASP CSP Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Content_Security_Policy_Cheat_Sheet.html
423
+ - PortSwigger CORS Research: https://portswigger.net/research/exploiting-cors-misconfigurations-for-bitcoins-and-bounties
424
+ - PortSwigger Web Security Academy: https://portswigger.net/web-security/cors
425
+ - Google Strict CSP: https://csp.withgoogle.com/docs/strict-csp.html
426
+ - MDN CSP Guide: https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP
427
+ - MDN SRI Guide: https://developer.mozilla.org/en-US/docs/Web/Security/Defenses/Subresource_Integrity
428
+ - Helmet.js: https://helmetjs.github.io/
429
+ - CWE-942: https://cwe.mitre.org/data/definitions/942.html
430
+ - CWE-346: https://cwe.mitre.org/data/definitions/346.html
431
+ - HackTricks CORS Bypass: https://book.hacktricks.xyz/pentesting-web/cors-bypass
432
+ - AWS CloudFront Security Headers: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-security-headers.html
433
+ - Intigriti CORS Exploitation Guide: https://www.intigriti.com/researchers/blog/hacking-tools/exploiting-cors-misconfiguration-vulnerabilities