<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Skills on Marian Zeis Blog</title>
    <link>https://blog.zeis.de/tags/skills/</link>
    <description>Recent content in Skills on Marian Zeis Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Jul 2026 09:00:00 +0200</lastBuildDate>
    <atom:link href="https://blog.zeis.de/tags/skills/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Creating an ARC-1 BTP Diagram with Codex and a draw.io Skill</title>
      <link>https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/</link>
      <pubDate>Thu, 09 Jul 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/</guid>
      <description>&lt;p&gt;I wanted one practical thing: an editable draw.io diagram for ARC-1 on SAP BTP that looks like it belongs in the SAP Architecture Center.&lt;/p&gt;&#xA;&lt;p&gt;My first attempts with generic diagram prompts were not really useful. They often had dark backgrounds, icons that were too large, and arrows running through boxes. I wanted something closer to the SAP examples: a white canvas, the right BTP areas and service icons, understandable flows, and an editable draw.io file that I could still correct by hand.&lt;/p&gt;&#xA;&lt;p&gt;That became &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill&#34;&gt;&lt;code&gt;marianfoo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;, a skill for creating SAP Architecture Center-style &lt;code&gt;.drawio&lt;/code&gt; files from plain text.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-this-started&#34;&gt;Where this started&lt;/h2&gt;&#xA;&lt;p&gt;I did not start this from zero. The main source was SAP itself, and there are two related projects that are easy to mix up:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The &lt;a href=&#34;https://sap.github.io/btp-solution-diagrams/&#34;&gt;SAP BTP Solution Diagram Guidelines&lt;/a&gt; define how these diagrams should look: levels, areas, colors, icons, connectors, labels, and legends. The complete guideline and editable examples are in &lt;a href=&#34;https://github.com/SAP/btp-solution-diagrams&#34;&gt;&lt;code&gt;SAP/btp-solution-diagrams&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;The &lt;a href=&#34;https://architecture.learning.sap.com/&#34;&gt;SAP Architecture Center&lt;/a&gt; publishes real reference architectures for topics such as integration, identity, data, AI, and resiliency. Their source, including many editable &lt;code&gt;.drawio&lt;/code&gt; files, is in &lt;a href=&#34;https://github.com/SAP/architecture-center&#34;&gt;&lt;code&gt;SAP/architecture-center&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The skill bundles selected diagrams and assets from these official sources. This gives the model both parts it needs: the visual rules and real SAP-authored examples.&lt;/p&gt;&#xA;&lt;p&gt;Two community projects also appeared almost at the same time.&lt;/p&gt;&#xA;&lt;p&gt;Wouter Lemaire published &lt;a href=&#34;https://github.com/lemaiwo/btp-drawio-skill&#34;&gt;&lt;code&gt;lemaiwo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt; on April 17. I took inspiration from its Claude marketplace structure and the idea of bundling the SAP icon XML libraries directly with the skill.&lt;/p&gt;&#xA;&lt;p&gt;One day later, &lt;a href=&#34;https://github.com/miyasuta/claude-drawio-btp-diagram&#34;&gt;&lt;code&gt;miyasuta/claude-drawio-btp-diagram&lt;/code&gt;&lt;/a&gt; appeared. I liked its separation between official guidelines, conventions, and concrete draw.io styles. Its center-alignment rule for straight connectors also became an important detail in my implementation.&lt;/p&gt;&#xA;&lt;p&gt;I started my repository on April 22 because I needed the ARC-1 diagram. From there I added a larger SAP Architecture Center corpus, template ranking, asset extraction, built-in fallback layouts, validation, scoring, visual comparison, and the nudge loop.&lt;/p&gt;&#xA;&lt;p&gt;The main lesson stayed simple: do not generate SAP diagrams from scratch when SAP already published the visual language and many real examples.&lt;/p&gt;&#xA;&lt;p&gt;Before the example, it helps to understand what the skill actually does.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-the-skill-works&#34;&gt;How the skill works&lt;/h2&gt;&#xA;&lt;p&gt;Without the skill, the model starts with an empty canvas and has to invent the layout. With the skill, it first decides what kind of diagram is needed and then looks for the closest SAP example.&lt;/p&gt;&#xA;&lt;p&gt;SAP defines three diagram levels based on the audience and required detail:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;L0&lt;/code&gt; is a business overview. It uses only a few blocks and simple neutral arrows. Technical details are left out.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;L1&lt;/code&gt; is a conceptual architecture. It shows named SAP services, the main zones such as BTP and on-premise, and the important flows between them.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;L2&lt;/code&gt; is a logical or technical architecture. It adds protocols, identity and trust flows, connector labels, and a legend. The ARC-1 example in this post is an L2 diagram.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The complete workflow looks like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Your architecture description&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Choose the level and closest SAP example&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copy and adapt the example&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Validate -&amp;gt; render -&amp;gt; inspect -&amp;gt; correct&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Editable .drawio file and PNG&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The repository currently bundles 71 reference templates, 100 SAP BTP service icons, and 448 indexed draw.io assets. Most templates come from the two official SAP repositories above, with a few additional public SAP examples.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Find a starting point.&lt;/strong&gt; &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/scaffold_diagram.py&#34;&gt;&lt;code&gt;scaffold_diagram.py&lt;/code&gt;&lt;/a&gt; ranks the templates and copies the closest one. This copy is the scaffold.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Adapt only what changed.&lt;/strong&gt; The model keeps the SAP layout and uses helpers such as &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/relabel.py&#34;&gt;&lt;code&gt;relabel.py&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/extract_icon.py&#34;&gt;&lt;code&gt;extract_icon.py&lt;/code&gt;&lt;/a&gt;, and &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/extract_asset.py&#34;&gt;&lt;code&gt;extract_asset.py&lt;/code&gt;&lt;/a&gt; to change labels and assets.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Use a smaller fallback when needed.&lt;/strong&gt; If the closest template is much larger than the requested diagram, &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/render_semantic.py&#34;&gt;&lt;code&gt;render_semantic.py&lt;/code&gt;&lt;/a&gt; can create a smaller layout for a few known patterns while keeping the SAP visual rules.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Check the result and look at it.&lt;/strong&gt; &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/autofix.py&#34;&gt;&lt;code&gt;autofix.py&lt;/code&gt;&lt;/a&gt; repairs known mechanical problems. &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/validate.py&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;&lt;/a&gt; checks colors, fonts, icons, labels, and arrow routing. &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/score_corpus.py&#34;&gt;&lt;code&gt;score_corpus.py&lt;/code&gt;&lt;/a&gt; compares the result with the SAP examples. Then &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/iterate.py&#34;&gt;&lt;code&gt;iterate.py&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill/blob/main/plugins/sap-architecture/skills/sap-architecture/scripts/render_compare.py&#34;&gt;&lt;code&gt;render_compare.py&lt;/code&gt;&lt;/a&gt; render the diagram so the model can inspect and correct it.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The important limit is that these checks only understand the file and its visual structure. They do not know if the architecture itself is correct.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-sample-use-case-in-codex&#34;&gt;The sample use case in Codex&lt;/h2&gt;&#xA;&lt;p&gt;For the sample, I used the exact problem that started this project: a developer in VS Code asks an AI assistant to inspect an ABAP class through ARC-1.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Developer and AI assistant in VS Code&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;               MCP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ARC-1 on SAP BTP Cloud Foundry&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Destination + Connectivity + Cloud Connector&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                v&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On-premise SAP ABAP system&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;XSUAA authenticates the client. Destination Service and Connectivity Service route the request through SAP Cloud Connector. Principal Propagation keeps the developer&amp;rsquo;s identity for the ABAP call.&lt;/p&gt;&#xA;&lt;p&gt;The diagram should make this complete path understandable for an SAP platform or development team. I used Codex to create it and kept the first result, the correction, and all validation output for the example below.&lt;/p&gt;&#xA;&lt;p&gt;The skill started as a Claude Code plugin, but the important part is portable. It is a folder with Markdown instructions, SAP templates, local assets, and Python scripts.&lt;/p&gt;&#xA;&lt;p&gt;For Codex I cloned the repository and pointed an &lt;code&gt;AGENTS.md&lt;/code&gt; file at the skill:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/marianfoo/btp-drawio-skill.git&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;For SAP architecture diagrams, use the sap-architecture skill at&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;path&amp;gt;/btp-drawio-skill/plugins/sap-architecture/skills/sap-architecture.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Read SKILL.md completely. Always scaffold before editing. Run autofix,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;validate, score, render, and inspect the image before finishing.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Never write the draw.io XML from scratch.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Codex reads the project instructions and can call the scripts directly. Python 3.8 or newer and shell access are required. The draw.io desktop app is only needed for PNG, SVG, or PDF export.&lt;/p&gt;&#xA;&lt;p&gt;For the example I described one focused L2 architecture:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Create an L2 SAP Architecture Center-style diagram.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;A developer uses an MCP-capable AI assistant in VS Code to inspect an ABAP&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;class through ARC-1. ARC-1 runs on SAP BTP Cloud Foundry and exposes /mcp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;over Streamable HTTP. The client authenticates through XSUAA. ARC-1 resolves&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;a PrincipalPropagation destination, uses Connectivity Service and SAP Cloud&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connector, and reads the on-premise SAP ABAP system through ADT REST.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Zones: Developer Workstation, SAP BTP Cloud Foundry,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Customer On-Premise Network.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Output an editable .drawio, PNG, validation and score results,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;and the numbered flow narration.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;a href=&#34;artifacts/codex-prompt.txt&#34;&gt;complete prompt&lt;/a&gt; and a &lt;a href=&#34;artifacts/codex-agents.txt&#34;&gt;sanitized copy of the &lt;code&gt;AGENTS.md&lt;/code&gt; used for the run&lt;/a&gt; are attached to this post.&lt;/p&gt;&#xA;&lt;p&gt;Codex worked for 6 minutes and 42 seconds. It read the skill, ran the template selector, created a first pass, validated and rendered it, inspected the image, made one correction, and ran the checks again.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Codex run summary showing the selected templates, fallback decision, validator result, final score, and generated artifacts.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/codex-run-summary.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The selector correctly ranked &lt;code&gt;ac_RA0001_E2B_CloudConnector.drawio&lt;/code&gt; first. But this SAP reference has 24 cards and a much larger scope. Removing enough cards for my focused ARC-1 flow would remove more than one third of the template.&lt;/p&gt;&#xA;&lt;p&gt;Codex therefore switched to the skill&amp;rsquo;s built-in &lt;code&gt;on-prem-connectivity&lt;/code&gt; renderer. This was one of the improvements I added: start with the closest SAP example, but do not force a large template into a much smaller use case. The renderer still uses the same SAP palette, dimensions, assets, and validation rules.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-first-pass-scored-100-but-was-wrong&#34;&gt;The first pass scored 100, but was wrong&lt;/h2&gt;&#xA;&lt;p&gt;This was the first complete diagram:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;First generated ARC-1 connectivity diagram. It still contains generic HTTPS, OData/REST, and SAP S/4HANA labels.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/arc-1-btp-cf-onprem-first-pass.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The validator returned &lt;code&gt;OK&lt;/code&gt;, and the reference-free SAP-likeness score was &lt;code&gt;100.0/100&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;That sounds good, but it was still wrong for my use case.&lt;/p&gt;&#xA;&lt;p&gt;The title was generic. The VS Code flow used &lt;code&gt;HTTPS&lt;/code&gt; instead of &lt;code&gt;MCP&lt;/code&gt;. The backend connection said &lt;code&gt;OData/REST&lt;/code&gt;, although ARC-1 uses the ADT REST API. It also named SAP S/4HANA even though I wanted a generic on-premise SAP ABAP system.&lt;/p&gt;&#xA;&lt;p&gt;This is the part I find most useful. A score can tell me that the file follows the expected visual rules. It cannot prove that the architecture says the right thing.&lt;/p&gt;&#xA;&lt;p&gt;Codex inspected the rendered PNG and made one focused correction. It kept the layout and corrected the labels and colors: MCP in teal, XSUAA and Principal Propagation in green, ARC-1 as the purple focus application, and ADT REST for the backend call.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Final ARC-1 on SAP BTP Cloud Foundry diagram after one visual and semantic correction.&#34; loading=&#34;lazy&#34; src=&#34;https://blog.zeis.de/posts/2026-07-10-btp-drawio-skill/images/arc-1-btp-cf-onprem-final.png&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The final result passed validation without errors or warnings. Its SAP-likeness score was &lt;code&gt;96.7/100&lt;/code&gt;, slightly lower than the first pass, but the diagram was now correct for ARC-1. The scorer still reported two vocabulary advisories for &lt;code&gt;OAUTH JWT&lt;/code&gt; and &lt;code&gt;mTLS PP&lt;/code&gt;. I kept them because they explain the exact identity flow and are already part of the skill&amp;rsquo;s L2 layout guidance.&lt;/p&gt;&#xA;&lt;p&gt;While preparing this post, I found one more export problem. The draw.io file did not store the white page background explicitly, and one PNG export came out black. I set the page background to white in both attached &lt;code&gt;.drawio&lt;/code&gt; files and exported them again. The validator had accepted the missing value as the default background. This was another useful reminder that I still need to look at the final image.&lt;/p&gt;&#xA;&lt;p&gt;That is also why I would use a strong reasoning model for this task. The skill removes a lot of guessing, but the model still has to read the workflow, choose between a template and fallback, understand the architecture, inspect an image, and notice when a high-scoring result is semantically wrong. I did not compare several Codex models in this run, so this is not a model benchmark.&lt;/p&gt;&#xA;&lt;p&gt;The artifacts from the run are available here:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/run-report.txt&#34;&gt;Full Codex run report&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-first-pass.drawio&#34;&gt;First-pass editable draw.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-final.drawio&#34;&gt;Final editable draw.io&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/arc-1-btp-cf-onprem-flow.txt&#34;&gt;Numbered flow narration&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/first-pass-validation.txt&#34;&gt;First-pass validation&lt;/a&gt; and &lt;a href=&#34;artifacts/first-pass-score.txt&#34;&gt;score&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;artifacts/final-validation.txt&#34;&gt;Final validation&lt;/a&gt; and &lt;a href=&#34;artifacts/final-score.txt&#34;&gt;score&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;how-to-prompt-it&#34;&gt;How to prompt it&lt;/h2&gt;&#xA;&lt;p&gt;The skill works best when the prompt describes an architecture, not only a product list. Include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Level: &lt;code&gt;L0&lt;/code&gt;, &lt;code&gt;L1&lt;/code&gt;, or &lt;code&gt;L2&lt;/code&gt;, based on the audience and required detail.&lt;/li&gt;&#xA;&lt;li&gt;Audience: business overview, solution architecture, or implementation team.&lt;/li&gt;&#xA;&lt;li&gt;Zones: client, SAP BTP, SAP cloud applications, on-premise, or third party.&lt;/li&gt;&#xA;&lt;li&gt;Exact services: this improves SAP icon and asset selection.&lt;/li&gt;&#xA;&lt;li&gt;Backend systems: for example SAP S/4HANA, ECC, BW/4HANA, or a generic ABAP system.&lt;/li&gt;&#xA;&lt;li&gt;Identity: IAS, XSUAA, OAuth, SAML, Principal Propagation, trust, and authorization.&lt;/li&gt;&#xA;&lt;li&gt;Numbered flow steps and protocols such as MCP, HTTPS, ADT REST, OData, A2A, or SAML2/OIDC.&lt;/li&gt;&#xA;&lt;li&gt;Constraints and exclusions: what must be shown and what should stay out.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A weak prompt is:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Draw ARC-1 with BTP and SAP.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That leaves the model guessing about the level, zones, identity, backend protocol, and even the purpose of the diagram.&lt;/p&gt;&#xA;&lt;p&gt;The skill is also an authoring assistant, not a one-shot generator. Give visual feedback such as:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;The icons overlap the text. Use the normal SAP icon size.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;The MCP flow should be teal.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;Cloud Connector belongs in the on-premise network.&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&amp;ldquo;The backend call is ADT REST, not OData.&amp;rdquo;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Specific feedback maps to a concrete edit. &amp;ldquo;Make it better&amp;rdquo; usually does not.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-it-works-and-where-it-stops&#34;&gt;Where it works and where it stops&lt;/h2&gt;&#xA;&lt;p&gt;It works best for a focused L1 or L2 diagram with explicit zones and flows, especially when a reference from the same architecture family exists.&lt;/p&gt;&#xA;&lt;p&gt;Sometimes no close template exists. Then another model retry does not solve the problem. The skill can use a deterministic fallback for a few known patterns, but other diagrams still need manual draw.io work or another reference template.&lt;/p&gt;&#xA;&lt;p&gt;The validator also cannot prove semantic correctness. The Codex run above showed that clearly. A diagram can be valid, visually SAP-like, and still use the wrong protocol or product name.&lt;/p&gt;&#xA;&lt;p&gt;For me, the value is not a perfect architecture from one sentence. The value is a much better editable first draft, a repeatable way to check it, and a clear loop for the last correction.&lt;/p&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/btp-drawio-skill&#34;&gt;&lt;code&gt;marianfoo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/miyasuta/claude-drawio-btp-diagram&#34;&gt;&lt;code&gt;miyasuta/claude-drawio-btp-diagram&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/lemaiwo/btp-drawio-skill&#34;&gt;&lt;code&gt;lemaiwo/btp-drawio-skill&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://sap.github.io/btp-solution-diagrams/&#34;&gt;SAP BTP Solution Diagram Guidelines&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP/btp-solution-diagrams&#34;&gt;&lt;code&gt;SAP/btp-solution-diagrams&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP/architecture-center&#34;&gt;&lt;code&gt;SAP/architecture-center&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1 on GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-27-arc-1/&#34;&gt;Introducing ARC-1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.zeis.de/posts/2026-04-29-arc-1-btp/&#34;&gt;ARC-1 on SAP BTP&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
  </channel>
</rss>
