<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Autonomous Engineering]]></title><description><![CDATA[A newsletter about how software engineering is going from manual to autonomous]]></description><link>https://newsletter.port.io</link><image><url>https://substackcdn.com/image/fetch/$s_!2N-j!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0a55793-bd25-4e72-9a58-94ccaec16bd1_390x390.png</url><title>Autonomous Engineering</title><link>https://newsletter.port.io</link></image><generator>Substack</generator><lastBuildDate>Sat, 16 May 2026 20:02:20 GMT</lastBuildDate><atom:link href="https://newsletter.port.io/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Zohar Einy]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[autonomousengineering@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[autonomousengineering@substack.com]]></itunes:email><itunes:name><![CDATA[Zohar Einy]]></itunes:name></itunes:owner><itunes:author><![CDATA[Zohar Einy]]></itunes:author><googleplay:owner><![CDATA[autonomousengineering@substack.com]]></googleplay:owner><googleplay:email><![CDATA[autonomousengineering@substack.com]]></googleplay:email><googleplay:author><![CDATA[Zohar Einy]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[How to build self-healing CI pipelines]]></title><description><![CDATA[Let's fix one of the most annoying parts of software delivery, failed CI jobs, with a workflow that will fix them autonomously]]></description><link>https://newsletter.port.io/p/how-to-build-self-healing-ci-pipelines</link><guid isPermaLink="false">https://newsletter.port.io/p/how-to-build-self-healing-ci-pipelines</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Tue, 12 May 2026 15:28:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!izv8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I was watching our DevOps team&#8217;s Slack channel the other day and saw the same message come in a few times.</p><p>&#8220;Why did my pipeline break?&#8221;</p><p>Every time, someone from the platform team had to stop what they were doing, read the logs, figure out whose problem it was, and explain it.</p><p>Sometimes it was on the developer&#8217;s side.</p><p>Sometimes it was on the DevOps&#8217; side.</p><p>So I built a workflow that reads the logs, figures out whose problem it is, opens a PR with a fix, and if the change is small enough, merges it automatically. The developer finds out their pipeline broke and was already fixed. And if the workflow does a great job, the platform team doesn&#8217;t find out at all.</p><p>Here&#8217;s how we built it at Port.</p><h2><strong>Step 1: Create your context lake</strong></h2><p>The agentic workflow we&#8217;re going to build needs three things from a context lake to do its job: the logs from the failed run, ownership data to know who&#8217;s responsible, and a skill file that tells it how you want it to behave.</p><ul><li><p><strong>GitHub</strong>: gives the agent live read access to your workflow runs: the failed step, the full log output, the error message, and the code that triggered the run. This is the core or the triage decision.</p></li><li><p><strong>A service catalog with pipeline ownership</strong>: at minimum, a mapping of &#8220;this pipeline belongs to this team.&#8221; The agent needs to answer: given this failed pipeline, who do I assign the PR to?</p></li><li><p><strong>A skill file</strong>: This is where you can tell your agent things like what counts as a developer failure vs a platform failure, how to write the PR description, or when it&#8217;s safe to auto-merge.</p></li></ul><p>Here&#8217;s a minimal example:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">## CI Failure Classification Rules

** Developer issue (assign PR to developer): **

- Build step failed &#8594; platform owns the Dockerfile, not what&#8217;s inside it

- Linter or format check failed &#8594; standard violation

- Pre-merge test suite failed &#8594; new code broke the test

** Platform issue (assign PR to platform team): **

- Push to GitHub failed &#8594; credential, API, or network issue

- Deploy to cloud failed &#8594; infrastructure misconfiguration

- Secret or env var missing &#8594; platform configuration

**Auto-merge if:**

- Change is a single-line config fix

- No infrastructure files modified

- Failure pattern has been seen and resolved before

**PR description format:**

- One sentence explaining what failed and why

- One sentence explaining what the fix does

- Link to the relevant standard or runbook if applicable</code></pre></div><p>Learn more about skills in Port <a href="https://docs.port.io/ai-interfaces/port-mcp-server/skills/">here</a></p><p></p><p><strong>For better performance, you might also want to give it access to:</strong></p><ul><li><p><strong>Deployment history</strong>: recent deployments from the same service help the agent understand if a code change caused the failure</p></li><li><p><strong>CI job failure history</strong>: past failures on this pipeline let the agent recognize known patterns and skip the investigation for things it&#8217;s seen before</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_DA6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_DA6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 424w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 848w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_DA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png" width="1456" height="987" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:987,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_DA6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 424w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 848w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 1272w, https://substackcdn.com/image/fetch/$s_!_DA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff91d4249-5693-4031-85de-cc6aa841ae3e_1582x1072.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Learn more about building a context lake <a href="https://docs.port.io/ai-interfaces/context-lake/">here</a></p><h2><strong>Step 2: Build the agentic workflow</strong></h2><p>Once the context lake is set up, you&#8217;re ready to build the workflow.</p><h3><strong>Set up a trigger: listen for failed CI jobs</strong></h3><p>You can listen for a failed job from anywhere: GitHub Actions, Jenkins, GitLab CI, ArgoCD, wherever you want</p><p>When a CI job status changes to failed, the workflow starts.</p><p>I would recommend not triggering it on every pipeline failure. That could be expensive and noisy. Start with a small part like your pre-merge test suite on production. If it fails, the PR reopens and the merge is blocked. It only runs maybe 10-20 times a day, not thousands, but it&#8217;s urgent to fix.</p><p>Other good starting points: self-serve infra pipelines (create a database, provision a new user), or anything where a failure has a clear owner and the stakes are obvious.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sN0l!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sN0l!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 424w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 848w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 1272w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sN0l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png" width="1456" height="218" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:218,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sN0l!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 424w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 848w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 1272w, https://substackcdn.com/image/fetch/$s_!sN0l!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d5f7cd5-3847-44fa-ac18-847cfcaf5233_1640x246.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h3><strong>Build an agent that triages the failure</strong></h3><p>The first agent reads what failed and classifies it. It has access to everything you set up in step 1: the live logs via GitHub MCP, the ownership data from your catalog, the skill file, and the failure history if you&#8217;ve connected it.</p><p>Any engineer who&#8217;s done this for a while can look at a failed pipeline and tell you whose problem it is. The agent does the same thing using the context lake and the skill you wrote for it.</p><p>The agent cross-references with the skill file to apply your org&#8217;s classification rules. For example:</p><ul><li><p>Logs show <code>npm run build</code> failed with <code>Type error: Property &#8216;id&#8217; does not exist on type &#8216;User&#8217;</code> &#8594; build step, code issue, developer&#8217;s problem</p></li><li><p>Logs show <code>docker push</code> failed with unauthorized: authentication required &#8594; push step, credential expired, DevOp&#8217; problem</p></li><li><p>Logs show eslint failed with <code>no-unused-vars on line 34</code> &#8594; linter step, standard violation, developer&#8217;s problem</p></li><li><p>Logs show terraform apply failed with <code>Error: AccessDenied</code> &#8594; deploy step, IAM misconfiguration, DevOps&#8217; problem</p></li></ul><p>If you&#8217;ve connected CI failure history, it checks whether this exact pattern has come up before and how it was resolved. If it has, it skips the analysis and goes straight to the known fix.</p><p>The output is a classification. Is it a developer issue or platform issue? Plus it adds a plain-language summary of what failed and why.</p><h3><strong>Add a Slack message node</strong></h3><p>The triage agent sends a Slack message with the result: what failed, why, and whose problem it is. The developer or platform engineer sees the classification before a PR ever lands in their inbox.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YkCM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YkCM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 424w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 848w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 1272w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YkCM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png" width="850" height="399" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/302cda85-be05-4ed8-8952-11e2f039045e_850x399.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:399,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YkCM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 424w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 848w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 1272w, https://substackcdn.com/image/fetch/$s_!YkCM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F302cda85-be05-4ed8-8952-11e2f039045e_850x399.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Send the suggested fix to a coding agent</strong></h3><p>The triage agent from the previous step injects a prompt into a coding agent like Cursor or Claude Code. The coding agent reads the classification, looks at the relevant code, and opens a PR with a suggested fix.</p><h3><strong>Add an agent that will assign the PR to the right person (or auto-merge)</strong></h3><p>The next question is: who is assigned to the PR?</p><p>If the developer should be assigned, it looks at who triggered the run.</p><p>But if it&#8217;s not, the agent uses the context lake to decide who is assigned to the PR.</p><p>Build step failed &#8594; developer. The platform owns the Dockerfile, not the code inside it. </p><p>Push to GitHub failed &#8594; platform. That's a credential or network issue, not the developer's code. </p><p>Linter failed &#8594; developer. They broke a standard. </p><p>Deploy to cloud failed &#8594; platform. Something is misconfigured in the infrastructure. </p><p>Pre-merge test suite failed &#8594; usually the developer, since new code broke the test, not the environment.</p><p>But for certain failures (like a config typo, a minor standard deviation, a known-safe pattern), the agent assesses the risk of the fix and merges the PR itself. The CI job reruns and nobody reviews it.</p><p>For anything riskier (larger diffs, infrastructure changes, new failure patterns), it assigns to a human and waits.</p><p>And then you get this in Slack:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!izv8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izv8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 424w, https://substackcdn.com/image/fetch/$s_!izv8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 848w, https://substackcdn.com/image/fetch/$s_!izv8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 1272w, https://substackcdn.com/image/fetch/$s_!izv8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izv8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png" width="1286" height="810" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1286,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:193477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.port.io/i/197359650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!izv8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 424w, https://substackcdn.com/image/fetch/$s_!izv8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 848w, https://substackcdn.com/image/fetch/$s_!izv8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 1272w, https://substackcdn.com/image/fetch/$s_!izv8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40085a7d-286e-4a50-b8ff-53216a052dd6_1286x810.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Learn more about workflows in Port <a href="https://docs.port.io/workflows/overview">here</a></p><h2><strong>Tracking the ROI of self-healing CI pipelines</strong></h2><p>The immediate payoff here is fewer Slack pings and faster fixes.</p><p>The longer-term payoff is that the context lake gets smarter. Every fix the agent opens gets stored as a resolved failure. That way the next time the same pattern shows up, the agent recognizes it, skips the investigation, and goes straight to the fix. The failure history you connected in step 1 is what makes this possible. It becomes like a memory for this agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BIjn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BIjn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 424w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 848w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 1272w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BIjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png" width="1361" height="798" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:1361,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BIjn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 424w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 848w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 1272w, https://substackcdn.com/image/fetch/$s_!BIjn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e09cb9-ed73-4086-9e8e-a462aca8fac6_1361x798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Build it yourself</strong></h2><p>Now you know how to build it yourself.</p><p>As a reminder, you need three things:</p><ol><li><p>A context lake that tracks your services, deployments, and CI/CD jobs</p></li><li><p>Access to the failed CI step</p></li><li><p>An agentic workflow that triggers on status: failed</p></li></ol><p>And of course AI.</p><p>Start with one high-value, low-frequency pipeline. Build the triage agent first. See the classification work on real failures. Then layer in PR creation, assignment logic, and the auto-merge decision.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe to receive new posts directly to your email.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[We built an agent that assesses risk before software releases]]></title><description><![CDATA[Skip the release meeting. This agent assesses deployment risk automatically, then lets developers choose their deployment strategy.]]></description><link>https://newsletter.port.io/p/how-to-build-a-release-risk-assessment-agent</link><guid isPermaLink="false">https://newsletter.port.io/p/how-to-build-a-release-risk-assessment-agent</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Mon, 04 May 2026 14:41:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!evZt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You know that meeting where someone walks through what&#8217;s shipping soon and the room argues about how risky it is?</p><p>A customer told us about how theirs goes.</p><p>Every few weeks they freeze their code and essentially lock themselves in a room and argue about how to manage the next release.</p><p>It got me thinking. Surely an agent can help smooth out the release process.</p><p>How? With an agent that assesses risk for you for upcoming releases.</p><p>And there are lots of risk that can compound:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!evZt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!evZt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 424w, https://substackcdn.com/image/fetch/$s_!evZt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 848w, https://substackcdn.com/image/fetch/$s_!evZt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 1272w, https://substackcdn.com/image/fetch/$s_!evZt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!evZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png" width="587" height="466" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:466,&quot;width&quot;:587,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!evZt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 424w, https://substackcdn.com/image/fetch/$s_!evZt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 848w, https://substackcdn.com/image/fetch/$s_!evZt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 1272w, https://substackcdn.com/image/fetch/$s_!evZt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa34ff6d9-cb58-4c6f-b0b7-31361c4271b4_587x466.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So I decided to build an agent that can help.</p><p>Let me show you how it works.</p><h2><strong>Step 1: Build your context lake</strong></h2><p>To build reliable agents, you first need to build a context lake - the system of records and system of actions for any agent to get reliable data and a library of actions it can take.</p><p>Specifically for a release management agent, you&#8217;ll want to bring in test coverage from your CI pipeline (GitHub Actions, Jenkins, GitLab CI, SonarQube), health status and error rates from your observability stack (Datadog, New Relic, Prometheus/Grafana, Splunk), incident and on-call data (PagerDuty, OpsGenie), and deployment history from your CI/CD.</p><p>Then, make sure your each service has the right information to make it useful for a release agent:</p><ul><li><p><strong>Service tier:</strong> tier-1 (revenue-critical), tier-2, or tier-3</p></li><li><p><strong>Health status:</strong> healthy, degraded, or down right now.</p></li><li><p><strong>Test coverage:</strong> actual percentage, pulled from CI</p></li><li><p><strong>Runbook:</strong> yes or no</p></li><li><p><strong>On-call rotation:</strong> yes or no<br> And the most important one:</p></li><li><p><strong>Dependency graph:</strong> what does this service depend on, and what depends on it</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!U8wy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!U8wy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 424w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 848w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 1272w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!U8wy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png" width="1456" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!U8wy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 424w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 848w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 1272w, https://substackcdn.com/image/fetch/$s_!U8wy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e00cfdb-31a6-4bbc-bebe-fb3899d9a830_2048x1322.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you want to provide your agent even more context, you can start working on more things that could help the agent assess the risk, like:</p><ul><li><p><strong>Change failure rate:</strong> what percentage of past deployments caused a failure or rollback</p></li><li><p><strong>Time since last deployment:</strong> services that haven&#8217;t shipped in months carry accumulated risk. Less familiarity with the process, more untested surface area.</p></li><li><p><strong>Concurrent deployments:</strong> what else is going out in the same window that might affect this release</p></li><li><p><strong>Deployment timing:</strong> Friday afternoon, end of quarter, peak traffic hours</p></li></ul><p>Learn more about building a context lake <a href="https://docs.port.io/ai-interfaces/context-lake/">here</a></p><h2><strong>Step 2: Encode your risk tolerance in a skill file</strong></h2><p>Now that your context lake has all the data an agent needs, you have to tell it how to think about that data. Mostly you want to tell it what kind of risk tolerance you have. And ultimately what you are looking for is a score to tell you how much risk there is in a particular release.</p><p>Leading up to a release in large companies, there&#8217;s usually a checklist. Those checklists usually have items that fall into three categories: hard gates, scoring factors, and contextual factors.</p><p><strong>1. Hard gates</strong></p><p>The release doesn&#8217;t proceed until these are met.</p><p>Some examples:</p><ul><li><p>Tests passing across unit, integration, and e2e</p></li><li><p>Runbook exists for common failure modes</p></li><li><p>On-call assigned and aware of the deployment</p></li><li><p>Rollback steps defined and tested</p></li><li><p>No critical or high-severity security vulnerabilities (from Snyk, SonarQube, or similar)</p></li></ul><p>You can include these in a skill but generally they should be <em>hardcoded</em> into your workflow as human-in-the-loop gates or scorecards. The agent may or may not obey these gates but it&#8217;s worth trying to see how it works for you.</p><p><strong>2. Scoring factors</strong></p><p>These factors contribute to the overall risk score but don&#8217;t block on their own.</p><p>Some examples:</p><ul><li><p>Test coverage</p></li><li><p>Recent incident history</p></li><li><p>Change failure rate</p></li><li><p>Blast radius (how many services are downstream of what&#8217;s changing?)</p></li><li><p>Change size</p></li></ul><p>In the skill, you should assign point values to thresholds for each of these.</p><p><strong>3. Contextual factors</strong></p><p>These don&#8217;t block or score but shift the recommendation:</p><ul><li><p>Friday deploy or day before a public holiday</p></li><li><p>Multiple releases going out in the same window</p></li><li><p>Service hasn&#8217;t been deployed in several months</p></li><li><p>Business-critical period: end of quarter, major customer event, product launch week</p></li></ul><p>In the skill, these become warnings: &#8220;Note these in the summary and factor them into the strategy recommendation.&#8221;</p><p>Here&#8217;s what a well-researched release risk skill looks like:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown"># &#128678; Release Risk Assessment Skill

Use this skill before approving or deploying any release. It turns catalog signals into a clear rollout decision.

---

## &#127919; Outcome

- Identify impacted services, products, and customers

- Detect active incidents in the blast radius

- Evaluate quality signals: tests, scorecards, coverage, incident history

- Recommend one rollout strategy: Canary, Blue-Green, Feature Flags, or Full Send

---

## &#128229; Inputs to Collect from Port

| Signal | Source |

|--------|--------|

| Services in release | `release.includes_services` + `release.deployments &#8594; deployment.service` |

| Blast radius | `product.releases`, `product.services`, `product.customers` |

| Active incidents | `incident.affects_service` where `status` in `open`, `resolving` |

| Release test gates | `test_unit_passed`, `test_integration_passed`, `test_regression_passed`, `test_smoke_passed` |

| Release readiness | `release.scorecards.release_readiness_gates.level` |

| Service readiness | `service.test_coverage`, `service.health_status`, `service.scorecards.release_readiness.level` |

---

## &#128680; Hard Gates &#8212; Block if Any Are True

Do not proceed until these are resolved:

- Tests are not passing (unit, integration, or e2e)

- No runbook exists for this service

- On-call is not assigned or not aware of this deployment

- Rollback steps are not defined or not tested

- Critical or high-severity security vulnerabilities are unresolved

- Release includes DB migrations that have not been tested in staging

- P1/P2 open incidents exist on impacted services

---

## &#128202; Scoring Factors &#8212; Evaluate and Score Low / Medium / High

| Factor | Low | Medium | High |

|--------|-----|--------|------|

| Test coverage | &gt; 80% | 60&#8211;80% | &lt; 60% |

| Change failure rate | &lt; 5% | 5&#8211;15% | &gt; 15% |

| Recent incidents | No P1/P2 in 30 days | P2 in last 30 days | P1 in last 30 days or any open incident |

| Blast radius | 1 service | 2&#8211;4 services | 5+ services |

| Change size | At or below baseline | Moderately above baseline | Significantly above baseline |

**Overall risk score:**

- &#128308; **High:** any hard gate triggered, or 2+ scoring factors are high

- &#128992; **Medium:** no hard gates, 1&#8211;2 scoring factors are medium or high

- &#128994; **Low:** no hard gates, all scoring factors low or medium

---

## &#9873; Contextual Flags &#8212; Note in Summary, Factor into Strategy

These don&#8217;t block or score but shift the recommendation:

- Deploy is on a Friday or the day before a public holiday

- Other releases are deploying in the same window

- Service has not been deployed in 60+ days

- Business-critical period is active (end of quarter, major launch, etc.)

---

## &#129504; Rollout Decision Rules

| Condition | Suggested Strategy | Why |

|-----------|-------------------|-----|

| High blast radius OR multi-service + active incidents | Feature Flags | Max reversibility and fine-grained control |

| Prior rollback history OR risky cutover path | Blue-Green | Fast switch and rollback isolation |

| Some uncertainty but healthy baseline | Canary | Progressive exposure with checkpoints |

| All gates green, no active incidents, low blast radius | Full Send | Lowest operational overhead |

**Strategy details:**

- &#128994; **Full Send (rolling):** Simple, no extra infrastructure. Only when all gates pass and blast radius is low.

- &#128993; **Canary:** Start at 5&#8211;10% of traffic, monitor error rates and latency, expand incrementally. Limits blast radius without full blue-green cost.

- &#128309; **Blue-Green:** Deploy alongside existing environment, switch traffic after validation. Instant rollback if post-deploy checks fail. Use for high-risk releases.

- &#128995; **Feature Flags:** Decouple the deploy from the release. Use when blast radius is high or incidents are active &#8212; kill the feature without a rollback.

&gt; **If the release includes any user-facing feature:** consider a feature flag regardless of risk score.

---

## &#128204; Guardrails &#8212; Never Skip

- If P1/P2 open incidents exist on impacted services: do not Full Send

- If regression or smoke gates fail: block rollout, or use a highly constrained progressive strategy

- If coverage is below threshold and service scorecard is Basic: require tighter rollout controls

- If data is missing: call it out explicitly and default to the safer rollout option

---

## &#129534; Output Format

&#128640; Release Readiness Report

Risk legend: &#128994; Low | &#128992; Medium | &#128308; High

&#129513; Services In This Release

| Service | Deployment(s) | Coverage | Health | Scorecard |

|---------|--------------|----------|--------|-----------|

| [name]  | [deployments] | [%]     | [status] | [level] |

&#128165; Blast Radius

| Services Touched | Products Touched | Customers Touched |

|-----------------|-----------------|-------------------|

| [service list]  | [product list]  | [customer list]   |

&#128680; Active Incidents (Open / Resolving)

| Service | Incident | Severity | Status |

|---------|----------|----------|--------|

| [name]  | [id]     | [P1&#8211;P3]  | [status] |

(omit this section if no active incidents)

&#129514; Quality &amp; Gates

| Check | Result |

|-------|--------|

| Declared release risk | &#128994;/&#128992;/&#128308; [level] |

| Release scorecard | [level] |

| Unit tests | &#9989;/&#10060; |

| Integration tests | &#9989;/&#10060; |

| Regression tests | &#9989;/&#10060; |

| Smoke tests | &#9989;/&#10060; |

&#129517; Rollout Suggestion

[&#128994; Full Send / &#128993; Canary / &#128309; Blue-Green / &#128995; Feature Flags]

[One sentence explaining why this strategy fits &#8212; reference the specific

incident, scorecard gap, blast radius, or risk factor that drove it.]

---

**Legend:**

Risk: &#128994; Low | &#128992; Medium | &#128308; High

Incident status: &#128308; Open | &#128992; Resolving

Rollout: &#128993; Canary | &#128309; Blue-Green | &#128995; Feature Flags | &#128994; Full Send</code></pre></div><p></p><p>Learn more about skills in Port <a href="https://docs.port.io/ai-interfaces/port-mcp-server/skills/">here</a></p><h2><strong>Step 3: Build the risk assessment workflow</strong></h2><p><strong>1. Trigger the workflow manually or when a release is tagged</strong></p><p>You can easily choose what triggers this workflow. Could be when a new release entity is created in Port, or when a release tag is applied in GitHub, or when the release manager triggers the workflow manually. It&#8217;s up to you.</p><p>The release entity you created already has everything attached: the services in scope, deployments, related Jira tickets, etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qmer!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qmer!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 424w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 848w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 1272w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qmer!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png" width="1456" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/be9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qmer!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 424w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 848w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 1272w, https://substackcdn.com/image/fetch/$s_!Qmer!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbe9b3ce9-80cc-4191-a5f4-7156f8d4a301_2048x619.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>2. Create an agent that gathers context and runs the risk analysis</strong></p><p>The agent doesn&#8217;t just just run a query and format the output. It reasons iteratively using all the relevant data in your context lake.</p><p>It starts by reading the release entity: what services are in scope, what&#8217;s linked to it. Then it fetches the scorecard status for each service: test coverage, runbook, on-call, health status. Then it follows the dependency graph, checking each downstream service it finds. If it finds something worth investigating like a degraded service or an open incident, it can look deeper. It follows what it finds.</p><p>The agent follows the skill you wrote for it: what to look for, how to assign a weight what it finds, when to flag a hard gate, how to score the overall risk.</p><p>At the end of the run, it has everything it needs: which services failed their scorecard, what incidents exist in the blast radius, what the dependency chain looks like, and a risk score. Then it writes the summary according to the format you defined in the skill and fires the Slack message.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q06U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q06U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 424w, https://substackcdn.com/image/fetch/$s_!q06U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 848w, https://substackcdn.com/image/fetch/$s_!q06U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 1272w, https://substackcdn.com/image/fetch/$s_!q06U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q06U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png" width="1456" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78505380-b811-413e-973d-b41be65a9cc8_2048x644.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!q06U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 424w, https://substackcdn.com/image/fetch/$s_!q06U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 848w, https://substackcdn.com/image/fetch/$s_!q06U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 1272w, https://substackcdn.com/image/fetch/$s_!q06U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78505380-b811-413e-973d-b41be65a9cc8_2048x644.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>3. The release management team gets a Slack message</strong></p><p>Then the release channel gets a message like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jG6-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jG6-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 424w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 848w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 1272w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jG6-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png" width="1094" height="988" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:988,&quot;width&quot;:1094,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jG6-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 424w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 848w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 1272w, https://substackcdn.com/image/fetch/$s_!jG6-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd21e1a25-fc80-4355-8dcb-3003ed7f4d33_1094x988.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One message that gives the team all the information they need to make a decision. Of course it can be completely customized if you want different information. And you can always open Port for the full context.</p><p><strong>4. The release can be blocked based on your rules</strong></p><p>When a hard gate is triggered, say during an active incident in the blast radius, tier-1 service degraded, or if rollback steps are untested, the deployment actions are disabled and the release gets blocked.</p><p>Only the release manager can unlock it. The override requires a reason, which gets logged to the release entity. That log becomes part of the post-incident record if something goes wrong after an override.</p><p><strong>5. Choose to how to deploy via self-service actions (or investigate more)</strong></p><p>The deployment buttons in Slack trigger self-service actions in Port (if you want them to). The engineer picks the strategy based on the risk report and their judgment. The action runs the deterministic deployment workflow in whatever backend they use: GitHub Actions, Jenkins, ArgoCD.</p><p>But they can also just head back to Port to do some more investigation on their own before committing to a strategy.</p><p>After the deploy, the outcome feeds back into Port. The release entity gets updated with the result: clean ship, hotfix required, or incident triggered. That history becomes part of the context lake. The next time a service is assessed, its release history is part of what the agent reads.</p><p>Learn more about workflows in Port <a href="https://docs.port.io/workflows/overview">here</a></p><h2><strong>Step 4: Track the ROI</strong></h2><p>How do you know if it&#8217;s working? And how do you know that it&#8217;s worth it? (Because someone is definitely going to ask)</p><p>I&#8217;d start with a simple comparison between the agent and someone from the release management team. Track how often the agent agrees with what your release manager would have decided. When it&#8217;s agreeing 80% of the time and up, it&#8217;s time to put more trust into the agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_nPD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_nPD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 424w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 848w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_nPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png" width="1456" height="935" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:935,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_nPD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 424w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 848w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 1272w, https://substackcdn.com/image/fetch/$s_!_nPD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc5ef406-8ab0-4480-8f6f-a38cde8fb93f_1664x1069.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>My suggestion is to try to display some numbers that are easily understandable like meeting hours eliminated or time to deployment decision.</p><p>You should also see some engineering numbers change. The hotfix rate should go down, as should MTTR. Release frequency should go up.</p><p>The agent saves time and catches bad releases. But without tracking it, you won&#8217;t be able to prove it.</p><p>Learn more about building dashboards in Port <a href="https://docs.port.io/customize-pages-dashboards-and-plugins/page/dashboard-page">here</a></p><p>I also recently recorded this video walking through how to build this agent.</p><div id="youtube2-l_R5-Cbxhcc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;l_R5-Cbxhcc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/l_R5-Cbxhcc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div><hr></div><p>I hope you enjoyed reading a more practical post about building agentic workflows. </p><p>Let me know what I should build next!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Drop your email if you want to get future posts delivered to your inbox.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[How to build a skills library for your engineering team]]></title><description><![CDATA[We found a great way to manage skills and distribute them to the whole engineering team]]></description><link>https://newsletter.port.io/p/how-to-build-a-skills-library-for-your-engineering-team</link><guid isPermaLink="false">https://newsletter.port.io/p/how-to-build-a-skills-library-for-your-engineering-team</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Mon, 27 Apr 2026 12:34:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MEJ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago we realized that every engineer on our team was running a different version of their AI coding assistant.</p><p>Not the models, they were all using the latest ones.</p><p>But the skills their agents were using were all over the place. And skills make all the difference.</p><p>Some engineers configured their own skills. Others copied from older versions. And some just took some skills they found online.</p><p>And we had no visibility into any of it because skills are local config files.</p><p>So to solve it we built a skills library. Now every engineer runs one command and gets all the skills delivered to their IDE.</p><p>They get required company standards pulled automatically and they can also load optional skills based on what they&#8217;re building.</p><p>Here&#8217;s how we built it:</p><h2><strong>Step 1: We put all our skills in a library</strong></h2><p>Skill files are just markdown files and they tell AI agents how your company works. You might have one for security conventions, one for incident protocols, and one for coding standards.</p><p>Here&#8217;s an example of our triage incident skill:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Ji7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Ji7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 424w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 848w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 1272w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Ji7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png" width="1456" height="1012" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1012,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7Ji7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 424w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 848w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 1272w, https://substackcdn.com/image/fetch/$s_!7Ji7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F18c36c6e-1097-4036-92ed-02c1ad3a17df_2048x1424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;d suggest keeping them in version control and connecting them to the services and teams they&#8217;re relevant to.</p><p>There are a couple reasons why you&#8217;d want to keep them in version control. </p><p>Firstly, they change a lot and you want to keep track of those changes. </p><p>Second, the destination for the skills is usually an IDE, so having them in git makes it easy for developers to sync them to their IDE.</p><p>Lastly, and most importantly for us, having the skills in GitHub (or any version control) lets us auto-discover them into Port where we can connect them to everything else.</p><p>When skills are scattered (we call them &#8220;shadow skills&#8221;), we find it useful to auto-discover them from as many places as possible.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oK3n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oK3n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 424w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 848w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 1272w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oK3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png" width="655" height="534" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/380ad917-952b-42f1-870e-3800e98527b5_655x534.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:534,&quot;width&quot;:655,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oK3n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 424w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 848w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 1272w, https://substackcdn.com/image/fetch/$s_!oK3n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F380ad917-952b-42f1-870e-3800e98527b5_655x534.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We also get inspiration for skills in other places like PR review comments, ADRs and incident postmortems, onboarding docs, and community libraries like skills.sh.</p><p>Once you have your library assembled, it&#8217;s time to organize it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JmsB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JmsB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 424w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 848w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 1272w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JmsB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png" width="1313" height="883" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:883,&quot;width&quot;:1313,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JmsB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 424w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 848w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 1272w, https://substackcdn.com/image/fetch/$s_!JmsB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08a43fc4-37e4-4497-9f0e-b4a747eecc0b_1313x883.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Step 2: Organize into groups and decide what&#8217;s required</strong></h2><p>A library of 200 individual skills isn&#8217;t really useful to anyone. Nobody wants to browse 200 files and find the few relevant ones.</p><p>To solve that, we group them by use case: engineering standards, frontend, backend, data, infrastructure, etc.</p><p>That way, when an engineer gets set up, they pick and import an entire group, not individual files.</p><p>Skills should also be either required or optional.</p><p>Required skills are non-negotiable. Every engineer and agent gets them automatically, no opt-out:</p><ul><li><p><strong>Security</strong>: monitors for prompt injection, flags attempts to exfiltrate sensitive data, blocks unauthorized external API calls</p></li><li><p><strong>Coding conventions</strong>: how your team handles errors, names directories, structures TypeScript, writes tests</p></li><li><p><strong>Rule governance</strong>: where skill files live, how they get named, how changes get versioned</p></li></ul><p>Optional skills are role-specific and load only when relevant:</p><ul><li><p><strong>React components</strong>: component structure, RSC vs. client component rules, Web Vitals priorities. </p></li><li><p><strong>Incident triage</strong>: walks through affected services, recent deployments, root cause categories, stakeholder update format. </p></li></ul><h2><strong>Step 3: Engineers get the skills automatically</strong></h2><p>Engineers connect to the library using their existing permissions, and the CLI pulls the required groups automatically, then prompts them to choose which optional groups they want: frontend, data and ML, whatever matches their work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RBVb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RBVb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 424w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 848w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 1272w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RBVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png" width="1456" height="486" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:486,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RBVb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 424w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 848w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 1272w, https://substackcdn.com/image/fetch/$s_!RBVb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db8dc78-3be3-420d-9531-ddcbd27c3f34_1796x600.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2nnJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2nnJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 424w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 848w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 1272w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2nnJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png" width="1456" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2nnJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 424w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 848w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 1272w, https://substackcdn.com/image/fetch/$s_!2nnJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8c333fd9-d4d4-46b9-89f6-07b062cab3ae_1516x640.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MEJ6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MEJ6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 424w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 848w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 1272w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MEJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png" width="1456" height="689" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:689,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MEJ6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 424w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 848w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 1272w, https://substackcdn.com/image/fetch/$s_!MEJ6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05ee9304-317a-4749-8533-aa3bd5be6863_1808x856.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Skills land directly in .cursor/ or whichever IDE config folder they use.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bd9M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bd9M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 424w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 848w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 1272w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bd9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png" width="502" height="322" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:322,&quot;width&quot;:502,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bd9M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 424w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 848w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 1272w, https://substackcdn.com/image/fetch/$s_!bd9M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15b9ab6e-c3c6-4e2b-96bd-d0cd82dbd503_502x322.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Two things make this work really well for us:</p><p>First, updates. Every engineer in Cursor has an automation that listens for changes to skills in Port and pulls new required skills and updates existing ones.</p><p>Second, we make it easy for developers to contribute back. They can go to Port and star skills they like and submit new skills directly from their IDE. Then they go through review by the platform team, get merged, and get redistributed to the whole team, basically the same loop as an open source contribution. The library gets smarter over time without the platform team having to own every skill themselves.</p><h2><strong>Step 4: The feedback loop</strong></h2><p>We also have a meta-skill: a skill whose job is to watch for repeated corrections. When you fix the agent on the same thing twice in a session, it surfaces: &#8220;You&#8217;ve corrected me on this twice. Want me to write a skill for it?&#8221; If you say yes, it kicks off the skill-creator automatically, pre-loaded with what it just observed.</p><p>The loop becomes self-closing. The agent notices its own gaps, proposes the fix, and routes it into the same review and distribution flow. The platform team still reviews everything, but they&#8217;re not waiting on engineers to manually notice and submit. The library improves in the background.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dIhs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dIhs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 424w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 848w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 1272w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dIhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png" width="1452" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1452,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dIhs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 424w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 848w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 1272w, https://substackcdn.com/image/fetch/$s_!dIhs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5d8a1db4-0e27-4b1c-9728-9f69159c93ec_1452x816.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Step 5: Track if it&#8217;s working</strong></h2><p>Before the skills library, we had no idea what skill any agent on the team was running. Now we have a dashboard that tells us who&#8217;s set it up, which groups they pulled, and when they last synced. If someone is running on a six-month-old version of a skill, or never ran skill init at all, we know.</p><p>We also track skill health: how old each skill is, when it was last updated, who owns it. Skills go stale just like documentation does. Anything that hasn&#8217;t been touched in 90 days gets flagged.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j_L1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j_L1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 424w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 848w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 1272w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j_L1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png" width="1456" height="890" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:890,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j_L1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 424w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 848w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 1272w, https://substackcdn.com/image/fetch/$s_!j_L1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fba3b27e8-d800-4a8d-bab1-c616e1becf05_2048x1252.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The contribution pipeline is basically a PR queue for the library: Skills submitted, in review, merged, rejected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FYIW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FYIW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 424w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 848w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FYIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png" width="1456" height="1054" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1054,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FYIW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 424w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 848w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 1272w, https://substackcdn.com/image/fetch/$s_!FYIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9090acc4-33d1-4fd6-a493-7768b8a9dfa3_1660x1202.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The metric I find most interesting is agent quality signals. We track which review comments keep appearing on AI-generated PRs. If the same comment shows up more than a few times across different engineers, it automatically contributes to a skill or creates a new one.</p><p>And we track coverage by team: which teams have required skills loaded, which optional groups they&#8217;ve pulled, or where the gaps are.</p><h2><strong>Why this matters: agent sprawl</strong></h2><p>Your team probably already has an agent sprawl problem but you may not know it yet: hundreds if not thousands of unofficial different skills, agents, MCP servers being created and used.</p><p>A skills library is part of the fix. And once you have one, someone on your platform team can actually answer the question: what does every agent in this org know right now? At most companies, nobody can answer that.</p><h2><strong>Build it yourself</strong></h2><p>It&#8217;s just a few hours of work for one platform engineer, and once it&#8217;s running, the whole team benefits automatically. </p><p><strong>So, how can you build this?</strong></p><p>Everything you need is right here in this guide</p><p>&#128073;&#127996; <a href="https://docs.port.io/ai-interfaces/port-mcp-server/skills/#step-1-create-the-skill-blueprint">Manage skills with Port</a></p><p>And to help guide you, you can follow along here:</p><div id="youtube2-h42j9WnzTBI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;h42j9WnzTBI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/h42j9WnzTBI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Reach out or leave a comment if you need any help!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Enter your email below if you want to get these posts delivered to your inbox.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Mapping out the agentic engineering industry]]></title><description><![CDATA[I spent time at a VC firm and now I'm mapping my industry, agentic engineering, as a founder.]]></description><link>https://newsletter.port.io/p/mapping-out-agentic-engineering</link><guid isPermaLink="false">https://newsletter.port.io/p/mapping-out-agentic-engineering</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Thu, 23 Apr 2026 17:57:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ikmj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before I founded Port (and my previous startup), I actually spent some time at a VC firm in Israel called TLV Partners.</p><p>I distinctly remember working on and seeing posts on Linkedin mapping out industries. It was fun debating who should be in which category and where an industry was heading.</p><p>Now, I&#8217;m in the unique position of seeing the industry from a completely different perspective.</p><p>When we started Port, I would have said that we were in the DevOps or platform engineering industry. In a sense we still are, but we&#8217;re now helping platform engineers build the layer above it: agentic engineering.</p><p>So that&#8217;s the industry I wanted to map out.</p><p>In our mission of moving engineering from manual to autonomous, we&#8217;re seeing companies introduce agents to every part of the SDLC - from planning all the way to operating.</p><p>With that huge influx of agents comes new needs. Those agents need infrastructure. It&#8217;s not the same infrastructure as DevOps though. It&#8217;s agentic engineering infrastructure that is specifically designed for agents like context, guardrails, and orchestration.</p><p>For that reason you&#8217;ll see in the map I&#8217;ve separated everything into agents and agentic engineering infrastructure.</p><p>While researching, I came to some other conclusions about the market:</p><ol><li><p>Coding agents get most of the attention but the market for AI that operates across the entire SDLC is actually much bigger than the market for coding agents. The internet goes wild every time a new coding model comes out which makes sense. But harnessing that model to make it actually operate and be useful beyond coding is where most of the work lies. That&#8217;s why I think the market for the harness will be bigger than the models.</p></li><li><p>AI won&#8217;t replace the platform stack. It adds a new layer on top<strong>.</strong> Agents + agent infrastructure sit above the existing DevOps/cloud/observability foundation. Agentic engineering is a mix of deterministic (DevOps layer) and non-deterministic (Agentic) flows.</p></li><li><p>It looks like there aren&#8217;t any deploy agents on the market which makes sense. Deployment itself should not be left to agents. But I think there&#8217;s room in the market for risk assessment agents that decide which deployment strategy to take.</p></li><li><p>&#8220;Agent Experience&#8221; replaces &#8220;Developer Experience&#8221; as the design target. When choosing which tools or infrastructure to work with, the question is no longer &#8220;which ones do our developers like?&#8221;. Instead, when you plan your stack, you will ask your agents to find tools for you. They will choose tools that work best for them. If a tool doesn&#8217;t have a strong MCP server, an agent will find an alternative that does. UI is not nearly as important as data/context.</p></li></ol><p>You might ask: why is Port in so many categories? That&#8217;s because platform engineers and platform engineering will be critical to building out the agentic engineering infrastructure blocks. It may not be fully clear to everyone yet, but based on what our customers tell us every day, controlling agentic chaos and agent sprawl will 100% be the platform team&#8217;s responsibility.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ikmj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ikmj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 424w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 848w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 1272w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ikmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png" width="1456" height="1507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1507,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:436687,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://newsletter.port.io/i/195265268?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ikmj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 424w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 848w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 1272w, https://substackcdn.com/image/fetch/$s_!ikmj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F670fd7df-55a9-480b-b33d-283eb2e9d6c5_2400x2484.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As always, I'd love to hear what you think. Feel free to reply and let me know which agents and infrastructure you&#8217;d choose when building your stack.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe if you&#8217;d like to get future posts by email</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[How does AI impact your role as a platform engineer?]]></title><description><![CDATA[Heads up: Developers are building agents. Lots of them. How do you as a platform engineer help them build while also staying in control?]]></description><link>https://newsletter.port.io/p/how-does-ai-impact-your-role-as-a</link><guid isPermaLink="false">https://newsletter.port.io/p/how-does-ai-impact-your-role-as-a</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Sun, 19 Apr 2026 14:47:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zAC5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Platform engineering&#8217;s goal has always been: make engineers more self-sufficient without sacrificing standards.</p><p>The best way to accomplish this was through self-service in a platform you controlled. When a developer needed a new service, they clicked a button and got a repo, a CI pipeline, monitoring, and a Dockerfile. You could let them do this because you built in engineering standards. That combination of self-service and standards was a win-win for you and your developers. They got velocity, you got control.</p><p>With AI, developers became builders of agentic workflows. By building agents, they can automate large parts of their jobs. They&#8217;re building SRE agents, release agents, skills, etc. They already got permission to use all these AI tools, so they started to stitch stuff together.</p><p>What you get is lack of governance &amp; visibility into agents that are taking destructive operations without human oversight.</p><p>We call this agent sprawl.</p><p>So what does that mean for you as a platform engineer?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAC5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAC5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 424w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 848w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 1272w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAC5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png" width="1456" height="660" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:660,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zAC5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 424w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 848w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 1272w, https://substackcdn.com/image/fetch/$s_!zAC5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa01ce850-2f77-4438-89b2-264fb23f8305_1600x725.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>How should you think about the relationship between you and developers?</strong></h2><p>As platform engineers in an AI world, of course you want developers to use AI more. But every time adoption of technology goes up, so does the demand for everything you&#8217;re responsible for like costs and governance.</p><p>There&#8217;s also something uncomfortable about being bypassed by the people you were supposed to enable. You take pride in making developers more capable with your help, but now they&#8217;re building agents themselves.</p><p>AI has given developers the power to build anything that will automate their work like an SRE agent, deployment agent, or even a basic catalog that helps their agents work.</p><p>To make their agents powerful, they want to feed these agents with real actions &amp; access to real data. To do that, they still have to go through you. <strong>But even without the actions and context lake you provide, they can still create things that are powerful enough to be dangerous.</strong></p><p>Let&#8217;s say an engineering team builds themselves an SRE agent without going through you. We can even go a step further and say that it works really well in its task of triaging the issue, saving the team hours per incident.</p><p>But what does the agent probably not do?</p><p>It probably doesn&#8217;t leave an audit trail.</p><p>It probably isn&#8217;t being respectful of PII.</p><p>It probably doesn&#8217;t use appropriate credentials to get data.</p><p>And the list goes on.</p><p>What the team definitely didn&#8217;t do is build the agent with the standards their company expects from the start.</p><p>And why would they? They have a real, immediate need and AI makes it easy to solve. They&#8217;re also feeling the pressure of producing more results by engineering leadership.</p><p>Developers shouldn&#8217;t have to wait. (And they&#8217;re not going to)</p><p>With this new tool and the new urgency, they&#8217;re just doing their jobs in a new way, primarily doing two things:</p><ol><li><p>They&#8217;re using MCP to query data and get insights that help them or their agents work.</p></li><li><p>They&#8217;re building agents like SRE agents that are getting more capable, taking on more responsibilities across the SDLC.</p></li></ol><p>Developers (and agents) getting the data they need can be solved in a scalable way by providing a rich context lake.</p><p>But when all engineers start building agents, how do you facilitate that in a scalable way?</p><h2><strong>The product management side of platform engineering</strong></h2><p>Given the new reality we&#8217;re all living in, platform teams have three options.</p><p>You can do nothing and let developers build agents however they want. The agent sprawl is already here anyway, so why fight it? The problem is you end up with no visibility, no standards, and no way to intervene when something goes wrong (and it will).</p><p>You can mandate that all AI development flows through the platform team. You can probably expect a revolt if you choose this route because the tools are already in developers&#8217; hands. Cursor runs locally. Claude Code runs locally. This is a good way to slow down engineering, not speed it up.</p><p><strong>Finally, and I think this is the only option that will actually work, you can make the platform compelling enough that developers actively choose to build agents with it.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UNI-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UNI-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 424w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 848w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 1272w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UNI-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png" width="1456" height="627" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:627,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UNI-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 424w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 848w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 1272w, https://substackcdn.com/image/fetch/$s_!UNI-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe29c13e5-9be0-4d3d-84e3-e38e467d9ac9_1478x636.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So how do you make it more compelling?</p><p>This is what I like to call the product management side of platform engineering. You first need to understand what developers are actually trying to do, then remove the hardest parts of it.</p><p>I&#8217;ll let you do the work in your org of talking to developers and finding out what they find difficult when building agents.</p><p>But I&#8217;ll also give you a look into what I see as some of the common denominators because developers building agents hit the same walls every time. Scattered data, wild integration connections, lack of approval gates (or too many), or too much access to critical systems, to name a few.</p><p>I see those issues repeat themselves across all agents at the &#8220;kicking the tires&#8221; stage. But, if you succeed in removing some of that friction or at least minimizing it, you&#8217;ll have a much higher chance that developers will create agents that don&#8217;t end up hitting those walls.</p><p>There&#8217;s also something else here. Developers who build something useful want others to benefit from it, just like in open source. If there&#8217;s a place to share the incident triage skill their team built, they&#8217;ll put it there. If there&#8217;s a registry where others can find it and extend it, it gets better over time. The platform becomes the place where good work accumulates.</p><p>That&#8217;s what makes a platform compelling. When developers feel they are using an experience that was designed for them (and their agents).</p><h2><strong>How do you create a compelling agent-building experience for your engineering team?</strong></h2><p>Now that your developers are agent builders, one of your jobs is to make that experience as seamless and enjoyable as possible. They&#8217;re coming to make something new. That&#8217;s a creator experience, and it requires a different kind of thinking. This is DevEx 2.0.</p><p>Here&#8217;s what I think matters most when you&#8217;re designing for builders:</p><ol><li><p><strong>They need to know what&#8217;s available to them before they start</strong>. A developer sitting down to build a release management agent shouldn&#8217;t have to ask around to find out what data they can access, which integrations exist, or what actions are possible. That discovery has to be seamless.</p></li><li><p><strong>They need early wins</strong>. The fastest way to get a developer invested in your platform is to get them to something working quickly. Starter templates, example workflows, pre-built skills are all great places for them to start forking. A developer who gets something running in an hour is far more likely to build the real thing on your platform than one who spent the first day figuring out how to authenticate.</p></li><li><p><strong>They need to see what others have built</strong>. This is the open source side of things that developers love. Developers who build something useful want to share it, and developers starting from scratch want to see what already exists. A skill registry or agent catalog will make them feel that the platform is alive. When a developer can browse what their colleagues built and extend it, the platform stops feeling like infrastructure and starts feeling like a community.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OrnI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OrnI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 424w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 848w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 1272w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OrnI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png" width="1456" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OrnI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 424w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 848w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 1272w, https://substackcdn.com/image/fetch/$s_!OrnI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2db2c4ad-bba3-4f37-9cc2-5357f75c9303_2048x1285.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s expand on helping your team discover what&#8217;s available before they start building agents.</p><p>What building blocks should you give them that their agents will need?</p><div class="callout-block" data-callout="true"><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qKv3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qKv3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qKv3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png" width="611" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:611,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qKv3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!qKv3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcac3e361-47e2-41a0-92ca-7f5a7f7f9c26_611x348.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>I wrote previously about the &#8220;<a href="https://newsletter.port.io/p/the-hidden-technical-debt-of-agentic">Hidden tech debt of agentic engineering</a>&#8221; where I expanded on the 7 blocks of tech debt every demo agent creates</em></p></div><p><strong>A reliable context lake.</strong> Agents need to know things in real time and that information needs to be accurate: who owns this service, what changed in the last deploy, what this service depends on, who&#8217;s on call right now.</p><p>Without this, a team building their own agent spends more time on data plumbing than on the actual logic and gets access to data they wouldn&#8217;t be able to access without it. The platform team pulls it into one place, keeps it fresh, and exposes it through an API or MCP that any agent can query.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AZQu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AZQu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 424w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 848w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AZQu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png" width="1456" height="1048" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1048,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AZQu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 424w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 848w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 1272w, https://substackcdn.com/image/fetch/$s_!AZQu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5945d08-c6c4-4c70-bb30-c045e00177b1_2048x1474.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Pre-cleared integrations.</strong> Agents need to talk to systems: GitHub, PagerDuty, Datadog, Jira, your cloud provider. Getting access to each of those is a process. Developers building agents on their own may go through that process independently. By centralizing it, the platform team clears the integrations once and every agent gets them.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l7ZE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l7ZE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 424w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 848w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 1272w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l7ZE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l7ZE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 424w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 848w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 1272w, https://substackcdn.com/image/fetch/$s_!l7ZE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F133259d6-1d87-4d0e-8440-1eef0679332c_2048x1329.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>A menu of approved, governed actions.</strong> Agents don&#8217;t just read. They do things: trigger rollbacks, open PRs, restart pods, close incidents. Teams building agents on their own either avoid actions entirely (so the agent just tells you what to do) or wire them up without guardrails. The platform team defines which actions are available as tools, so the question is never &#8220;can this agent do this?&#8221; but &#8220;did we explicitly allow it to?&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q8XK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q8XK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 424w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 848w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 1272w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q8XK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png" width="1456" height="940" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:940,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q8XK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 424w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 848w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 1272w, https://substackcdn.com/image/fetch/$s_!Q8XK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01b04695-ee8d-4f2d-bd5e-bb2eba1bb2f6_2048x1322.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Deterministic policies.</strong> An agent that suggests a production rollback is fine. An agent that triggers one at 2am without waking anyone up is not. You can&#8217;t handle that with a prompt or skill like &#8220;Please ask before doing anything in production&#8221;. Policies must be encoded as gates: staging auto-approves, production requires human sign-off outside business hours. They either pass or they don&#8217;t and they need to be deterministic.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5k8x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5k8x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 424w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 848w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 1272w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5k8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png" width="1456" height="294" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24651752-02d8-42ed-b963-95b843011d1a_2048x413.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:294,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5k8x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 424w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 848w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 1272w, https://substackcdn.com/image/fetch/$s_!5k8x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24651752-02d8-42ed-b963-95b843011d1a_2048x413.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>An audit trail.</strong> When something goes wrong at 3am, you need to know what the agent did, what data it accessed, what triggered it, and what the outcome was. Teams building their own agents almost never add logging upfront. It feels like overhead at first. The platform team needs to build audit logging into the workflow engine so it&#8217;s automatic. Every action is on the record whether anyone thought to ask for it or not. The added benefit of the audit trail is that it also serves as the decision trace that will help agents improve over time.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H1Av!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H1Av!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 424w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 848w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 1272w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H1Av!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png" width="1456" height="945" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:945,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!H1Av!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 424w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 848w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 1272w, https://substackcdn.com/image/fetch/$s_!H1Av!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F26ad9328-0527-406f-883e-e96d17265a4e_2048x1329.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>A review process.</strong> Taking an agent from demo to production requires someone from platform to check permissions, test edge cases, and define what production-ready actually means. The platform team must own that lifecycle: from experiment, to reviewed, to trusted, to fully autonomous.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kEqE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kEqE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 424w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 848w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 1272w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kEqE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png" width="1456" height="914" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:914,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kEqE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 424w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 848w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 1272w, https://substackcdn.com/image/fetch/$s_!kEqE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaf44c03-43dd-43d5-b4e9-a082c679fb54_2048x1285.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>An approval or human-in-the-loop layer. </strong>At some point every agent needs to stop and ask a human. Teams building their own approval logic get this wrong in different ways. Some hardcode a Slack message, some skip it entirely. None of them share a model, so when agents need to work across teams, the approval logic breaks at the seam. The platform provides one: these actions auto-approve, these require a human, this is who gets notified. A team that builds on it doesn&#8217;t have to think about any of that.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pce9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pce9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 424w, https://substackcdn.com/image/fetch/$s_!pce9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 848w, https://substackcdn.com/image/fetch/$s_!pce9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 1272w, https://substackcdn.com/image/fetch/$s_!pce9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pce9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png" width="1456" height="1208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1208,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pce9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 424w, https://substackcdn.com/image/fetch/$s_!pce9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 848w, https://substackcdn.com/image/fetch/$s_!pce9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 1272w, https://substackcdn.com/image/fetch/$s_!pce9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ea0ccaa-998a-462b-8930-a18440703469_2048x1699.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>None of these are complicated on their own. But when every engineer is building their own agents, the problem compounds quickly.</p><h2><strong>The surface area grew</strong></h2><p>The ground is shifting and your old job didn&#8217;t go away. The service catalog still needs maintaining. The golden paths still need updating. The CI/CD integrations still break.</p><p>And now on top of all of that, there are agents running in the org that you didn&#8217;t build, accessing systems you provisioned, doing things you can&#8217;t fully see. The surface area of what you&#8217;re responsible for grew, but nobody took anything off your plate to make room.</p><p>Just because you don&#8217;t have a monopoly anymore doesn&#8217;t mean you&#8217;re not relevant. <strong>You&#8217;re actually about to become relevant than ever before.</strong> Because developers aren&#8217;t waiting and the number of agents is exploding. And the window where the number of agents in your org is still small enough to get ahead.</p><p>We talked about a win-win situation for platform engineers and developers. I believe both teams can still achieve a win-win while using AI.</p><p><a href="https://port.io">Port</a> is built for platform engineers stepping into this new role who want to build a win-win experience. It gives your team the foundation to give developers the building blocks they need in their new builder role: governed data, pre-cleared integrations, approved actions, approval gates, and more.</p><p>Every engineer is a builder now. It&#8217;s time for platform to build for them while staying in control.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe to get new posts delivered straight to your inbox.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[My take on Shopify's AI-first engineering principles]]></title><description><![CDATA[What Shopify got right, what's missing, and what I'd recommend]]></description><link>https://newsletter.port.io/p/my-take-on-shopifys-ai-first-engineering</link><guid isPermaLink="false">https://newsletter.port.io/p/my-take-on-shopifys-ai-first-engineering</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Tue, 07 Apr 2026 14:34:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!So7C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey, welcome!</p><p>If you&#8217;re new here, I&#8217;m Zohar, CEO of Port. This newsletter is where I share what I&#8217;m seeing in engineering, AI, and how companies are actually running AI in their SDLC.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!So7C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!So7C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 424w, https://substackcdn.com/image/fetch/$s_!So7C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 848w, https://substackcdn.com/image/fetch/$s_!So7C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!So7C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!So7C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png" width="1456" height="757" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:757,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:629007,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://newsletter.port.io/i/193469715?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!So7C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 424w, https://substackcdn.com/image/fetch/$s_!So7C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 848w, https://substackcdn.com/image/fetch/$s_!So7C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 1272w, https://substackcdn.com/image/fetch/$s_!So7C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f9f551c-19e4-450c-8bb7-313cc377fc3b_2146x1116.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Bessemer published a deep dive into how Shopify runs AI across 3,000+ engineers, and it&#8217;s one of the more detailed playbooks any company has shared publicly. So I went through it, pulled out the sections that matter most, and wrote my reaction to each + a practical recommendation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qlqn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qlqn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 424w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 848w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 1272w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qlqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png" width="1456" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qlqn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 424w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 848w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 1272w, https://substackcdn.com/image/fetch/$s_!qlqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F618afa8d-4976-404c-aa05-40307d9a38d3_1600x401.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3BOx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3BOx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 424w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 848w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 1272w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3BOx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png" width="1456" height="510" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:510,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3BOx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 424w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 848w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 1272w, https://substackcdn.com/image/fetch/$s_!3BOx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48b59b7a-3a2f-49e4-90d3-214242c225f5_1600x560.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The problem I&#8217;m seeing most in the industry is <strong>agent sprawl</strong>. It looks like Shopify has avoided it.</p><p>Here&#8217;s how it plays out the bad way: Dev teams each pick their own AI tools, wire up their own integrations, and build their own agents. Suddenly you have thousands of siloed agents and a lot of them do the same thing. You don&#8217;t have visibility into what exists across the org, what actions agents can take, or what data they can access. It gets messy. Fast.</p><p>Shopify avoided this by building the infrastructure first:</p><ul><li><p>An LLM proxy routing everything through a single gateway.</p></li><li><p>Standardized MCP servers connecting to company data.</p></li><li><p>Usage tracking by team + Alerts at $250/day.</p></li></ul><p>Once they had the right infrastructure in place they were able to tell engineers: pick whatever tool you want on top. That&#8217;s only possible because the layer underneath is centralized. Everyone else just plugs in without worrying about getting things wrong.</p><p>Most companies do the opposite. They start with the tool. Then they might negotiate an enterprise license for Cursor or Copilot, roll it out, and hope for the best. No centralized tracking, no shared integration layer, no visibility into what&#8217;s happening across teams. When they need to switch tools or add a new one, they&#8217;re starting from scratch every time.</p><p>I think of it like going shopping. The platform team sets up the store: the data, the actions, the workflow engine. Then developers walk in and add things to their cart to build what they need. They don&#8217;t wait or file a request. They pick what they need and build an agentic workflow. But this only works if the infrastructure is already there. If it&#8217;s not, developers run ahead anyway, each team builds their own thing, and the platform team is stuck catching up.</p><div class="callout-block" data-callout="true"><p><strong>My recommendation:</strong></p><p><em>Before you evaluate another AI tool, answer three questions.</em></p><ol><li><p><em>Do you have a centralized way to track which tools your teams are using?</em></p></li><li><p><em>Can you see token spend by team and project?</em></p></li><li><p><em>Do your agents connect to company data through a shared layer or through one-off integrations each team wired up?</em></p></li></ol><p><em>If you can&#8217;t answer all three, start there and build infrastructure first.</em></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zQ96!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zQ96!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 424w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 848w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 1272w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zQ96!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png" width="1456" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zQ96!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 424w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 848w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 1272w, https://substackcdn.com/image/fetch/$s_!zQ96!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64db3e08-a162-4aa1-b1c8-8a7dc5ea70f1_1600x416.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Top-down mandates don&#8217;t work for AI adoption and Shopify identified that too.</p><p>They tried the opposite: make leadership look effortless using AI, and let that pull people in. Weekly demos instead of KPIs because, as Farhan says, otherwise engineers would just game a metric.</p><p>Another clever strategy they are using is a prompt/skill library. When someone figures out a workflow they can share it with others.</p><p>Ultimately, you can&#8217;t chase developers into adopting something and this is especially true in the AI era. The best platform teams I talk to aren&#8217;t building agents themselves. They&#8217;re building the infrastructure so their developers can build agents safely. They clear the path: pre-built integrations, a workflow engine, guardrails already in place. Then they get out of the way. The platform team becomes a facilitator, not a gatekeeper.</p><p>Tobi&#8217;s memo pushed it even further: prove AI can&#8217;t do the job before requesting headcount. You can read the memo here:</p><p></p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://t.co/6i6h3sKi3x&#8221;>https://t.co/6i6h3sKi3x</a></p>&amp;mdash; tobi lutke (@tobi) <a href=&#8221;https://twitter.com/tobi/status/1909251946235437514?ref_src=twsrc%5Etfw&#8221;>April&quot;,&quot;full_text&quot;:&quot;https://t.co/6i6h3sKi3x&quot;,&quot;username&quot;:&quot;tobi&quot;,&quot;name&quot;:&quot;tobi lutke&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1999293930936909824/_HWYanot_normal.jpg&quot;,&quot;date&quot;:&quot;2025-04-07T14:28:30.000Z&quot;,&quot;photos&quot;:[],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:287,&quot;retweet_count&quot;:948,&quot;like_count&quot;:6762,&quot;impression_count&quot;:2262542,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;belowTheFold&quot;:true}" data-component-name="Twitter2ToDOM"></div><div class="callout-block" data-callout="true"><p><strong>My recommendation</strong></p><p><em>Pick one workflow your platform team automated recently. Demo it at your next engineering all-hands. Don&#8217;t present it as a mandate. Just show the before and after. Then share the prompt or config so anyone can replicate it. One good demo does more for adoption than a month of rollout plans.</em></p></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jqfx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jqfx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 424w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 848w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 1272w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jqfx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png" width="1456" height="317" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:317,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jqfx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 424w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 848w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 1272w, https://substackcdn.com/image/fetch/$s_!Jqfx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f89172c-28bc-4eb4-9e73-8676ed7e136b_1600x348.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The 20% productivity number seems like the story here but it&#8217;s not. The real story is that Farhan and Shopify are focused on solutions, not more code. Customers don&#8217;t care how much code you (or AI) writes. All they care about is if you solved their problem or not.</p><p>That&#8217;s what AI is enabling: testing 10 approaches instead of 2. Shopify is telling you the unit of productivity has changed. It used to be lines of code shipped. Now it&#8217;s <strong>problems solved</strong>. And when code is cheap, you explore more broadly, which means many, many more things running in your environment, more services, more agents, more surface area to manage.</p><div class="callout-block" data-callout="true"><p><strong>My recommendation:</strong></p><p><em>Ask yourself if you are tracking vanity metrics in AI or metrics that affect the business or engineering.</em></p><p><em>Lines of code, tokens used, AI tool adoption are all vanity metrics</em></p><p><em>MTTR, Cloud cost savings, ARR are real metrics</em></p><p><em>If you&#8217;re not tracking the real ones, I suggest starting now but make sure you can connect AI initiatives to those business results. I wrote more about this <a href="https://newsletter.port.io/p/63-earnings-calls-0-engineering-outcomes">here</a>.</em></p></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lNqn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lNqn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 424w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 848w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 1272w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lNqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png" width="1456" height="258" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:258,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lNqn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 424w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 848w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 1272w, https://substackcdn.com/image/fetch/$s_!lNqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F712b6997-4b61-4c47-ab75-beefee9c7ddc_1600x283.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YdNu!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YdNu!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 424w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 848w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 1272w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YdNu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png" width="1456" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/46730187-f68f-4fc8-948e-073b82530722_1600x221.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YdNu!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 424w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 848w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 1272w, https://substackcdn.com/image/fetch/$s_!YdNu!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F46730187-f68f-4fc8-948e-073b82530722_1600x221.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>What Shopify is admitting here is something most companies won&#8217;t say out loud: even with a dedicated infrastructure team and unlimited budget, they got the tool-to-persona mapping wrong and had no visibility into spend until it was already a problem. Cursor for non-engineers was the wrong UX at the wrong price. Individual engineers hit tens of thousands in tokens per week before anyone noticed. They bolted on alerts at $250/day after the fact. The message is clear: if you don&#8217;t have centralized tracking from day one, you will discover your AI costs the hard way.</p><p>I talk to enterprise architects who have no idea what they&#8217;re spending on AI tokens across the org. No visibility, no throttling, no control. And these are the proactive ones, the companies trying to get governance in place before the chaos starts. Shopify had every advantage and still needed to course-correct. Most companies are running this experiment with no safety net at all.</p><div class="callout-block" data-callout="true"><p><strong>My recommendation</strong></p><p><em>Run a quick survey this week: which AI tools are your teams using, and how are they paying for them? If you get inconsistent answers or blank stares, you already have the problem Shopify had. Set up usage tracking before you set up anything else.</em></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DSdn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DSdn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 424w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 848w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 1272w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DSdn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png" width="1456" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DSdn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 424w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 848w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 1272w, https://substackcdn.com/image/fetch/$s_!DSdn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4ab2f553-40db-46bc-8256-c219053c4c1d_1600x486.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Farhan focuses on PR reviews as the bottleneck here. Actually, I think the problem is bigger than that. The number of things engineering needs to review or approve is exploding. Agents now write code, deploy to prod, roll back versions, remediate incidents.</p><p>If you put a human in the loop at every stage, you exhaust your engineers and fail to adopt AI at all.</p><p>The way I think about it: humans shouldn&#8217;t be in the loop. They should be out of it.</p><p>When should they be included? Well, it depends on the risk. A PR comment? Nothing bad can happen. Let the agent run, review later. An auto-remediation that restarts a service? Higher risk, but if it&#8217;s a governed action with guardrails already in place, let the agent do it and notify the team after. A prod deployment to a tier-1 service? That&#8217;s a blocking review. A human should own that decision.</p><p>The tricky part is that risk is dynamic. Deploying during a workday is very different from deploying at 2am. Same operation, different context. You can&#8217;t hardcode the rules. You need to trust AI to execute and report back, trace every decision, and measure quality over time. You&#8217;ll see where it&#8217;s reliable and where it still needs a human.</p><div class="callout-block" data-callout="true"><p><strong>My recommendation</strong></p><p><em>Map every point where a human currently blocks an agent workflow. For each one, ask: what&#8217;s the actual risk if the agent does this without approval? Start pulling humans out of the low-risk loops (PR comments, test runs, doc generation). Keep a rich audit trail so you can trace every agent decision. Build trust before moving to higher-risk operations.</em></p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nZ3K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nZ3K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 424w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 848w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 1272w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nZ3K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png" width="1456" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b07e10e0-bba6-4189-8504-948e02b64510_1600x563.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nZ3K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 424w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 848w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 1272w, https://substackcdn.com/image/fetch/$s_!nZ3K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb07e10e0-bba6-4189-8504-948e02b64510_1600x563.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Farhan says &#8220;if you don&#8217;t figure this out in 2026, you&#8217;ll be behind&#8221;.</p><p>I agree completely. Except I think it&#8217;s coming sooner.</p><p>And then what happens when an agent works well? The article is oddly silent about this.</p><p><strong>How do you take a great agent from demo to production?</strong></p><ul><li><p>How do they work together?</p></li><li><p>Which data can they access?</p></li><li><p>Do they need humans in the loop?</p></li><li><p>The questions go on&#8230;</p></li></ul><p>The platform layer is described well. The agent lifecycle is missing.</p><p>I&#8217;d be interested to learn more about how Shopify will handle this.</p><div class="callout-block" data-callout="true"><p><strong>My recommendation</strong></p><p>Find a recent agent someone in your company built. (Most likely, it&#8217;s still a demo or local to the team.) Then try writing a list of all the things the agent would require if you had to roll it out to the entire engineering team. You can borrow some things from my list <a href="https://newsletter.port.io/p/the-hidden-technical-debt-of-agentic">here</a>.</p></div><p>&#8212;</p><p>Shopify built all of this from scratch with 3,000 engineers and a near-unlimited budget. The pattern they arrived at, having a centralized platform underneath with tools on top, is what <strong>every</strong> engineering org will need. When that platform exists, developers start building their own agents on top of it and you stay in control.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Enjoyed this post? Subscribe to get my next email.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[The hidden technical debt of agentic engineering]]></title><description><![CDATA[Agents are easy to build but hard to run. At Port, we mapped seven blocks of hidden infrastructure debt with AI agents in enterprise systems.]]></description><link>https://newsletter.port.io/p/the-hidden-technical-debt-of-agentic</link><guid isPermaLink="false">https://newsletter.port.io/p/the-hidden-technical-debt-of-agentic</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Fri, 03 Apr 2026 06:58:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!g9IS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Anyone today can build an agent locally with minimal effort. With some LLM calls, a prompt, and a few tool definitions, that agent will be doing real work for them within minutes. But what happens when that agent needs to get into production and be used by the entire engineering department, with real data and real consequences?</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g9IS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g9IS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g9IS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png" width="611" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:611,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems." title="The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems." srcset="https://substackcdn.com/image/fetch/$s_!g9IS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!g9IS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fee115d-b154-4019-a536-3d0e3cbbc281_611x348.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In 2015, Google published &#8220;<a href="https://proceedings.neurips.cc/paper_files/paper/2015/file/86df7dcfd896fcaf2674f757a2463eba-Paper.pdf">Hidden Technical Debt in Machine Learning Systems</a>.&#8221; That paper turned on the light for machine learning engineers and named all the problems they were experiencing. The diagram they shared also became iconic: a tiny box labeled &#8220;ML Code&#8221; surrounded by massive infrastructure blocks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qKqp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qKqp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 424w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 848w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 1272w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qKqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png" width="1024" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A diagram of the hidden technical debt involved with machine learning systems.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram of the hidden technical debt involved with machine learning systems." title="A diagram of the hidden technical debt involved with machine learning systems." srcset="https://substackcdn.com/image/fetch/$s_!qKqp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 424w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 848w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 1272w, https://substackcdn.com/image/fetch/$s_!qKqp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a6714e2-8f82-44e5-be2c-00a6d0372edc_1024x365.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We&#8217;re seeing the same pattern for agents. Agents are a small part of the picture, and we want to name all the infrastructure around them.</p><p>Agentic engineering systems are especially good at piling up technical debt. They carry all the maintenance problems of traditional software, plus an additional set of agent-specific issues. New agents are being created daily by nearly every employee. Soon you&#8217;ll have far more agents than employees.</p><p>We define an agent as any process with dynamic decision-making capabilities that can autonomously determine tool usage and execution paths through reasoning and reflection. Decision-making, reasoning, and reflection require all the supporting infrastructure.</p><p>Building an agent is easy. But in production, the agent code is the smallest part of the system. Everything around it is where the actual complexity lives.</p><p></p><p>Over the past few months, through conversations with engineering leaders and our own experience, we&#8217;ve mapped out seven infrastructure blocks that surround the agent. Each one is a category of work that no one plans for when building their demo.</p><p>Some of these blocks will look familiar if you&#8217;ve done traditional engineering: <a href="https://thenewstack.io/introduction-to-observability/">observability</a>, integrations, and governance. Others are unique to agents, such as human-in-the-loop, evals for non-deterministic systems, and the agent registry.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ILRk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ILRk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ILRk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png" width="611" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:611,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems." title="The seven blocks of hidden infrastructure debt surrounding AI agents in enterprise systems." srcset="https://substackcdn.com/image/fetch/$s_!ILRk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 424w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 848w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 1272w, https://substackcdn.com/image/fetch/$s_!ILRk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91abe330-4139-4ac2-81c0-ecc4a1478bbc_611x348.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Let&#8217;s walk through each one.</p><h2>1. Integrations</h2><p>Agents need to reach your actual systems: CI/CD, cloud providers, incident tools, observability platforms, code repos, secret managers, and more.</p><p>Without centralized integrations, every team wires up its own connections to agents.</p><p>Picture an engineering org with 200 engineers on 30 teams, each with multiple agents. Each engineer generates their own GitLab PAT for coding agents, Snowflake credentials for data agents, Kubernetes service accounts for deployment agents, and monitoring tokens for incident agents.</p><p>That&#8217;s hundreds of integration points, each one configured individually, debugged individually, and expiring on its own schedule.</p><p>When every developer wires their own credentials, each <a href="https://thenewstack.io/ai-agents-in-doubt-reducing-uncertainty-in-agentic-workflows/">agent sees different data</a> depending on whose token it uses. One developer&#8217;s GitLab PAT has access to all repos. Others are scoped to their team. Same agent type, but each has a completely different view of the org.</p><p>Or, what happens when GitLab ships a breaking change to their API? Every team that wired its own connection independently debugs the same issue (or submits a ticket to the platform team). Three teams figure it out on Monday. Two more by Wednesday. One team doesn&#8217;t notice for a week because their agent only runs during incidents.</p><p>What also matters is what comes through those integrations. When three teams connect to the same data source through different paths, their agents can get different answers to the same question. If one team&#8217;s integration pulls a 30-day history of deployments, and another team&#8217;s integration shows everything from the last 3 years, their outputs will differ.</p><p>Right now, MCP is how most teams connect agents to their tools. But let&#8217;s not confuse MCPs with integrations. MCP gives agents a standard way to call a tool. It doesn&#8217;t manage the credentials for that call, the scope of the data that comes back, or what happens when the API on the other end changes.</p><p>Hidden tech debt in integrations looks like:</p><ul><li><p>An integration auth token expires on a Friday night, and an incident agent silently stops working. Nobody notices until Monday.</p></li><li><p>Five teams each maintain their own GitLab connection with different permissions and scopes, unaware that the others exist.</p></li><li><p>When an integration updates its API, and every team debugs its connection separately.</p></li></ul><h2>2. Context lake</h2><p>Agents are only as good as the context they can reference and use. They need two kinds of context.</p><p>Runtime context: How do you deliver accurate context to agents during their execution?</p><p>The runtime context is the live data that agents need for a specific execution, such as information about services, who owns them, and what was deployed recently. It&#8217;s the same kind of data humans use when coding or resolving incidents, but more accessible to agents.</p><p>Think of a coding agent picking up a ticket to add a retry mechanism to a service. It needs to know: what language and framework the service uses, how retries are handled in other services in this org, who owns the downstream service it calls, and whether there&#8217;s been a recent config change to the timeout settings.</p><p>Some teams manage their runtime context in markdown files: agents.md, .cursorrules, skills files.</p><p>Markdown files are fine for static instructions, such as how to format commits or which linter to use. But the runtime context changes constantly. Service ownership shifts. Dependencies get added. Config values update. Deployments happen every hour. An agent running on a .md file that says &#8220;checkout-service is owned by Team Payments&#8221; doesn&#8217;t know that ownership transferred to Team Commerce last Tuesday. The file was accurate when it was written. By the time the agent reads it, it might not be.</p><p>Decision traces: How do you help agents learn from their own past work or the work of other agents?</p><p>Decision traces are a history of what has been done before (by humans or agents), why it was decided, and what happened afterwards. Without that history to reference, every agent run starts from zero. Think of an agent opening a PR to fix a flaky test. It doesn&#8217;t know that a different agent tried the same fix last week, the PR was rejected because it broke a downstream contract, and the team decided to deprecate the test entirely. So it reopens the same PR. Without decision traces, agents repeat mistakes that humans (or agents) have already resolved.</p><p>An agent that resolved 50 incidents has seen patterns a new agent hasn&#8217;t, like which fixes worked, which ones caused regressions, and which services are fragile after deploys. Without traces, that knowledge disappears after every run. When multiple agents operate on the same systems, they can&#8217;t see each other&#8217;s history.</p><p>LLM providers are starting to address this with `memory.md` files that can be shared across teams. But the debt still shows up when you have dozens of agents operating. You need to find a way to reliably serve that memory (or just the right parts of it) to specific agents.</p><p>Hidden tech debt in context lake looks like:</p><ul><li><p>Stale, fragmented context that no one owns</p></li><li><p>Agents running on <a href="http://agents.md/">agents.md</a> when company standards live in a wiki</p></li><li><p>Agents not learning how and why other agents solved a problem, or about the mistakes they made</p></li></ul><h2>3. Agent registry</h2><p>Gaining visibility into what agents exist</p><p>The org chart is changing. Instead of just people, you now have 5&#8211;10 times that number of agents. They&#8217;re being created daily by all your human employees. They&#8217;re running without guardrails, they have access to critical infrastructure, and they&#8217;re making decisions. They&#8217;re also spread across tools like Claude Code, Cursor, n8n, zapier, Notion, AWS, GCP, and more.</p><p>The typical pattern goes like this: An engineer builds a triage agent, and their team starts using it to help with incidents. Another team builds its own version because it didn&#8217;t know the first one existed. A third team builds something similar but wired to different tools with different permissions.</p><p>In a company with 20 or 30 engineering teams, you&#8217;ll quickly reach agents with overlapping responsibilities, conflicting behaviors, and invisible dependencies. Before agents can be shared between teams, you need to know they exist.</p><p>Delivering instructions to agents</p><p>Once you have visibility into your agents, they need the equivalent of an employee handbook: standards, skills, and instructions on how they&#8217;re expected to operate.</p><p>Today, engineers create skill files for their agents independently. The issue is that when they are scattered across repos without a centralized view, teams end up creating duplicate or inaccurate skills. They often contradict the platform-distributed context. The platform team has far more insight into what to write in skill files than individual teams do.</p><p>So how do you get consistent but personalized coding rules, commands, skills, and hooks to the right agents?</p><p>This information may even require multiple levels:</p><ul><li><p>company-wide standards that apply everywhere (secure coding, commit conventions)</p></li><li><p>repo-specific instructions (&#8220;in this repo, events are created this way&#8221;)</p></li><li><p>Or team-level rules for subsets of engineers</p></li></ul><p>You&#8217;ll need to find a way to reliably deliver this information to thousands of agents, ensuring the right instructions reach the right agents.</p><p>Agent creation</p><p>Let&#8217;s say you&#8217;ve gotten visibility on most existing agents and delivered instructions to them. The next question is: How can you control the process of creating new agents without slowing your team down?</p><p>That responsibility now falls on platform teams.</p><p>Like services in a software catalog, agents should have standardized properties and should be connected to other entities in your company, like other agents, teams, services, deployments, etc.</p><p>Without a template, you get the same sprawl problem you just solved. An engineer spins up an agent with no owner, no lifecycle state, and no connection to the service it operates on. It works for them. Nobody else knows it exists. Six months later, someone finds it running in production with expired tokens and no way to contact whoever built it.</p><blockquote><p>&#8220;An engineer spins up an agent with no owner, no lifecycle state, and no connection to the service it operates on. It works for them. Nobody else knows it exists.&#8221;</p></blockquote><p>Agent creation should follow a standardized template. This doesn&#8217;t mean that human employees should be slowed down when they create agents. The opposite is true. By having a standardized process for creating agents, you will help them reach high-quality work faster than if they were created individually.</p><p>Agent creation should be allowed from the engineers&#8217; workstations. If they work in Cursor and need to spin up an agent, they should be able to do it from there, not elsewhere. Which means your job, as platform engineers, is to make sure agents created anywhere follow your creation process.</p><p>A template doesn&#8217;t restrict what the agent does. It makes sure every agent is born with the basics: an owner, a description, the tools it uses, the services it touches, and a lifecycle state. That&#8217;s what makes it governable from day one, rather than something you have to chase down later.</p><p>Hidden tech debt in the agent registry looks like:</p><ul><li><p>Invisible agents</p></li><li><p>Teams are creating duplicate agents</p></li><li><p>Outdated context</p></li><li><p>When the CISO asks for an agent audit, but there&#8217;s no list to start from</p></li><li><p>No clear way of promoting an agent to production</p></li><li><p>No versioning, rollbacks, or staging environments</p></li></ul><h2>4. Measurement</h2><p>How do you know if your agents are working? Well, it depends on who&#8217;s asking.</p><p>An SRE wants to know what the agent did.</p><p>An ML engineer or product manager wants to know if it&#8217;s getting better or worse.</p><p>A VP of engineering wants to know if it&#8217;s worth the money.</p><p>An end user wants to know that the agent is learning based on their feedback.</p><p>So while each person wants to measure something in agents, they all want different types of measurement.</p><p>1. How do you know what your agents are doing?</p><p>This is observability.</p><p>Events, traces, and logs show what actions the agent took, what data it had access to, and if it is still running correctly. Engineering teams understand observability from traditional systems, but with agents, the surface area is wider.</p><p>Say you have an agent that autonomously solves Jira tickets. When it receives a Jira ticket, it reads the service catalog to find the relevant repo, pulls recent commits from a GitHub integration, generates a fix with a coding agent, opens a PR back in GitHub, and requests review from the service owner that it found in the software catalog. If the fix broke something, which step went wrong? Did it pull the wrong repo? Misread the ownership? Generate bad code?</p><p>If you can&#8217;t trace individual links in that entire chain, good luck debugging it.</p><p>2. How do you know if your agents are getting better or worse when prompts, skills, tools, and models change?</p><p>This is evals</p><p>In standard software engineering, you can write a unit test that expects an exact string. In agentic engineering, when every response is different, you need a different approach.</p><p>Evals answer a simple question: after you change something (like a prompt or model), is the agent still good?</p><p>Without a way to track this, changes go out untested, and output quality degrades silently. Like swapping Sonnet for Opus, and your PR review agent starts approving things it used to flag.</p><p>3. How do you know if your agents are actually working for your business?</p><p>This is business impact</p><p>Every earnings call this year will include the question: &#8220;What is AI doing for your business?&#8221;.</p><p>Most engineering leaders can&#8217;t answer it yet, and ultimately, they are the ones responsible for measuring agent cost and ROI.</p><p>Tracking spend is the easier part of this equation. You can track token usage, API calls, and compute costs per agent, per team.</p><p>ROI is harder to measure. How many tickets did agents resolve? How much engineering time did they save? Did it actually reduce MTTR or just move work around? These numbers are harder to collect and harder to trust. If you can only show the cost side without showing a clear ROI, that&#8217;s a bad conversation to be having.</p><p>4. How do you give agents feedback on their work?</p><p>These are feedback loops</p><p>When an agent generates a PR, resolves a ticket, or writes an RCA, did the human who reviewed it accept the output or correct it? This is generally managed with a thumbs-up or thumbs-down, but sometimes it&#8217;s the human&#8217;s response itself that counts as feedback (something like &#8220;No, try again, but do change X instead&#8221;).</p><p>They&#8217;re critical for improving the agent and more important than evals. Agents in the demo phase either don&#8217;t collect these signals or don&#8217;t act on them.</p><p>Hidden tech debt in measurement looks like:</p><ul><li><p>Not knowing if agent performance is improving or declining over time, and compared to what</p></li><li><p>Not being able to measure what happens when a prompt or model changes</p></li><li><p>Leadership is asking for ROI, but you don&#8217;t have a clear answer</p></li><li><p>Failure to collect feedback from humans using agents</p></li></ul><h2>5. Human-in-the-loop</h2><p>There&#8217;s a spectrum between fully manual and fully autonomous engineering. On one end, a human does everything. On the other end, an agent acts without asking. Most useful agents live somewhere in the middle, and where exactly they sit depends on the action, the environment, and the risk.</p><p>Human-in-the-loop is one of the mechanisms that lets you move agents closer to autonomous safely. It lets you define checkpoints: this action needs approval, this one doesn&#8217;t, and this one depends on the environment. The agent runs, but a human confirms the high-stakes decisions before they execute.</p><p>For example, a deployment agent might run freely in staging but require approval in production. It can be fully autonomous during business hours, but we need a human in the loop at 3 a.m. The rules are conditional and vary by agent, action, environment, and team.</p><p>When you have one agent in a demo, you can hard-code the approval checkpoints as an if statement that pings Slack before a deploy. With 100 agents across 20 teams, hard-coded approval logic doesn&#8217;t scale. Every team implements its own version. One team&#8217;s agent rolls back production without asking. Another team&#8217;s agent requires three approvals to do the same thing. Nobody defined this centrally, so nobody knows which agents can act on their own and which can&#8217;t.</p><p>And then there&#8217;s the orchestration of the approvals themselves. Who gets notified? Through what channel? What&#8217;s the timeout if nobody responds? What happens if the approver is on vacation? If approval comes through Slack for one agent, via email for another, and via a custom UI for a third, you now have three approval systems to maintain. The logic around approvals becomes major tech debt, separate from the agents themselves.</p><p>If we zoom out, human-in-the-loop is also about visibility into what&#8217;s happening inside all the agents working for us. As engineers move into a more managerial role (of agents), they will need a control plane to see what&#8217;s in motion, initiate agent work, identify which agents need attention, and take action if needed.</p><p>This matters because human-in-the-loop is how you apply change at scale (and companies today either change or die). To succeed in their new job, engineers need to see the agents working, just as they used to see their code working. A team that can watch an agent handle its first ten deployments (see every step, review every decision, and intervene when needed) will trust that agent. A team that can&#8217;t, simply won&#8217;t.</p><p>Hidden tech debt in human-in-the-loop looks like:</p><ul><li><p>Hard-coded approval code that can&#8217;t be changed from one place</p></li><li><p>Some agents run without approvals, others have too many</p></li><li><p>Multiple approval systems by email, Slack, and custom UI that don&#8217;t work with each other</p></li><li><p>No shared workspace where teams can see what their agents are doing and intervene if necessary</p></li></ul><h2>6. Governance</h2><p>When a human engineer needs access to a production database, there&#8217;s a process. They submit a request, someone approves it, and the access is scoped and logged. It might take an hour or a day, but there&#8217;s a record of who has access to what and an audit log of who did what.</p><p>When an engineer creates an agent locally, it usually runs with whatever credentials its creator wired in: their API tokens, their service account, their cloud permissions. Most likely, nobody reviewed the scope.</p><p>Governance rules for agents need to be specific:</p><ul><li><p>&#8220;Roll back a service, but only if there&#8217;s a high-severity incident open.&#8221;</p></li><li><p>&#8220;Deploy to production requires manual approval, always, no matter what agent triggered it.&#8221;</p></li><li><p>&#8220;An RCA report that pulls data from external systems should only be visible to the owners of that service.&#8221;</p></li></ul><p>These are the kinds of rules that platform teams need to define in a single centralized place and apply across all agents.</p><p>The other side of governance is enforcement. Say you discover a vulnerability in one of your internal APIs and need to block all agents from calling it immediately. Can you? One security engineer should be able to disable a tool in one place and have it automatically disabled across all agents. At most companies, that capability doesn&#8217;t exist yet.</p><p>You can&#8217;t always get access permissions airtight from the start. Things can go wrong, and if they do, you need to know what happened: which agent took the action, what data it accessed, what credentials it used, and who triggered it. Most agent setups don&#8217;t produce that audit trail (certainly not if they&#8217;re created locally). An agent running locally inherits its creator&#8217;s credentials, so every action appears to be the engineer&#8217;s personal work. If three agents share a service account, you can&#8217;t tell which one made the call. If an agent chains through two other agents before modifying a production config, the audit log might show only the final write, not the reasoning, context, or the chain of decisions that led to it.</p><p>Another aspect of governance is cost governance. Agents tend to keep working despite the costs they are racking up. When an engineer creates an agent locally, they probably won&#8217;t think about setting a cost limit.</p><p>An agent stuck in a retry loop or reasoning in circles will keep burning tokens for hours until someone manually kills it or until the monthly invoice shows the damage. Most teams can tell you their total LLM spend, but almost none can break it down by agent, by team, or by use case. Teams should also be able to easily see where their costs stand. Because when leadership asks what agents cost to run, engineering will need an answer.</p><p>Hidden tech debt in governance looks like:</p><ul><li><p>An agent that shouldn&#8217;t run in production, accessing production data</p></li><li><p>An RCA agent is publishing sensitive service data to a shared channel</p></li><li><p>An agent publishing PII in a public forum</p></li><li><p>No way to disable a tool across all agents from one place</p></li><li><p>No audit trail of what an agent did or why</p></li></ul><h2>7. Orchestration</h2><p>Most agentic workflows aren&#8217;t purely agents. They&#8217;re a mix of agents, tools, and people. The debt isn&#8217;t in the individual steps. It&#8217;s in what happens between them: routing, failure handling, and ownership.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f4Ob!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f4Ob!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 424w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 848w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f4Ob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png" width="836" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:836,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Diagram of agentic workflows.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Diagram of agentic workflows." title="Diagram of agentic workflows." srcset="https://substackcdn.com/image/fetch/$s_!f4Ob!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 424w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 848w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!f4Ob!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81d00cc0-47ea-4d3c-a20c-d8e079bfd857_836x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>What breaks between the nodes</h3><p>Take an incident response workflow like the one above. An alert fires. A triage agent picks it up, investigates, and determines the root cause is a deployment issue. It hands off to a deployment agent that rolls back the change. A verification agent checks that the fix worked.</p><p>Now imagine the triage agent got it wrong. The real cause was a database timeout, not a bad deploy. The deployment gets rolled back unnecessarily. The database issue persists. The alert keeps firing. Eventually, a human steps in and starts debugging from scratch, but now they&#8217;re also cleaning up the rollback that shouldn&#8217;t have happened. The failure wasn&#8217;t silent. The workflow confidently took a wrong action, and nobody could tell where the bad decision was made.</p><p>That&#8217;s what orchestration debt looks like in practice. Not necessarily workflows that stop, but workflows that do the wrong thing and are hard to trace.</p><p>And every new issue type you add later, like security incidents, config drift, or dependency failures, makes routing harder to test and explain. None of those changes is hard on its own. But when nobody owns the decision of how they connect, they get wired together differently every time.</p><h3>What&#8217;s different from traditional workflow orchestration</h3><p>Workflow orchestration isn&#8217;t new. Teams have been chaining steps together for years in CI/CD pipelines, Airflow, and Step Functions. So why is agent orchestration a different problem?</p><p>Traditional workflows are deterministic. Step A produces a known output, step B consumes it. You can test every path because you know every path. Agent workflows introduce non-determinism into chains that previously had none. When you replace a runbook with an agent that reasons about the problem, every downstream step becomes unpredictable. You can&#8217;t test every path because you don&#8217;t know every path.</p><p>There&#8217;s also no contract between agents. Services have APIs with schemas and versioned endpoints. Two agents handing off to each other have prompts and natural language. The &#8220;interface&#8221; is fuzzy. A model update or prompt change in one agent can shift its output just enough to break the next agent in the chain.</p><p>A deployment pipeline, for example, should be completely deterministic. The trigger fires, the system knows the severity, deploys to staging, a human approves, it goes to production, and a verification agent checks health. The steps are predefined, the order is fixed, and the risk is high enough that you want it that way.</p><p>An incident response workflow is inherently non-deterministic. The root cause could be a bad deploy, a database issue, a misconfiguration, or something nobody&#8217;s seen before. The agent has to investigate and decide what happens next.</p><p>Most engineering teams need both kinds of workflows. The debt is that there are no shared rules about when to use which. One team sends every triage result straight to a coding agent. Another requires human review before any automated fix. Both work in isolation until an incident crosses a team boundary and the two approaches collide.</p><h3>Who owns the workflow?</h3><p>Even if every individual agent has an owner, that&#8217;s not enough. The orchestration itself needs an owner.</p><p>When an agent modifies a service, and something breaks, who&#8217;s responsible? Is it the agent&#8217;s owner or the service owner? When a workflow spans three teams, which team owns the outcome? When a step fails mid-chain, is it the failing agent&#8217;s responsibility to retry, or the workflow&#8217;s responsibility to reroute?</p><p>These aren&#8217;t theoretical questions. They&#8217;re the questions that come up at 2 a.m. when an agent-driven workflow takes a wrong turn, and three teams are in a war room trying to figure out whose agent did what. Individual step failure is easy to debug. Figuring out which decision, three handoffs ago, sent the workflow down the wrong path &#8212; that requires tracing that most orgs haven&#8217;t built.</p><blockquote><p>&#8220;&#8230;when an agent-driven workflow takes a wrong turn, and three teams are in a war room trying to figure out whose agent did what.&#8221;</p></blockquote><p>Hidden tech debt in orchestration looks like:</p><ul><li><p>An agent fails mid-workflow, and nobody finds out until the downstream effect surfaces</p></li><li><p>No way to trace a decision across agents back to the original trigger</p></li><li><p>A workflow spans three teams, but no team owns the outcome</p></li><li><p>A model or prompt change in one agent silently breaks the next agent in the chain</p></li></ul><h2>When the debt hits</h2><p>This hidden tech debt gets painful at specific trigger points.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-ZXL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-ZXL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 424w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 848w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 1272w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-ZXL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png" width="1024" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A diagram showing where technical debt hits based on agent scaling.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A diagram showing where technical debt hits based on agent scaling." title="A diagram showing where technical debt hits based on agent scaling." srcset="https://substackcdn.com/image/fetch/$s_!-ZXL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 424w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 848w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 1272w, https://substackcdn.com/image/fetch/$s_!-ZXL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F93fdebf9-468f-4c5f-bd90-2b9f017b3236_1024x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>At the exploration stage, there&#8217;s no debt. One engineer, one agent, it works. When a team starts using agents for real work, though, integrations and context are the first things that break. An agent accesses customer data that it shouldn&#8217;t see because nobody scoped the credentials. An agent guesses a service owner because it didn&#8217;t have that context.</p><p>When multiple teams run agents independently, the debt piles up faster. Agent registry, measurement, and human-in-the-loop all surface at once. At this stage, about 50% of a team&#8217;s capacity would go to building the surrounding infrastructure.</p><p>At production scale (agents embedded across most of your engineering org), governance and orchestration become the priority. Some companies see it coming. One architect told me, &#8220;We know from experience that chaos will exist. We will try to avoid it from day one.&#8221; Others learn the hard way: a VP of platform engineering saw teams independently building the same agents and had to retrofit governance once the sprawl was already in place. Both will end up building the same infrastructure. One will pay for it twice.</p><h2>This happened before with microservices</h2><p>This moment feels similar to the evolution of microservices. Each team chose its own technology, did its own infrastructure, and eventually someone had to come in and create standards. There is another platform engineering moment happening now with agents.</p><p>Platform engineering used to be a velocity initiative: self-service, reducing the ticket load, and scaffolding new services. With agents, it&#8217;s still about velocity, but the platform team is playing catch-up. Engineers aren&#8217;t waiting. They&#8217;re able to spin up new agents in Cursor or Claude Code whenever they need one. The platform team&#8217;s first job is to identify which agents already exist and get them under control. Only then can they do what they&#8217;ve always done: make it faster, safer, and easier for everyone else to create and use them.</p><p>One DevEx team described their new role to me: &#8220;We won&#8217;t be the ones designing and creating the agents. What we&#8217;re responsible for is making sure devs know how to use them, can interact appropriately, and helping more teams create their own agents.&#8221;</p><h2>What to do about it</h2><p>Start with visibility. Audit your GitHub org for AI-related workflows and actions. Check how many active API tokens your teams have on Claude, OpenAI, or Bedrock. Look at your workflow tools for anything with an AI node. The goal isn&#8217;t a perfect inventory. It&#8217;s the first count.</p><p>The harder question is agreeing on what counts as an agent. Is a <a href="https://thenewstack.io/boost-your-ci-cd-pipeline-automate-docker-with-github-actions/">GitHub Actions automation</a> an agent? Is it a Claude Code scheduled task? Is it an n8n workflow with an AI node? You&#8217;ll need a working definition before you can catalog them. It doesn&#8217;t have to be perfect, but your org needs to agree on one.</p><p>There&#8217;s also the question of centralized vs democratized? Should the platform team build everything, and devs consume it? Or should the platform team provide guardrails while teams build their own? Both models exist. It probably depends on how much control your culture will tolerate.</p><p>You can build this infrastructure now, or you can build it after an agent leaks customer data, burns $300 in tokens overnight, or silently rolls back a production service nobody asked it to touch. You&#8217;ll build it either way. The only question is whether you build it before the pain or after.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Backstage is dead]]></title><description><![CDATA[Backstage shaped how the industry thinks about developer portals. But the world moved on and Backstage hasn't. Here's what the next generation of IDPs needs.]]></description><link>https://newsletter.port.io/p/backstage-is-dead</link><guid isPermaLink="false">https://newsletter.port.io/p/backstage-is-dead</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:48:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b77247c8-16cf-4e1d-b08a-5bb7e0fefdde_1978x1159.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Backstage shaped how the industry thinks about internal developer portals. It pioneered the category, gave platform engineers a vocabulary, and proved that centralizing the developer experience wasn&#8217;t just a nice idea, it was a survival strategy for scaling orgs.</p><p>But Backstage is dead. Not because it was bad. But because the world moved on.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vtwr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vtwr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 424w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 848w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 1272w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vtwr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png" width="1456" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82436,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://autonomousengineering.substack.com/i/192715426?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vtwr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 424w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 848w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 1272w, https://substackcdn.com/image/fetch/$s_!Vtwr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce198ef0-fb4f-4d58-90a6-5ed89132b987_1978x1159.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2><strong>Respect</strong></h2><p>Backstage did three things nobody else pulled off in 2020.</p><p><strong>It&#8217;s flexible.</strong> You could mold it into whatever portal you wanted. Software catalog, scaffolder, TechDocs, custom plugins. The building blocks were there, and you decided what to build. For platform teams that wanted full control, nothing else came close.</p><p><strong>It carries Spotify&#8217;s name.</strong> When a company running one of the most sophisticated microservice architectures on the planet says &#8220;this is what we built to tame our own complexity,&#8221; people listened. When the message comes from a practitioner and not a vendor selling a vision, engineers listen even more.</p><p><strong>It built a real community.</strong> The CNCF incubation, 270+ adopters, 230+ plugins, thousands of contributors. Platform engineering went from a niche discipline to a Gartner-recognized category, and Backstage was at the center of that conversation.</p><p>None of what I&#8217;m about to say erases it.</p><h2><strong>What made it painful</strong></h2><p>Here&#8217;s what actually happened when teams tried to run Backstage in production.</p><p><strong>You need to be a React developer.</strong></p><p>Backstage is a React framework. But platform engineers write Terraform, Go, Python, Kubernetes manifests. Gartner flagged this explicitly, correctly stating that platform engineering leaders are backend people, and asking them to maintain a React frontend with abstractions like <code>createPlugin</code>, <code>createRoutableExtension</code>, and the <code>@backstage/core-plugin-api</code> package was a different job entirely.</p><p>One r/DevOps user nailed it: <em>&#8220;The idea of backstage is super cool, but for me, as a DevOps engineer, the fact that I need to write a lot of React code instead of GitHub workflows and Terraform files made me leave the project.&#8221;</em> (<a href="https://www.reddit.com/r/devops/">source</a>)</p><p><strong>You can&#8217;t bring your own data model.</strong></p><p>Backstage ships five entity kinds: Component, API, System, Resource, Domain. If your org models data pipelines, ML models, feature flags, or infrastructure tenants, you&#8217;re either jamming them into Component with custom annotations or forking catalog internals to add a new kind, and maintaining that fork across every upgrade.</p><p>DevOps.com found that tuning the data model is so hard that <em>&#8220;many adopters abandon hope and work with the default data model.&#8221;</em> (<a href="https://devops.com/is-backstage-the-right-internal-developer-portal-for-you/">source</a>) That&#8217;s not a minor UX complaint. If your catalog doesn&#8217;t reflect reality, nobody trusts it, and if nobody trusts it, nobody opens it.</p><p><strong>Plugin data stayed siloed.</strong></p><p>This one&#8217;s technical but it&#8217;s the root of a lot of the frustration. Each Backstage plugin runs its own frontend and backend context with its own API clients and its own database tables. The Kubernetes plugin queries your clusters. The CI/CD plugin pulls from Jenkins. The PagerDuty plugin calls PagerDuty. None of it flows into a shared data layer.</p><p>So you can&#8217;t ask &#8220;which services owned by my team had incidents last week that correlated with deployments?&#8221;, because the incident data, the deployment data, and the ownership data live in three separate plugin boundaries with no schema connecting them.</p><p><strong>The cost was brutal.</strong></p><p>6-12 months to stand up a usable instance. Two to five full-time engineers for years, per Gartner. True cost of ownership around $150K per 20 developers.</p><p>Another r/DevOps member: <em>&#8220;At scale, Backstage is not an &#8216;other duties as assigned&#8217; sort of tool to own. It will require dedicated resources as it grows. That&#8217;s usually the biggest thing people overlook.&#8221;</em> (<a href="https://www.reddit.com/r/devops/">source</a>)</p><p><strong>And adoption reflected all of it.</strong></p><p>A ShiftMag case study: <em>&#8220;Despite zero TypeScript and MERN experience we pulled off deploying Backstage in our platform, with much better user experience. Only 5% of our engineers use it.&#8221;</em> (<a href="https://shiftmag.dev/spotify-backstage-developer-platform-integration-2749/">source</a>) </p><p>Spotify reported 99% internal adoption. Their own VP of Engineering acknowledged external orgs average around 10%.</p><h2><strong>AI changed what you should expect from an IDP</strong></h2><p>OK, so Backstage is painful to get up and running (and adopted).</p><p>But pain alone doesn&#8217;t kill technology.</p><p>What kills it is when the world changes and the pain no longer buys you anything useful.</p><p>That&#8217;s what happened once AI was introduced to our life.</p><p>In 2020, building a portal UI was genuinely hard. Backstage gave you a head start on the UI.</p><p>In 2026, AI builds that UI in minutes (you don&#8217;t need Backstage for it).</p><p>It&#8217;s not about AI making Backstage <em>easier</em>. It makes Backstage <em>unnecessary</em>.</p><p>The UI isn&#8217;t where the value is anymore.</p><p>Think about where engineering is going.</p><p>We&#8217;re moving from manual to autonomous engineering.</p><p>Coding assistants were the first wave. What&#8217;s already here is agents that pick up Jira tickets, find the relevant repo in your catalog, pull recent commits, generate a fix, open a PR, and request review from the service owner, end to end.</p><p>But here&#8217;s what nobody talks about: the agent itself is a tiny piece of the system. The real infrastructure is everything around it.</p><p><strong>Agents need</strong> a context lake, structured, real-time data about your engineering org served through a single endpoint, because an agent running on a stale .cursorrules file doesn&#8217;t know that service ownership transferred to a different team last Tuesday. They need to have access only to the data they are allowed. Not only for security and compliance reasons, you also want to minimize their context window to avoid hallucinations.</p><p><strong>Engineering needs</strong> an agent registry, because when three teams independently build triage agents wired to different tools with different permissions, you don&#8217;t have agentic engineering, you have agent sprawl.</p><p><strong>Agents need</strong> guardrails and human-in-the-loop checkpoints that are defined centrally, not hard-coded as if-statements in each agent&#8217;s repo.</p><p><strong>Agents need</strong> governance, scoped credentials, audit trails, cost controls, because an agent stuck in a retry loop will burn tokens for hours until someone manually kills it or the monthly invoice lands.</p><p><strong>Agents and Humans need </strong>orchestration, because most real workflows are a mix of agents, tools, and people. Coordinating these moving parts require both deterministic and non-deterministic workflows.</p><p>None of that is the agent. All of it is the platform underneath the agent. The infrastructure.</p><p>That&#8217;s what makes the IDP more important than ever.</p><p>It becomes the system of record and system of action for the whole engineering org, the layer that gives agents context, enforces policy, sets controls, and keeps humans in control.</p><h2><strong>But isn&#8217;t Backstage responding?</strong></h2><p>Yes. And what they&#8217;re shipping is actually smart.</p><p>v1.40 brought the Actions Registry, plugins can register typed, schema-validated actions with permission enforcement. <code>@backstage/plugin-mcp-actions-backend</code> exposes those as MCP tools, so agents in Cursor or Claude can discover and invoke them. The New Frontend System went &#8220;adoption-ready&#8221; in late 2025. A new design system is replacing Material UI. At KubeCon Atlanta, the maintainers titled their talk &#8220;AI-Native Backstage.&#8221;</p><p>They clearly see where things are heading. So what&#8217;s the problem?</p><p>Every one of these improvements sits on the same foundation: React frontend, plugin-based backend, YAML entities in a relational database. The Actions Registry exposes discrete operations, &#8220;register a component,&#8221; &#8220;trigger a scaffolder template.&#8221; An agent can call <code>catalog:register-component</code>, but it still can&#8217;t reason about your dependency graph, your production-readiness posture, or your org&#8217;s standards. It runs commands. It doesn&#8217;t understand context.</p><p>The MCP integration is &#8220;highly experimental&#8221; as of early 2026. The initial auth model used static tokens, no per-user identity. v1.43&#8217;s Dynamic Client Registration is still maturing.</p><p>But the real issue isn&#8217;t maturity. It&#8217;s architecture.</p><p>In Backstage, the UI sits at the center and everything else serves it. An agentic engineering platform puts the context lake at the center, flexible data model, relationship graph, policy enforcement, a human-to-agent collaboration experience, a skills and tools catalog, with the UI as one consumer alongside agent-native interfaces. Getting from one architecture to the other isn&#8217;t a version bump. It means decoupling the catalog from the rendering layer, building a real-time API, implementing MCP at the context level (not just action level), and treating agent identity as a first-class citizen.</p><p>That&#8217;s a re-architecture. Not a feature release. Backstage is adding the right capabilities at the edges. The center hasn&#8217;t moved.</p><h2><strong>What should Backstage do to stay relevant?</strong></h2><p>Three things.</p><p><strong>Stop being a React framework.</strong> The world doesn&#8217;t need another way to render a service catalog page. AI builds UI faster than any plugin ecosystem can.</p><p><strong>Rebuild the catalog as a context lake.</strong> The entity model and metadata graph are Backstage&#8217;s most valuable asset. Expose them through a real-time API that agents and humans both consume, with guardrails and audit trails built in. Make MCP a first-class interface, not an experimental plugin.</p><p><strong>Evolve from portal to platform.</strong> The category has moved. What started as internal developer portals is becoming agentic engineering platforms, systems that orchestrate the entire SDLC, power autonomous ticket resolution and self-healing incidents, surface engineering intelligence, and support human-to-agent collaboration natively. Backstage serves humans through a UI. The next generation serves agents and humans through a shared infrastructure layer.</p><p>This isn&#8217;t a roadmap item. It&#8217;s a reinvention. And the window is closing.</p><p>The platform engineering market didn&#8217;t outgrow the idea of Backstage. It outgrew the architecture.</p><p>What Backstage pioneered, a single pane of glass for your engineering org, matters more now than it did in 2020. But the pane of glass needs to face two directions: toward the humans who make decisions, and toward the agents that execute them.</p><p>Backstage earned its place in the history of platform engineering. Whether it earns a place in its future depends on what it&#8217;s willing to let go of.</p><p></p>]]></content:encoded></item><item><title><![CDATA[What 10s of thousands of AI prompts reveal about engineering teams ]]></title><description><![CDATA[What separates teams that build agentic workflows in Port from everyone else? We analyzed 10s of thousands of prompts to Port AI to find out.]]></description><link>https://newsletter.port.io/p/what-10s-of-thousands-of-ai-prompts</link><guid isPermaLink="false">https://newsletter.port.io/p/what-10s-of-thousands-of-ai-prompts</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:45:49 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6uga!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>10 months ago, we started releasing AI features in Port. Since then, AI has become an essential part of how teams work in Port. As you can see, AI adoption in Port organizations has taken off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6uga!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6uga!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 424w, https://substackcdn.com/image/fetch/$s_!6uga!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 848w, https://substackcdn.com/image/fetch/$s_!6uga!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 1272w, https://substackcdn.com/image/fetch/$s_!6uga!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6uga!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png" width="734" height="436" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:436,&quot;width&quot;:734,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!6uga!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 424w, https://substackcdn.com/image/fetch/$s_!6uga!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 848w, https://substackcdn.com/image/fetch/$s_!6uga!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 1272w, https://substackcdn.com/image/fetch/$s_!6uga!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed2de998-4be2-4f3f-a15e-85ca188c9cf9_734x436.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Port acts as the system of record and system of action for our customer&#8217;s engineering teams, for both humans and agents.</p><p>As a system of record, we know about their services, ownership data, deployment history, team structures, and more.</p><p>As a system of action, we know what actions engineers are triggering, what workflows are being run, and more.</p><p>Now that Port has an AI layer, engineers and agents are interacting with Port in a new way. Instead of looking at data in a dashboard, they ask for it in natural language. Instead of running an action manually, they ask AI to run it for them.</p><p>In the past 10 months, platform and software engineers at large engineering organizations have prompted it tens of thousands of times. It&#8217;s connected to their most critical systems and they ask complex operational questions and trigger meaningful actions.</p><p>So we decided to study exactly how they are using it.</p><h3><strong>What is AI in Port?</strong></h3><p>If you&#8217;re already familiar with Port&#8217;s AI capabilities, feel free to skip this section.</p><p>If not, here&#8217;s a short history of it:</p><ul><li><p>Port launched Context Lake, a way for AI agents to query your organizational knowledge and take action with the proper governance in place</p></li><li><p>We then launched AI agent widgets, embeddable chat widgets that have the context of the portal</p></li><li><p>After that, we released our remote MCP server, a general AI assistant, and a Slack app</p></li><li><p>We also launched a few specialized AI features like integration helpers (to help bring your data into Port) and automatic data discovery (to help enrich your software catalog)</p></li></ul><p>Now you&#8217;re up to speed on what AI capabilities Port has. (But by the time you read this, we probably have more)</p><h3><strong>What we wanted to know</strong></h3><p>We had two questions going in:</p><p>1. What are engineers trying to do with Port AI?</p><p>2. Do teams change how they use Port AI over time?</p><p>We classified each query by what the engineer was trying to do. Were they trying to understand their environment, manage infrastructure, fix a security issue, or something else entirely? Then we looked at how those patterns shifted over time.</p><p>Here are our findings:</p><h3><strong>Finding 1: 33% of prompts ask about scattered engineering knowledge</strong></h3><p>Questions like &#8220;Who owns the payment service?&#8221; and &#8220;Show me the list of my repositories&#8221; and &#8220;How do I deploy to production?&#8221;</p><p>In our research, we classified a prompt as context gathering when it asked for information that should already be accessible in Port: service ownership, team structures, deployment processes, documentation locations.</p><p>Let&#8217;s explore why this use case is so strong through an engineer&#8217;s first few months at a company:</p><p><strong>Week 1 - Hello world</strong></p><p>You&#8217;re given access to a bunch of tools at various stages of the SDLC you may or may not have used before. You&#8217;re assigned to a team and need to figure out what they are responsible for. You have an endless list of questions, but you don&#8217;t want to interrupt your teammates too much.</p><p>&#8220;What repos does my team own?&#8221;</p><p>&#8220;What services are in my team&#8217;s domain?&#8221;</p><p>&#8220;Where do I start?&#8221;</p><p><strong>Weeks 2&#8211;4 - Hello unfamiliar deployment process</strong></p><p>By now, you&#8217;ve gotten your first ticket. It&#8217;s probably a tiny feature or small bug fix. But it&#8217;s on a service you&#8217;ve never touched before. So now you have a whole new set of questions like &#8220;What does this service depend on?&#8221; &#8220;What&#8217;s the deploy process?&#8221;</p><p>The answers exist, but they&#8217;re spread across Confluence, Notion, Slack threads, and someone&#8217;s head. You might even get different answers from different teammates.</p><p><strong>Month 2 - Hello real work</strong></p><p>Congrats! You just got your first big ticket. But it touches a service your team doesn&#8217;t own. Now you&#8217;ve started to expand your scope and touch other people&#8217;s code, which means gathering brand new context. If you had 30 questions in week 3, now you have 300.</p><p>&#8220;Why was this built this way?&#8221;</p><p>&#8220;Is there anything I should know about before I change this?&#8221;</p><p>The truth is, this part never ends. Engineers are constantly gathering context, just in different parts of the codebase or SDLC. This is why we haven&#8217;t seen queries of this kind decline over time, even in the same company.</p><p>Every one of these questions is answerable by AI, as long as the context is there. And if you have an IDP, it already is.</p><h3><strong>Finding 2: User trust in AI-feature accuracy is built gradually</strong></h3><p>We looked at how queries evolved over time within individual organizations, and the same pattern appeared everywhere. Teams never started with complex questions. They start with the simplest thing they can think of and get more and more complex. Like this:</p><p>Month 1: &#8220;Show me my repositories.&#8221;</p><p>Month 2: &#8220;Who owns the auth service?&#8221;</p><p>Month 6: &#8220;What is the tech team ID for the Network Access team?&#8221;</p><p>Month 10: &#8220;How many deploys were performed last month on service X to prod?&#8221;</p><p>The AI could of course answer the month-10 question on day one (assuming the context is there). So it&#8217;s a matter of trust. The first question is a test. The engineer already knows the answer, or can easily verify it. If the AI gets it right, the next question is slightly harder. If that&#8217;s right too, they start relying on it for things they can&#8217;t easily check themselves.</p><p>We saw this in how teams accessed AI, too. Early on, most usage came through a chat widget. Someone types a question and reads the answer. A few months in, we saw more questions asked through the Slack app or Cursor via MCP. A few months after that, the most active teams were calling the AI API directly, embedding AI into their own internal tools and workflows.</p><p>Teams that tried to skip the chat phase and start with autonomous agents tended to get stuck. The teams that let engineers build trust at their own pace got to automation faster than the ones that tried to skip ahead.</p><h3><strong>Finding 3: Platform teams that continuously improve their software catalog see faster engineer adoption</strong></h3><p>We encourage our customers to take a product management mindset while they build in Port. After all, they're building a product for their engineers. Taking a product mindset means they're in a continuous feedback loop:</p><ol><li><p>Ask engineers where they get stuck</p></li><li><p>Analyze their input</p></li><li><p>Decide which problems to solve</p></li><li><p>Build solutions for them</p></li><li><p>Deliver them to engineers</p></li><li><p>Go back to step 1</p></li></ol><p>So we asked: Do teams that take this product mindset get better results from their AI?</p><p>I want to tell you about one customer that has more experience than anyone in this and the results they got.</p><p>At the beginning of their journey building a developer portal, they built a quick MVP, and told engineers they could start using it. Not surprisingly, most engineers didn&#8217;t use it. Their engineers had a certain muscle memory for their existing tools and couldn&#8217;t make the switch.</p><p>So the platform team building Port started over. They physically sat down next to the engineers and just watched them work. They realized that what their engineers wanted most was a lightning-quick way to see exactly what they needed from where they were already working.</p><p>So they rebuilt, adding more data sources, refining the data model, and creating more relevant self-service actions.</p><p>And as the catalog got richer, something clicked for engineers. They started using Port AI substantially more because the answers they got were substantially better.</p><p>In his words: &#8220;Agents magnify the best practices you have or the lack of practices you have.&#8221;</p><p>Best practices only come from iteration.</p><p>So that&#8217;s what we saw in our most successful teams. They didn&#8217;t build once and walk away. They ask what engineers need, build it, and then ask for feedback. And repeat.</p><h3><strong>Finding 4: Our leading customers are building agentic workflows</strong></h3><p>Most engineers interact with AI through a chat interface. Type a question, get an answer. That accounts for the majority of AI usage.But 12% of queries are for something else. These queries happen during workflows where the AI query happens as a result of some trigger (not a question from a person).</p><p>Here are some examples of what I mean:</p><p><strong>Security remediation.</strong> One organization connected their security scanner to an AI agent. The scanner finds a vulnerability, then creates a Jira ticket. That ticket triggers the agent, which pulls the relevant code, analyzes the vulnerability, generates a fix, and opens a pull request. The security team used to write the fixes - now they review PRs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6LJA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6LJA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 424w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 848w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 1272w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6LJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png" width="1456" height="465" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!6LJA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 424w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 848w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 1272w, https://substackcdn.com/image/fetch/$s_!6LJA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d90a383-4719-43fd-b026-fffd4c24035e_1600x511.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Ticket triage. </strong>Another organization built an agent that receives every incoming Jira ticket, reads the description, classifies it by type and severity, assigns it to the right team, and sets priority. 36 automated runs in December alone. Before this, a human did that routing manually for every ticket. Now a human only gets involved when the ticket is already classified, prioritized, and sitting in the right team&#8217;s queue.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LEt5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LEt5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 424w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 848w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 1272w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LEt5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png" width="1456" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!LEt5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 424w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 848w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 1272w, https://substackcdn.com/image/fetch/$s_!LEt5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F214fec5a-da87-4f9b-a767-28840fe5ec15_1600x376.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Catalog management. </strong>A customer built an event-driven agent that enriches ownership information on Port entities automatically when deployments, incidents, or new services are created. 72% of their total AI usage was machine-initiated.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Sapc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Sapc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 424w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 848w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 1272w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Sapc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png" width="1456" height="377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:377,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Sapc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 424w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 848w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 1272w, https://substackcdn.com/image/fetch/$s_!Sapc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c610e9b-83f7-4456-aa77-3ebc0cc81d43_1600x414.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Generally, we see two types of steps in workflows: steps that result in a text-based response (queries) and steps that result in an action being taken (actions).</p><p>Most steps today (73%) are query-based. An event fires, the AI gathers context, and posts a summary somewhere useful (RCAs, bug triage, service ownership). The remaining 27% take action - creating PRs, assigning tickets, or updating records.</p><p>I think we&#8217;re about to see this numbers flip. The vast majority of AI usage will be for taking action rather than creating a block of text.</p><h3><strong>What we took from this</strong></h3><p>Six months from now, the teams building agentic workflows won&#8217;t be the exception. Every team we studied started with simple questions and answers. But some iterated continuously on their portal and slowly trusted AI to do more than just answer questions. When they did, they unlocked the real shift: moving from manual engineering to autonomous engineering.</p><p>To see in more detail how leading teams are making this transition, have a look at our solution guides. They break down the exact patterns, architectures, and workflows behind becoming agentic in Port.</p>]]></content:encoded></item><item><title><![CDATA[Why we made our product roadmap public]]></title><description><![CDATA[Port's product roadmap is publicly available to anyone who wants to see it. I wrote about why we did it and how our community has shaped Port through it.]]></description><link>https://newsletter.port.io/p/why-we-made-our-product-roadmap-public</link><guid isPermaLink="false">https://newsletter.port.io/p/why-we-made-our-product-roadmap-public</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:41:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dfpp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Port&#8217;s product roadmap has been public since we were six months old. Before we had a sales team or more than one product manager. Our product was bare bones compared to what we have today.</p><p>We were a new SaaS company asking engineers to trust us. And we had to earn it.</p><p>So we decided to run like an open source company without being one.</p><p>We open sourced our integrations framework (<a href="https://ocean.getport.io/?__hstc=106030492.6b512e3384a33e64f754281263bcc1e6.1764846724143.1774966869102.1774985712516.17&amp;__hssc=106030492.6.1774985712516&amp;__hsfp=15488d6fb918b78cf73331400dc41cc5">Ocean</a>) so users could extend the product themselves. We put a <a href="https://demo.port.io/">live demo</a> on the site with no gate because we trusted it to hold up. We built a <a href="https://port-community.slack.com/signup#/domain-signup">Slack community</a> instead of controlling the conversation. We launched a free tier so people could try the product without talking to anyone first.</p><p>And we put our <a href="https://roadmap.getport.io/?__hstc=106030492.6b512e3384a33e64f754281263bcc1e6.1764846724143.1774966869102.1774985712516.17&amp;__hssc=106030492.6.1774985712516&amp;__hsfp=15488d6fb918b78cf73331400dc41cc5">roadmap on Canny</a>, where anyone can see what we&#8217;re building, suggest features, upvote what matters to them, and tell us when we&#8217;re wrong.</p><p>We believe that when we build this product, we should build it with the people who use it.</p><h2>What it does for our customers</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dfpp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dfpp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 424w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 848w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 1272w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dfpp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png" width="1314" height="1061" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1061,&quot;width&quot;:1314,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dfpp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 424w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 848w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 1272w, https://substackcdn.com/image/fetch/$s_!dfpp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fed8336d0-60d3-403a-9742-2fea8424f772_1314x1061.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Today, our public roadmap has some impressive stats.</p><ul><li><p>1,250+ feature ideas</p></li><li><p>10,450 votes</p></li><li><p>1,726 comments</p></li><li><p>43,200 users</p></li></ul><p>In a given month, we get about 70-90 new feature ideas, 400-500 votes, and 80-100 comments.</p><p>Numbers aside, we&#8217;ve found some incredible feature ideas in the roadmap. They&#8217;re not necessarily ideas we didn&#8217;t know about, but we didn&#8217;t realize how much our users wanted them until the upvote count started to rise.</p><p>For example, we just shipped our most requested feature &#8220;View as&#8221;. It completely changes the way our customers build in Port by letting builders see Port exactly how their users see it. It had over 150 votes.</p><p>Other requests like custom icons (123 votes) and dark mode (73 votes) seemed like small changes but it turned out people really cared about them and were thrilled when they were released.</p><p>Some customers even write requests that read like PRDs, with a target persona, the problem, and a proposed solution. The public nature of the roadmap pushes our customers to think a bit harder about how they express what they need, which helps us.</p><p>Instead of a request like &#8216;add SCIM,&#8217; they explain their access control model and why it matters. That context is important for prioritization.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J028!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J028!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 424w, https://substackcdn.com/image/fetch/$s_!J028!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 848w, https://substackcdn.com/image/fetch/$s_!J028!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!J028!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J028!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png" width="1223" height="1020" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1020,&quot;width&quot;:1223,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!J028!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 424w, https://substackcdn.com/image/fetch/$s_!J028!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 848w, https://substackcdn.com/image/fetch/$s_!J028!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 1272w, https://substackcdn.com/image/fetch/$s_!J028!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb59d8ed5-bbc7-416b-9673-732e6a36be6b_1223x1020.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What it does for us</h2><p>Publishing our plans creates accountability. When something goes on the roadmap, the timer starts. Our customers, the community, and yes, our competitors, they&#8217;re all watching. We find that pressure useful.</p><p>Since we use Port heavily ourselves, our own engineers often request features right alongside our customers.</p><p>It also forced us to get better at communicating timelines. When customers can see everything, you can&#8217;t be vague about what&#8217;s next or when it&#8217;s coming. High votes don&#8217;t guarantee a feature will ship, but they push us to explain why they won&#8217;t right now.</p><p>The community also surfaces things we may miss. We look at every item, even ones that seem minor. But if a lot of people vote for it, we pay more attention and start asking why. We know community requests can&#8217;t be the entire roadmap, but they&#8217;re a significant part of it.</p><h2>Are we worried about copycats?</h2><p>If other companies in our space see our plans and ship something similar, that&#8217;s fine. It moves the whole category forward. Our Director of Product, Dudi, puts it this way: &#8220;You can copy features but you can&#8217;t copy culture.&#8221;</p><p>Because Port is a platform, everything connects. For example, custom widgets are built on top of dashboards, which are built on top of the catalog, which ties into automations, scorecards, and everything else. So our IP isn&#8217;t a list of features. It&#8217;s how everything connects and the approach we took to solve the problem. If a competitor finds itself building their roadmap based on what we publish, their whole strategy is reactive.</p><p>We believe that when vendors hide the roadmap, the customer pays the price. They negotiate for information instead of building with the product team. We&#8217;d rather everyone in this space be more open about what they&#8217;re building. It&#8217;s better for the people who use the products.</p><h2>We&#8217;d do it again</h2><p>People ask us all the time why we opened up the roadmap. By now, it&#8217;s just how we work. It takes effort to manage and it requires honest communication about priorities. You also have to be willing to be held to what you say you&#8217;ll build.</p><p>But it got us to the product we have today which we&#8217;re very proud of.</p><p>You can see everything we&#8217;re working on at <a href="https://roadmap.getport.io/?__hstc=106030492.6b512e3384a33e64f754281263bcc1e6.1764846724143.1774966869102.1774985712516.17&amp;__hssc=106030492.6.1774985712516&amp;__hsfp=15488d6fb918b78cf73331400dc41cc5">our public roadmap</a>. Upvote something, suggest a feature, tell us we&#8217;re wrong. That&#8217;s what it&#8217;s there for.</p>]]></content:encoded></item><item><title><![CDATA[63 earnings calls. 0 engineering outcomes tied to AI.]]></title><description><![CDATA[We analyzed 63 recent earnings calls and found that 21 companies reported how much of their code is AI-generated, but none connected that number to any engineering outcome.]]></description><link>https://newsletter.port.io/p/63-earnings-calls-0-engineering-outcomes</link><guid isPermaLink="false">https://newsletter.port.io/p/63-earnings-calls-0-engineering-outcomes</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Mon, 30 Mar 2026 15:14:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!y3Qg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We analyzed 63 recent earnings calls and found that 21 companies reported how much of their code is AI-generated, but none connected that number to any engineering outcome. Here's what they said, why the gap exists, and what your team can check this week.</p><p>HubSpot&#8217;s CEO told analysts that 97% of their committed code last year was done with AI assist. </p><p>Google&#8217;s CFO said about 50% of their code is written by AI agents. </p><p>Spotify&#8217;s co-CEO said their best developers haven&#8217;t written a single line of code since December.</p><p>These are all from earnings calls in the last four months.</p><p>I got curious about this, so I went through 63 companies&#8217; recent earnings transcripts. </p><p>21 mentioned AI for internal engineering. And the pattern was the same every time:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!y3Qg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!y3Qg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 424w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 848w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 1272w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!y3Qg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png" width="1392" height="990" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:990,&quot;width&quot;:1392,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:181718,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://autonomousengineering.substack.com/i/192755161?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!y3Qg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 424w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 848w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 1272w, https://substackcdn.com/image/fetch/$s_!y3Qg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc26240ba-9ce8-46d8-8b00-aa3cb091db18_1392x990.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These companies all ship software. They all track how often they deploy, how fast they resolve incidents, how their engineering org performs. And they can all tell you what percentage of their code is AI-generated. What they can&#8217;t tell you is whether the first number changed the second one.</p><p>Across all 63 companies, I found zero mentions of deployment frequency tied to AI. </p><p>Zero on MTTR. </p><p>Zero on lead time, change failure rate, or incident reduction connected to AI tooling. </p><p>The metrics DORA has tracked for a decade as the standard for engineering performance. They exist. The AI number exists. On earnings calls, the two just never appear in the same sentence.</p><p>Airbnb&#8217;s Brian Chesky said it himself on the call. He noted that getting to 100% AI tool adoption would be a &#8220;vanity metric.&#8221; The real question, he said, is whether the organization adapts fast enough to use those tools well. </p><p>I think he&#8217;s right. But even Airbnb reported the adoption number without connecting it to any engineering outcome.</p><h2>Individual output is up. Organizational output isn&#8217;t.</h2><p>Faros AI looked at telemetry from 10,000 developers across 1,255 engineering teams. Not surveys, actual data from source control, CI/CD, and task trackers. Individual output was up 21%. PRs merged up 98%. But PR review times grew 91%. PR sizes grew 154%.</p><p>Net organizational delivery velocity: flat.</p><p>Engineers are producing more code. Organizations aren&#8217;t shipping faster. The bottleneck moved from writing code to reviewing, testing, and integrating it.</p><h2>The companies that could connect AI to outcomes had one thing in common</h2><p>Some companies did give outcome numbers on earnings calls. Pfizer: $600 million saved through Golden Batch AI in manufacturing. Amazon: Q Developer migrated 30,000 Java applications, saving $260 million a year, with 79% of auto-generated code shipped without human changes.</p><p>Those companies could draw the line between AI and outcomes because they were already tracking the specific metric AI was going to change. Pfizer had years of batch data (yield, cycle time, cost-per-unit) for the exact process Golden Batch would optimize. Amazon had a clear before (50 developer-days per Java migration) and a clear after (a few hours).</p><p>For engineering, this is genuinely harder. Manufacturing batches are comparable by design: same inputs, same process, same expected output. Engineering work isn&#8217;t. Every feature has a different scope. Every sprint has different complexity. If your deployment frequency went up 30% after rolling out AI tools, it could be the AI. It could also be that you shipped a simpler roadmap that quarter, or hired three seniors, or finally fixed the CI pipeline that was slowing everyone down. Isolating what AI actually changed from everything else that changed at the same time is a real problem, and most engineering orgs haven&#8217;t solved it.</p><p>That&#8217;s why the claims that do exist tend to fall apart. IBM claimed 45% productivity gains from Project Bob across 20,000 developers. When you look at their own published research, the data was self-reported. Not what people shipped. What they said it felt like.</p><p>Spotify said their best engineers stopped writing code. That tells you how the workflow changed. It doesn&#8217;t tell you whether Spotify ships more reliably or resolves incidents faster.</p><h2>Don&#8217;t just report AI adoption. Connect it to something.</h2><p>The code percentages are going to keep climbing. They&#8217;ll reach 80, 90% at most companies within a year or two. At that point the number alone stops being interesting, the same way &#8220;we use cloud&#8221; did a decade ago.</p><p>The company that connects the AI number to an engineering outcome &#8212; &#8220;50% of our code is AI-generated, and our deployment frequency increased 30% over the same period&#8221; &#8212; will stand out from the nine companies that can only report the first half.</p><p>For engineering broadly, that connection still hasn&#8217;t been made on any earnings call we looked at. The engineering org that makes it first will be the one everyone else gets compared to.</p><h2>What you can check this week</h2><p>If your CEO gets asked about engineering AI on the next earnings call, could your team connect the AI adoption number to an engineering outcome?</p><p>Three things worth looking at:</p><p>Do you have a before number for the workflows AI is supposed to improve? If you deployed AI coding tools six months ago and didn&#8217;t snapshot your deployment frequency, lead time, or change failure rate at that point, it&#8217;s going to be hard to show what changed. If you haven&#8217;t captured that baseline yet and still can, do it now.</p><p>Is your dashboard connecting AI to engineering outcomes, or just tracking AI usage? If the headline metric is Copilot adoption rate or tokens generated, that&#8217;s the same kind of number nine other companies already reported this quarter. The numbers that held up on earnings calls were resolution time, cost per unit, hours saved on a named workflow. Worth checking whether yours ties any of those to AI.</p><p>Can you name one workflow with a before and after? Say you rolled out AI coding tools in October. Your average PR cycle time before was 4 days. Now it&#8217;s 2.5. That&#8217;s one workflow, one before, one after. If you can draw that line for even one engineering process, you&#8217;ve made a connection most companies in this dataset haven&#8217;t.</p><p>The 2025 DORA report found that AI amplifies whatever is already there. Teams with strong engineering platforms and observability get real gains. Teams without them get more instability. The foundation matters more than the tooling.</p><p>That&#8217;s what we&#8217;re building at Port. A platform that gives engineering teams the catalog, the baselines, and the visibility to connect AI adoption to what actually changed.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://newsletter.port.io/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Autonomous Engineering! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What is a service?]]></title><description><![CDATA["Service" means something different to every team. Here's a precise definition, a litmus test, and a catalog schema, plus why AI agents make getting this right urgent.]]></description><link>https://newsletter.port.io/p/what-is-a-service</link><guid isPermaLink="false">https://newsletter.port.io/p/what-is-a-service</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Mon, 23 Mar 2026 12:36:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PcCT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>&#8220;Agents magnify the DevOps &amp; infra best practices you have, or the lack of practices you have.&#8221;</p><p>That&#8217;s what one of our customers told us recently and he&#8217;s a platform engineer at a Fortune 500 finance company. And the practice that trips up the most teams is how they define a &#8220;service&#8221; in their software catalog.</p><p>Is it a repo? A Kubernetes deployment? A business capability like &#8220;payments&#8221; or &#8220;checkout&#8221;? A Lambda function?</p><p>It may not seem like an issue, but once a company grows past a few teams, that ambiguity creates friction you can feel but can&#8217;t easily point to - like an incident where you don&#8217;t know who to page.</p><p>So if you don&#8217;t have an agreed-upon definition, it&#8217;s probably one of the most impactful things you can align on.</p><p>Here&#8217;s how we think about it:</p><h2>How we define &#8220;service&#8221; at Port</h2><p>The definition we&#8217;ve agreed on internally: a service is a deployable unit owned by a single team that exposes a stable interface to other systems.</p><p>Owned by a single team is clear, but what are deployable units and stable interfaces?</p><p>Deployable unit means that your team can change it, release it, and roll it back without requiring other teams to deploy their services at the same time.</p><p>Stable interface means that the way other systems interact with the service (API, events, etc.) changes slowly and backward-compatibly so consumers don&#8217;t break when the service evolves.</p><h3><strong>Quick litmus test: is it a service?</strong></h3><p>If you can answer yes to all of these, it&#8217;s probably a service:</p><ul><li><p>Can you deploy it independently, without coordinating with another team?</p></li><li><p>If it goes down at 2am, is there one clear owner to page?</p></li><li><p>Can you roll it back without rolling back something else?</p></li><li><p>Does it have its own CI/CD pipeline (or a distinct stage in a shared one)?</p></li></ul><p>And a few signs it&#8217;s <em>not</em> a service:</p><ul><li><p>A shared library that other teams import (that&#8217;s a dependency, not a service)</p></li><li><p>A repo that contains three things deployed on different schedules (that&#8217;s three services, not one)</p></li><li><p>A Helm chart that bundles unrelated containers (that&#8217;s packaging, not a service)</p></li></ul><p>There&#8217;s no true universal answer here and some companies might have multiple definitions of service internally (which is fine). The goal is getting to agreement in your engineering department so that your catalog, your on-call, and your scorecards all reference the same thing.</p><h2>Best practices: what a service should look like in your catalog</h2><p>Once you've agreed on the definition, the next question is: what are the most important properties that a service should have, and what should it connect to?</p><ul><li><p>Owning team: just one team (so you know who to turn to when something needs fixing)</p></li><li><p>Lifecycle stage: production, staging, deprecated, experimental (so humans and agents know what&#8217;s active and what to leave alone)</p></li></ul><ul><li><p>Tier/criticality: P0 revenue-critical vs. P3 internal tooling (drives SLO targets and incident response)</p></li><li><p>Language/framework: useful for scorecards and security scanning</p></li><li><p>Deploy target: where it runs (EKS cluster, Lambda, Cloud Run, etc.)</p></li><li><p>Repo: link to source (but remember: the repo is not the service)</p></li><li><p>Communication channel: link to Slack or Teams channel (so you or an agent knows where to page the owning team)</p></li></ul><p>On its own, a service isn't worth that much. It needs to be connected to other things to be truly valuable.</p><ul><li><p>Depends on: what other services does this call at runtime?</p></li><li><p>Consumed by: what other services rely on this service?</p></li><li><p>Owned by: Both a property and a connection to the owning team</p></li></ul><p>The connections matter more than the properties. Without dependencies, you can't calculate blast radius. Without "Owned by" linked to a team with on-call data, incident routing breaks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PcCT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PcCT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 424w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 848w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PcCT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png" width="1456" height="1261" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1261,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!PcCT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 424w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 848w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 1272w, https://substackcdn.com/image/fetch/$s_!PcCT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff25befc2-5a87-4380-ab5c-ef0f52063526_1600x1386.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Defining a service matters more now than ever</h2><p>Picture a P1 incident at 2am. A latency spike is hitting checkout. With a clean service definition, your on-call engineer opens the catalog, sees checkout-service, sees it depends on payment-gateway and cart-service, sees the owner is Team Payments, and starts debugging. The blast radius to other services is clear. The escalation path to senior engineers is clear. Time to action would be just minutes.</p><h2>How to get started</h2><ol><li><p>Test if your services are services. Run each service through the litmus tests above. If you can deploy it independently and it&#8217;s owned by one team, it&#8217;s a service. If not, it may be a dependency, a sub-component, or multiple services bundled together.</p></li><li><p>Audit them against reality. Pull up a few recent incidents and compare what broke against what your catalog says. If the incident damaged three things the catalog calls one service, your definitions might be off.</p></li><li><p>Build the schema. Decide which core properties and relations are important to connect to your services. We recommend starting with owner, lifecycle, tier/criticality, and dependencies.</p></li><li><p>Make it the contract, company-wide. Once the definition and schema are agreed on, treat them like infrastructure. New services must be created from the template. Existing ones get migrated. If there are exceptions, they should get documented, not ignored.</p></li></ol><p>You don't need a definition that covers every edge case. You need a shared one that's precise enough for both humans and agents to rely on.</p>]]></content:encoded></item><item><title><![CDATA[How AI would have handled a real incident at Port]]></title><description><![CDATA[&#8205;We had a real incident where three teams investigated the same problem in parallel. Here's what happened and how we're using Port to move toward autonomous incident resolution]]></description><link>https://newsletter.port.io/p/how-ai-would-have-handled-a-real</link><guid isPermaLink="false">https://newsletter.port.io/p/how-ai-would-have-handled-a-real</guid><dc:creator><![CDATA[Zohar Einy]]></dc:creator><pubDate>Wed, 04 Mar 2026 15:39:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Iyat!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A couple of weeks ago we had an incident. Three different teams got paged, each one investigated separately, and it took some time to figure out they were all looking at the same problem.</p><p>We went through the Slack threads afterward and mapped out what happened. Then we got together as a team and asked: what would this have looked like if an agent handled the incident end-to-end?</p><p>This article is that exercise. The real incident, what went wrong in how we responded, and what we&#8217;re building to make sure it goes differently next time.</p><h2>The incident</h2><p>On a Friday evening, a customer created 1.7 million automation runs in 90 minutes. Kafka offset lag spiked across multiple services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Iyat!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Iyat!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 424w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 848w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 1272w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Iyat!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png" width="1456" height="822" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:822,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Iyat!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 424w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 848w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 1272w, https://substackcdn.com/image/fetch/$s_!Iyat!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a83528-1fe7-4da8-bb6c-546c004a418b_1600x903.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>PagerDuty fired alerts for three of our teams: Actions, Spotlight, and Builder. Three on-call engineers acknowledged in three separate Slack channels without knowing about each other.</p><p>The Actions team found the offset lag first. Their on-call engineer restarted the service worker through a self-service action in Port. It didn&#8217;t help. So he then dug into our automation run counts, narrowed the spike to three orgs, traced them all back to one customer. After that, he tried to scale out, but the config override action didn&#8217;t exist in Port for this service. So he opened a manual PR, waited for DevOps approval, and hit a failing Argo diff that needed a third person.</p><p>Another team called Builder also got a PagerDuty alert at the same time, but started talking about it in a different Slack thread. Their engineer also restarted workers. Also checked New Relic. Also checked Kafka UI. And got the same false hope: &#8220;lag seems to decrease as restart rolls out.&#8221; It didn&#8217;t.</p><p>43 minutes in, someone from a 3rd team Spotlight, while dealing with the same incident on their own, finally asked: &#8220;do you think our alert is related?&#8221; That was the first time anyone connected the dots. Three teams had been investigating the same root cause in parallel, trying the same restart that didn&#8217;t work, wasting the same ten minutes twice.</p><p>By the time the threads merged, 77 minutes had passed. The remediation plan was two words: scale out. Getting there took over an hour of human coordination across three Slack threads, New Relic, Kafka UI, PagerDuty, GitHub, and Argo.</p><p>But we&#8217;re working on something big to resolve incidents in record time.</p><h2>Our first step: A triage agent</h2><p>We&#8217;re building toward an agent that handles the full incident lifecycle. But the first piece is already live: an agent that triages the incident in Port and posts a message to on-call engineers in Slack within minutes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aKYt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aKYt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 424w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 848w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 1272w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aKYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png" width="1048" height="1382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1382,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!aKYt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 424w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 848w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 1272w, https://substackcdn.com/image/fetch/$s_!aKYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79b01d7a-2e79-4214-a054-261d9c32608f_1048x1382.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Two things make it work:</p><p><strong>The Context Lake<br></strong>The <a href="https://docs.port.io/ai-interfaces/context-lake">Port Context Lake</a> gives the agent everything it needs to know about how our SDLC behaves. It holds everything about our micro-services, deployment history, CI/CD jobs, ownership, dependencies, vulnerabilities, team structure, and much more. When the agent finds a failing service, it already knows who owns it, what recently deployed, what other services depend on it, and which customers are affected because everything in Port is connected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fvx3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fvx3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 424w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 848w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 1272w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fvx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png" width="1456" height="873" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:873,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!fvx3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 424w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 848w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 1272w, https://substackcdn.com/image/fetch/$s_!fvx3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ac866a5-8c79-4c83-98eb-06f9e3e71c18_1600x959.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>During the Kafka incident, an engineer spent time tracing three org IDs back to one customer. The context lake already has those relationships. The agent would have just read them instead of piecing them together between different tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N1Rk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N1Rk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 424w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 848w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N1Rk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png" width="1456" height="1198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1198,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!N1Rk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 424w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 848w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!N1Rk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F02a647ea-c974-452c-ad8b-1e452ada7753_1600x1316.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Equipped with those two things, here's what the triage agent does:</p><h2>Why Port</h2><p>The agent does the investigation. But when it's time to act, like restarting a service, scaling out workers, or rolling back a deployment, a human approves it through Port. Here's why that matters.</p><ul><li><p>how much time the agent saved per incident</p></li><li><p>how often engineers accepted the recommendation vs. overrode them</p></li><li><p>the sentiment from engineers on how the agent performed</p></li></ul><p>Put these on a dashboard and then you'll know exactly what autonomous incident resolution is worth and where it still needs work.</p><h2>What&#8217;s next</h2><p>The triage agent is just the first step. We're building Port to heal incidents autonomously. So let's revisit the Kafka incident and see how it would have gone differently.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dR83!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dR83!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!dR83!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!dR83!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!dR83!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dR83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png" width="1456" height="382" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:382,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dR83!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 424w, https://substackcdn.com/image/fetch/$s_!dR83!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 848w, https://substackcdn.com/image/fetch/$s_!dR83!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 1272w, https://substackcdn.com/image/fetch/$s_!dR83!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf45c869-132a-4cc9-9fb1-fe81d62ba303_1600x420.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The incident management future we see</h2><p>Incident management is moving from reactive to autonomous. We already know agents can do it. The question is how you get there without losing control.</p><p>The companies moving fastest are building agents that pursue multiple hypotheses in parallel, correlate across systems, and suggest remediations. They&#8217;re participants in the on-call rotation that work across your code, infra, and telemetry.</p><p>We think the foundation for that is context. An agent that doesn&#8217;t know your architecture, your ownership model, your dependencies, and your playbooks can just be a faster way to get the wrong answer. The context lake and the skill file are what turn a generic agent into one that investigates the way your team does.</p><p>If you want to build something similar to what we described, we&#8217;re publishing the skill file, the workflow definition, and a guide for how we do incident management at Port.</p>]]></content:encoded></item></channel></rss>