Files
project_for_kamlesh/docs/excalidraw-to-python-agent.md
Vyaas 18a3b464f2 🎉 Initial commit: project scaffold, agent modes, and gnarly_csv example
- Add .roomodes with four custom Roo agents:
    • excalidraw-to-python  – diagram → typed Python skeleton
    • python-coder          – skeleton → production implementation (design patterns)
    • tester                – pytest suite writer & runner
    • orchestrator          – coordinates the full excalidraw→code→test→execute pipeline
- Add src/csv_grok.py and tests/test_csv_grok.py (CSV diff utility)
- Add examples/gnarly_csv/ with gnarly_csv_delta.py and sample data (rev_a/rev_b)
- Add drawings/ with design.excalidraw and gnarly_csv_files.excalidraw
- Add docs/excalidraw-to-python-agent.md
- Add requirements.txt and .gitignore
2026-04-11 15:54:42 -07:00

2.4 KiB

🎨 Excalidraw → Python Agent

What is this mode?

The Excalidraw → Python mode (excalidraw-to-python) is a custom Roo agent that reads .excalidraw diagram files and translates them into strongly-typed skeletal Python code.

It never writes implementation logic — it produces well-structured scaffolding with type annotations, docstrings, and # TODO: markers so a developer can fill in the real logic.


How to activate it

  1. Open the Roo chat panel in VS Code.
  2. Click the mode selector (bottom-left of the chat input).
  3. Choose 🎨 Excalidraw → Python.

Or, if you are already in another mode, ask Roo:

"Switch to Excalidraw → Python mode and parse drawings/design.excalidraw."


What the agent does — step by step

Step What the agent looks for What it produces
1 rectangle / ellipse / diamond shapes + their text labels Python functions or classes
2 arrow elements with startBinding / endBinding Call-chain / data-flow order
3 Free-floating text elements (CLI usage, notes) argparse entry-point
4 Frame labels Module / file boundaries

Rules the agent follows

  • Uses Python 3.10+ type-hint syntax (X | Y, list[str], etc.).
  • Imports from __future__ import annotations at the top.
  • Every function has a typed signature and a docstring.
  • Bodies contain only pass and # TODO: comments.
  • A if __name__ == "__main__": block wires up the CLI.
  • Uses argparse (stdlib) unless the diagram explicitly mentions another CLI library.

Example

Given the diagram in drawings/design.excalidraw the agent produces src/csv_grok.py (see that file for the full output).

The diagram encodes:

CSV File 1 ──┐
             ▼
         Combine (union)  ──►  Analyse (cross-correlate?)
             ▲
CSV File 2 ──┘

CLI: csvGrok file1.csv file2.csv -o analysis.txt

Configuration location

The mode is defined in .roomodes at the project root.
That file is the single source of truth for all custom Roo agents in this project.

// .roomodes
{
  "customModes": [
    {
      "slug": "excalidraw-to-python",
      "name": "🎨 Excalidraw → Python",
      ...
    }
  ]
}

To add more agents, append additional objects to the customModes array.