@shaykec/bridge 0.4.25 → 0.4.26

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 (319) 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 +1 -1
@@ -0,0 +1,57 @@
1
+ # ADR Quick Reference
2
+
3
+ ## What Is an ADR?
4
+
5
+ A short document capturing one architecture decision, its context, and consequences.
6
+
7
+ ## Five Sections
8
+
9
+ | Section | Purpose |
10
+ |--------|---------|
11
+ | Title | Short, descriptive |
12
+ | Status | proposed, accepted, deprecated, superseded |
13
+ | Context | Options, constraints, forces |
14
+ | Decision | What we decided |
15
+ | Consequences | Positive, negative, follow-up |
16
+
17
+ ## Status Lifecycle
18
+
19
+ ```
20
+ Proposed → Accepted
21
+ Accepted → Deprecated (no replacement)
22
+ Accepted → Superseded (replaced by new ADR)
23
+ ```
24
+
25
+ ## When to Write
26
+
27
+ - Decision affects multiple teams or services
28
+ - Reversing would be costly
29
+ - Future developers will wonder "why?"
30
+
31
+ ## When to Skip
32
+
33
+ - Trivial or easily reversible
34
+ - Temporary workaround
35
+ - Purely operational (unless architectural impact)
36
+
37
+ ## File Layout
38
+
39
+ ```
40
+ docs/adr/
41
+ 0001-use-redis-for-sessions.md
42
+ 0002-migrate-to-graphql.md
43
+ ```
44
+
45
+ ## Pitfalls to Avoid
46
+
47
+ - Writing too late
48
+ - One ADR with many decisions (split them)
49
+ - No link to implementation
50
+ - Only positive consequences (be honest)
51
+ - Never updating status when decisions change
52
+
53
+ ## Tools
54
+
55
+ - **adr-tools** — CLI for create, link, supersede
56
+ - **Log4brains** — Web UI, Git integration
57
+ - **Markdown template** — Often enough
@@ -0,0 +1,73 @@
1
+ # ADR Writing Quiz
2
+
3
+ ## Question 1
4
+
5
+ What is the primary purpose of an ADR?
6
+
7
+ A) To document every code change
8
+ B) To capture the reasoning behind significant architecture decisions
9
+ C) To replace design documents
10
+ D) To track project milestones
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: ADRs document why we made important architectural decisions. They preserve context for future readers who would otherwise wonder "why did we do this?" -->
14
+
15
+ ## Question 2
16
+
17
+ Which section of an ADR describes the options and constraints that led to the decision?
18
+
19
+ A) Decision
20
+ B) Consequences
21
+ C) Context
22
+ D) Status
23
+
24
+ <!-- ANSWER: C -->
25
+ <!-- EXPLANATION: Context explains the forces, options, and constraints. It sets the stage so readers understand why the decision mattered. -->
26
+
27
+ ## Question 3
28
+
29
+ When should you use the status "Superseded"?
30
+
31
+ A) When the decision was never implemented
32
+ B) When the decision is replaced by a newer ADR
33
+ C) When the decision is temporarily paused
34
+ D) When the decision is under review
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: Superseded means another ADR has replaced this one. You should link to the new ADR. Use Deprecated when the decision is no longer followed but not replaced. -->
38
+
39
+ ## Question 4
40
+
41
+ A common pitfall when writing ADRs is:
42
+
43
+ A) Writing them too early
44
+ B) Writing them too late, after memory has faded
45
+ C) Using too many bullet points
46
+ D) Including code samples
47
+
48
+ <!-- ANSWER: B -->
49
+ <!-- EXPLANATION: Write ADRs when you make the decision. If you wait, you forget nuances, options considered, and tradeoffs. Late ADRs are often incomplete or inaccurate. -->
50
+
51
+ ## Question 5
52
+
53
+ Where should ADRs typically be stored?
54
+
55
+ A) In a separate wiki
56
+ B) In the project repository (e.g., docs/adr/)
57
+ C) In email threads
58
+ D) In a project management tool
59
+
60
+ <!-- ANSWER: B -->
61
+ <!-- EXPLANATION: Storing ADRs in the repo keeps them versioned, co-located with code, and discoverable. They travel with the project and are easy to find. -->
62
+
63
+ ## Question 6
64
+
65
+ Why is it important to document negative consequences in an ADR?
66
+
67
+ A) To discourage future changes
68
+ B) To provide honest tradeoffs for future readers making related decisions
69
+ C) To satisfy auditors
70
+ D) To reduce the document length
71
+
72
+ <!-- ANSWER: B -->
73
+ <!-- EXPLANATION: Negative consequences help future readers understand tradeoffs. If they face similar choices, they know what downsides to watch for. Honesty builds trust. -->
@@ -0,0 +1,29 @@
1
+ # ADR Writing — Resources
2
+
3
+ ## Foundational Articles
4
+
5
+ - [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions) — Michael Nygard's original ADR article.
6
+ - [ADR GitHub Organisation](https://adr.github.io) — ADR formats, templates, and tools.
7
+ - [MADR (Markdown ADR)](https://adr.github.io/madr/) — Lightweight, Markdown-based ADR template.
8
+
9
+ ## Guides and Examples
10
+
11
+ - [Architecture Decision Records (Nat Pryce)](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions) — Context and motivation.
12
+ - [ADR Examples — Joel Parker Henderson](https://github.com/joelparkerhenderson/architecture-decision-record) — Large collection of ADR examples.
13
+ - [Think Before You Leap — Thomas Guest](https://tomguest.net/writing/think-before-you-leap/) — When and how to use ADRs.
14
+
15
+ ## Tooling
16
+
17
+ - [adr-tools](https://github.com/npryce/adr-tools) — Command-line tool for managing ADRs.
18
+ - [Log4brains](https://github.com/thomvaill/log4brains) — Web-based ADR catalog with Git integration.
19
+ - [adr-manager](https://github.com/adr/madr) — MADR format and tooling.
20
+
21
+ ## Books and Longer Reads
22
+
23
+ - **Documenting Software Architectures** by Bass, Clements, Kazman — Broader documentation context.
24
+ - [Martin Fowler — Architecture Guide](https://martinfowler.com/architecture/) — Architecture documentation practices.
25
+
26
+ ## Videos
27
+
28
+ - [YOW! — Documenting Architecture Decisions](https://www.youtube.com/results?search_query=ADR+architecture+decision+record) — Conference talks on ADRs.
29
+ - [InfoQ — ADR in Practice](https://www.infoq.com/) — Search for "architecture decision record" talks.
@@ -0,0 +1,64 @@
1
+ # ADR Writing Walkthrough — Learn by Doing
2
+
3
+ ## Step 1: Identify a Decision Worth Documenting
4
+
5
+ **Task:** Think of a recent technical decision (yours or your team's): framework choice, database, API style, deployment model. Write one sentence: "We decided X because Y."
6
+
7
+ **Question:** Would a developer joining in 6 months benefit from knowing this? What would they assume incorrectly without it?
8
+
9
+ **Checkpoint:** You have a concrete decision and a reason someone would care.
10
+
11
+ ---
12
+
13
+ ## Step 2: Draft the Context Section
14
+
15
+ **Task:** For that decision, write the **Context** section. Include: (1) the problem or opportunity, (2) the options considered, (3) the constraints (time, team, tech stack).
16
+
17
+ **Question:** What did you leave out? Is there a constraint that might change and invalidate the decision?
18
+
19
+ **Checkpoint:** Context is 2–4 paragraphs; a reader can see why the decision mattered.
20
+
21
+ ---
22
+
23
+ ## Step 3: Write the Decision and Consequences
24
+
25
+ **Task:** Add **Decision** (one clear paragraph) and **Consequences** (at least one positive and one negative).
26
+
27
+ **Question:** Why is it valuable to document negative consequences? What happens if you only list positives?
28
+
29
+ **Checkpoint:** Decision is unambiguous; consequences are honest and useful for future readers.
30
+
31
+ ---
32
+
33
+ ## Step 4: Choose Status and Add Metadata
34
+
35
+ <!-- hint:buttons type="single" prompt="What status applies to your ADR?" options="A: Proposed,B: Accepted,C: Superseded" -->
36
+ <!-- hint:card type="tip" title="Use 'proposed' for open decisions; 'accepted' once the team has committed" -->
37
+
38
+ **Task:** Add a **Title** and **Status** (proposed or accepted). If the decision is already made, use accepted. Add a date.
39
+
40
+ **Question:** When would you use "proposed" vs "accepted"? What does "superseded" mean for an older ADR?
41
+
42
+ **Checkpoint:** The ADR has a clear status and can be filed in `docs/adr/`.
43
+
44
+ ---
45
+
46
+ ## Step 5: Link to Code (Optional but Valuable)
47
+
48
+ <!-- hint:code language="markdown" highlight="1,2" -->
49
+
50
+ **Task:** If the decision is implemented, add a line like "Implemented in `[path/to/file]`" or "See PR #123." If not yet implemented, note "To be implemented."
51
+
52
+ **Question:** Why does linking to code help? What if the code has drifted from the decision?
53
+
54
+ **Checkpoint:** Future readers can trace from ADR to implementation.
55
+
56
+ ---
57
+
58
+ ## Step 6: When *Not* to Write an ADR
59
+
60
+ **Task:** Consider these: (a) "We use 2 spaces for indentation." (b) "We chose React over Vue." (c) "We restarted the server to fix the bug." Which would you document as an ADR, and which would you skip?
61
+
62
+ **Question:** What's the cost of over-documenting? When does the overhead outweigh the benefit?
63
+
64
+ **Checkpoint:** You can articulate the threshold: significant, costly-to-reverse, or confusing-without-context decisions merit an ADR.
@@ -0,0 +1,120 @@
1
+ # AI Agents — Tool Use, Planning, and Autonomous Workflows
2
+
3
+ <!-- hint:slides topic="AI agents: observe-think-act loop, tool use and MCP, planning strategies, memory, and multi-agent systems" slides="6" -->
4
+
5
+ ## What Makes an Agent?
6
+
7
+ An **AI agent** combines an LLM with **tools** and a **control loop**. Instead of just generating text, the agent can take actions: search the web, run code, query a database, call APIs. The loop: observe → think → act → observe.
8
+
9
+ ## The Agent Loop
10
+
11
+ ```mermaid
12
+ flowchart TB
13
+ subgraph loop["Agent Loop"]
14
+ O[Observe: state, tools, feedback]
15
+ T[Think: plan, decide]
16
+ A[Act: call tool or respond]
17
+ end
18
+ O --> T --> T --> A
19
+ A -->|Tool result| O
20
+ A -->|Final answer| End[End]
21
+ ```
22
+
23
+ 1. **Observe** — Current state, available tools, user input, tool outputs
24
+ 2. **Think** — Plan next step, choose tool or respond
25
+ 3. **Act** — Execute tool call or produce final answer
26
+ 4. **Observe** — Incorporate tool result; repeat until done
27
+
28
+ ## Tool Use / Function Calling
29
+
30
+ **Function calling** (or tool use) lets the model request structured actions. You define tools with:
31
+
32
+ - **Name** — e.g., `search_web`
33
+ - **Description** — What it does; the model uses this to choose
34
+ - **Parameters** — JSON schema (inputs the tool needs)
35
+
36
+ The model outputs a tool call (name + arguments); your code executes it and returns the result; the model sees the result and continues.
37
+
38
+ ## MCP — Model Context Protocol
39
+
40
+ **MCP** is an open standard for exposing tools to LLMs. Instead of each app defining its own format, MCP defines:
41
+
42
+ - How tools are described (schemas)
43
+ - How to invoke them
44
+ - How to stream results
45
+
46
+ Tools (file systems, databases, APIs, custom logic) can be packaged as MCP servers and used by any MCP-compatible client.
47
+
48
+ ## Planning Strategies
49
+
50
+ | Strategy | Idea |
51
+ |----------|------|
52
+ | **ReAct** | Reason + Act: alternate reasoning steps and tool calls in the same output |
53
+ | **Chain-of-thought planning** | Plan steps in text before acting; then execute |
54
+ | **Reflexion** | Reflect on failures; update plan and retry |
55
+
56
+ The agent chooses when to use tools vs. when to answer directly.
57
+
58
+ ## Memory
59
+
60
+ - **Short-term** — The current conversation (context window). All prior turns and tool results.
61
+ - **Long-term** — External store (vector DB, key-value) the agent can read/write across sessions.
62
+
63
+ Agents often use RAG for long-term knowledge and a session store for the current task.
64
+
65
+ ## Multi-Agent Systems
66
+
67
+ Multiple agents can cooperate:
68
+
69
+ ```mermaid
70
+ flowchart TB
71
+ subgraph orch["Orchestrator"]
72
+ O[Coordinator Agent]
73
+ end
74
+ subgraph workers["Workers"]
75
+ A1[Researcher]
76
+ A2[Coder]
77
+ A3[Reviewer]
78
+ end
79
+ O --> A1
80
+ O --> A2
81
+ O --> A3
82
+ A1 --> O
83
+ A2 --> O
84
+ A3 --> O
85
+ ```
86
+
87
+ - **Orchestrator** — Delegates subtasks, merges results
88
+ - **Specialists** — Researcher (search), Coder (write code), Reviewer (check quality)
89
+
90
+ ## Safety
91
+
92
+ | Concern | Mitigation |
93
+ |---------|------------|
94
+ | **Sandboxing** | Run tools in isolated env; limit file/network access |
95
+ | **Human-in-the-loop** | Require approval for sensitive actions (e.g., deploy, pay) |
96
+ | **Guardrails** | Validate inputs/outputs; block dangerous patterns |
97
+ | **Rate limits** | Prevent runaway loops and cost explosions |
98
+
99
+ ## Real-World Examples
100
+
101
+ - **Claude Code** — Coding agent with file edit, shell, web search
102
+ - **Research agents** — Search, summarize, cite
103
+ - **Customer support** — Query KB, create tickets, escalate
104
+
105
+ ## Current Limitations
106
+
107
+ - **Hallucinated tool calls** — Model may invent tool names or parameters
108
+ - **Infinite loops** — Agent keeps retrying without progress
109
+ - **Cost** — Many tool calls = many tokens
110
+ - **Brittleness** — Unclear tool descriptions lead to wrong choices
111
+
112
+ ---
113
+
114
+ ## Key Takeaways
115
+
116
+ 1. **Agent = LLM + tools + loop** — observe, think, act, repeat
117
+ 2. **Tool use** — Define schemas; model chooses and calls; you execute
118
+ 3. **MCP** — Standard way to expose tools to LLMs
119
+ 4. **Planning** — ReAct, CoT, Reflexion; balance reasoning vs. acting
120
+ 5. **Safety** — Sandbox, human-in-the-loop, guardrails
@@ -0,0 +1,82 @@
1
+ # AI Agents Exercises
2
+
3
+ ## Exercise 1: Write a Tool Schema
4
+
5
+ **Task:** Write a JSON schema for a tool that searches a vector database. Parameters: `query` (string), `top_k` (number, default 5), `filter` (optional object with `category`). Include a clear description the model can use to decide when to call it.
6
+
7
+ **Validation:**
8
+ - [ ] Has name, description, parameters
9
+ - [ ] Parameters match the spec (query, top_k, filter)
10
+ - [ ] Description explains when to use (e.g., "semantic search over indexed documents")
11
+
12
+ **Hints:**
13
+ 1. Description: "Search the vector database for documents similar to the query."
14
+ 2. `top_k`: integer, default 5
15
+ 3. `filter`: optional, e.g., `{ "category": "docs" }`
16
+
17
+ ---
18
+
19
+ ## Exercise 2: Implement the Agent Loop (Pseudocode)
20
+
21
+ **Task:** Write pseudocode for the main agent loop: (1) Receive user message, (2) Call LLM with tools, (3) If LLM returns tool call, execute and append result to messages, (4) Repeat until LLM returns final answer. Include a max-iterations guard.
22
+
23
+ **Validation:**
24
+ - [ ] Loop: get LLM response → if tool call, execute → add result → repeat
25
+ - [ ] Max iterations to prevent infinite loops
26
+ - [ ] Stops when LLM returns text (no tool call)
27
+
28
+ **Hints:**
29
+ 1. `while True` with `max_steps` counter
30
+ 2. Check response type: `tool_calls` vs `content`
31
+ 3. Append `{"role": "tool", "content": result}` and loop
32
+
33
+ ---
34
+
35
+ ## Exercise 3: Plan for Failure Modes
36
+
37
+ **Task:** List 5 failure modes for an agent that uses web search + summarization. For each, propose a mitigation (retry, fallback, user message, etc.).
38
+
39
+ **Validation:**
40
+ - [ ] Covers: no results, timeout, malformed response, rate limit, irrelevant results
41
+ - [ ] Each has a concrete mitigation
42
+
43
+ **Hints:**
44
+ 1. No results → retry with different query or tell user
45
+ 2. Timeout → retry once, then fail gracefully
46
+ 3. Malformed → validate schema; ask model to fix or skip
47
+ 4. Rate limit → backoff, queue, or inform user
48
+ 5. Irrelevant → re-rank, filter, or prompt for refinement
49
+
50
+ ---
51
+
52
+ ## Exercise 4: Design Human-in-the-Loop
53
+
54
+ **Task:** Your agent can create calendar events. Design a human-in-the-loop flow: when does the agent pause? What does the user see? What can they do (approve, reject, edit)? Draw or describe the flow.
55
+
56
+ **Validation:**
57
+ - [ ] Agent pauses before creating (or similar destructive action)
58
+ - [ ] User sees proposed action (e.g., event details)
59
+ - [ ] User can approve, reject, or edit
60
+ - [ ] Describes what happens after each choice
61
+
62
+ **Hints:**
63
+ 1. Agent proposes → "Create event: X at Y. Approve? [Y/N/Edit]"
64
+ 2. Edit → agent updates proposal
65
+ 3. Approve → agent executes
66
+ 4. Reject → agent stops or suggests alternative
67
+
68
+ ---
69
+
70
+ ## Exercise 5: Compare Agent Architectures
71
+
72
+ **Task:** Compare a single-agent design vs. a multi-agent design for "Answer customer support questions using our docs." For each, list: (a) tools/agents, (b) pros, (c) cons, (d) when you'd choose it.
73
+
74
+ **Validation:**
75
+ - [ ] Single: one agent + search + docs tools; simpler, may be slower
76
+ - [ ] Multi: orchestrator + retrieval agent + answer agent; more modular, more complex
77
+ - [ ] Clear recommendation with justification
78
+
79
+ **Hints:**
80
+ 1. Single: one agent does search + read + answer
81
+ 2. Multi: retrieval agent finds docs, answer agent synthesizes
82
+ 3. Choose single for simplicity; multi for scale or specialization
@@ -0,0 +1,42 @@
1
+ slug: ai-agents
2
+ title: "AI Agents — Tool Use, Planning, and Autonomous Workflows"
3
+ version: 1.0.0
4
+ description: "Learn how AI agents combine LLMs with tools, the agent loop, MCP, planning strategies, and safety considerations."
5
+ category: ai-and-llm
6
+ tags: [ai-agents, tool-use, planning, autonomous, mcp, function-calling]
7
+ difficulty: advanced
8
+
9
+ xp:
10
+ read: 20
11
+ walkthrough: 50
12
+ exercise: 30
13
+ quiz: 25
14
+ quiz-perfect-bonus: 15
15
+
16
+ time:
17
+ quick: 5
18
+ read: 25
19
+ guided: 60
20
+
21
+ prerequisites: [llm-fundamentals]
22
+ related: [ai-pair-programming, rag-fundamentals]
23
+
24
+ triggers:
25
+ - "What are AI agents?"
26
+ - "How do AI agents use tools?"
27
+ - "What is function calling?"
28
+ - "How do autonomous AI workflows work?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-mermaid, diagram-architecture]
32
+ quiz-types: [quiz-drag-order, quiz-matching]
33
+ playground: bash
34
+ slides: true
35
+
36
+ sources:
37
+ - url: "https://docs.anthropic.com/en/docs/build-with-claude/tool-use"
38
+ label: "Anthropic Tool Use Documentation"
39
+ type: docs
40
+ - url: "https://modelcontextprotocol.io"
41
+ label: "Model Context Protocol (MCP)"
42
+ type: docs
@@ -0,0 +1,60 @@
1
+ # AI Agents Quick Reference
2
+
3
+ ## Agent = LLM + Tools + Loop
4
+
5
+ ```
6
+ Observe → Think → Act → Observe (repeat)
7
+ ```
8
+
9
+ ## Tool Schema
10
+
11
+ ```json
12
+ {
13
+ "name": "tool_name",
14
+ "description": "What it does (model uses this to decide)",
15
+ "parameters": {
16
+ "query": { "type": "string" },
17
+ "top_k": { "type": "number", "default": 5 }
18
+ }
19
+ }
20
+ ```
21
+
22
+ ## MCP
23
+
24
+ - **Model Context Protocol** — Standard for tool exposure
25
+ - Tools as MCP servers; any MCP client can use them
26
+ - [modelcontextprotocol.io](https://modelcontextprotocol.io)
27
+
28
+ ## Planning Strategies
29
+
30
+ | Strategy | Approach |
31
+ |----------|----------|
32
+ | ReAct | Alternate reasoning + tool calls |
33
+ | CoT planning | Plan in text, then execute |
34
+ | Reflexion | Reflect on failures, retry |
35
+
36
+ ## Memory
37
+
38
+ | Type | Scope |
39
+ |------|-------|
40
+ | Short-term | Current conversation (context) |
41
+ | Long-term | Vector DB, key-value across sessions |
42
+
43
+ ## Safety Checklist
44
+
45
+ - [ ] Sandbox tools (limit file/network)
46
+ - [ ] Human-in-the-loop for sensitive actions
47
+ - [ ] Guardrails (input/output validation)
48
+ - [ ] Max iterations / rate limits
49
+
50
+ ## Multi-Agent
51
+
52
+ - **Orchestrator** — Delegates, merges results
53
+ - **Specialists** — Focused tools and tasks
54
+
55
+ ## One-Liners
56
+
57
+ - **Loop** — Observe, think, act, repeat.
58
+ - **Tools** — Define schema; model chooses and calls.
59
+ - **MCP** — Standard interface for tools.
60
+ - **Safety** — Sandbox, human approval, guardrails.
@@ -0,0 +1,103 @@
1
+ # AI Agents Quiz
2
+
3
+ ## Question 1
4
+
5
+ What are the three main components of an AI agent?
6
+
7
+ A) Model, data, and compute
8
+ B) LLM, tools, and a control loop
9
+ C) Prompt, response, and feedback
10
+ D) Training, inference, and deployment
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: An AI agent combines an LLM (for reasoning and language), tools (for actions like search, code execution), and a control loop (observe → think → act → observe). -->
14
+
15
+ ## Question 2
16
+
17
+ What does MCP stand for and what does it provide?
18
+
19
+ A) Model Context Protocol — a standard way to expose tools to LLMs
20
+ B) Machine Learning Pipeline — a training workflow
21
+ C) Multi-tenant Compute Platform — cloud infrastructure
22
+ D) Modular Context Processor — a type of neural layer
23
+
24
+ <!-- ANSWER: A -->
25
+ <!-- EXPLANATION: MCP (Model Context Protocol) is an open standard for defining and exposing tools to LLMs, enabling interoperability between different agents and tool servers. -->
26
+
27
+ ## Question 3
28
+
29
+ In the ReAct pattern, what does the agent alternate between?
30
+
31
+ A) Training and inference
32
+ B) Reasoning and tool calls
33
+ C) Prompting and fine-tuning
34
+ D) Search and retrieval
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: ReAct (Reason + Act) alternates between explicit reasoning steps and tool calls. The model thinks, then acts, then thinks again based on the result. -->
38
+
39
+ ## Question 4
40
+
41
+ Drag these agent loop steps into the correct order:
42
+
43
+ <!-- VISUAL: quiz-drag-order -->
44
+
45
+ A) Observe → Think → Act → Observe (repeat)
46
+ B) Act → Think → Observe → Act
47
+ C) Think → Observe → Act → Think
48
+ D) Observe → Act → Think → Observe
49
+
50
+ <!-- ANSWER: A -->
51
+ <!-- EXPLANATION: The agent loop is: Observe (state, tools, feedback) → Think (plan, decide) → Act (call tool or respond) → Observe (incorporate result) → repeat until done. -->
52
+
53
+ ## Question 5
54
+
55
+ Which safety measure limits what an agent can do, even if it tries?
56
+
57
+ A) Better prompting
58
+ B) Sandboxing
59
+ C) Few-shot examples
60
+ D) Lower temperature
61
+
62
+ <!-- ANSWER: B -->
63
+ <!-- EXPLANATION: Sandboxing runs tools in an isolated environment with restricted file system, network, and process access. It limits damage even if the model requests dangerous actions. -->
64
+
65
+ ## Question 6
66
+
67
+ What is a common limitation of AI agents?
68
+
69
+ A) They are always faster than humans
70
+ B) They can hallucinate tool names or parameters
71
+ C) They never make mistakes with tools
72
+ D) They don't need guardrails
73
+
74
+ <!-- ANSWER: B -->
75
+ <!-- EXPLANATION: Agents can hallucinate tool calls — inventing tool names, wrong parameters, or calling tools at the wrong time. Validation and clear schemas help reduce this. -->
76
+
77
+ ## Question 7
78
+
79
+ <!-- VISUAL: quiz-drag-order -->
80
+
81
+ Put these agent loop steps in the correct order (from start to iteration):
82
+
83
+ A) Act (invoke tool or respond to user)
84
+ B) Observe (get state, tools, user input)
85
+ C) Think (reason, plan, decide next action)
86
+ D) Observe (incorporate tool result or feedback)
87
+
88
+ <!-- ANSWER: B,C,A,D -->
89
+ <!-- EXPLANATION: The agent first observes the current state, then thinks (reasons and plans), acts (calls a tool or responds), and observes again to incorporate the result. Steps B through D repeat until the task is done. -->
90
+
91
+ ## Question 8
92
+
93
+ <!-- VISUAL: quiz-matching -->
94
+
95
+ Match each agent pattern to its description:
96
+
97
+ A) ReAct → 1) Chain of thought followed by tool call; alternate reasoning and action
98
+ B) Tool use → 2) Agent decides which external capability to invoke
99
+ C) Plan-and-execute → 3) Break task into steps, execute each step
100
+ D) Reflexion → 4) Agent reflects on failures and updates strategy before retrying
101
+
102
+ <!-- ANSWER: A1,B2,C3,D4 -->
103
+ <!-- EXPLANATION: ReAct alternates reasoning and action. Tool use lets the agent invoke external capabilities. Plan-and-execute breaks work into steps. Reflexion uses failure reflection to improve. -->
@@ -0,0 +1,30 @@
1
+ # AI Agents — Resources
2
+
3
+ ## Official Docs
4
+
5
+ - [Anthropic Tool Use](https://docs.anthropic.com/en/docs/build-with-claude/tool-use) — Claude tool use, schemas, and examples.
6
+ - [Model Context Protocol (MCP)](https://modelcontextprotocol.io) — MCP specification and ecosystem.
7
+
8
+ ## Videos
9
+
10
+ - [AI Explained — AI Agents](https://www.youtube.com/results?search_query=AI+Explained+agents) — Agent architectures and tool use.
11
+ - [Andrej Karpathy — AI Agents](https://www.youtube.com/results?search_query=Andrej+Karpathy+agents) — Technical deep dives.
12
+ - [Fireship — AI Agents in 5 Minutes](https://www.youtube.com/results?search_query=Fireship+AI+agents) — Quick overview.
13
+
14
+ ## Articles
15
+
16
+ - [Lilian Weng — LLM Agents](https://lilianweng.github.io/posts/2023-06-23-agent/) — Agent survey: ReAct, tool use, memory.
17
+ - [Chip Huyen — Building AI Agents](https://huyenchip.com/) — Production considerations.
18
+ - [Simon Willison — Agents](https://simonwillison.net/series/ai/) — Practical agent patterns.
19
+
20
+ ## Tools & Frameworks
21
+
22
+ - [LangChain](https://docs.langchain.com) — Agent frameworks, tools, and chains.
23
+ - [LlamaIndex](https://docs.llamaindex.ai) — Data frameworks and agent tooling.
24
+ - [Claude API](https://docs.anthropic.com/en/api) — Tool use with Claude.
25
+ - [OpenAI Function Calling](https://platform.openai.com/docs/guides/function-calling) — Tool use with GPT.
26
+
27
+ ## Papers
28
+
29
+ - [ReAct: Synergizing Reasoning and Acting](https://arxiv.org/abs/2210.03629) — ReAct pattern.
30
+ - [Reflexion](https://arxiv.org/abs/2303.11366) — Self-reflection for agents.