# Core Excalidraw Resources Universal knowledge for creating Excalidraw diagrams. All agents that create Excalidraw files should reference these resources. ## Purpose Provides the **HOW** (universal knowledge) while agents provide the **WHAT** (domain-specific application). **Core = "How to create Excalidraw elements"** - How to group shapes with text labels - How to calculate text width - How to create arrows with proper bindings - How to validate JSON syntax - Base structure and primitives **Agents = "What diagrams to create"** - Frame Expert (BMM): Technical flowcharts, architecture diagrams, wireframes - Presentation Master (CIS): Pitch decks, creative visuals, Rube Goldberg machines - Tech Writer (BMM): Documentation diagrams, concept explanations ## Files in This Directory ### excalidraw-helpers.md **Universal element creation patterns** - Text width calculation - Element grouping rules (shapes + labels) - Grid alignment - Arrow creation (straight, elbow) - Theme application - Validation checklist - Optimization rules **Agents reference this to:** - Create properly grouped shapes - Calculate text dimensions - Connect elements with arrows - Ensure valid structure ### validate-json-instructions.md **Universal JSON validation process** - How to validate Excalidraw JSON - Common errors and fixes - Workflow integration - Error recovery **Agents reference this to:** - Validate files after creation - Fix syntax errors - Ensure files can be opened in Excalidraw ### library-loader.md (Future) **How to load external .excalidrawlib files** - Programmatic library loading - Community library integration - Custom library management **Status:** To be developed when implementing external library support. ## How Agents Use These Resources ### Example: Frame Expert (Technical Diagrams) ```yaml # workflows/diagrams/create-flowchart/workflow.yaml helpers: '{project-root}/.bmad/core/resources/excalidraw/excalidraw-helpers.md' json_validation: '{project-root}/.bmad/core/resources/excalidraw/validate-json-instructions.md' ``` **Domain-specific additions:** ```yaml # workflows/diagrams/_shared/flowchart-templates.yaml flowchart: start_node: type: ellipse width: 120 height: 60 process_box: type: rectangle width: 160 height: 80 decision_diamond: type: diamond width: 140 height: 100 ``` ### Example: Presentation Master (Creative Visuals) ```yaml # workflows/create-visual-metaphor/workflow.yaml helpers: '{project-root}/.bmad/core/resources/excalidraw/excalidraw-helpers.md' json_validation: '{project-root}/.bmad/core/resources/excalidraw/validate-json-instructions.md' ``` **Domain-specific additions:** ```yaml # workflows/_shared/creative-templates.yaml rube_goldberg: whimsical_connector: type: arrow strokeStyle: dashed roughness: 2 playful_box: type: rectangle roundness: 12 ``` ## What Doesn't Belong in Core **Domain-Specific Elements:** - Flowchart-specific templates (belongs in Frame Expert) - Pitch deck layouts (belongs in Presentation Master) - Documentation-specific styles (belongs in Tech Writer) **Agent Workflows:** - How to create a flowchart (Frame Expert workflow) - How to create a pitch deck (Presentation Master workflow) - Step-by-step diagram creation (agent-specific) **Theming:** - Currently in agent workflows - **Future:** Will be refactored to core as user-configurable themes ## Architecture Principle **Single Source of Truth:** - Core holds universal knowledge - Agents reference core, don't duplicate - Updates to core benefit all agents - Agents specialize with domain knowledge **DRY (Don't Repeat Yourself):** - Element creation logic: ONCE in core - Text width calculation: ONCE in core - Validation process: ONCE in core - Arrow binding patterns: ONCE in core ## Future Enhancements 1. **External Library Loader** - Load .excalidrawlib files from libraries.excalidraw.com 2. **Theme Management** - User-configurable color themes saved in core 3. **Component Library** - Shared reusable components across agents 4. **Layout Algorithms** - Auto-layout helpers for positioning elements