Files
portfolio/.bmad/core/resources/excalidraw/excalidraw-helpers.md
T
mahdiarghyani 1586bb7f80 chore: add BMAD agent workflows and configuration system
- Add comprehensive agent workflow definitions for 8 specialized roles (analyst, architect, developer, product manager, scrum master, technical writer, UX designer, QA engineer)
- Add 35+ workflow definitions covering analysis, planning, solutioning, and implementation phases
- Add BMAD configuration system with agent, task, tool, workflow, and file manifests
- Add BMM (Business Model Methodology) documentation including quick-start guides, architecture references, and workflow analysis
- Add test architecture knowledge base with 20+ testing patterns and best practices
- Add team configuration templates and party mode setup for collaborative development
- Establish foundation for enterprise agentic development framework with adaptive scaling capabilities
2025-11-30 14:36:05 +03:30

2.7 KiB
Raw Blame History

Excalidraw Element Creation Guidelines

Text Width Calculation

For text elements inside shapes (labels):

text_width = (text.length × fontSize × 0.6) + 20

Round to nearest 10 for grid alignment.

Element Grouping Rules

CRITICAL: When creating shapes with labels:

  1. Generate unique IDs:

    • shape-id for the shape
    • text-id for the text
    • group-id for the group
  2. Shape element must have:

    • groupIds: [group-id]
    • boundElements: [{type: "text", id: text-id}]
  3. Text element must have:

    • containerId: shape-id
    • groupIds: [group-id] (SAME as shape)
    • textAlign: "center"
    • verticalAlign: "middle"
    • width: calculated_width

Grid Alignment

  • Snap all x, y coordinates to 20px grid
  • Formula: Math.round(value / 20) * 20
  • Spacing between elements: 60px minimum

Arrow Creation

Straight Arrows

Use for forward flow (left-to-right, top-to-bottom):

{
  "type": "arrow",
  "startBinding": {
    "elementId": "source-shape-id",
    "focus": 0,
    "gap": 10
  },
  "endBinding": {
    "elementId": "target-shape-id",
    "focus": 0,
    "gap": 10
  },
  "points": [[0, 0], [distance_x, distance_y]]
}

Elbow Arrows

Use for upward flow, backward flow, or complex routing:

{
  "type": "arrow",
  "startBinding": {...},
  "endBinding": {...},
  "points": [
    [0, 0],
    [intermediate_x, 0],
    [intermediate_x, intermediate_y],
    [final_x, final_y]
  ],
  "elbowed": true
}

Update Connected Shapes

After creating arrow, update boundElements on both connected shapes:

{
  "id": "shape-id",
  "boundElements": [
    { "type": "text", "id": "text-id" },
    { "type": "arrow", "id": "arrow-id" }
  ]
}

Theme Application

Theme colors should be applied consistently:

  • Shapes: backgroundColor from theme primary fill
  • Borders: strokeColor from theme accent
  • Text: strokeColor = "#1e1e1e" (dark text)
  • Arrows: strokeColor from theme accent

Validation Checklist

Before saving, verify:

  • All shapes with labels have matching groupIds
  • All text elements have containerId pointing to parent shape
  • Text width calculated properly (no cutoff)
  • Text alignment set (textAlign + verticalAlign)
  • All elements snapped to 20px grid
  • All arrows have startBinding and endBinding
  • boundElements array updated on connected shapes
  • Theme colors applied consistently
  • No metadata or history in final output
  • All IDs are unique

Optimization

Remove from final output:

  • appState object
  • files object (unless images used)
  • All elements with isDeleted: true
  • Unused library items
  • Version history