@shaykec/bridge 0.4.25 → 0.4.27

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 (595) hide show
  1. package/journeys/ai-engineer.yaml +34 -0
  2. package/journeys/backend-developer.yaml +36 -0
  3. package/journeys/business-analyst.yaml +37 -0
  4. package/journeys/devops-engineer.yaml +37 -0
  5. package/journeys/engineering-manager.yaml +44 -0
  6. package/journeys/frontend-developer.yaml +41 -0
  7. package/journeys/fullstack-developer.yaml +49 -0
  8. package/journeys/mobile-developer.yaml +42 -0
  9. package/journeys/product-manager.yaml +35 -0
  10. package/journeys/qa-engineer.yaml +37 -0
  11. package/journeys/ux-designer.yaml +43 -0
  12. package/modules/README.md +52 -0
  13. package/modules/accessibility-fundamentals/content.md +126 -0
  14. package/modules/accessibility-fundamentals/exercises.md +88 -0
  15. package/modules/accessibility-fundamentals/module.yaml +43 -0
  16. package/modules/accessibility-fundamentals/quick-ref.md +71 -0
  17. package/modules/accessibility-fundamentals/quiz.md +100 -0
  18. package/modules/accessibility-fundamentals/resources.md +29 -0
  19. package/modules/accessibility-fundamentals/walkthrough.md +80 -0
  20. package/modules/adr-writing/content.md +121 -0
  21. package/modules/adr-writing/exercises.md +81 -0
  22. package/modules/adr-writing/module.yaml +41 -0
  23. package/modules/adr-writing/quick-ref.md +57 -0
  24. package/modules/adr-writing/quiz.md +73 -0
  25. package/modules/adr-writing/resources.md +29 -0
  26. package/modules/adr-writing/walkthrough.md +64 -0
  27. package/modules/ai-agents/content.md +120 -0
  28. package/modules/ai-agents/exercises.md +82 -0
  29. package/modules/ai-agents/module.yaml +42 -0
  30. package/modules/ai-agents/quick-ref.md +60 -0
  31. package/modules/ai-agents/quiz.md +103 -0
  32. package/modules/ai-agents/resources.md +30 -0
  33. package/modules/ai-agents/walkthrough.md +85 -0
  34. package/modules/ai-assisted-research/content.md +136 -0
  35. package/modules/ai-assisted-research/exercises.md +80 -0
  36. package/modules/ai-assisted-research/module.yaml +42 -0
  37. package/modules/ai-assisted-research/quick-ref.md +67 -0
  38. package/modules/ai-assisted-research/quiz.md +73 -0
  39. package/modules/ai-assisted-research/resources.md +33 -0
  40. package/modules/ai-assisted-research/walkthrough.md +85 -0
  41. package/modules/ai-pair-programming/content.md +105 -0
  42. package/modules/ai-pair-programming/exercises.md +98 -0
  43. package/modules/ai-pair-programming/module.yaml +39 -0
  44. package/modules/ai-pair-programming/quick-ref.md +58 -0
  45. package/modules/ai-pair-programming/quiz.md +73 -0
  46. package/modules/ai-pair-programming/resources.md +34 -0
  47. package/modules/ai-pair-programming/walkthrough.md +117 -0
  48. package/modules/ai-test-generation/content.md +125 -0
  49. package/modules/ai-test-generation/exercises.md +98 -0
  50. package/modules/ai-test-generation/module.yaml +39 -0
  51. package/modules/ai-test-generation/quick-ref.md +65 -0
  52. package/modules/ai-test-generation/quiz.md +74 -0
  53. package/modules/ai-test-generation/resources.md +41 -0
  54. package/modules/ai-test-generation/walkthrough.md +100 -0
  55. package/modules/api-design/content.md +189 -0
  56. package/modules/api-design/exercises.md +84 -0
  57. package/modules/api-design/game.yaml +113 -0
  58. package/modules/api-design/module.yaml +45 -0
  59. package/modules/api-design/quick-ref.md +73 -0
  60. package/modules/api-design/quiz.md +100 -0
  61. package/modules/api-design/resources.md +55 -0
  62. package/modules/api-design/walkthrough.md +88 -0
  63. package/modules/clean-code/content.md +136 -0
  64. package/modules/clean-code/exercises.md +137 -0
  65. package/modules/clean-code/game.yaml +172 -0
  66. package/modules/clean-code/module.yaml +44 -0
  67. package/modules/clean-code/quick-ref.md +44 -0
  68. package/modules/clean-code/quiz.md +105 -0
  69. package/modules/clean-code/resources.md +40 -0
  70. package/modules/clean-code/walkthrough.md +78 -0
  71. package/modules/clean-code/workshop.yaml +149 -0
  72. package/modules/code-review/content.md +130 -0
  73. package/modules/code-review/exercises.md +95 -0
  74. package/modules/code-review/game.yaml +83 -0
  75. package/modules/code-review/module.yaml +42 -0
  76. package/modules/code-review/quick-ref.md +77 -0
  77. package/modules/code-review/quiz.md +105 -0
  78. package/modules/code-review/resources.md +40 -0
  79. package/modules/code-review/walkthrough.md +106 -0
  80. package/modules/daily-workflow/content.md +81 -0
  81. package/modules/daily-workflow/exercises.md +50 -0
  82. package/modules/daily-workflow/module.yaml +33 -0
  83. package/modules/daily-workflow/quick-ref.md +37 -0
  84. package/modules/daily-workflow/quiz.md +65 -0
  85. package/modules/daily-workflow/resources.md +38 -0
  86. package/modules/daily-workflow/walkthrough.md +83 -0
  87. package/modules/debugging-systematically/content.md +139 -0
  88. package/modules/debugging-systematically/exercises.md +91 -0
  89. package/modules/debugging-systematically/module.yaml +46 -0
  90. package/modules/debugging-systematically/quick-ref.md +59 -0
  91. package/modules/debugging-systematically/quiz.md +105 -0
  92. package/modules/debugging-systematically/resources.md +42 -0
  93. package/modules/debugging-systematically/walkthrough.md +84 -0
  94. package/modules/debugging-systematically/workshop.yaml +127 -0
  95. package/modules/demo-test/content.md +68 -0
  96. package/modules/demo-test/exercises.md +28 -0
  97. package/modules/demo-test/game.yaml +171 -0
  98. package/modules/demo-test/module.yaml +41 -0
  99. package/modules/demo-test/quick-ref.md +54 -0
  100. package/modules/demo-test/quiz.md +74 -0
  101. package/modules/demo-test/resources.md +21 -0
  102. package/modules/demo-test/walkthrough.md +122 -0
  103. package/modules/demo-test/workshop.yaml +31 -0
  104. package/modules/design-critique/content.md +93 -0
  105. package/modules/design-critique/exercises.md +71 -0
  106. package/modules/design-critique/module.yaml +41 -0
  107. package/modules/design-critique/quick-ref.md +63 -0
  108. package/modules/design-critique/quiz.md +73 -0
  109. package/modules/design-critique/resources.md +27 -0
  110. package/modules/design-critique/walkthrough.md +68 -0
  111. package/modules/design-patterns/content.md +335 -0
  112. package/modules/design-patterns/exercises.md +82 -0
  113. package/modules/design-patterns/game.yaml +55 -0
  114. package/modules/design-patterns/module.yaml +45 -0
  115. package/modules/design-patterns/quick-ref.md +44 -0
  116. package/modules/design-patterns/quiz.md +101 -0
  117. package/modules/design-patterns/resources.md +40 -0
  118. package/modules/design-patterns/walkthrough.md +64 -0
  119. package/modules/exploratory-testing/content.md +133 -0
  120. package/modules/exploratory-testing/exercises.md +88 -0
  121. package/modules/exploratory-testing/module.yaml +41 -0
  122. package/modules/exploratory-testing/quick-ref.md +68 -0
  123. package/modules/exploratory-testing/quiz.md +75 -0
  124. package/modules/exploratory-testing/resources.md +39 -0
  125. package/modules/exploratory-testing/walkthrough.md +87 -0
  126. package/modules/git/content.md +128 -0
  127. package/modules/git/exercises.md +53 -0
  128. package/modules/git/game.yaml +190 -0
  129. package/modules/git/module.yaml +44 -0
  130. package/modules/git/quick-ref.md +67 -0
  131. package/modules/git/quiz.md +89 -0
  132. package/modules/git/resources.md +49 -0
  133. package/modules/git/walkthrough.md +92 -0
  134. package/modules/git/workshop.yaml +145 -0
  135. package/modules/hiring-interviews/content.md +130 -0
  136. package/modules/hiring-interviews/exercises.md +88 -0
  137. package/modules/hiring-interviews/module.yaml +41 -0
  138. package/modules/hiring-interviews/quick-ref.md +68 -0
  139. package/modules/hiring-interviews/quiz.md +73 -0
  140. package/modules/hiring-interviews/resources.md +36 -0
  141. package/modules/hiring-interviews/walkthrough.md +75 -0
  142. package/modules/hooks/content.md +97 -0
  143. package/modules/hooks/exercises.md +69 -0
  144. package/modules/hooks/module.yaml +39 -0
  145. package/modules/hooks/quick-ref.md +93 -0
  146. package/modules/hooks/quiz.md +81 -0
  147. package/modules/hooks/resources.md +34 -0
  148. package/modules/hooks/walkthrough.md +105 -0
  149. package/modules/hooks/workshop.yaml +64 -0
  150. package/modules/incident-response/content.md +124 -0
  151. package/modules/incident-response/exercises.md +82 -0
  152. package/modules/incident-response/game.yaml +132 -0
  153. package/modules/incident-response/module.yaml +45 -0
  154. package/modules/incident-response/quick-ref.md +53 -0
  155. package/modules/incident-response/quiz.md +103 -0
  156. package/modules/incident-response/resources.md +40 -0
  157. package/modules/incident-response/walkthrough.md +82 -0
  158. package/modules/llm-fundamentals/content.md +114 -0
  159. package/modules/llm-fundamentals/exercises.md +83 -0
  160. package/modules/llm-fundamentals/module.yaml +42 -0
  161. package/modules/llm-fundamentals/quick-ref.md +64 -0
  162. package/modules/llm-fundamentals/quiz.md +103 -0
  163. package/modules/llm-fundamentals/resources.md +30 -0
  164. package/modules/llm-fundamentals/walkthrough.md +91 -0
  165. package/modules/one-on-ones/content.md +133 -0
  166. package/modules/one-on-ones/exercises.md +81 -0
  167. package/modules/one-on-ones/module.yaml +44 -0
  168. package/modules/one-on-ones/quick-ref.md +67 -0
  169. package/modules/one-on-ones/quiz.md +73 -0
  170. package/modules/one-on-ones/resources.md +37 -0
  171. package/modules/one-on-ones/walkthrough.md +69 -0
  172. package/modules/package.json +9 -0
  173. package/modules/prioritization-frameworks/content.md +130 -0
  174. package/modules/prioritization-frameworks/exercises.md +93 -0
  175. package/modules/prioritization-frameworks/module.yaml +41 -0
  176. package/modules/prioritization-frameworks/quick-ref.md +77 -0
  177. package/modules/prioritization-frameworks/quiz.md +73 -0
  178. package/modules/prioritization-frameworks/resources.md +32 -0
  179. package/modules/prioritization-frameworks/walkthrough.md +69 -0
  180. package/modules/prompt-engineering/content.md +123 -0
  181. package/modules/prompt-engineering/exercises.md +82 -0
  182. package/modules/prompt-engineering/game.yaml +101 -0
  183. package/modules/prompt-engineering/module.yaml +45 -0
  184. package/modules/prompt-engineering/quick-ref.md +65 -0
  185. package/modules/prompt-engineering/quiz.md +105 -0
  186. package/modules/prompt-engineering/resources.md +36 -0
  187. package/modules/prompt-engineering/walkthrough.md +81 -0
  188. package/modules/rag-fundamentals/content.md +111 -0
  189. package/modules/rag-fundamentals/exercises.md +80 -0
  190. package/modules/rag-fundamentals/module.yaml +45 -0
  191. package/modules/rag-fundamentals/quick-ref.md +58 -0
  192. package/modules/rag-fundamentals/quiz.md +75 -0
  193. package/modules/rag-fundamentals/resources.md +34 -0
  194. package/modules/rag-fundamentals/walkthrough.md +75 -0
  195. package/modules/react-fundamentals/content.md +140 -0
  196. package/modules/react-fundamentals/exercises.md +81 -0
  197. package/modules/react-fundamentals/game.yaml +145 -0
  198. package/modules/react-fundamentals/module.yaml +45 -0
  199. package/modules/react-fundamentals/quick-ref.md +62 -0
  200. package/modules/react-fundamentals/quiz.md +106 -0
  201. package/modules/react-fundamentals/resources.md +42 -0
  202. package/modules/react-fundamentals/walkthrough.md +89 -0
  203. package/modules/react-fundamentals/workshop.yaml +112 -0
  204. package/modules/react-native-fundamentals/content.md +141 -0
  205. package/modules/react-native-fundamentals/exercises.md +79 -0
  206. package/modules/react-native-fundamentals/module.yaml +42 -0
  207. package/modules/react-native-fundamentals/quick-ref.md +60 -0
  208. package/modules/react-native-fundamentals/quiz.md +61 -0
  209. package/modules/react-native-fundamentals/resources.md +24 -0
  210. package/modules/react-native-fundamentals/walkthrough.md +84 -0
  211. package/modules/registry.yaml +1650 -0
  212. package/modules/risk-management/content.md +162 -0
  213. package/modules/risk-management/exercises.md +86 -0
  214. package/modules/risk-management/module.yaml +41 -0
  215. package/modules/risk-management/quick-ref.md +82 -0
  216. package/modules/risk-management/quiz.md +73 -0
  217. package/modules/risk-management/resources.md +40 -0
  218. package/modules/risk-management/walkthrough.md +67 -0
  219. package/modules/running-effective-standups/content.md +119 -0
  220. package/modules/running-effective-standups/exercises.md +79 -0
  221. package/modules/running-effective-standups/module.yaml +40 -0
  222. package/modules/running-effective-standups/quick-ref.md +61 -0
  223. package/modules/running-effective-standups/quiz.md +73 -0
  224. package/modules/running-effective-standups/resources.md +36 -0
  225. package/modules/running-effective-standups/walkthrough.md +76 -0
  226. package/modules/solid-principles/content.md +154 -0
  227. package/modules/solid-principles/exercises.md +107 -0
  228. package/modules/solid-principles/module.yaml +42 -0
  229. package/modules/solid-principles/quick-ref.md +50 -0
  230. package/modules/solid-principles/quiz.md +102 -0
  231. package/modules/solid-principles/resources.md +39 -0
  232. package/modules/solid-principles/walkthrough.md +84 -0
  233. package/modules/sprint-planning/content.md +142 -0
  234. package/modules/sprint-planning/exercises.md +79 -0
  235. package/modules/sprint-planning/game.yaml +84 -0
  236. package/modules/sprint-planning/module.yaml +44 -0
  237. package/modules/sprint-planning/quick-ref.md +76 -0
  238. package/modules/sprint-planning/quiz.md +102 -0
  239. package/modules/sprint-planning/resources.md +39 -0
  240. package/modules/sprint-planning/walkthrough.md +75 -0
  241. package/modules/sql-fundamentals/content.md +160 -0
  242. package/modules/sql-fundamentals/exercises.md +87 -0
  243. package/modules/sql-fundamentals/game.yaml +105 -0
  244. package/modules/sql-fundamentals/module.yaml +45 -0
  245. package/modules/sql-fundamentals/quick-ref.md +53 -0
  246. package/modules/sql-fundamentals/quiz.md +103 -0
  247. package/modules/sql-fundamentals/resources.md +42 -0
  248. package/modules/sql-fundamentals/walkthrough.md +92 -0
  249. package/modules/sql-fundamentals/workshop.yaml +109 -0
  250. package/modules/stakeholder-communication/content.md +186 -0
  251. package/modules/stakeholder-communication/exercises.md +87 -0
  252. package/modules/stakeholder-communication/module.yaml +38 -0
  253. package/modules/stakeholder-communication/quick-ref.md +89 -0
  254. package/modules/stakeholder-communication/quiz.md +73 -0
  255. package/modules/stakeholder-communication/resources.md +41 -0
  256. package/modules/stakeholder-communication/walkthrough.md +74 -0
  257. package/modules/system-design/content.md +149 -0
  258. package/modules/system-design/exercises.md +83 -0
  259. package/modules/system-design/game.yaml +95 -0
  260. package/modules/system-design/module.yaml +46 -0
  261. package/modules/system-design/quick-ref.md +59 -0
  262. package/modules/system-design/quiz.md +102 -0
  263. package/modules/system-design/resources.md +46 -0
  264. package/modules/system-design/walkthrough.md +90 -0
  265. package/modules/team-topologies/content.md +166 -0
  266. package/modules/team-topologies/exercises.md +85 -0
  267. package/modules/team-topologies/module.yaml +41 -0
  268. package/modules/team-topologies/quick-ref.md +61 -0
  269. package/modules/team-topologies/quiz.md +101 -0
  270. package/modules/team-topologies/resources.md +37 -0
  271. package/modules/team-topologies/walkthrough.md +76 -0
  272. package/modules/technical-debt/content.md +111 -0
  273. package/modules/technical-debt/exercises.md +92 -0
  274. package/modules/technical-debt/module.yaml +39 -0
  275. package/modules/technical-debt/quick-ref.md +60 -0
  276. package/modules/technical-debt/quiz.md +73 -0
  277. package/modules/technical-debt/resources.md +25 -0
  278. package/modules/technical-debt/walkthrough.md +94 -0
  279. package/modules/technical-mentoring/content.md +128 -0
  280. package/modules/technical-mentoring/exercises.md +84 -0
  281. package/modules/technical-mentoring/module.yaml +41 -0
  282. package/modules/technical-mentoring/quick-ref.md +74 -0
  283. package/modules/technical-mentoring/quiz.md +73 -0
  284. package/modules/technical-mentoring/resources.md +33 -0
  285. package/modules/technical-mentoring/walkthrough.md +65 -0
  286. package/modules/test-strategy/content.md +136 -0
  287. package/modules/test-strategy/exercises.md +84 -0
  288. package/modules/test-strategy/game.yaml +99 -0
  289. package/modules/test-strategy/module.yaml +45 -0
  290. package/modules/test-strategy/quick-ref.md +66 -0
  291. package/modules/test-strategy/quiz.md +99 -0
  292. package/modules/test-strategy/resources.md +60 -0
  293. package/modules/test-strategy/walkthrough.md +97 -0
  294. package/modules/test-strategy/workshop.yaml +96 -0
  295. package/modules/typescript-fundamentals/content.md +127 -0
  296. package/modules/typescript-fundamentals/exercises.md +79 -0
  297. package/modules/typescript-fundamentals/game.yaml +111 -0
  298. package/modules/typescript-fundamentals/module.yaml +45 -0
  299. package/modules/typescript-fundamentals/quick-ref.md +55 -0
  300. package/modules/typescript-fundamentals/quiz.md +104 -0
  301. package/modules/typescript-fundamentals/resources.md +42 -0
  302. package/modules/typescript-fundamentals/walkthrough.md +71 -0
  303. package/modules/typescript-fundamentals/workshop.yaml +146 -0
  304. package/modules/user-story-mapping/content.md +123 -0
  305. package/modules/user-story-mapping/exercises.md +87 -0
  306. package/modules/user-story-mapping/module.yaml +41 -0
  307. package/modules/user-story-mapping/quick-ref.md +64 -0
  308. package/modules/user-story-mapping/quiz.md +73 -0
  309. package/modules/user-story-mapping/resources.md +29 -0
  310. package/modules/user-story-mapping/walkthrough.md +86 -0
  311. package/modules/writing-prds/content.md +133 -0
  312. package/modules/writing-prds/exercises.md +93 -0
  313. package/modules/writing-prds/game.yaml +83 -0
  314. package/modules/writing-prds/module.yaml +44 -0
  315. package/modules/writing-prds/quick-ref.md +77 -0
  316. package/modules/writing-prds/quiz.md +103 -0
  317. package/modules/writing-prds/resources.md +30 -0
  318. package/modules/writing-prds/walkthrough.md +87 -0
  319. package/package.json +2 -2
  320. package/canvas-dist/assets/_basePickBy-BovdgFIW.js +0 -1
  321. package/canvas-dist/assets/_basePickBy-BtkHe2u_.js +0 -1
  322. package/canvas-dist/assets/_basePickBy-C0936578.js +0 -1
  323. package/canvas-dist/assets/_basePickBy-CE2Qvuh7.js +0 -1
  324. package/canvas-dist/assets/_basePickBy-DV6sX4CG.js +0 -1
  325. package/canvas-dist/assets/_basePickBy-DZX6ZNMT.js +0 -1
  326. package/canvas-dist/assets/_baseUniq-B7dN28TM.js +0 -1
  327. package/canvas-dist/assets/_baseUniq-Cl23fCdR.js +0 -1
  328. package/canvas-dist/assets/_baseUniq-CojWFw7B.js +0 -1
  329. package/canvas-dist/assets/_baseUniq-DA640BJl.js +0 -1
  330. package/canvas-dist/assets/_baseUniq-Ds-62CCj.js +0 -1
  331. package/canvas-dist/assets/_baseUniq-KG7SRw9H.js +0 -1
  332. package/canvas-dist/assets/arc-7E9FFKlC.js +0 -1
  333. package/canvas-dist/assets/arc-BSMfRZtt.js +0 -1
  334. package/canvas-dist/assets/arc-C6nT-koR.js +0 -1
  335. package/canvas-dist/assets/arc-D_fOnjmo.js +0 -1
  336. package/canvas-dist/assets/arc-Khfvgkr3.js +0 -1
  337. package/canvas-dist/assets/arc-ieS-i42x.js +0 -1
  338. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DF4t6GQD.js +0 -36
  339. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DXgSlsio.js +0 -36
  340. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DiomxPB4.js +0 -36
  341. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DnFaxvXD.js +0 -36
  342. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-Dt38C0LJ.js +0 -36
  343. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-egbtMwua.js +0 -36
  344. package/canvas-dist/assets/blockDiagram-VD42YOAC-CUNKQd-b.js +0 -122
  345. package/canvas-dist/assets/blockDiagram-VD42YOAC-D-NiLXxd.js +0 -122
  346. package/canvas-dist/assets/blockDiagram-VD42YOAC-Dx6Dh9gg.js +0 -122
  347. package/canvas-dist/assets/blockDiagram-VD42YOAC-_r-PmlQy.js +0 -122
  348. package/canvas-dist/assets/blockDiagram-VD42YOAC-bvYKZLMc.js +0 -122
  349. package/canvas-dist/assets/blockDiagram-VD42YOAC-l85QT9Ig.js +0 -122
  350. package/canvas-dist/assets/c4Diagram-YG6GDRKO-BWKCTyQi.js +0 -10
  351. package/canvas-dist/assets/c4Diagram-YG6GDRKO-CbXs2xzC.js +0 -10
  352. package/canvas-dist/assets/c4Diagram-YG6GDRKO-CjiS-GNK.js +0 -10
  353. package/canvas-dist/assets/c4Diagram-YG6GDRKO-D7SnLlHp.js +0 -10
  354. package/canvas-dist/assets/c4Diagram-YG6GDRKO-RTTCSVf2.js +0 -10
  355. package/canvas-dist/assets/c4Diagram-YG6GDRKO-yvqJ_AqX.js +0 -10
  356. package/canvas-dist/assets/channel-CSXq7GP6.js +0 -1
  357. package/canvas-dist/assets/channel-CvujjGiJ.js +0 -1
  358. package/canvas-dist/assets/channel-D959Iony.js +0 -1
  359. package/canvas-dist/assets/channel-DOSwCnrB.js +0 -1
  360. package/canvas-dist/assets/channel-sw61LzxF.js +0 -1
  361. package/canvas-dist/assets/channel-vZVnNhOK.js +0 -1
  362. package/canvas-dist/assets/chunk-4BX2VUAB-BBjuAwXr.js +0 -1
  363. package/canvas-dist/assets/chunk-4BX2VUAB-BXRNyucU.js +0 -1
  364. package/canvas-dist/assets/chunk-4BX2VUAB-Bgq5Z77T.js +0 -1
  365. package/canvas-dist/assets/chunk-4BX2VUAB-BuoMCMCr.js +0 -1
  366. package/canvas-dist/assets/chunk-4BX2VUAB-COD5n7vg.js +0 -1
  367. package/canvas-dist/assets/chunk-4BX2VUAB-K8DepKJO.js +0 -1
  368. package/canvas-dist/assets/chunk-55IACEB6-Bic_bMrQ.js +0 -1
  369. package/canvas-dist/assets/chunk-55IACEB6-DEy2QUDq.js +0 -1
  370. package/canvas-dist/assets/chunk-55IACEB6-Dcgbmfzg.js +0 -1
  371. package/canvas-dist/assets/chunk-55IACEB6-DfmuNm_E.js +0 -1
  372. package/canvas-dist/assets/chunk-55IACEB6-DlQRcczm.js +0 -1
  373. package/canvas-dist/assets/chunk-55IACEB6-p2qMY-fm.js +0 -1
  374. package/canvas-dist/assets/chunk-B4BG7PRW-BpbyxBP2.js +0 -165
  375. package/canvas-dist/assets/chunk-B4BG7PRW-CCPqvPrP.js +0 -165
  376. package/canvas-dist/assets/chunk-B4BG7PRW-CEeDPAki.js +0 -165
  377. package/canvas-dist/assets/chunk-B4BG7PRW-D2UFN_2M.js +0 -165
  378. package/canvas-dist/assets/chunk-B4BG7PRW-DFI5h6HC.js +0 -165
  379. package/canvas-dist/assets/chunk-B4BG7PRW-DKOiFGMU.js +0 -165
  380. package/canvas-dist/assets/chunk-DI55MBZ5-BV6nHjNQ.js +0 -220
  381. package/canvas-dist/assets/chunk-DI55MBZ5-CEZJmC0E.js +0 -220
  382. package/canvas-dist/assets/chunk-DI55MBZ5-DOZT99Ek.js +0 -220
  383. package/canvas-dist/assets/chunk-DI55MBZ5-DmC2LoG2.js +0 -220
  384. package/canvas-dist/assets/chunk-DI55MBZ5-DpkcJdZP.js +0 -220
  385. package/canvas-dist/assets/chunk-DI55MBZ5-fVTGx0zh.js +0 -220
  386. package/canvas-dist/assets/chunk-FMBD7UC4-BOCyQpI7.js +0 -15
  387. package/canvas-dist/assets/chunk-FMBD7UC4-C76FrRL8.js +0 -15
  388. package/canvas-dist/assets/chunk-FMBD7UC4-CAq-btWc.js +0 -15
  389. package/canvas-dist/assets/chunk-FMBD7UC4-CidVsej6.js +0 -15
  390. package/canvas-dist/assets/chunk-FMBD7UC4-DPpfskdX.js +0 -15
  391. package/canvas-dist/assets/chunk-FMBD7UC4-DnLtclge.js +0 -15
  392. package/canvas-dist/assets/chunk-QN33PNHL-BclpCUi8.js +0 -1
  393. package/canvas-dist/assets/chunk-QN33PNHL-DDUw8IU1.js +0 -1
  394. package/canvas-dist/assets/chunk-QN33PNHL-DdJFAUXw.js +0 -1
  395. package/canvas-dist/assets/chunk-QN33PNHL-DjV4jUn9.js +0 -1
  396. package/canvas-dist/assets/chunk-QN33PNHL-N-HTycqU.js +0 -1
  397. package/canvas-dist/assets/chunk-QN33PNHL-sd8p21DW.js +0 -1
  398. package/canvas-dist/assets/chunk-QZHKN3VN-B6mT-JkP.js +0 -1
  399. package/canvas-dist/assets/chunk-QZHKN3VN-BCo8pc7x.js +0 -1
  400. package/canvas-dist/assets/chunk-QZHKN3VN-C8IIu6es.js +0 -1
  401. package/canvas-dist/assets/chunk-QZHKN3VN-D9FF492U.js +0 -1
  402. package/canvas-dist/assets/chunk-QZHKN3VN-DWMbUjXT.js +0 -1
  403. package/canvas-dist/assets/chunk-QZHKN3VN-l5FBJ77g.js +0 -1
  404. package/canvas-dist/assets/chunk-TZMSLE5B-BASt-UWt.js +0 -1
  405. package/canvas-dist/assets/chunk-TZMSLE5B-BCfaZWLT.js +0 -1
  406. package/canvas-dist/assets/chunk-TZMSLE5B-BKIk_hBR.js +0 -1
  407. package/canvas-dist/assets/chunk-TZMSLE5B-C4pt-Ir8.js +0 -1
  408. package/canvas-dist/assets/chunk-TZMSLE5B-DwGlELvo.js +0 -1
  409. package/canvas-dist/assets/chunk-TZMSLE5B-jJKG-WvJ.js +0 -1
  410. package/canvas-dist/assets/classDiagram-2ON5EDUG-B7YQfPU4.js +0 -1
  411. package/canvas-dist/assets/classDiagram-2ON5EDUG-BZ61MaHY.js +0 -1
  412. package/canvas-dist/assets/classDiagram-2ON5EDUG-CGseYor2.js +0 -1
  413. package/canvas-dist/assets/classDiagram-2ON5EDUG-CKzOc99J.js +0 -1
  414. package/canvas-dist/assets/classDiagram-2ON5EDUG-Ce_LPjwW.js +0 -1
  415. package/canvas-dist/assets/classDiagram-2ON5EDUG-DorPdibv.js +0 -1
  416. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-B7YQfPU4.js +0 -1
  417. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-BZ61MaHY.js +0 -1
  418. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CGseYor2.js +0 -1
  419. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CKzOc99J.js +0 -1
  420. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-Ce_LPjwW.js +0 -1
  421. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-DorPdibv.js +0 -1
  422. package/canvas-dist/assets/clone-74KSto7H.js +0 -1
  423. package/canvas-dist/assets/clone-CJQgAYVe.js +0 -1
  424. package/canvas-dist/assets/clone-DLeTuhHE.js +0 -1
  425. package/canvas-dist/assets/clone-D_IHK_lQ.js +0 -1
  426. package/canvas-dist/assets/clone-DxMUv1L9.js +0 -1
  427. package/canvas-dist/assets/clone-UNKf_nED.js +0 -1
  428. package/canvas-dist/assets/cose-bilkent-S5V4N54A-BTyQiCkr.js +0 -1
  429. package/canvas-dist/assets/cose-bilkent-S5V4N54A-BtPAe24N.js +0 -1
  430. package/canvas-dist/assets/cose-bilkent-S5V4N54A-DIjE7V3m.js +0 -1
  431. package/canvas-dist/assets/cose-bilkent-S5V4N54A-DKL_BGvE.js +0 -1
  432. package/canvas-dist/assets/cose-bilkent-S5V4N54A-LZ4OsCLU.js +0 -1
  433. package/canvas-dist/assets/cose-bilkent-S5V4N54A-XWeJtgga.js +0 -1
  434. package/canvas-dist/assets/dagre-6UL2VRFP-BJ2vcFwR.js +0 -4
  435. package/canvas-dist/assets/dagre-6UL2VRFP-C1FlE5s8.js +0 -4
  436. package/canvas-dist/assets/dagre-6UL2VRFP-C3BWFgl6.js +0 -4
  437. package/canvas-dist/assets/dagre-6UL2VRFP-CUnx73Rf.js +0 -4
  438. package/canvas-dist/assets/dagre-6UL2VRFP-Do10BY1y.js +0 -4
  439. package/canvas-dist/assets/dagre-6UL2VRFP-rOZEkrsg.js +0 -4
  440. package/canvas-dist/assets/diagram-PSM6KHXK-BGi_qzbq.js +0 -24
  441. package/canvas-dist/assets/diagram-PSM6KHXK-C3Nv7h_j.js +0 -24
  442. package/canvas-dist/assets/diagram-PSM6KHXK-CsMy-r0n.js +0 -24
  443. package/canvas-dist/assets/diagram-PSM6KHXK-Dj8g7kGt.js +0 -24
  444. package/canvas-dist/assets/diagram-PSM6KHXK-Dxb1w_7r.js +0 -24
  445. package/canvas-dist/assets/diagram-PSM6KHXK-kVMBkEyV.js +0 -24
  446. package/canvas-dist/assets/diagram-QEK2KX5R-4bsrr1WZ.js +0 -43
  447. package/canvas-dist/assets/diagram-QEK2KX5R-Bv7BmKfI.js +0 -43
  448. package/canvas-dist/assets/diagram-QEK2KX5R-C_FLN6hv.js +0 -43
  449. package/canvas-dist/assets/diagram-QEK2KX5R-Csuk5L3z.js +0 -43
  450. package/canvas-dist/assets/diagram-QEK2KX5R-D5Aszgz4.js +0 -43
  451. package/canvas-dist/assets/diagram-QEK2KX5R-DX58f87l.js +0 -43
  452. package/canvas-dist/assets/diagram-S2PKOQOG-1Q7hwiSd.js +0 -24
  453. package/canvas-dist/assets/diagram-S2PKOQOG-Bz9Vxi5V.js +0 -24
  454. package/canvas-dist/assets/diagram-S2PKOQOG-CdWgZIIc.js +0 -24
  455. package/canvas-dist/assets/diagram-S2PKOQOG-DBicbKFU.js +0 -24
  456. package/canvas-dist/assets/diagram-S2PKOQOG-DsXKwPtU.js +0 -24
  457. package/canvas-dist/assets/diagram-S2PKOQOG-L_SMHLXs.js +0 -24
  458. package/canvas-dist/assets/erDiagram-Q2GNP2WA-BYu7fh6H.js +0 -60
  459. package/canvas-dist/assets/erDiagram-Q2GNP2WA-CvnQ69BF.js +0 -60
  460. package/canvas-dist/assets/erDiagram-Q2GNP2WA-D3xm-Tdm.js +0 -60
  461. package/canvas-dist/assets/erDiagram-Q2GNP2WA-DIPpD8sj.js +0 -60
  462. package/canvas-dist/assets/erDiagram-Q2GNP2WA-DNgu6dMd.js +0 -60
  463. package/canvas-dist/assets/erDiagram-Q2GNP2WA-Decm8aB4.js +0 -60
  464. package/canvas-dist/assets/flowDiagram-NV44I4VS-2ymk2kw2.js +0 -162
  465. package/canvas-dist/assets/flowDiagram-NV44I4VS-BEPFOt6U.js +0 -162
  466. package/canvas-dist/assets/flowDiagram-NV44I4VS-BwqXYGfK.js +0 -162
  467. package/canvas-dist/assets/flowDiagram-NV44I4VS-CS1jax_z.js +0 -162
  468. package/canvas-dist/assets/flowDiagram-NV44I4VS-DQz5bf7r.js +0 -162
  469. package/canvas-dist/assets/flowDiagram-NV44I4VS-KW4T1sqF.js +0 -162
  470. package/canvas-dist/assets/ganttDiagram-JELNMOA3-B811prZt.js +0 -267
  471. package/canvas-dist/assets/ganttDiagram-JELNMOA3-C75pWm7X.js +0 -267
  472. package/canvas-dist/assets/ganttDiagram-JELNMOA3-CWsbo0fn.js +0 -267
  473. package/canvas-dist/assets/ganttDiagram-JELNMOA3-CbJozPBN.js +0 -267
  474. package/canvas-dist/assets/ganttDiagram-JELNMOA3-Co0cFt4c.js +0 -267
  475. package/canvas-dist/assets/ganttDiagram-JELNMOA3-I4PDqrRh.js +0 -267
  476. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-B-z0cLPt.js +0 -65
  477. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-Be40z-LF.js +0 -65
  478. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BejNaAVm.js +0 -65
  479. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BqWDYr0X.js +0 -65
  480. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-DSvWGY-e.js +0 -65
  481. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-HLYbyNJ5.js +0 -65
  482. package/canvas-dist/assets/graph-BE8KKsdf.js +0 -1
  483. package/canvas-dist/assets/graph-D6DzzszU.js +0 -1
  484. package/canvas-dist/assets/graph-DFR8Y_8s.js +0 -1
  485. package/canvas-dist/assets/graph-Da385cDY.js +0 -1
  486. package/canvas-dist/assets/graph-MU7gZz2B.js +0 -1
  487. package/canvas-dist/assets/graph-wjSBJwnf.js +0 -1
  488. package/canvas-dist/assets/index--ztw-8Rw.js +0 -647
  489. package/canvas-dist/assets/index-5TpIM6B1.js +0 -11
  490. package/canvas-dist/assets/index-BSswTuBk.js +0 -11
  491. package/canvas-dist/assets/index-BVvhMmjs.js +0 -11
  492. package/canvas-dist/assets/index-BY92Mj5g.js +0 -572
  493. package/canvas-dist/assets/index-CV7palC3.js +0 -572
  494. package/canvas-dist/assets/index-D9bmQGsB.js +0 -11
  495. package/canvas-dist/assets/index-DDIKkGv8.js +0 -592
  496. package/canvas-dist/assets/index-Dyo0NkPb.js +0 -574
  497. package/canvas-dist/assets/index-iQWajCow.js +0 -572
  498. package/canvas-dist/assets/index-m68YlAMU.js +0 -11
  499. package/canvas-dist/assets/index-mEoP57az.js +0 -11
  500. package/canvas-dist/assets/infoDiagram-HS3SLOUP--9BirqgJ.js +0 -2
  501. package/canvas-dist/assets/infoDiagram-HS3SLOUP-CSJVED2y.js +0 -2
  502. package/canvas-dist/assets/infoDiagram-HS3SLOUP-D68HIb2t.js +0 -2
  503. package/canvas-dist/assets/infoDiagram-HS3SLOUP-DK2VLGGz.js +0 -2
  504. package/canvas-dist/assets/infoDiagram-HS3SLOUP-PaFhn4yD.js +0 -2
  505. package/canvas-dist/assets/infoDiagram-HS3SLOUP-zLNG47sU.js +0 -2
  506. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-Bue2dR2X.js +0 -139
  507. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-CrgZfpdU.js +0 -139
  508. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-DUxWmkkC.js +0 -139
  509. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-OTFkv4pd.js +0 -139
  510. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-eK2_Zuu3.js +0 -139
  511. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-uds5Tz8D.js +0 -139
  512. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BETdiI7I.js +0 -89
  513. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BdVh7KdN.js +0 -89
  514. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-Cxl8UM9S.js +0 -89
  515. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-DVPlx3I2.js +0 -89
  516. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-LtNWeoYB.js +0 -89
  517. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-uvhEMvyE.js +0 -89
  518. package/canvas-dist/assets/layout-1OzszN14.js +0 -1
  519. package/canvas-dist/assets/layout-CJSupFcF.js +0 -1
  520. package/canvas-dist/assets/layout-DFRmxN_c.js +0 -1
  521. package/canvas-dist/assets/layout-DSu-zk7y.js +0 -1
  522. package/canvas-dist/assets/layout-TGcrvApd.js +0 -1
  523. package/canvas-dist/assets/layout-eStc8SYK.js +0 -1
  524. package/canvas-dist/assets/linear-9qlE6xa7.js +0 -1
  525. package/canvas-dist/assets/linear-CBfFWnLD.js +0 -1
  526. package/canvas-dist/assets/linear-Cv4ai8Hq.js +0 -1
  527. package/canvas-dist/assets/linear-DDzz65E6.js +0 -1
  528. package/canvas-dist/assets/linear-wbIqhwDf.js +0 -1
  529. package/canvas-dist/assets/linear-wyNKl76F.js +0 -1
  530. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-3l4YzhEM.js +0 -68
  531. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-B-KkpNlw.js +0 -68
  532. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-DHMHWgmT.js +0 -68
  533. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-Dqfyg4Z2.js +0 -68
  534. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-NeRYOzsq.js +0 -68
  535. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-xyu628P9.js +0 -68
  536. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BWNzVAGj.js +0 -30
  537. package/canvas-dist/assets/pieDiagram-ADFJNKIX-Bm3PXYs-.js +0 -30
  538. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BvvN7VvQ.js +0 -30
  539. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BwU7AN7W.js +0 -30
  540. package/canvas-dist/assets/pieDiagram-ADFJNKIX-CHgwWCaM.js +0 -30
  541. package/canvas-dist/assets/pieDiagram-ADFJNKIX-DlZc8YOh.js +0 -30
  542. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B-Zd8OFp.js +0 -7
  543. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B1CnJyxI.js +0 -7
  544. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C0Qo00b9.js +0 -7
  545. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C9bx3nEJ.js +0 -7
  546. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-UHENkiRO.js +0 -7
  547. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-jKfurTPU.js +0 -7
  548. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BPpNNusD.js +0 -64
  549. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BwZF1NIK.js +0 -64
  550. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-CaT3Frtk.js +0 -64
  551. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-Dfoz7R_7.js +0 -64
  552. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-DsrX4TT-.js +0 -64
  553. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-dmouSXOl.js +0 -64
  554. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BEy-A1Fu.js +0 -10
  555. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BViMBiAQ.js +0 -10
  556. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BqrM-qWN.js +0 -10
  557. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DRkRC9qB.js +0 -10
  558. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DbuzKCtn.js +0 -10
  559. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-_aHMKbpw.js +0 -10
  560. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-B8FOaL2Q.js +0 -145
  561. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-C02NQwOB.js +0 -145
  562. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CgyHivPj.js +0 -145
  563. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CzW1WaEm.js +0 -145
  564. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-DJhHI1pe.js +0 -145
  565. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-VFkpAeoG.js +0 -145
  566. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BSqFX4PJ.js +0 -1
  567. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BnXhhxkN.js +0 -1
  568. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-ClARVrvt.js +0 -1
  569. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-CuC6xesY.js +0 -1
  570. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-DcAiGjph.js +0 -1
  571. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-aBg0hjTp.js +0 -1
  572. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-8fib9ftc.js +0 -1
  573. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-B-DO0ZqO.js +0 -1
  574. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-BksbsE4k.js +0 -1
  575. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-C2DJCNPK.js +0 -1
  576. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-CeA5jba6.js +0 -1
  577. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-zsAyq0tK.js +0 -1
  578. package/canvas-dist/assets/timeline-definition-IT6M3QCI-BaHdYD2h.js +0 -61
  579. package/canvas-dist/assets/timeline-definition-IT6M3QCI-Bl2hg8IM.js +0 -61
  580. package/canvas-dist/assets/timeline-definition-IT6M3QCI-CrVwLiGm.js +0 -61
  581. package/canvas-dist/assets/timeline-definition-IT6M3QCI-DrXGRjnB.js +0 -61
  582. package/canvas-dist/assets/timeline-definition-IT6M3QCI-cYAwshf6.js +0 -61
  583. package/canvas-dist/assets/timeline-definition-IT6M3QCI-flyL0y-3.js +0 -61
  584. package/canvas-dist/assets/treemap-GDKQZRPO-C4Hg8kJ_.js +0 -162
  585. package/canvas-dist/assets/treemap-GDKQZRPO-DVY2G9qY.js +0 -162
  586. package/canvas-dist/assets/treemap-GDKQZRPO-DpLWPA1z.js +0 -162
  587. package/canvas-dist/assets/treemap-GDKQZRPO-Ds86cUVw.js +0 -162
  588. package/canvas-dist/assets/treemap-GDKQZRPO-DwmoI6tH.js +0 -162
  589. package/canvas-dist/assets/treemap-GDKQZRPO-SsGFkgVd.js +0 -162
  590. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-B9c1iLBf.js +0 -7
  591. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-BpX6MPWa.js +0 -7
  592. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CEgW_j0p.js +0 -7
  593. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CSEFGEQX.js +0 -7
  594. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CnG4XoMc.js +0 -7
  595. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-Dftj3Bt3.js +0 -7
@@ -0,0 +1,61 @@
1
+ # Team Topologies — Quick Reference
2
+
3
+ ## Conway's Law
4
+
5
+ **Organizations design systems that mirror their communication structure.** Change structure to change architecture.
6
+
7
+ ## Four Team Types
8
+
9
+ | Type | Purpose |
10
+ |------|---------|
11
+ | **Stream-aligned** | Own full value stream; build, run, evolve. Default. |
12
+ | **Platform** | Provide internal services, APIs, tooling for stream-aligned teams |
13
+ | **Enabling** | Help teams learn; temporary; step back when done |
14
+ | **Complicated-subsystem** | Own specialized domain (ML, crypto, compliance) |
15
+
16
+ ## Three Interaction Modes
17
+
18
+ | Mode | When | What |
19
+ |------|------|------|
20
+ | **Collaboration** | Discovery, high ambiguity | Side-by-side; shared goals |
21
+ | **X-as-a-Service** | Stable interface (default) | Clear API, SLA; low touch |
22
+ | **Facilitating** | Learning, adoption | Teach; stream-aligned learns; step back |
23
+
24
+ ## Cognitive Load
25
+
26
+ - **Intrinsic** — domain complexity (unavoidable)
27
+ - **Extraneous** — tooling, process, ambiguity (minimize)
28
+ - **Germane** — productive learning (maximize)
29
+
30
+ **Design to reduce extraneous load.** Split teams or add platform when load is too high.
31
+
32
+ ## Team Size
33
+
34
+ - **Two-pizza rule** — 5–9 people
35
+ - **Dunbar** — effective working teams ~7±2
36
+ - **Split when** — cognitive load too high, decision wait times grow, natural sub-domains emerge
37
+
38
+ ## Team API
39
+
40
+ Platform teams need clear contracts:
41
+ - Documentation (what we offer, how to use)
42
+ - SLA (uptime, latency, support)
43
+ - Versioning (how we evolve)
44
+ - Support path (who to ask, how to escalate)
45
+
46
+ ## Pitfalls
47
+
48
+ | Avoid | Do Instead |
49
+ |-------|------------|
50
+ | Too much collaboration | Default to X-as-a-Service |
51
+ | Platform does project work | Platform provides capabilities; streams build features |
52
+ | Enabling never steps back | Exit criteria; handoff; step back |
53
+ | Ignoring cognitive load | Split or add platform; simplify |
54
+ | Reorg without behavior change | Change incentives, APIs, communication |
55
+
56
+ ## Evolution
57
+
58
+ - **Early** — Few streams; maybe one platform person
59
+ - **Growth** — Add platform when streams duplicate work
60
+ - **Scale** — Enabling teams for big transitions
61
+ - **Mature** — Complicated-subsystem when domain needs dedicated expertise
@@ -0,0 +1,101 @@
1
+ # Team Topologies — Quiz
2
+
3
+ ## Question 1
4
+
5
+ What does Conway's Law state?
6
+
7
+ A) Systems should be designed before teams are formed
8
+ B) Organizations design systems that mirror their communication structure
9
+ C) Team size should match system complexity
10
+ D) Platform teams should own all infrastructure
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: Conway's Law (1967) observes that organizations design systems that mirror their communication structure. If you have three teams, you get a three-part system. The implication: change team structure to change architecture. -->
14
+
15
+ ## Question 2
16
+
17
+ Which team type is the default—the one that owns the core value flow?
18
+
19
+ A) Platform team
20
+ B) Enabling team
21
+ C) Stream-aligned team
22
+ D) Complicated-subsystem team
23
+
24
+ <!-- ANSWER: C -->
25
+ <!-- EXPLANATION: Stream-aligned teams own a full stream of value (e.g., checkout, search). They build, run, and evolve it. Platform, enabling, and complicated-subsystem teams exist to support stream-aligned teams. -->
26
+
27
+ ## Question 3
28
+
29
+ When should two teams use the "Collaboration" interaction mode?
30
+
31
+ A) Always—teams should always collaborate closely
32
+ B) When the interface is stable and well-defined
33
+ C) During discovery, new domains, or high ambiguity
34
+ D) When one team is teaching the other
35
+
36
+ <!-- ANSWER: C -->
37
+ <!-- EXPLANATION: Collaboration is for discovery, new domains, and high ambiguity—when teams need to work side-by-side with shared goals. For stable interfaces, use X-as-a-Service. For teaching, use Facilitating. Collaboration is expensive; use it sparingly. -->
38
+
39
+ ## Question 4
40
+
41
+ What is the primary constraint that team topology design should optimize for?
42
+
43
+ A) Team size
44
+ B) Budget
45
+ C) Cognitive load
46
+ D) Geographic distribution
47
+
48
+ <!-- ANSWER: C -->
49
+ <!-- EXPLANATION: Cognitive load is the key constraint. Teams can only hold so much in their heads. Design to minimize extraneous load, manage intrinsic load, and maximize germane (productive) learning. Splitting teams or adding platform can reduce load. -->
50
+
51
+ ## Question 5
52
+
53
+ What is the "Inverse Conway Maneuver" pitfall?
54
+
55
+ A) Reorganizing teams to match desired architecture without changing communication and incentives
56
+ B) Creating too many stream-aligned teams
57
+ C) Making platform teams too large
58
+ D) Using X-as-a-Service when collaboration is needed
59
+
60
+ <!-- ANSWER: A -->
61
+ <!-- EXPLANATION: The Inverse Conway Maneuver is the attempt to reorganize teams to "match" a desired architecture. The pitfall: changing the org chart without changing behavior, incentives, and communication. Structure and behavior must align. -->
62
+
63
+ ## Question 6
64
+
65
+ When should an enabling team step back?
66
+
67
+ A) Never—enabling teams are permanent
68
+ B) When the stream-aligned team has learned and can self-serve
69
+ C) When the platform team is ready
70
+ D) After one quarter
71
+
72
+ <!-- ANSWER: B -->
73
+ <!-- EXPLANATION: Enabling teams are temporary. They help stream-aligned teams learn new skills or adopt new tech. Once the stream-aligned team can self-serve, the enabling team steps back. They have an exit criteria; they don't become permanent. -->
74
+
75
+ ## Question 7
76
+
77
+ <!-- VISUAL: quiz-matching -->
78
+
79
+ Match each team type to its description:
80
+
81
+ A) Stream-aligned → 1) Owns a full value stream; builds, runs, evolves it
82
+ B) Platform → 2) Provides internal services and tools for other teams
83
+ C) Enabling → 3) Helps other teams learn; temporary, has exit criteria
84
+ D) Complicated-subsystem → 4) Owns a complex subsystem requiring specialized skills
85
+
86
+ <!-- ANSWER: A1,B2,C3,D4 -->
87
+ <!-- EXPLANATION: Stream-aligned owns the value flow. Platform provides shared capabilities. Enabling teaches and steps back. Complicated-subsystem owns specialized domain expertise. -->
88
+
89
+ ## Question 8
90
+
91
+ <!-- VISUAL: quiz-matching -->
92
+
93
+ Match each interaction mode to its definition:
94
+
95
+ A) Collaboration → 1) Teams work side-by-side; shared goals; discovery phase
96
+ B) X-as-a-Service → 2) Consumer uses provider's offerings; well-defined interface
97
+ C) Facilitating → 3) Provider helps consumer achieve outcome; teaching/coaching
98
+ D) Stream-aligned → 4) Not an interaction mode; a team type
99
+
100
+ <!-- ANSWER: A1,B2,C3,D4 -->
101
+ <!-- EXPLANATION: Collaboration = work together in discovery. X-as-a-Service = consume defined offerings. Facilitating = provider helps consumer learn. Stream-aligned is a team type, not an interaction mode. -->
@@ -0,0 +1,37 @@
1
+ # Team Topologies — Resources
2
+
3
+ ## Books
4
+
5
+ - **Team Topologies** by Matthew Skelton and Manuel Pais — Primary source; four team types, three interaction modes, cognitive load. [teamtopologies.com](https://teamtopologies.com)
6
+ - **An Elegant Puzzle** by Will Larson — Engineering org design; team sizing, platform teams.
7
+ - **The Manager's Path** by Camille Fournier — Management in tech; org structure implications.
8
+ - **Accelerate** by Forsgren, Humble, Kim — DevOps, team structure, delivery performance.
9
+
10
+ ## Articles
11
+
12
+ - [Conway's Law — Original Paper (1968)](https://www.melconway.com/Home/Committees_Paper.html) — Melvin Conway's original formulation.
13
+ - [Team Topologies — Official Site](https://teamtopologies.com) — Excerpts, diagrams, resources.
14
+ - [Will Larson — An Elegant Puzzle (excerpts)](https://lethain.com/) — Team design, org evolution.
15
+ - [Martin Fowler — Conway's Law](https://martinfowler.com/bliki/ConwaysLaw.html) — Summary and implications.
16
+ - [Spotify Model (and its evolution)](https://engineering.atspotify.com/) — Squad/tribe structure; lessons learned.
17
+
18
+ ## Videos
19
+
20
+ - [LeadDev — Team Topologies Talk](https://leaddev.com/) — Matthew Skelton on team design.
21
+ - [InfoQ — Skelton & Pais on Team Topologies](https://www.infoq.com/presentations/team-topologies/) — Conference talk.
22
+ - [QCon — Building Platform Teams](https://qconlondon.com/) — Platform team design.
23
+ - [StaffEng — Organization Design](https://staffeng.com/) — Staff+ perspectives on org structure.
24
+
25
+ ## Podcasts
26
+
27
+ - [Engineering Culture by InfoQ](https://www.infoq.com/podcasts/engineering-culture/) — Org design, team structure.
28
+ - [LeadDev podcast](https://leaddev.com/podcast) — Leadership, team topologies.
29
+ - [Software Engineering Daily](https://softwareengineeringdaily.com/) — Episodes on Conway's Law, platform teams.
30
+ - [Lenny's Podcast](https://www.lennyspodcast.com/) — Product and eng org design.
31
+
32
+ ## Tools
33
+
34
+ - [Team Topologies — Mapping Template](https://teamtopologies.com/workbook) — Workbook for mapping teams.
35
+ - [Miro](https://miro.com/) — Diagramming team topologies.
36
+ - [Lucidchart](https://www.lucidchart.com/) — Org and architecture diagrams.
37
+ - [Excalidraw](https://excalidraw.com/) — Hand-drawn style diagrams for team mapping.
@@ -0,0 +1,76 @@
1
+ # Team Topologies — Walkthrough
2
+
3
+ ## Before We Begin
4
+
5
+ **Diagnostic:** Conway's Law says organizations design systems that mirror their communication structure. In practice: if you have 3 siloed teams, what kind of architecture do you usually get? Why is that—and what would need to change to get something different?
6
+
7
+ **Checkpoint:** You can explain the link between org structure and system design, and why "reorg to match architecture" often fails without behavior change.
8
+
9
+ ---
10
+
11
+ ## Step 1: Map Your Org to Team Types
12
+
13
+ <!-- hint:diagram mermaid-type="classDiagram" topic="Team types: stream-aligned, platform, enabling, complicated-subsystem" -->
14
+
15
+ **Task:** List the teams in your organization (or a subset). For each, classify: stream-aligned, platform, enabling, or complicated-subsystem. If it doesn't fit, note the gap. Are there teams that *should* exist but don't?
16
+
17
+ **Question:** Where are the mismatches? What would need to change for the structure to better support flow?
18
+
19
+ **Checkpoint:** Every current team is classified; at least one gap or mismatch identified.
20
+
21
+ ---
22
+
23
+ ## Step 2: Identify Interaction Modes
24
+
25
+ <!-- hint:buttons type="single" prompt="When should two teams use X-as-a-Service instead of collaboration?" options="When discovering a new domain,When the consumer needs ongoing support,When the provider has a stable API,When both teams are learning" -->
26
+
27
+ **Task:** Pick 2–3 pairs of teams that work together. For each pair, identify the current interaction mode (collaboration, X-as-a-Service, facilitating). Is it the *right* mode for the context? If not, what would better support flow?
28
+
29
+ **Question:** Are you overusing collaboration (everyone needs to talk to everyone)? Or underusing it where discovery is needed?
30
+
31
+ **Checkpoint:** Interaction modes mapped; at least one recommendation for change.
32
+
33
+ ---
34
+
35
+ ## Step 3: Assess Cognitive Load
36
+
37
+ **Task:** Pick one stream-aligned team you know well. Estimate their cognitive load across intrinsic (domain complexity), extraneous (tooling, process, ambiguity), and germane (learning) dimensions. What's one change that would reduce extraneous load?
38
+
39
+ **Question:** What happens when cognitive load is too high? What are the warning signs?
40
+
41
+ **Checkpoint:** Load assessed; one concrete reduction identified.
42
+
43
+ ---
44
+
45
+ ## Step 4: Define a Team API
46
+
47
+ <!-- hint:list style="cards" -->
48
+ <!-- hint:card type="concept" title="A team API is what the team provides, how to use it, and what to expect—documented for consumers" -->
49
+
50
+ **Task:** If you have (or imagine) a platform team, define its "team API": what it provides, how consumers use it, SLA expectations, and support model. Write it as a one-pager a stream-aligned team could read.
51
+
52
+ **Question:** What makes a team API useful vs. ignored? How do you keep it current?
53
+
54
+ **Checkpoint:** Team API documented; consumable by a stream-aligned team.
55
+
56
+ ---
57
+
58
+ ## Step 5: Plan an Evolution
59
+
60
+ **Task:** Your org is growing. Today: 2 stream-aligned teams, no platform. In 6 months you'll have 5 stream-aligned teams. Draft a team topology evolution: when do you add a platform team? When might you need enabling? What triggers the change?
61
+
62
+ **Question:** What's the cost of adding structure too early? Too late?
63
+
64
+ **Checkpoint:** Evolution plan with triggers and team additions.
65
+
66
+ ---
67
+
68
+ ## Step 6: Avoid Inverse Conway Pitfalls
69
+
70
+ <!-- hint:celebrate -->
71
+
72
+ **Task:** Identify one place where your org (or a past org) reorganized to "match" architecture but didn't change behavior. What stayed the same? What would have been needed (incentives, APIs, culture) to make the reorg stick?
73
+
74
+ **Question:** Why do we often get the org chart right but the behavior wrong?
75
+
76
+ **Checkpoint:** One example of reorg-without-behavior-change; lessons for next time.
@@ -0,0 +1,111 @@
1
+ # Technical Debt — Identifying, Measuring, and Paying It Down
2
+
3
+ <!-- hint:slides topic="Technical debt: Fowler's quadrant, principal vs interest, identification signals, measurement, and paydown strategies" slides="5" -->
4
+
5
+ ## What Technical Debt Is (and Isn't)
6
+
7
+ **Technical debt** is the implied cost of rework caused by choosing a quicker or easier solution now instead of a better one that would take longer. Like financial debt: you get something now, you pay interest (extra effort) later.
8
+
9
+ It isn't:
10
+ - **Bugs** — bugs are defects; debt is structural
11
+ - **Missing features** — that's scope, not debt
12
+ - **"Bad code"** without a decision — debt implies a choice (even if unconscious)
13
+
14
+ ## The Debt Metaphor
15
+
16
+ | Term | Meaning |
17
+ |------|---------|
18
+ | **Principal** | The work to fix the suboptimal design |
19
+ | **Interest** | Extra cost of every change that touches the debt (slower dev, more bugs) |
20
+
21
+ Low-touch code may have low interest; high-touch code has high interest. Pay down high-interest debt first.
22
+
23
+ ## Fowler's Technical Debt Quadrant
24
+
25
+ Not all debt is equal. Martin Fowler divides it by **deliberate vs inadvertent** and **prudent vs reckless**:
26
+
27
+ ```mermaid
28
+ flowchart LR
29
+ subgraph Reckless["Reckless"]
30
+ A1["Inadvertent: We didn't know better"]
31
+ A2["Deliberate: We knew but cut corners"]
32
+ end
33
+ subgraph Prudent["Prudent"]
34
+ B1["Inadvertent: We learned; design should change"]
35
+ B2["Deliberate: Thoughtful tradeoff — plan to pay"]
36
+ end
37
+ ```
38
+
39
+ | | Reckless | Prudent |
40
+ |--|----------|---------|
41
+ | **Deliberate** | "We know we're cutting corners" — often a mistake; interest compounds | "We ship now, plan to fix" — acceptable if you actually pay it |
42
+ | **Inadvertent** | "We didn't know better" — inexperience, learning | "We learned; design should change" — inevitable, even for good teams |
43
+
44
+ **Prudent-deliberate** is the only "good" debt: you choose it knowingly and plan paydown. The rest range from unavoidable (prudent-inadvertent) to harmful (reckless-deliberate).
45
+
46
+ ## Identifying Technical Debt
47
+
48
+ ### Code Smells
49
+ - Long methods, deep nesting
50
+ - Duplication (DRY violations)
51
+ - Shotgun surgery (one change touches many files)
52
+ - Feature envy, God classes
53
+ - Comments that explain bad names instead of fixing them
54
+
55
+ ### Velocity Trends
56
+ - Story points per sprint dropping
57
+ - Same-size features taking longer
58
+ - More bugs per release
59
+
60
+ ### Bug Clusters
61
+ - Same module keeps failing — often a sign of structural debt
62
+
63
+ ## Measuring It
64
+
65
+ | Metric | What It Tells You |
66
+ |--------|-------------------|
67
+ | Cyclomatic complexity | Per-function complexity; high = hard to test |
68
+ | Test coverage | Gaps indicate risky areas |
69
+ | Lead time / cycle time | How long from idea to ship |
70
+ | Bug rate by module | Where debt causes the most pain |
71
+ | Churn (files changed often) | High churn + high complexity = high interest |
72
+
73
+ ## Prioritizing Paydown
74
+
75
+ 1. **Interest rate** — How much does this slow us down? Fix high-touch debt first.
76
+ 2. **Principal size** — Can we pay it in one sprint or does it need a plan?
77
+ 3. **Risk** — Does it cause outages or security issues?
78
+ 4. **Strategic fit** — Are we about to change this area anyway?
79
+
80
+ ## Communicating to Stakeholders
81
+
82
+ - **Speak in outcomes** — "This slows feature X by 2 days per release" not "our code is messy"
83
+ - **Quantify when possible** — "We spend 20% of sprint on workarounds"
84
+ - **Offer options** — "We can pay 1 sprint now or absorb 3x cost over 6 months"
85
+ - **Tie to business goals** — "Fixing this unblocks the Q3 roadmap"
86
+
87
+ ## Strategies for Paydown
88
+
89
+ ### Boy Scout Rule
90
+ Leave code better than you found it. Small, incremental improvement.
91
+
92
+ ### Dedicated Sprints
93
+ Allocate a portion of capacity (e.g., 20%) to debt paydown. Protects against infinite postponement.
94
+
95
+ ### Strangler Fig
96
+ Replace a legacy system gradually by routing new behavior to new code and migrating callers over time. Avoids big-bang rewrites.
97
+
98
+ ### When to Refactor vs Rewrite
99
+ - **Refactor** when the design is salvageable — extract, rename, split. Cheaper, lower risk.
100
+ - **Rewrite** when the design is fundamentally wrong, or the system is small enough that rewrite is faster than untangling. Rare; usually refactor.
101
+
102
+ ---
103
+
104
+ ## Key Takeaways
105
+
106
+ 1. Debt = principal (fix cost) + interest (ongoing cost)
107
+ 2. Quadrant: prudent-deliberate is acceptable; reckless-deliberate is toxic
108
+ 3. Identify via smells, velocity, bug clusters
109
+ 4. Measure and prioritize by interest and risk
110
+ 5. Communicate in business terms; offer clear options
111
+ 6. Prefer incremental paydown (boy scout, strangler fig) over rewrites
@@ -0,0 +1,92 @@
1
+ # Technical Debt Exercises
2
+
3
+ ## Exercise 1: Principal vs Interest
4
+
5
+ **Task:** A payment service has 2000 lines in one file. Every bug fix or feature touches it. Fixing it properly would take 2 sprints. Each change currently takes 2x longer due to complexity.
6
+
7
+ Estimate: (a) Principal (sprint-equivalent), (b) Interest per quarter (assuming 8 changes/quarter), (c) Break-even: after how many quarters does interest exceed principal?
8
+
9
+ **Validation:**
10
+ - [ ] Principal = 2 sprints
11
+ - [ ] Interest = 8 changes × some multiplier (e.g., 1 extra day each = 8 days)
12
+ - [ ] Break-even calculation is coherent
13
+
14
+ **Hints:**
15
+ 1. Principal = one-time cost to fix
16
+ 2. Interest = extra cost per touch × number of touches
17
+ 3. When does cumulative interest > principal?
18
+
19
+ ---
20
+
21
+ ## Exercise 2: Quadrant Classification
22
+
23
+ **Task:** Classify each into Fowler's quadrant (prudent/reckless × deliberate/inadvertent):
24
+
25
+ 1. Team uses `any` everywhere in TypeScript to ship fast; never revisits
26
+ 2. Team picks a framework they've never used; architecture turns out wrong
27
+ 3. Team defers a DB migration to next quarter with a written ticket
28
+ 4. Copy-paste from Stack Overflow without understanding; causes bugs later
29
+
30
+ **Validation:**
31
+ - [ ] (1) Reckless deliberate
32
+ - [ ] (2) Prudent or reckless inadvertent
33
+ - [ ] (3) Prudent deliberate
34
+ - [ ] (4) Reckless inadvertent (or reckless deliberate if they knew)
35
+
36
+ **Hints:**
37
+ 1. Deliberate = they knew they were taking a shortcut
38
+ 2. Prudent = they planned to pay it back
39
+ 3. "Never revisits" = reckless
40
+
41
+ ---
42
+
43
+ ## Exercise 3: Identify and Measure
44
+
45
+ **Task:** Pick a module (real or hypothetical). List 3 code smells, 2 metrics you'd track, and 1 business impact you'd report.
46
+
47
+ **Validation:**
48
+ - [ ] Smells are specific (e.g., "300-line function", "duplicated validation logic")
49
+ - [ ] Metrics are measurable (complexity, coverage, cycle time)
50
+ - [ ] Business impact is in stakeholder language (time, risk, cost)
51
+
52
+ **Hints:**
53
+ 1. Smells: length, duplication, nesting, naming
54
+ 2. Metrics: sonar/ESLint complexity, test coverage, Jira cycle time
55
+ 3. Impact: "Feature X takes 2 days longer" or "Bugs in payment flow"
56
+
57
+ ---
58
+
59
+ ## Exercise 4: Pitch to Stakeholders
60
+
61
+ **Task:** Write a short pitch (5–7 sentences) to get 1 sprint for tech debt paydown. Include: problem, current cost, proposed fix, and what unlocks after.
62
+
63
+ **Validation:**
64
+ - [ ] States the problem in business terms
65
+ - [ ] Quantifies cost (time, risk, or money)
66
+ - [ ] Describes the fix at a high level
67
+ - [ ] Connects paydown to a positive outcome (faster features, fewer bugs)
68
+
69
+ **Hints:**
70
+ 1. Avoid jargon — "slow to change" not "high cyclomatic complexity"
71
+ 2. Use numbers: "20% of sprint on workarounds"
72
+ 3. End with: "After this, we can deliver X faster"
73
+
74
+ ---
75
+
76
+ ## Exercise 5: Refactor vs Strangler vs Rewrite
77
+
78
+ **Task:** For each scenario, choose Refactor, Strangler Fig, or Rewrite. Justify in one sentence.
79
+
80
+ 1. Auth logic is scattered across 10 files; needs centralization
81
+ 2. Legacy PHP app; team wants to move to Node
82
+ 3. One module has wrong abstractions; rest of system is fine
83
+
84
+ **Validation:**
85
+ - [ ] (1) Refactor — extract and consolidate
86
+ - [ ] (2) Strangler (or rewrite if very small) — gradually replace
87
+ - [ ] (3) Refactor — fix one module in place
88
+
89
+ **Hints:**
90
+ 1. Refactor = improve in place
91
+ 2. Strangler = build new around old, migrate incrementally
92
+ 3. Rewrite = replace whole system; rare, high risk
@@ -0,0 +1,39 @@
1
+ slug: technical-debt
2
+ title: "Technical Debt — Identifying, Measuring, and Paying It Down"
3
+ version: 1.0.0
4
+ description: "Understand technical debt, measure it, prioritize paydown, and communicate it to stakeholders."
5
+ category: developer-skills
6
+ tags: [technical-debt, refactoring, code-quality, maintenance, architecture]
7
+ difficulty: intermediate
8
+
9
+ xp:
10
+ read: 15
11
+ walkthrough: 40
12
+ exercise: 25
13
+ quiz: 20
14
+ quiz-perfect-bonus: 10
15
+
16
+ time:
17
+ quick: 5
18
+ read: 20
19
+ guided: 50
20
+
21
+ prerequisites: [code-review]
22
+ related: [clean-code, solid-principles]
23
+
24
+ triggers:
25
+ - "What is technical debt?"
26
+ - "How do I convince my manager to pay down tech debt?"
27
+ - "How do I measure technical debt?"
28
+ - "When should I refactor vs rewrite?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-mermaid, diagram-flow]
32
+ quiz-types: [quiz-matching, quiz-timed-choice]
33
+ playground: null
34
+ slides: true
35
+
36
+ sources:
37
+ - url: "https://martinfowler.com/bliki/TechnicalDebtQuadrant.html"
38
+ label: "Martin Fowler's Tech Debt Quadrant"
39
+ type: docs
@@ -0,0 +1,60 @@
1
+ # Technical Debt Quick Reference
2
+
3
+ ## Debt Metaphor
4
+
5
+ | Term | Meaning |
6
+ |------|---------|
7
+ | Principal | One-time cost to fix the design |
8
+ | Interest | Extra cost per change that touches the debt |
9
+
10
+ ## Fowler's Quadrant
11
+
12
+ | | Reckless | Prudent |
13
+ |--|----------|---------|
14
+ | **Deliberate** | Knew, cut corners, no plan to fix | Knew, planned to pay back |
15
+ | **Inadvertent** | Didn't know, made a mess | Learned; design should change |
16
+
17
+ Prudent deliberate = acceptable. Reckless deliberate = toxic.
18
+
19
+ ## Identifying Debt
20
+
21
+ | Signal | What to Look For |
22
+ |--------|------------------|
23
+ | Code smells | Long functions, duplication, deep nesting, God classes |
24
+ | Velocity | Same features taking longer, points per sprint dropping |
25
+ | Bugs | Same module failing repeatedly |
26
+
27
+ ## Metrics
28
+
29
+ | Metric | Use |
30
+ |--------|-----|
31
+ | Cyclomatic complexity | Per-function complexity |
32
+ | Test coverage | Gaps = risky areas |
33
+ | Lead time / cycle time | Idea → ship |
34
+ | Bug rate by module | Where debt hurts most |
35
+ | Churn | Files changed often = high interest |
36
+
37
+ ## Prioritization
38
+
39
+ 1. **Interest** — High-touch debt first
40
+ 2. **Principal** — Can we pay in one sprint?
41
+ 3. **Risk** — Security, outages
42
+ 4. **Strategy** — Are we changing this area soon?
43
+
44
+ ## Communicating
45
+
46
+ | Do | Don't |
47
+ |----|-------|
48
+ | Quantify impact (time, bugs, risk) | Use jargon (complexity, smells) |
49
+ | Tie to business goals | Say "code is messy" |
50
+ | Offer options and tradeoffs | Demand without context |
51
+
52
+ ## Strategies
53
+
54
+ | Strategy | When |
55
+ |----------|------|
56
+ | Boy Scout Rule | Incremental; leave code better |
57
+ | Dedicated sprints | Allocate % capacity |
58
+ | Strangler Fig | Legacy; replace gradually |
59
+ | Refactor | Design salvageable |
60
+ | Rewrite | Design fundamentally wrong; rare |
@@ -0,0 +1,73 @@
1
+ # Technical Debt Quiz
2
+
3
+ ## Question 1
4
+
5
+ What is "interest" in the technical debt metaphor?
6
+
7
+ A) The time it took to write the original code
8
+ B) The ongoing extra cost of every change that touches the debt
9
+ C) The cost of the initial quick-and-dirty solution
10
+ D) The number of bugs in the code
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: Interest is the recurring cost — each time you work in that area, you pay extra (slower changes, more bugs, harder debugging). Principal is the one-time cost to fix it. -->
14
+
15
+ ## Question 2
16
+
17
+ In Fowler's quadrant, which type of debt is acceptable if you actually pay it?
18
+
19
+ A) Reckless inadvertent
20
+ B) Reckless deliberate
21
+ C) Prudent inadvertent
22
+ D) Prudent deliberate
23
+
24
+ <!-- ANSWER: D -->
25
+ <!-- EXPLANATION: Prudent deliberate means you knowingly took a shortcut with a plan to pay it back. The others either lack awareness (inadvertent) or lack intention to fix (reckless). -->
26
+
27
+ ## Question 3
28
+
29
+ Which is a signal of technical debt rather than debt itself?
30
+
31
+ A) A decision to ship without tests to meet a deadline
32
+ B) A 300-line function with deep nesting
33
+ C) An intentional tradeoff documented in a ticket
34
+ D) A planned migration to a new framework
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: A long, complex function is a "code smell" — a signal that debt may exist. The actual debt is the decision (or lack of decision) that led to it. A, C, D describe decisions or plans. -->
38
+
39
+ ## Question 4
40
+
41
+ When pitching tech debt paydown to a manager, what's most persuasive?
42
+
43
+ A) "Our cyclomatic complexity is high"
44
+ B) "This module causes 40% of our bugs and delays each release by 2 days"
45
+ C) "The code is messy"
46
+ D) "We need to refactor"
47
+
48
+ <!-- ANSWER: B -->
49
+ <!-- EXPLANATION: Stakeholders care about outcomes: bugs, time, risk. Quantifying impact (40% of bugs, 2-day delay) makes the case. Technical jargon (cyclomatic complexity, "messy") doesn't translate. -->
50
+
51
+ ## Question 5
52
+
53
+ When should you prefer refactoring over a full rewrite?
54
+
55
+ A) Never — rewrites are always better
56
+ B) When the design is salvageable and the system isn't tiny
57
+ C) Only when you have infinite time
58
+ D) Rewrites are always cheaper
59
+
60
+ <!-- ANSWER: B -->
61
+ <!-- EXPLANATION: Refactoring (extract, rename, split) is cheaper and lower risk when the design can be improved in place. Rewrites are risky and expensive; use for fundamentally broken or very small systems. -->
62
+
63
+ ## Question 6
64
+
65
+ What does the "Strangler Fig" strategy mean?
66
+
67
+ A) Rewrite the entire system at once
68
+ B) Gradually replace a legacy system by routing new behavior to new code and migrating over time
69
+ C) Ignore the debt until it crashes
70
+ D) Add more tests around the bad code
71
+
72
+ <!-- ANSWER: B -->
73
+ <!-- EXPLANATION: Strangler fig pattern: build new code around the old, route new features to the new system, migrate callers incrementally. Avoids big-bang rewrites and reduces risk. -->
@@ -0,0 +1,25 @@
1
+ # Technical Debt — Resources
2
+
3
+ ## Videos
4
+
5
+ - [Technical Debt Explained](https://www.youtube.com/results?search_query=martin+fowler+technical+debt) — Martin Fowler and others. The metaphor, quadrant, and paydown strategies.
6
+ - [Managing Technical Debt](https://www.youtube.com/watch?v=ZAhN_2lcfSI) — GOTO Conferences. Practical approaches to measurement and communication.
7
+
8
+ ## Articles and Readings
9
+
10
+ - [Technical Debt Quadrant](https://martinfowler.com/bliki/TechnicalDebtQuadrant.html) — Martin Fowler. Prudent/reckless, deliberate/inadvertent. Key framework.
11
+ - [Technical Debt](https://martinfowler.com/bliki/TechnicalDebt.html) — Martin Fowler. Origin of the metaphor.
12
+ - [A Mess Is Not a Technical Debt](https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt) — Uncle Bob. Distinguishes debt from mess; complements Fowler's quadrant.
13
+ - [Strangler Fig Application](https://martinfowler.com/bliki/StranglerFigApplication.html) — Martin Fowler. Incremental replacement of legacy systems.
14
+
15
+ ## Books
16
+
17
+ - **Refactoring** by Martin Fowler — Systematic techniques for paying down debt safely.
18
+ - **Working Effectively with Legacy Code** by Michael Feathers — Strategies for improving code you're afraid to touch.
19
+ - **The Software Craftsman** by Sandro Mancuso — Professional attitude toward quality and debt.
20
+
21
+ ## Tools and Playgrounds
22
+
23
+ - [SonarQube](https://www.sonarqube.org/) — Code quality and technical debt metrics.
24
+ - [ESLint](https://eslint.org/) — JavaScript/TypeScript linting; catches many smells.
25
+ - [CodeClimate](https://codeclimate.com/) — Maintainability and debt metrics.