@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.
- package/journeys/ai-engineer.yaml +34 -0
- package/journeys/backend-developer.yaml +36 -0
- package/journeys/business-analyst.yaml +37 -0
- package/journeys/devops-engineer.yaml +37 -0
- package/journeys/engineering-manager.yaml +44 -0
- package/journeys/frontend-developer.yaml +41 -0
- package/journeys/fullstack-developer.yaml +49 -0
- package/journeys/mobile-developer.yaml +42 -0
- package/journeys/product-manager.yaml +35 -0
- package/journeys/qa-engineer.yaml +37 -0
- package/journeys/ux-designer.yaml +43 -0
- package/modules/README.md +52 -0
- package/modules/accessibility-fundamentals/content.md +126 -0
- package/modules/accessibility-fundamentals/exercises.md +88 -0
- package/modules/accessibility-fundamentals/module.yaml +43 -0
- package/modules/accessibility-fundamentals/quick-ref.md +71 -0
- package/modules/accessibility-fundamentals/quiz.md +100 -0
- package/modules/accessibility-fundamentals/resources.md +29 -0
- package/modules/accessibility-fundamentals/walkthrough.md +80 -0
- package/modules/adr-writing/content.md +121 -0
- package/modules/adr-writing/exercises.md +81 -0
- package/modules/adr-writing/module.yaml +41 -0
- package/modules/adr-writing/quick-ref.md +57 -0
- package/modules/adr-writing/quiz.md +73 -0
- package/modules/adr-writing/resources.md +29 -0
- package/modules/adr-writing/walkthrough.md +64 -0
- package/modules/ai-agents/content.md +120 -0
- package/modules/ai-agents/exercises.md +82 -0
- package/modules/ai-agents/module.yaml +42 -0
- package/modules/ai-agents/quick-ref.md +60 -0
- package/modules/ai-agents/quiz.md +103 -0
- package/modules/ai-agents/resources.md +30 -0
- package/modules/ai-agents/walkthrough.md +85 -0
- package/modules/ai-assisted-research/content.md +136 -0
- package/modules/ai-assisted-research/exercises.md +80 -0
- package/modules/ai-assisted-research/module.yaml +42 -0
- package/modules/ai-assisted-research/quick-ref.md +67 -0
- package/modules/ai-assisted-research/quiz.md +73 -0
- package/modules/ai-assisted-research/resources.md +33 -0
- package/modules/ai-assisted-research/walkthrough.md +85 -0
- package/modules/ai-pair-programming/content.md +105 -0
- package/modules/ai-pair-programming/exercises.md +98 -0
- package/modules/ai-pair-programming/module.yaml +39 -0
- package/modules/ai-pair-programming/quick-ref.md +58 -0
- package/modules/ai-pair-programming/quiz.md +73 -0
- package/modules/ai-pair-programming/resources.md +34 -0
- package/modules/ai-pair-programming/walkthrough.md +117 -0
- package/modules/ai-test-generation/content.md +125 -0
- package/modules/ai-test-generation/exercises.md +98 -0
- package/modules/ai-test-generation/module.yaml +39 -0
- package/modules/ai-test-generation/quick-ref.md +65 -0
- package/modules/ai-test-generation/quiz.md +74 -0
- package/modules/ai-test-generation/resources.md +41 -0
- package/modules/ai-test-generation/walkthrough.md +100 -0
- package/modules/api-design/content.md +189 -0
- package/modules/api-design/exercises.md +84 -0
- package/modules/api-design/game.yaml +113 -0
- package/modules/api-design/module.yaml +45 -0
- package/modules/api-design/quick-ref.md +73 -0
- package/modules/api-design/quiz.md +100 -0
- package/modules/api-design/resources.md +55 -0
- package/modules/api-design/walkthrough.md +88 -0
- package/modules/clean-code/content.md +136 -0
- package/modules/clean-code/exercises.md +137 -0
- package/modules/clean-code/game.yaml +172 -0
- package/modules/clean-code/module.yaml +44 -0
- package/modules/clean-code/quick-ref.md +44 -0
- package/modules/clean-code/quiz.md +105 -0
- package/modules/clean-code/resources.md +40 -0
- package/modules/clean-code/walkthrough.md +78 -0
- package/modules/clean-code/workshop.yaml +149 -0
- package/modules/code-review/content.md +130 -0
- package/modules/code-review/exercises.md +95 -0
- package/modules/code-review/game.yaml +83 -0
- package/modules/code-review/module.yaml +42 -0
- package/modules/code-review/quick-ref.md +77 -0
- package/modules/code-review/quiz.md +105 -0
- package/modules/code-review/resources.md +40 -0
- package/modules/code-review/walkthrough.md +106 -0
- package/modules/daily-workflow/content.md +81 -0
- package/modules/daily-workflow/exercises.md +50 -0
- package/modules/daily-workflow/module.yaml +33 -0
- package/modules/daily-workflow/quick-ref.md +37 -0
- package/modules/daily-workflow/quiz.md +65 -0
- package/modules/daily-workflow/resources.md +38 -0
- package/modules/daily-workflow/walkthrough.md +83 -0
- package/modules/debugging-systematically/content.md +139 -0
- package/modules/debugging-systematically/exercises.md +91 -0
- package/modules/debugging-systematically/module.yaml +46 -0
- package/modules/debugging-systematically/quick-ref.md +59 -0
- package/modules/debugging-systematically/quiz.md +105 -0
- package/modules/debugging-systematically/resources.md +42 -0
- package/modules/debugging-systematically/walkthrough.md +84 -0
- package/modules/debugging-systematically/workshop.yaml +127 -0
- package/modules/demo-test/content.md +68 -0
- package/modules/demo-test/exercises.md +28 -0
- package/modules/demo-test/game.yaml +171 -0
- package/modules/demo-test/module.yaml +41 -0
- package/modules/demo-test/quick-ref.md +54 -0
- package/modules/demo-test/quiz.md +74 -0
- package/modules/demo-test/resources.md +21 -0
- package/modules/demo-test/walkthrough.md +122 -0
- package/modules/demo-test/workshop.yaml +31 -0
- package/modules/design-critique/content.md +93 -0
- package/modules/design-critique/exercises.md +71 -0
- package/modules/design-critique/module.yaml +41 -0
- package/modules/design-critique/quick-ref.md +63 -0
- package/modules/design-critique/quiz.md +73 -0
- package/modules/design-critique/resources.md +27 -0
- package/modules/design-critique/walkthrough.md +68 -0
- package/modules/design-patterns/content.md +335 -0
- package/modules/design-patterns/exercises.md +82 -0
- package/modules/design-patterns/game.yaml +55 -0
- package/modules/design-patterns/module.yaml +45 -0
- package/modules/design-patterns/quick-ref.md +44 -0
- package/modules/design-patterns/quiz.md +101 -0
- package/modules/design-patterns/resources.md +40 -0
- package/modules/design-patterns/walkthrough.md +64 -0
- package/modules/exploratory-testing/content.md +133 -0
- package/modules/exploratory-testing/exercises.md +88 -0
- package/modules/exploratory-testing/module.yaml +41 -0
- package/modules/exploratory-testing/quick-ref.md +68 -0
- package/modules/exploratory-testing/quiz.md +75 -0
- package/modules/exploratory-testing/resources.md +39 -0
- package/modules/exploratory-testing/walkthrough.md +87 -0
- package/modules/git/content.md +128 -0
- package/modules/git/exercises.md +53 -0
- package/modules/git/game.yaml +190 -0
- package/modules/git/module.yaml +44 -0
- package/modules/git/quick-ref.md +67 -0
- package/modules/git/quiz.md +89 -0
- package/modules/git/resources.md +49 -0
- package/modules/git/walkthrough.md +92 -0
- package/modules/git/workshop.yaml +145 -0
- package/modules/hiring-interviews/content.md +130 -0
- package/modules/hiring-interviews/exercises.md +88 -0
- package/modules/hiring-interviews/module.yaml +41 -0
- package/modules/hiring-interviews/quick-ref.md +68 -0
- package/modules/hiring-interviews/quiz.md +73 -0
- package/modules/hiring-interviews/resources.md +36 -0
- package/modules/hiring-interviews/walkthrough.md +75 -0
- package/modules/hooks/content.md +97 -0
- package/modules/hooks/exercises.md +69 -0
- package/modules/hooks/module.yaml +39 -0
- package/modules/hooks/quick-ref.md +93 -0
- package/modules/hooks/quiz.md +81 -0
- package/modules/hooks/resources.md +34 -0
- package/modules/hooks/walkthrough.md +105 -0
- package/modules/hooks/workshop.yaml +64 -0
- package/modules/incident-response/content.md +124 -0
- package/modules/incident-response/exercises.md +82 -0
- package/modules/incident-response/game.yaml +132 -0
- package/modules/incident-response/module.yaml +45 -0
- package/modules/incident-response/quick-ref.md +53 -0
- package/modules/incident-response/quiz.md +103 -0
- package/modules/incident-response/resources.md +40 -0
- package/modules/incident-response/walkthrough.md +82 -0
- package/modules/llm-fundamentals/content.md +114 -0
- package/modules/llm-fundamentals/exercises.md +83 -0
- package/modules/llm-fundamentals/module.yaml +42 -0
- package/modules/llm-fundamentals/quick-ref.md +64 -0
- package/modules/llm-fundamentals/quiz.md +103 -0
- package/modules/llm-fundamentals/resources.md +30 -0
- package/modules/llm-fundamentals/walkthrough.md +91 -0
- package/modules/one-on-ones/content.md +133 -0
- package/modules/one-on-ones/exercises.md +81 -0
- package/modules/one-on-ones/module.yaml +44 -0
- package/modules/one-on-ones/quick-ref.md +67 -0
- package/modules/one-on-ones/quiz.md +73 -0
- package/modules/one-on-ones/resources.md +37 -0
- package/modules/one-on-ones/walkthrough.md +69 -0
- package/modules/package.json +9 -0
- package/modules/prioritization-frameworks/content.md +130 -0
- package/modules/prioritization-frameworks/exercises.md +93 -0
- package/modules/prioritization-frameworks/module.yaml +41 -0
- package/modules/prioritization-frameworks/quick-ref.md +77 -0
- package/modules/prioritization-frameworks/quiz.md +73 -0
- package/modules/prioritization-frameworks/resources.md +32 -0
- package/modules/prioritization-frameworks/walkthrough.md +69 -0
- package/modules/prompt-engineering/content.md +123 -0
- package/modules/prompt-engineering/exercises.md +82 -0
- package/modules/prompt-engineering/game.yaml +101 -0
- package/modules/prompt-engineering/module.yaml +45 -0
- package/modules/prompt-engineering/quick-ref.md +65 -0
- package/modules/prompt-engineering/quiz.md +105 -0
- package/modules/prompt-engineering/resources.md +36 -0
- package/modules/prompt-engineering/walkthrough.md +81 -0
- package/modules/rag-fundamentals/content.md +111 -0
- package/modules/rag-fundamentals/exercises.md +80 -0
- package/modules/rag-fundamentals/module.yaml +45 -0
- package/modules/rag-fundamentals/quick-ref.md +58 -0
- package/modules/rag-fundamentals/quiz.md +75 -0
- package/modules/rag-fundamentals/resources.md +34 -0
- package/modules/rag-fundamentals/walkthrough.md +75 -0
- package/modules/react-fundamentals/content.md +140 -0
- package/modules/react-fundamentals/exercises.md +81 -0
- package/modules/react-fundamentals/game.yaml +145 -0
- package/modules/react-fundamentals/module.yaml +45 -0
- package/modules/react-fundamentals/quick-ref.md +62 -0
- package/modules/react-fundamentals/quiz.md +106 -0
- package/modules/react-fundamentals/resources.md +42 -0
- package/modules/react-fundamentals/walkthrough.md +89 -0
- package/modules/react-fundamentals/workshop.yaml +112 -0
- package/modules/react-native-fundamentals/content.md +141 -0
- package/modules/react-native-fundamentals/exercises.md +79 -0
- package/modules/react-native-fundamentals/module.yaml +42 -0
- package/modules/react-native-fundamentals/quick-ref.md +60 -0
- package/modules/react-native-fundamentals/quiz.md +61 -0
- package/modules/react-native-fundamentals/resources.md +24 -0
- package/modules/react-native-fundamentals/walkthrough.md +84 -0
- package/modules/registry.yaml +1650 -0
- package/modules/risk-management/content.md +162 -0
- package/modules/risk-management/exercises.md +86 -0
- package/modules/risk-management/module.yaml +41 -0
- package/modules/risk-management/quick-ref.md +82 -0
- package/modules/risk-management/quiz.md +73 -0
- package/modules/risk-management/resources.md +40 -0
- package/modules/risk-management/walkthrough.md +67 -0
- package/modules/running-effective-standups/content.md +119 -0
- package/modules/running-effective-standups/exercises.md +79 -0
- package/modules/running-effective-standups/module.yaml +40 -0
- package/modules/running-effective-standups/quick-ref.md +61 -0
- package/modules/running-effective-standups/quiz.md +73 -0
- package/modules/running-effective-standups/resources.md +36 -0
- package/modules/running-effective-standups/walkthrough.md +76 -0
- package/modules/solid-principles/content.md +154 -0
- package/modules/solid-principles/exercises.md +107 -0
- package/modules/solid-principles/module.yaml +42 -0
- package/modules/solid-principles/quick-ref.md +50 -0
- package/modules/solid-principles/quiz.md +102 -0
- package/modules/solid-principles/resources.md +39 -0
- package/modules/solid-principles/walkthrough.md +84 -0
- package/modules/sprint-planning/content.md +142 -0
- package/modules/sprint-planning/exercises.md +79 -0
- package/modules/sprint-planning/game.yaml +84 -0
- package/modules/sprint-planning/module.yaml +44 -0
- package/modules/sprint-planning/quick-ref.md +76 -0
- package/modules/sprint-planning/quiz.md +102 -0
- package/modules/sprint-planning/resources.md +39 -0
- package/modules/sprint-planning/walkthrough.md +75 -0
- package/modules/sql-fundamentals/content.md +160 -0
- package/modules/sql-fundamentals/exercises.md +87 -0
- package/modules/sql-fundamentals/game.yaml +105 -0
- package/modules/sql-fundamentals/module.yaml +45 -0
- package/modules/sql-fundamentals/quick-ref.md +53 -0
- package/modules/sql-fundamentals/quiz.md +103 -0
- package/modules/sql-fundamentals/resources.md +42 -0
- package/modules/sql-fundamentals/walkthrough.md +92 -0
- package/modules/sql-fundamentals/workshop.yaml +109 -0
- package/modules/stakeholder-communication/content.md +186 -0
- package/modules/stakeholder-communication/exercises.md +87 -0
- package/modules/stakeholder-communication/module.yaml +38 -0
- package/modules/stakeholder-communication/quick-ref.md +89 -0
- package/modules/stakeholder-communication/quiz.md +73 -0
- package/modules/stakeholder-communication/resources.md +41 -0
- package/modules/stakeholder-communication/walkthrough.md +74 -0
- package/modules/system-design/content.md +149 -0
- package/modules/system-design/exercises.md +83 -0
- package/modules/system-design/game.yaml +95 -0
- package/modules/system-design/module.yaml +46 -0
- package/modules/system-design/quick-ref.md +59 -0
- package/modules/system-design/quiz.md +102 -0
- package/modules/system-design/resources.md +46 -0
- package/modules/system-design/walkthrough.md +90 -0
- package/modules/team-topologies/content.md +166 -0
- package/modules/team-topologies/exercises.md +85 -0
- package/modules/team-topologies/module.yaml +41 -0
- package/modules/team-topologies/quick-ref.md +61 -0
- package/modules/team-topologies/quiz.md +101 -0
- package/modules/team-topologies/resources.md +37 -0
- package/modules/team-topologies/walkthrough.md +76 -0
- package/modules/technical-debt/content.md +111 -0
- package/modules/technical-debt/exercises.md +92 -0
- package/modules/technical-debt/module.yaml +39 -0
- package/modules/technical-debt/quick-ref.md +60 -0
- package/modules/technical-debt/quiz.md +73 -0
- package/modules/technical-debt/resources.md +25 -0
- package/modules/technical-debt/walkthrough.md +94 -0
- package/modules/technical-mentoring/content.md +128 -0
- package/modules/technical-mentoring/exercises.md +84 -0
- package/modules/technical-mentoring/module.yaml +41 -0
- package/modules/technical-mentoring/quick-ref.md +74 -0
- package/modules/technical-mentoring/quiz.md +73 -0
- package/modules/technical-mentoring/resources.md +33 -0
- package/modules/technical-mentoring/walkthrough.md +65 -0
- package/modules/test-strategy/content.md +136 -0
- package/modules/test-strategy/exercises.md +84 -0
- package/modules/test-strategy/game.yaml +99 -0
- package/modules/test-strategy/module.yaml +45 -0
- package/modules/test-strategy/quick-ref.md +66 -0
- package/modules/test-strategy/quiz.md +99 -0
- package/modules/test-strategy/resources.md +60 -0
- package/modules/test-strategy/walkthrough.md +97 -0
- package/modules/test-strategy/workshop.yaml +96 -0
- package/modules/typescript-fundamentals/content.md +127 -0
- package/modules/typescript-fundamentals/exercises.md +79 -0
- package/modules/typescript-fundamentals/game.yaml +111 -0
- package/modules/typescript-fundamentals/module.yaml +45 -0
- package/modules/typescript-fundamentals/quick-ref.md +55 -0
- package/modules/typescript-fundamentals/quiz.md +104 -0
- package/modules/typescript-fundamentals/resources.md +42 -0
- package/modules/typescript-fundamentals/walkthrough.md +71 -0
- package/modules/typescript-fundamentals/workshop.yaml +146 -0
- package/modules/user-story-mapping/content.md +123 -0
- package/modules/user-story-mapping/exercises.md +87 -0
- package/modules/user-story-mapping/module.yaml +41 -0
- package/modules/user-story-mapping/quick-ref.md +64 -0
- package/modules/user-story-mapping/quiz.md +73 -0
- package/modules/user-story-mapping/resources.md +29 -0
- package/modules/user-story-mapping/walkthrough.md +86 -0
- package/modules/writing-prds/content.md +133 -0
- package/modules/writing-prds/exercises.md +93 -0
- package/modules/writing-prds/game.yaml +83 -0
- package/modules/writing-prds/module.yaml +44 -0
- package/modules/writing-prds/quick-ref.md +77 -0
- package/modules/writing-prds/quiz.md +103 -0
- package/modules/writing-prds/resources.md +30 -0
- package/modules/writing-prds/walkthrough.md +87 -0
- package/package.json +2 -2
- package/canvas-dist/assets/_basePickBy-BovdgFIW.js +0 -1
- package/canvas-dist/assets/_basePickBy-BtkHe2u_.js +0 -1
- package/canvas-dist/assets/_basePickBy-C0936578.js +0 -1
- package/canvas-dist/assets/_basePickBy-CE2Qvuh7.js +0 -1
- package/canvas-dist/assets/_basePickBy-DV6sX4CG.js +0 -1
- package/canvas-dist/assets/_basePickBy-DZX6ZNMT.js +0 -1
- package/canvas-dist/assets/_baseUniq-B7dN28TM.js +0 -1
- package/canvas-dist/assets/_baseUniq-Cl23fCdR.js +0 -1
- package/canvas-dist/assets/_baseUniq-CojWFw7B.js +0 -1
- package/canvas-dist/assets/_baseUniq-DA640BJl.js +0 -1
- package/canvas-dist/assets/_baseUniq-Ds-62CCj.js +0 -1
- package/canvas-dist/assets/_baseUniq-KG7SRw9H.js +0 -1
- package/canvas-dist/assets/arc-7E9FFKlC.js +0 -1
- package/canvas-dist/assets/arc-BSMfRZtt.js +0 -1
- package/canvas-dist/assets/arc-C6nT-koR.js +0 -1
- package/canvas-dist/assets/arc-D_fOnjmo.js +0 -1
- package/canvas-dist/assets/arc-Khfvgkr3.js +0 -1
- package/canvas-dist/assets/arc-ieS-i42x.js +0 -1
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DF4t6GQD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DXgSlsio.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DiomxPB4.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DnFaxvXD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-Dt38C0LJ.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-egbtMwua.js +0 -36
- package/canvas-dist/assets/blockDiagram-VD42YOAC-CUNKQd-b.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-D-NiLXxd.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-Dx6Dh9gg.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-_r-PmlQy.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-bvYKZLMc.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-l85QT9Ig.js +0 -122
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-BWKCTyQi.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CbXs2xzC.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CjiS-GNK.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-D7SnLlHp.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-RTTCSVf2.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-yvqJ_AqX.js +0 -10
- package/canvas-dist/assets/channel-CSXq7GP6.js +0 -1
- package/canvas-dist/assets/channel-CvujjGiJ.js +0 -1
- package/canvas-dist/assets/channel-D959Iony.js +0 -1
- package/canvas-dist/assets/channel-DOSwCnrB.js +0 -1
- package/canvas-dist/assets/channel-sw61LzxF.js +0 -1
- package/canvas-dist/assets/channel-vZVnNhOK.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BBjuAwXr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BXRNyucU.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-Bgq5Z77T.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BuoMCMCr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-COD5n7vg.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-K8DepKJO.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Bic_bMrQ.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DEy2QUDq.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Dcgbmfzg.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DfmuNm_E.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DlQRcczm.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-p2qMY-fm.js +0 -1
- package/canvas-dist/assets/chunk-B4BG7PRW-BpbyxBP2.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CCPqvPrP.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CEeDPAki.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-D2UFN_2M.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DFI5h6HC.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DKOiFGMU.js +0 -165
- package/canvas-dist/assets/chunk-DI55MBZ5-BV6nHjNQ.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-CEZJmC0E.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DOZT99Ek.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DmC2LoG2.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DpkcJdZP.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-fVTGx0zh.js +0 -220
- package/canvas-dist/assets/chunk-FMBD7UC4-BOCyQpI7.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-C76FrRL8.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CAq-btWc.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CidVsej6.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DPpfskdX.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DnLtclge.js +0 -15
- package/canvas-dist/assets/chunk-QN33PNHL-BclpCUi8.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DDUw8IU1.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DdJFAUXw.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DjV4jUn9.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-N-HTycqU.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-sd8p21DW.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-B6mT-JkP.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-BCo8pc7x.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-C8IIu6es.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-D9FF492U.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-DWMbUjXT.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-l5FBJ77g.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BASt-UWt.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BCfaZWLT.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BKIk_hBR.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-C4pt-Ir8.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-DwGlELvo.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-jJKG-WvJ.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-DorPdibv.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-DorPdibv.js +0 -1
- package/canvas-dist/assets/clone-74KSto7H.js +0 -1
- package/canvas-dist/assets/clone-CJQgAYVe.js +0 -1
- package/canvas-dist/assets/clone-DLeTuhHE.js +0 -1
- package/canvas-dist/assets/clone-D_IHK_lQ.js +0 -1
- package/canvas-dist/assets/clone-DxMUv1L9.js +0 -1
- package/canvas-dist/assets/clone-UNKf_nED.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BTyQiCkr.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BtPAe24N.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DIjE7V3m.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DKL_BGvE.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-LZ4OsCLU.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-XWeJtgga.js +0 -1
- package/canvas-dist/assets/dagre-6UL2VRFP-BJ2vcFwR.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C1FlE5s8.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C3BWFgl6.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-CUnx73Rf.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-Do10BY1y.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-rOZEkrsg.js +0 -4
- package/canvas-dist/assets/diagram-PSM6KHXK-BGi_qzbq.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-C3Nv7h_j.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-CsMy-r0n.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dj8g7kGt.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dxb1w_7r.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-kVMBkEyV.js +0 -24
- package/canvas-dist/assets/diagram-QEK2KX5R-4bsrr1WZ.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Bv7BmKfI.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-C_FLN6hv.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Csuk5L3z.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-D5Aszgz4.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-DX58f87l.js +0 -43
- package/canvas-dist/assets/diagram-S2PKOQOG-1Q7hwiSd.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-Bz9Vxi5V.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-CdWgZIIc.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DBicbKFU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DsXKwPtU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-L_SMHLXs.js +0 -24
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-BYu7fh6H.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-CvnQ69BF.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-D3xm-Tdm.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DIPpD8sj.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DNgu6dMd.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-Decm8aB4.js +0 -60
- package/canvas-dist/assets/flowDiagram-NV44I4VS-2ymk2kw2.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BEPFOt6U.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BwqXYGfK.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-CS1jax_z.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-DQz5bf7r.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-KW4T1sqF.js +0 -162
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-B811prZt.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-C75pWm7X.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CWsbo0fn.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CbJozPBN.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-Co0cFt4c.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-I4PDqrRh.js +0 -267
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-B-z0cLPt.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-Be40z-LF.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BejNaAVm.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BqWDYr0X.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-DSvWGY-e.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-HLYbyNJ5.js +0 -65
- package/canvas-dist/assets/graph-BE8KKsdf.js +0 -1
- package/canvas-dist/assets/graph-D6DzzszU.js +0 -1
- package/canvas-dist/assets/graph-DFR8Y_8s.js +0 -1
- package/canvas-dist/assets/graph-Da385cDY.js +0 -1
- package/canvas-dist/assets/graph-MU7gZz2B.js +0 -1
- package/canvas-dist/assets/graph-wjSBJwnf.js +0 -1
- package/canvas-dist/assets/index--ztw-8Rw.js +0 -647
- package/canvas-dist/assets/index-5TpIM6B1.js +0 -11
- package/canvas-dist/assets/index-BSswTuBk.js +0 -11
- package/canvas-dist/assets/index-BVvhMmjs.js +0 -11
- package/canvas-dist/assets/index-BY92Mj5g.js +0 -572
- package/canvas-dist/assets/index-CV7palC3.js +0 -572
- package/canvas-dist/assets/index-D9bmQGsB.js +0 -11
- package/canvas-dist/assets/index-DDIKkGv8.js +0 -592
- package/canvas-dist/assets/index-Dyo0NkPb.js +0 -574
- package/canvas-dist/assets/index-iQWajCow.js +0 -572
- package/canvas-dist/assets/index-m68YlAMU.js +0 -11
- package/canvas-dist/assets/index-mEoP57az.js +0 -11
- package/canvas-dist/assets/infoDiagram-HS3SLOUP--9BirqgJ.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-CSJVED2y.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-D68HIb2t.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-DK2VLGGz.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-PaFhn4yD.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-zLNG47sU.js +0 -2
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-Bue2dR2X.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-CrgZfpdU.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-DUxWmkkC.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-OTFkv4pd.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-eK2_Zuu3.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-uds5Tz8D.js +0 -139
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BETdiI7I.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BdVh7KdN.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-Cxl8UM9S.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-DVPlx3I2.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-LtNWeoYB.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-uvhEMvyE.js +0 -89
- package/canvas-dist/assets/layout-1OzszN14.js +0 -1
- package/canvas-dist/assets/layout-CJSupFcF.js +0 -1
- package/canvas-dist/assets/layout-DFRmxN_c.js +0 -1
- package/canvas-dist/assets/layout-DSu-zk7y.js +0 -1
- package/canvas-dist/assets/layout-TGcrvApd.js +0 -1
- package/canvas-dist/assets/layout-eStc8SYK.js +0 -1
- package/canvas-dist/assets/linear-9qlE6xa7.js +0 -1
- package/canvas-dist/assets/linear-CBfFWnLD.js +0 -1
- package/canvas-dist/assets/linear-Cv4ai8Hq.js +0 -1
- package/canvas-dist/assets/linear-DDzz65E6.js +0 -1
- package/canvas-dist/assets/linear-wbIqhwDf.js +0 -1
- package/canvas-dist/assets/linear-wyNKl76F.js +0 -1
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-3l4YzhEM.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-B-KkpNlw.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-DHMHWgmT.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-Dqfyg4Z2.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-NeRYOzsq.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-xyu628P9.js +0 -68
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BWNzVAGj.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-Bm3PXYs-.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BvvN7VvQ.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BwU7AN7W.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-CHgwWCaM.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-DlZc8YOh.js +0 -30
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B-Zd8OFp.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B1CnJyxI.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C0Qo00b9.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C9bx3nEJ.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-UHENkiRO.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-jKfurTPU.js +0 -7
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BPpNNusD.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BwZF1NIK.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-CaT3Frtk.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-Dfoz7R_7.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-DsrX4TT-.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-dmouSXOl.js +0 -64
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BEy-A1Fu.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BViMBiAQ.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BqrM-qWN.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DRkRC9qB.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DbuzKCtn.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-_aHMKbpw.js +0 -10
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-B8FOaL2Q.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-C02NQwOB.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CgyHivPj.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CzW1WaEm.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-DJhHI1pe.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-VFkpAeoG.js +0 -145
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BSqFX4PJ.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BnXhhxkN.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-ClARVrvt.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-CuC6xesY.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-DcAiGjph.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-aBg0hjTp.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-8fib9ftc.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-B-DO0ZqO.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-BksbsE4k.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-C2DJCNPK.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-CeA5jba6.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-zsAyq0tK.js +0 -1
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-BaHdYD2h.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-Bl2hg8IM.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-CrVwLiGm.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-DrXGRjnB.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-cYAwshf6.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-flyL0y-3.js +0 -61
- package/canvas-dist/assets/treemap-GDKQZRPO-C4Hg8kJ_.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DVY2G9qY.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DpLWPA1z.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-Ds86cUVw.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DwmoI6tH.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-SsGFkgVd.js +0 -162
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-B9c1iLBf.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-BpX6MPWa.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CEgW_j0p.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CSEFGEQX.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CnG4XoMc.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-Dftj3Bt3.js +0 -7
|
@@ -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.
|