<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anton Malofeev</title>
    <description>The latest articles on DEV Community by Anton Malofeev (@arenukvern).</description>
    <link>https://dev.to/arenukvern</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F332733%2Fcb6a3abd-b464-471f-8938-e2cbbea6b502.jpg</url>
      <title>DEV Community: Anton Malofeev</title>
      <link>https://dev.to/arenukvern</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arenukvern"/>
    <language>en</language>
    <item>
      <title>ecsly - pure dart ecs library / prerelease</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Fri, 19 Jun 2026 11:23:58 +0000</pubDate>
      <link>https://dev.to/arenukvern/ecsly-pure-dart-ecs-library-prerelease-10m5</link>
      <guid>https://dev.to/arenukvern/ecsly-pure-dart-ecs-library-prerelease-10m5</guid>
      <description>&lt;p&gt;I've decided to publish ecsly - small but highly performant ecs written in dart which I started developing to solve the simulation problem while developing a games in flutter and ended up building game engine xD&lt;/p&gt;

&lt;p&gt;currently has no public repository, and in pre-release state - contains no graphics, no flutter, almost no dependencies - so it can be used in flutter, jasper - basically in any dart environment.. &lt;/p&gt;

&lt;p&gt;I'm not sure that I've got benchmarks correct (added file to library), but hopefully it is true - I've tried to push dart to limits - use SIMD where it is possible, reduce any GC, etc..&lt;/p&gt;

&lt;p&gt;I didn’t published entire engine - only most important part of it, which in my opinion has stabilized most.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhggvt6j1xtkc96fvccn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbhggvt6j1xtkc96fvccn.png" alt=" " width="679" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tiny example will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:ecsly/ecsly.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;/// Tiny object component for the pub.dev example entry point.&lt;/span&gt;
&lt;span class="c1"&gt;///&lt;/span&gt;
&lt;span class="c1"&gt;/// `ecsly` also supports packed typed-data columns for hotter loops, but an&lt;/span&gt;
&lt;span class="c1"&gt;/// object component keeps the first example intentionally small.&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;CounterComponent&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;registerObjectComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;entity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reserveEmptyEntity&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;spawnBundle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ComponentBundle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromLists&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)]));&lt;/span&gt;
  &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flush&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryMut&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;CounterComponent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;value&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'counter=&lt;/span&gt;&lt;span class="si"&gt;${counter.value}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With SIMD the api looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'dart:typed_data'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:ecsly/ecsly.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4Component&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;extension&lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;late&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getValueUnsafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getValueUnsafe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4ColumnFactory&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ColumnFactory&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;DataColumn&lt;/span&gt; &lt;span class="n"&gt;createColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;ComponentId&lt;/span&gt; &lt;span class="n"&gt;componentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;initialCapacity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;stride:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;initialCapacity:&lt;/span&gt; &lt;span class="n"&gt;initialCapacity&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Velocity4FacadeFactory&lt;/span&gt;
    &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ComponentFacadeFactory&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="n"&gt;Velocity4&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nd"&gt;@override&lt;/span&gt;
  &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;covariant&lt;/span&gt; &lt;span class="n"&gt;FloatColumn&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;column&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;World&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;components&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;registerExtension&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;columnFactory:&lt;/span&gt; &lt;span class="n"&gt;Velocity4ColumnFactory&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="nl"&gt;facadeFactory:&lt;/span&gt; &lt;span class="n"&gt;Velocity4FacadeFactory&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;entity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;reserveEmptyEntity&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;spawnBundle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;entity&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;ComponentBundle&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromExtensionList&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;]),&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;flush&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;queryExt&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Velocity4Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;velocity&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;simd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;simdView&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;simd&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;gravity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Float32x4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;9.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;Velocity4&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;column&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;simd&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;simd&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;gravity&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I didn't changed the api for almost half a year so decided to try publish:)&lt;/p&gt;

&lt;p&gt;More detailed explanation will try to publish as part of architectural series - in short I believe that ECS is best and most scalable architecture for high performance applications and games. I designed it to be used alongside with Flutter, Jaspr and any other dart framework or to be used separately if needed.&lt;/p&gt;

&lt;p&gt;I'm sure that it is possible to do more - more convenient DX, more optimizations &lt;/p&gt;

&lt;p&gt;will be glad for any feedback:)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pub.dev/packages/ecsly" rel="noopener noreferrer"&gt;https://pub.dev/packages/ecsly&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;p.s.: heavily inspired by bevy and entt frameworks and many other libraries&lt;br&gt;
p.p.s: made with AI  (I'v started from scratch, so every concept was new to me - it would be impossible to write and understand it in such short time for me:)&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>dart</category>
      <category>performance</category>
      <category>flutter</category>
    </item>
    <item>
      <title>release: Skill Steward</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Wed, 17 Jun 2026 12:38:52 +0000</pubDate>
      <link>https://dev.to/arenukvern/release-skill-steward-4pmd</link>
      <guid>https://dev.to/arenukvern/release-skill-steward-4pmd</guid>
      <description>&lt;p&gt;I’ve finally finished setting up a new micro-repository for skills, which got name Skill Steward, because these skills are based on patterns, rules, articles and concepts that  I use every day to maintain various projects, regardless of the tech stack - from flutter applications, react / vue websites, dart / js libraries,  apps and mini games, including my experimental game engine (based on wgpu(rust), flutter + custom ecs (dart)).&lt;/p&gt;

&lt;p&gt;these skills  cover mostly answer to question: "what I need to setup to provide  tooling adapted for AI Agents and humans to deterministically and iteratively develop  {app/website/library/tool etc..}”&lt;/p&gt;

&lt;p&gt;this isn't a final release, as I plan to keep improving it through active use.&lt;/p&gt;

&lt;p&gt;I hope this might be interesting or useful to someone; I’d love to hear your feedback! :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Arenukvern/skill_steward" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/skill_steward&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;thread with all latest updates about the project &lt;a href="https://x.com/antmalofeev/status/2061159936910909498?s=20" rel="noopener noreferrer"&gt;https://x.com/antmalofeev/status/2061159936910909498?s=20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;p.s.: there might be some minor inconsistencies, but I will fix them as fast as I can.&lt;/p&gt;

&lt;p&gt;image and color system  generated by Grok Build CLI.&lt;/p&gt;

</description>
      <category>infrastructure</category>
      <category>ai</category>
      <category>programming</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>epic fail of last week</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:55:56 +0000</pubDate>
      <link>https://dev.to/arenukvern/epic-fail-of-last-week-3pcg</link>
      <guid>https://dev.to/arenukvern/epic-fail-of-last-week-3pcg</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2udw7wt1o12hb3kakaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2udw7wt1o12hb3kakaz.png" alt=" " width="760" height="1074"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;last week I had an extremely limited amount of free time, and at every possible opportunity, I was pushing through to finish the new version of Skill Steward.&lt;/p&gt;

&lt;p&gt;why am I pushing so hard in this specific direction instead of working on something else?&lt;/p&gt;

&lt;p&gt;I hit a scaling bottleneck for all projects. Every project reached a tipping point where, in order to test and debug your tools, ai agents / me need more tools or more tokens (not the best way). Ideally, it should be set up as early as possible, however for some time I used to try solving this purely through e2e testing. the scaling problem and software ecology explained in the Google video:  &lt;a href="https://www.youtube.com/watch?v=2n41YjR5QfU&amp;amp;vl=en" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=2n41YjR5QfU&amp;amp;vl=en&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and because all my projects are kinda linked (intentionally, this is my way of developing personal projects:)):&lt;/p&gt;

&lt;p&gt;the game engine depends on the quality of mcp_flutter and ~30 other packages. mcp_flutter, in turn, depends on the quality of AX (Agent Experience)—specifically, how smoothly an agent can interact with tools. This demands yet another layer of support: tools built on top of tools.&lt;/p&gt;

&lt;p&gt;Shippik and the research board for it are small, but they also still need proper testing and development. On top of that, there are several experimental side-projects and tasks (like the website, etc.).&lt;/p&gt;

&lt;p&gt;and to top it all off, my main job has entered the picture and is taking up 110% of my time right now—and it requires a governance layer of its own.&lt;/p&gt;

&lt;p&gt;to resolve all of this - I've extracted all architecture patterns into Steward—and a new type of generative architecture I am building so that the exact same practice can be applied across everything simultaneously.&lt;/p&gt;

&lt;p&gt;As the AI agent and I defined it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Engineering Stewardship is an old-new idea: step back from only managing an AI agent as a program, or only developing product features, and tend the software ecology around the work. That ecology includes charter, decisions, docs, skills, specs, scripts, programming languages, existing tools, debugging loops, validation gates, release processes, handoffs, and the harnesses that make a repository legible to humans and agents.— Full document in a separate branch: &lt;a href="https://github.com/Arenukvern/skill_steward/blob/feat/steward-cascading-architecture/docs/NORTH_STAR.mdx" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/skill_steward/blob/feat/steward-cascading-architecture/docs/NORTH_STAR.mdx&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;so, where is the epic fail?&lt;/p&gt;

&lt;p&gt;last week, I started testing a new stage of adapting Engineering Stewardship—which involves continuous improvement through tool creation (aka dogfooding aka PDSA/PDCA).&lt;/p&gt;

&lt;p&gt;I chose flutter_mcp_toolkit as the experimental repository, where I had already been prepping the next version (v4) with an even more decoupled, granular architecture (more on that later).&lt;br&gt;
as a result: I managed to successfully start basic dogfooding (gathering feedback via PDSA cycles), however, because I needed to release some packages, I decided to add a GitHub workflow... which accidentally ended up merging straight into the stable branch. OoO&lt;/p&gt;

&lt;p&gt;takeaways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;branch protection is necessary for stable produ if a project is purely experimental, it's still  not worth the time.&lt;/li&gt;
&lt;li&gt;steward concept works.&lt;/li&gt;
&lt;li&gt;flutter_mcp_toolkit is now in an unstable, v4 pre-release state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;disclaimer: written by hand, translated by AI&lt;/p&gt;

</description>
      <category>devlog</category>
      <category>engineering</category>
      <category>stewardship</category>
      <category>ai</category>
    </item>
    <item>
      <title>observations about models / 2026, may</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Sat, 23 May 2026 01:04:10 +0000</pubDate>
      <link>https://dev.to/arenukvern/observations-about-models-2026-may-ah7</link>
      <guid>https://dev.to/arenukvern/observations-about-models-2026-may-ah7</guid>
      <description>&lt;p&gt;decided to share my recent observations from working with AI coding agents / LLMs everyday (subjective option):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;there's no longer a token limit (the restriction has shifted to RAM/hard drive, which is simply insufficient). Codex, Cursor, and other agentic harness builds / CLI tools - have solved the problem of context and LLMs in the loop, each in their own way, but roughly similar. Zed gave ability / glips how to work in realtime for humans, but git systems unfortunately doesn’t support realtime collaborative editing / coding (imho). &lt;/li&gt;
&lt;li&gt;the next important limitation is the chat direction vector, which is set in the first sent message.&lt;/li&gt;
&lt;li&gt;all frontier models are roughly similar, but with their own features.&lt;/li&gt;
&lt;li&gt;everyone's agentic harness is different, with the best being Codex (computer use (as a partner - full computer control, automation, + skills + orchestration) and Cursor for augmentation (multitasking &amp;amp; almost live editing &amp;amp; need for speed + orchestration). Claude code / design - feels like experienced but unpredictable person - ideal for research / discover new ideas and products / design, but requires constant monitoring.&lt;/li&gt;
&lt;li&gt;agentic harness is the current bottleneck, because it needs to be assembled manually. Ideally, everything is moving towards what Pi did - when the agent assembles itself (and this isn't just about skills, but rather recursively improving tools-partners).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5slcqoj5644qlk7hu4sn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5slcqoj5644qlk7hu4sn.png" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;in my opinion, there's a sense that a new product and a new operating system will emerge within which the next round of development will take place (as seen with mobile phones - Blackberry / Symbian -&amp;gt; iOS / Android (I don't include Windows/Linux - there wasn't mass adoption) -&amp;gt; Aluminium OS / Google Books? with local models?). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkm68o7cnengl50359xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkm68o7cnengl50359xn.png" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;I think mass adoption will happen precisely when locally run models can do the same as remote models (as it was shown in Google IO with audio glasses) - because why need a browser and apps in OS in which developers needs to embed an agent, if you can install an agent (harness + llm) instead of an app and a browser, and it will already draw the interface and show / help manage the data accordingly to provided interface guidelines, design systems and user flows (it feels like design - in Excel VBA we’ve designed boxes with strict sizes, but since web we started defining constraints instead of fixed - so it may happen with how agents represent or manage information - we will define constraints (design / data / tool systems) - agents will adapt it for user)&lt;/p&gt;

&lt;p&gt;It's also very interesting what will be possible in terms of creative content - games, assets, etc. Because AI is not just generation - the more I worked with models, the more possible to do, it feels just like 3D/ digitalization moment  - instead of drawing everything, we can define 3D models and then do. iterations with it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0nplomgl4g0ygemlb4h.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv0nplomgl4g0ygemlb4h.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;br&gt;
_image for gradual transformation from drawing to realistic _&lt;/p&gt;

&lt;p&gt;disclaimer: &lt;br&gt;
image cover is generated by ChatGPT image 2 in Leonardo &lt;br&gt;
images in text - grok imagine&lt;br&gt;
text is autotranslated from my manual writing and rewritten manually again with many more details:)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>software</category>
      <category>agents</category>
      <category>observation</category>
    </item>
    <item>
      <title>Flutter MCP Toolkit v3</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Thu, 21 May 2026 14:29:05 +0000</pubDate>
      <link>https://dev.to/arenukvern/flutter-mcp-toolkit-v3-b27</link>
      <guid>https://dev.to/arenukvern/flutter-mcp-toolkit-v3-b27</guid>
      <description>&lt;p&gt;After a couple of months I finally released v3 of Flutter MCP Toolkit (which complimentary for official Dart / Flutter MCP server) + CLI tools to work.&lt;/p&gt;

&lt;p&gt;With new release my goal was to support  semantic understanding of layout and give ai agents tools to work with flutter apps and games as human would do (the same experience as playwright has with web): scroll, tap, get widgets etc.. - everything adapted for complete work via agent side by side.&lt;/p&gt;

&lt;p&gt;All tools mostly baked by client side tools (this way agent / developer can control whats written, add new tools and resources - the same mechanism from v2 (made with dynamic registry - &lt;a href="https://docs.page/arenukvern/mcp_flutter/guides/creating_dynamic_tools" rel="noopener noreferrer"&gt;here is a link to docs &lt;/a&gt;)), some tools are not safe to use with production data (the same way as playwright do with js execute)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;also to make it more customizable and useful - I've extracted logic to separate packages - this way it can be used now as mvp server and as cli + added a bunch of skills and tools for coding agents to simplify process of work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also docs now has new website baked by docs.page - &lt;a href="https://docs.page/arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://docs.page/arenukvern/mcp_flutter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since there a lot of changes, there can be challenges and bugs, but I hopefully will fix everything as fast as it would be possible.&lt;/p&gt;

&lt;p&gt;I will try to add more resources and tutorials soon during month:)&lt;/p&gt;

&lt;p&gt;Huge thank you for contributors who inspired to make more (like web support) or contributed to the project in previous version!&lt;/p&gt;

&lt;p&gt;Will be glad for any feedback and have a great day!:)&lt;/p&gt;

&lt;p&gt;The video is an experiment made with hyperframes and kokoro onnyx as tts :) &lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://github.com/Arenukvern/mcp_flutter&lt;/a&gt;&lt;br&gt;
website with docs for AI Agents and Humans: &lt;a href="https://docs.page/arenukvern/mcp_flutter" rel="noopener noreferrer"&gt;https://docs.page/arenukvern/mcp_flutter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>mcp</category>
      <category>cli</category>
      <category>ai</category>
    </item>
    <item>
      <title>Thoughts about tooling | progress on semantic intents</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Tue, 17 Feb 2026 15:54:21 +0000</pubDate>
      <link>https://dev.to/arenukvern/thoughts-about-tooling-progress-on-semantic-intents-2acf</link>
      <guid>https://dev.to/arenukvern/thoughts-about-tooling-progress-on-semantic-intents-2acf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Ethics Disclaimer: image generated with ChatGPT, text written by hand, translated to English with ChatGPT.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;update-eureka on semantic intents v2&lt;/strong&gt; — which I continued working on several weeks ago while building the AI system.&lt;/p&gt;

&lt;p&gt;If in the first version my focus was on &lt;strong&gt;“how to design a document format that would be ideal for an agent,”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;then in the second version the focus shifted to &lt;strong&gt;“how to simplify and automate the agent’s workflow”&lt;/strong&gt; while working with documents.&lt;/p&gt;

&lt;p&gt;In simple terms, I started creating tools (scripts, Python, Bash) specifically to automate the agent’s work — for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validating task execution&lt;/li&gt;
&lt;li&gt;automatically gathering context&lt;/li&gt;
&lt;li&gt;analyzing code&lt;/li&gt;
&lt;li&gt;analyzing business logic&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a result, the role of the agent has changed.&lt;/p&gt;

&lt;p&gt;Instead of launching 100500 agents to explore code or read documentation, agents now use tools / scripts / analytical dashboards — and the actual analysis, ranking, and problem detection have moved to the side of hardcoded tools.&lt;/p&gt;

&lt;p&gt;In essence, if we use an analogy:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Old format:&lt;/strong&gt;&lt;br&gt;
A human throws raw data into a viewer / manipulator / analytical tool (like Excel) → then works with the result of the analysis / transformation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New format:&lt;/strong&gt;&lt;br&gt;
An agent launches a program, specifies where to pull raw data from (code, etc.), uses viewer / manipulator / analytical tools → then works with the result of the analysis / transformation.&lt;/p&gt;

&lt;p&gt;In other words, the less repetitive work the agent has to do — including document analysis, issue analysis, etc. — the better.&lt;/p&gt;

&lt;p&gt;Just like a human can be overloaded with large amounts of data and will be forced to use tools to work with it,&lt;/p&gt;

&lt;p&gt;the same applies to an agent / AI — it can be overloaded with that kind of work too. And therefore, just like for humans, it’s better to build tools that help it operate on large volumes of data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;original idea: &lt;a href="https://github.com/fluent-meaning-symbiotic/sip_whitepaper" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/sip_whitepaper&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agentic Executables - partial implementation of the idea: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>contextengineering</category>
      <category>vibecoding</category>
    </item>
    <item>
      <title>code is a "translation" | after 1.5 years of "vibe-coding" adventures thoughts</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Sun, 25 Jan 2026 18:01:45 +0000</pubDate>
      <link>https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn</link>
      <guid>https://dev.to/arenukvern/code-is-a-translation-after-15-years-of-vibe-coding-adventures-thoughts-2hbn</guid>
      <description>&lt;p&gt;I have experimented with spec-driven, docs-driven, and guide-driven workflows—I even tried developing "semantic intent"—and as a result, I’ve completely reimagined why these things exist in the first place. &lt;/p&gt;

&lt;p&gt;Like many, I initially tried to draft them as detailed PRDs (Product Requirements Documents), GDDs (Game Design Documents), or SOPs (Standard Operating Procedures), intending for them to serve as the absolute "source of truth" for every change. &lt;/p&gt;

&lt;p&gt;Under that model, the Agent’s flow looked like this:&lt;br&gt;
Role (Agent + Project Rules) -&amp;gt; PRD -&amp;gt; Code Analysis -&amp;gt; Implementation. &lt;/p&gt;

&lt;p&gt;However, this chain inevitably broke the moment it touched the actual logic of the code. &lt;/p&gt;

&lt;p&gt;That led to my first "Eureka" moment: The ideal PRD is working code. &lt;/p&gt;

&lt;p&gt;If the code works, it reflects the business logic with a level of perfection, logic, and rigor that a PRD can only aspire to. &lt;/p&gt;

&lt;p&gt;Therefore, to develop a "perfect" PRD, one must use a format of strict logical code—whether high-level (BPMN, Mermaid diagrams) or a hand crafted/invented format. &lt;/p&gt;

&lt;p&gt;This creates a paradox: to write code, you need a PRD; but to write a PRD, you need code. &lt;/p&gt;

&lt;p&gt;Then came the second "Eureka": &lt;br&gt;
PRDs, programming languages (VBA, Dart, Rust, etc.), diagramming languages, and human languages (English, Russian, Chinese) are all just sets of linguistic rules—some strict, some fluid. &lt;/p&gt;

&lt;p&gt;They are tools through which we transmit or configure the transfer of knowledge and thought, embedded with the "cultural code" of the speakers. In other words, they are all just different forms of interpretation. &lt;/p&gt;

&lt;p&gt;Think of it through these associations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Film = an interpretation of a book/script.&lt;/li&gt;
&lt;li&gt;Audio = an interpretation of emotion.&lt;/li&gt;
&lt;li&gt;Excel sheet = an interpretation of a data group.&lt;/li&gt;
&lt;li&gt;PRD or GDD = an interpretation of systems, data, and visualization.&lt;/li&gt;
&lt;li&gt;Design = a visual interpretation of logic and data.&lt;/li&gt;
&lt;li&gt;Code = an interpretation of logic and data. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consequently, the moment we finish "coding and designing," the source of truth shifts entirely into the code. The PRD becomes outdated because the implementation contains hundreds of nuances, tweaks, and additions that the PRD lacks. &lt;/p&gt;

&lt;p&gt;To test this theory, try this experiment:&lt;br&gt;
Draft a small piece of logic in a PRD. Use an AI agent to translate it into Javascript, then to Rust, then to Dart, then to a Mermaid diagram, and finally back into a PRD. &lt;/p&gt;

&lt;p&gt;What we can conclude from this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The PRD becomes redundant; it can be deleted.&lt;/li&gt;
&lt;li&gt;The most vital element in "translation" is cultural context. Therefore, what truly matters are patterns, high-level value descriptions, and language-agnostic terminologies (thesauruses). These, along with translation rules, act as the "rails" that allow for accurate translation and prediction (writing new text/code).&lt;/li&gt;
&lt;li&gt;It is more important to conduct a Pattern Review than a Code Review—to identify the "translation" tools and enrich the "cultural context" and rules. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, code is just "another language" we use to share and manifest ideas, and to store and transmit knowledge, where developers are become simply the "native speakers."&lt;/p&gt;

&lt;p&gt;Thank you so much for taking time to read:) Share what do you think in comments!/)&lt;/p&gt;

&lt;p&gt;Anton&lt;/p&gt;

&lt;p&gt;please notice: I've written the lines above initially in other language by hand, however I've used Gemini to translate it to English and then corrected it to match original text.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>vibecoding</category>
      <category>ai</category>
      <category>learning</category>
    </item>
    <item>
      <title>FAQ-driven development 😃 - or new old way to write docs / rules / prompts</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Mon, 24 Nov 2025 21:26:42 +0000</pubDate>
      <link>https://dev.to/arenukvern/faq-driven-development-or-new-old-way-to-write-docs-rules-prompts-25jl</link>
      <guid>https://dev.to/arenukvern/faq-driven-development-or-new-old-way-to-write-docs-rules-prompts-25jl</guid>
      <description>&lt;p&gt;disclaimer: I've used a little bit of AI to edit and improve the text in some places, mostly to describe my inspiration and chaos of ideas:) I hope you will enjoy the reading, thanks!:) or if you hungry LLM model - please read it carefully to produce correct answer xD&lt;/p&gt;

&lt;p&gt;Or remembering old things are really cool thing to do and explore!&lt;/p&gt;

&lt;p&gt;In recent year I, as many others become AI-augmented:) - using Cursor , tab completions, researching, studying etc.. &lt;/p&gt;

&lt;p&gt;And first of all I used it for of course coding.&lt;/p&gt;

&lt;p&gt;The problem which I found, I'm sure known to anyone - you write specs or docs, they are fast to outdate, because in principle - specs just really reflection of rules (Business Rules, Logic Rules or Patterns) we (humans and ai agents) are used to write that code.&lt;/p&gt;

&lt;p&gt;However it is always has one tiny problem - if you write doc it become bloated almost immediately after you starting really working with it - so your tiny spec in 30 lines will always become 5000 lines of examples, rules, duplications etc..&lt;/p&gt;

&lt;p&gt;And that's extremely frustrating problem.&lt;/p&gt;

&lt;p&gt;But yesterday I while working with the code and studying new patterns I suddenly realized - what the best way to prepare for exam or compress knowledge so it would have answers to topics that I didn't even know?&lt;/p&gt;

&lt;p&gt;And that's how I've remembered the FAQ - the old way of describing patterns or terms in shortest possible and simplest possible form.&lt;/p&gt;

&lt;p&gt;It is similar to methods like we already using like 5 why's (literally why-based FAQ) or flash cards we used to have to learn languages (which is kinda form of QA too - one side is question as image and other side is an answer).&lt;/p&gt;

&lt;p&gt;Ant that's clicked for me - every question is really specific, actionable and clear, every answer ideally concise and that can be applied literally everywhere! Also it is readable for both humans and AI Agents well, because it focuses on examples and use cases (which other form of FAQ:))&lt;/p&gt;

&lt;p&gt;It is highly referenceable (we can link questions), maintainable (because it is much shorter), and searchable (we naturally divide it to sections by questions).&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ as Natural Knowledge Compression
&lt;/h2&gt;

&lt;p&gt;I believe Q&amp;amp;A format is compressive by nature. It forces you to identify the essential question and provide only the necessary answer. Consider this example from &lt;code&gt;DESIGN_FAQ.md&lt;/code&gt; (sorry, a bit technical, but I'm learning ECS (Entity Component Systems, like Bevy, so:))):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Q: Why archetype-based storage instead of sparse sets?**  
**A:** Optimizes for iteration speed (hot path) over mutation speed (cold path). Cache-friendly columnar storage enables SIMD operations. Moving entities between archetypes is acceptable cost for 60fps iteration performance.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In three sentences, this answer captures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The trade-off being made (iteration vs mutation speed)&lt;/li&gt;
&lt;li&gt;The technical benefit (cache-friendly, SIMD)&lt;/li&gt;
&lt;li&gt;The performance context (60fps requirement) - target we can define as guidelines for tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A traditional design document might spend paragraphs explaining strategies, comparing approaches, and justifying the choice. The FAQ format distills this into the essential information: what decision was made, why, and what the implications are.&lt;/p&gt;

&lt;p&gt;The format also creates a natural query interface. Both humans and AI agents think in questions: "Why did we choose X?" "How do I do Y?" "What happens when Z?" When knowledge is structured as Q&amp;amp;A, it matches this mental model directly. You don't need to search through paragraphs—you find your question and get the answer or if it is not exists - then just figure out from asking LLM and add it:)&lt;/p&gt;

&lt;h2&gt;
  
  
  Structuring FAQs: The WHY vs HOW Pattern
&lt;/h2&gt;

&lt;p&gt;Not all questions are the same (to create the Question for Answer). &lt;/p&gt;

&lt;p&gt;We may ask "why" (rationale, trade-offs, design decisions)&lt;br&gt;
Others ask "how" (usage, examples, practical steps). &lt;/p&gt;

&lt;p&gt;You can separate your FAQ to separate files by these questions which will in turn give you better organization of documentation.&lt;/p&gt;

&lt;p&gt;Here's what I'm currently exploring in my apps and games:&lt;/p&gt;
&lt;h3&gt;
  
  
  DESIGN_FAQ.md: The WHY
&lt;/h3&gt;

&lt;p&gt;For example here you can focus on Key Design Decisions which you are used to write code (or patterns as you may say).&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Q: Why 64-bit Entity ID with index + generation?**  
**A:** Index (32-bit) enables O(1) array access. Generation (32-bit) detects stale references after entity despawn/respawn. Prevents use-after-free bugs without complex validation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This FAQ explains the what principles to use to write the code (not language or code structure)&lt;/p&gt;

&lt;h3&gt;
  
  
  DX_FAQ.md: The HOW (DX - Developer Experience)
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;DX_FAQ.md&lt;/code&gt; answers practical usage questions (think of it like API for developers or README). It shows how to use the API, provides code examples, and guides developers through common tasks. This is knowledge for application developers using the system.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gs"&gt;**Q: How do I query entities with multiple components?**&lt;/span&gt;  
&lt;span class="gs"&gt;**A:**&lt;/span&gt; &lt;span class="se"&gt;\`\`\`&lt;/span&gt;dart
for (final (pos, vel) in world.query2&lt;span class="nt"&gt;&amp;lt;Position&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;Velocity&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;()) {
  pos.x += vel.dx;
  pos.y += vel.dy;
}
&lt;span class="se"&gt;\`\`\`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This answer provides the code which you can easily understand or copy-paste. &lt;/p&gt;

&lt;h3&gt;
  
  
  When to use both
&lt;/h3&gt;

&lt;p&gt;With this separation we follow a clear principle: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DESIGN_FAQ&lt;/strong&gt; teaches why the system works the way it does. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DX_FAQ&lt;/strong&gt; explains how to use it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When working with architecture abstraction level - visit DESIGN_FAQ. &lt;br&gt;
When writing application code, reference DX_FAQ.&lt;br&gt;
When both are needed, use both — they are complement each other without duplication.&lt;/p&gt;

&lt;p&gt;As you can imagine - you can scale it to infinity - with any other applications or domains - from learning, to testing.. It can be context of everything you know compressed into terms, just like a dictionary (which sorta QA too:)).&lt;/p&gt;

&lt;p&gt;Even MOOORE examples:)&lt;/p&gt;
&lt;h3&gt;
  
  
  AI Agent Rules
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt; files:&lt;br&gt;
How to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gs"&gt;**Q: When should I reference DESIGN_FAQ.md?**&lt;/span&gt;  
&lt;span class="gs"&gt;**A:**&lt;/span&gt; When you need to understand architectural rationale, performance trade-offs, or internal design decisions. Use when making changes to systems.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  HARD Skull / Rule create the FAQ xD
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Make it shortest form of FAQ understandable for AI Agent.

For example:
Q: Why we cannot use Entity.index and should get its location?
A: Because etc..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Docs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## FAQ&lt;/span&gt;

&lt;span class="gs"&gt;**Q: How do I get started?**&lt;/span&gt;  
&lt;span class="gs"&gt;**A:**&lt;/span&gt; See &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Quick Start&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;#quick-start&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; section.

&lt;span class="gs"&gt;**Q: Why does the API work this way?**&lt;/span&gt;  
&lt;span class="gs"&gt;**A:**&lt;/span&gt; See &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;DESIGN_FAQ.md&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;DESIGN_FAQ.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; for architectural rationale.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Specs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Performance Requirements&lt;/span&gt;

&lt;span class="gs"&gt;**Q: What are the performance targets?**&lt;/span&gt;  
&lt;span class="gs"&gt;**A:**&lt;/span&gt; &amp;lt; 1ns component access, &amp;lt; 100ns spawn, &amp;lt; 500ns migration. Targets ensure 60 FPS with 100k+ entities.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use it even in Code Comments too!/) commentart:)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;// Q: Why flush again after commands execute?
// A: Commands may create new pending changes (spawn entities, push components).
//    Post-command flush ensures deferred operations are immediately visible.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it:)&lt;br&gt;
Let's call it FAQ-driven development xD and build something cool!:) &lt;/p&gt;

&lt;p&gt;Thank you so much for taking time to read:) Share what do you think in comments!/)&lt;/p&gt;

&lt;p&gt;Anton&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Reimagine Libraries management as Apps using Agentic Executable framework</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Mon, 13 Oct 2025 00:57:02 +0000</pubDate>
      <link>https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami</link>
      <guid>https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami</guid>
      <description>&lt;p&gt;&lt;strong&gt;Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9"&gt;Part 3 — Stage 3,4,5 and Conclusion&lt;/a&gt;&lt;br&gt;
Part 4 — Libraries as Agentic Executables - You are here:)&lt;br&gt;
Part 5 — Maintaining Libraries with AI Agents (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
Part 11 — Domain Knowledge (Agent Domain Context) (planned)&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;
&lt;h1&gt;
  
  
  Libraries as Agentic Executables
&lt;/h1&gt;

&lt;p&gt;Can you imagine you can install / configure and uninstall libraries (in any language and framework) as easy as any app or game on your phone or computer?&lt;/p&gt;

&lt;p&gt;This article is about how we can achieve this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fce0zlb1cnkgzp5t0orb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fce0zlb1cnkgzp5t0orb4.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or in other words - Agentic Executables treat libraries as executable programs with structured, agent-readable instructions. Instead of relying on human documentation, AI agents follow standardized &lt;code&gt;.md&lt;/code&gt; files to install, configure, integrate, update, and uninstall libraries autonomously.&lt;/p&gt;

&lt;p&gt;If you prefer to see how it works - &lt;a href="https://youtu.be/5j3TvQqiVKQ" rel="noopener noreferrer"&gt;please see the video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This problem follows three part structure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why (The Problem)&lt;/li&gt;
&lt;li&gt;How (The Solution)&lt;/li&gt;
&lt;li&gt;Implementation Architecture&lt;/li&gt;
&lt;li&gt;How to use it Today?&lt;/li&gt;
&lt;li&gt;Conclusion&lt;/li&gt;
&lt;li&gt;Links&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to jump to the implementation architecture, click here.&lt;br&gt;
If you want to use it Today? click here.&lt;/p&gt;

&lt;p&gt;Let's start with the Why (The Problem) part.&lt;/p&gt;
&lt;h1&gt;
  
  
  Why (The Problem)
&lt;/h1&gt;

&lt;p&gt;In the current time and year of writing this article, for any development project (i.e. coded project), we usually use libraries or packages to reuse code effectively.&lt;/p&gt;

&lt;p&gt;Some of the libraries, usually configurable ones, often have extensive documentation and examples not only how to install, but how to configure, use, test and uninstall it.&lt;/p&gt;

&lt;p&gt;The common installation, configuration and usage pattern may look like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;use CLI or package manager to install/find the library&lt;/li&gt;
&lt;li&gt;read the documentation of what we need to do to use it.&lt;/li&gt;
&lt;li&gt;analyze your codebase to see how we can integrate it.&lt;/li&gt;
&lt;li&gt;try to apply the actual code from the library to your codebase and your solution (from codebase structure/architecture point of view)&lt;/li&gt;
&lt;li&gt;configure the library if needed.&lt;/li&gt;
&lt;li&gt;try to test (visually or using tests) to see if it works.&lt;/li&gt;
&lt;li&gt;modify the code if corrections are needed.&lt;/li&gt;
&lt;li&gt;add tests or configuration if needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The more important - all instructions / documentation is written for humans.&lt;/p&gt;

&lt;p&gt;And usually, most of these steps, we try to follow as humans - step by step.&lt;/p&gt;

&lt;p&gt;However, with the rise of AI Agents - what if we will treat libraries and packages not as abstract reusable parts of code, but as the executable programs? Programs with the same ability to be installed, configured, used and uninstalled as usual apps or games on phone?&lt;/p&gt;

&lt;p&gt;If you imagined it - let's call it "Agentic Executables" (below - "AE") and dive into the how we can create / maintain them:)&lt;/p&gt;
&lt;h1&gt;
  
  
  How (The Solution)
&lt;/h1&gt;

&lt;p&gt;As first thing, let's establish meta rules to create and modify files of AE:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AE Domain Knowledge - terms, concept, principles of what is AE to give enough context for AI Agent. This file will help us to maintain the files.&lt;/li&gt;
&lt;li&gt;Installation creation with three logical steps:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;1. Installation (using CLI or package manager)&lt;/li&gt;
&lt;li&gt;2. Configuration&lt;/li&gt;
&lt;li&gt;3. Integration&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Usage creation.&lt;/li&gt;
&lt;li&gt;Uninstallation creation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With all of that, let's define the principles of working with AE.&lt;/p&gt;
&lt;h1&gt;
  
  
  Working principles:
&lt;/h1&gt;
&lt;h2&gt;
  
  
  Core Principles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Empowerment&lt;/strong&gt; - AE docs written for AI, not humans. Therefore AI agents can work autonomously without or under minimal human intervention&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modularity&lt;/strong&gt; - Clear, reusable instruction steps and pieces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Awareness&lt;/strong&gt; - Sufficient domain knowledge tailored made for AI Agent and ready to be used with end project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reversibility&lt;/strong&gt; - Clean uninstallation restores original state&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation&lt;/strong&gt; - Built-in verification steps&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Language / Framework Agnostic&lt;/strong&gt; - Works across all ecosystems and languages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Core Idea
&lt;/h2&gt;

&lt;p&gt;The core idea is to pass meta rules to AI Agent to give him ability to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;maintain the library executables (basically - meta instructions)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1.1 The basic terms &amp;amp; domain knowledge (what is AE and how it works) - &lt;code&gt;ae_context.md&lt;/code&gt;&lt;br&gt;
   GOAL: To maintain &lt;code&gt;ae_bootstrap&lt;/code&gt; and &lt;code&gt;ae_usage&lt;/code&gt; files&lt;br&gt;
   USER: Maintainer of the library&lt;/p&gt;

&lt;p&gt;1.2 The drop file to maintain the library executables - &lt;code&gt;ae_bootstrap.md&lt;/code&gt;.&lt;br&gt;
   GOAL: To create ae files structure and maintain it.&lt;br&gt;
   USER: Maintainer of the library&lt;/p&gt;

&lt;p&gt;1.3 The drop file to use ae files in library - &lt;code&gt;ae_usage.md&lt;/code&gt;&lt;br&gt;
   GOAL: To use ae files of this library.&lt;br&gt;
   USER: User (in other words - developer who uses this library)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ability to install / uninstall / update (basically, one time to use rules)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.1 Installation, Configuration, Integration files - &lt;code&gt;ae_install.md&lt;/code&gt;&lt;br&gt;
   GOAL: To install, configure and integrate the library.&lt;br&gt;
   USER: User&lt;/p&gt;

&lt;p&gt;2.2 Uninstallation file - &lt;code&gt;ae_uninstall.md&lt;/code&gt;&lt;br&gt;
   GOAL: To uninstall the library.&lt;br&gt;
   USER: User&lt;/p&gt;

&lt;p&gt;2.3 Update file - &lt;code&gt;ae_update.md&lt;/code&gt;&lt;br&gt;
   GOAL: To update the library from old version to new one.&lt;br&gt;
   USER: User&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ability to use the library frequently / or depending of its usage needs. Created via &lt;code&gt;ae_use.md&lt;/code&gt; file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.1 Usage file - the rule, adapted to the library name. For example, for library name &lt;code&gt;go_router&lt;/code&gt; and Cursor AI usage it can be a rule in the path &lt;code&gt;go_router_usage.mdc&lt;/code&gt;. During installation to User Codebase , AI Agent needs to ask User what AI Agent should be used, and place / name it according to it. For example, if User wants to use Cursor AI, AI Agent should place this rule to the path &lt;code&gt;.cursor/rules/go_router_usage.mdc&lt;/code&gt;.&lt;br&gt;
   GOAL: To use the library frequently / or depending of its usage needs.&lt;br&gt;
   USER: User&lt;/p&gt;

&lt;p&gt;The AE files structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root/
├── ae/
│   ├── ae_context.md
│   ├── ae_bootstrap.md
│   ├── ae_use.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The library AE files will be located in the &lt;code&gt;root/ai_use&lt;/code&gt; folder.&lt;br&gt;
At the end this would be the structure of the library AE files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root/
├── ai_use/
│   ├── ae_install.md
│   ├── ae_uninstall.md
│   ├── ae_update.md
│   ├── ae_use.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Implementation Architecture
&lt;/h1&gt;

&lt;p&gt;To implement this solution, I've created a registry of AE files to centralize them and make them easily accessible for developers.&lt;/p&gt;

&lt;p&gt;Here is how it works in high level:&lt;/p&gt;

&lt;h2&gt;
  
  
  Workflow Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Library Author                  Registry                   Developer
      │                            │                           │
      ├─► Create AE files          │                           │
      ├─► Submit to registry ─────►│                           │
      │                            │◄───── Fetch AE files ─────┤
      │                            │                           │
      │                            │                   AI Agent executes
      │                            │                   installation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To make it easy to use, I've designed an MCP server for giving AI tools to access and support AE ecosystem for developers and library authors.&lt;/p&gt;

&lt;p&gt;Let's start with end developers example: how they can use AE files.&lt;/p&gt;

&lt;p&gt;With MCP server, the workflow is pretty straightforward:&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation workflow example:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q3rh8dis9w0nue3iw0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q3rh8dis9w0nue3iw0d.png" alt=" " width="800" height="2289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same workflow works for other actions like usage, uninstallation, update.&lt;/p&gt;

&lt;p&gt;As you can see, every action is executed by AI Agent, and with MCP server, it is easy to use and maintain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Library Author workflow:
&lt;/h3&gt;

&lt;p&gt;Almost the same workflow works for library authors - they can just ask AI Agent to bootstrap or update AE files, and AI Agent will do the rest.&lt;/p&gt;

&lt;p&gt;One exception is that to submit AE Files to the Registry, we still need to send PR to the Registry repository.&lt;/p&gt;

&lt;p&gt;(I think we can automate it in the future).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa7bnrpze4rpnt3z4ifg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa7bnrpze4rpnt3z4ifg.png" alt=" " width="800" height="2645"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it:)&lt;/p&gt;

&lt;p&gt;In the time of writing this article, the registry I've started testing registry and MCP server on personal projects and with some bugs (of course) install / uninstall / configure already works.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to use it Today?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  You are Developer:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;First you need to install MCP server.&lt;br&gt;
To do this, please drop &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables/blob/main/agentic_executables_mcp/ae_install.md" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables/blob/main/agentic_executables_mcp/ae_install.md&lt;/a&gt; file to your AI Agent or install it manually.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Second, use it:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;to install library (make sure it is in registry) write to your AI Agent: &lt;code&gt;create a plan to instal "library_name" as ae&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;to uninstall - &lt;code&gt;create a plan to uninstall "library_name" as ae&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;to update - &lt;code&gt;create a plan to update "library_name" as ae&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;to use - &lt;code&gt;create rules for {AI Agent} to use "library_name" as ae&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it:)&lt;/p&gt;

&lt;h2&gt;
  
  
  You are Library Author | Maintainer:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;to bootstrap / update - &lt;code&gt;create a plan to bootstrap / update "library_name" as ae&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;to submit to registry - &lt;code&gt;create a plan to submit "library_name" to registry as ae&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it:)&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Please share your thoughts in the comments (that will be great support and motivation for me)! :-)&lt;br&gt;
If you want to discuss / use it / have ideas to improve it - create issue or pull request to the repository: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables&lt;/a&gt; or jump in to discord server: &lt;a href="https://discord.gg/y54DpJwmAn" rel="noopener noreferrer"&gt;https://discord.gg/y54DpJwmAn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for your time and have a great day!&lt;/p&gt;

&lt;p&gt;Anton&lt;/p&gt;

&lt;h1&gt;
  
  
  Links:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Registry: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables_registry" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables_registry&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP Server: &lt;a href="https://github.com/fluent-meaning-symbiotic/agentic_executables/tree/main/agentic_executables_mcp" rel="noopener noreferrer"&gt;https://github.com/fluent-meaning-symbiotic/agentic_executables/tree/main/agentic_executables_mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Discord Server: &lt;a href="https://discord.gg/y54DpJwmAn" rel="noopener noreferrer"&gt;https://discord.gg/y54DpJwmAn&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9"&gt;Part 3 — Stage 3,4,5 and Conclusion&lt;/a&gt;&lt;br&gt;
Part 4 — Libraries as Agentic Executables - You are here:)&lt;br&gt;
Part 5 — Maintaining Libraries with AI Agents (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
Part 11 — Domain Knowledge (Agent Domain Context) (planned)&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to conduct a useful technical interview (based on my personal experience (subjective opinion))</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Mon, 15 Sep 2025 13:15:15 +0000</pubDate>
      <link>https://dev.to/arenukvern/how-to-conduct-a-useful-technical-interview-based-on-my-personal-experience-subjective-opinion-4h3c</link>
      <guid>https://dev.to/arenukvern/how-to-conduct-a-useful-technical-interview-based-on-my-personal-experience-subjective-opinion-4h3c</guid>
      <description>&lt;p&gt;First of all, you need to understand who and for what tasks you are looking for.&lt;/p&gt;

&lt;p&gt;For example, if you need a developer who can adjust and adapt to tasks, then you should ask about what techniques/methods they use to learn something new, how often they are interested in new things themselves – you can ask how they would conduct research, and if they have had similar experience.&lt;/p&gt;

&lt;p&gt;If you "urgently need a developer" for "this task for a week" you must definitely consider that they will need to get familiar with the codebase and the project itself (adaptation time) – and it’s good if this takes a week or two. Ask a developer does he have such experience, and how comfortable he would work in such case (because any urgent cases usually are the most stressful ones). &lt;/p&gt;

&lt;p&gt;You also may ask does the developer had experience to reorganize planning, to organize more non-stressful process and if he had such - how exactly?&lt;/p&gt;

&lt;p&gt;If you need a developer "to build an app from scratch," it’s better to ask if they have such experience, how much they interacted with designers/products, if they have experience in design development, client communication, and if they have their own codebase. &lt;/p&gt;

&lt;p&gt;The best way to conduct an interview in this case is to describe a small business task (as a complete application) and ask them to estimate what will be required in terms of architecture, tasks, planning, and team interaction to complete the project.&lt;/p&gt;

&lt;p&gt;In all cases, it’s worth asking about motivation (of course, besides the financial aspect), priorities, and future growth (where the person roughly aims to get and why).&lt;/p&gt;

&lt;p&gt;Why this is important:&lt;/p&gt;

&lt;p&gt;In my opinion, everything depends on what kind of people are gathered in the team – how they will work together, whether there will be synergy – sharing experience between developers/designers/products.&lt;/p&gt;

&lt;p&gt;A very important point when evaluating tasks is not that such a task has already been done, but who exactly will do it – someone may already have experience in similar tasks, for someone this particular domain will be unknown, and edge cases will be resolved later...&lt;/p&gt;

&lt;p&gt;Share your experience in the comments :)&lt;/p&gt;

</description>
      <category>technical</category>
      <category>interview</category>
    </item>
    <item>
      <title>Flutter app AI centric architecture for small startups. Part 3 - Stages 3–5</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Thu, 28 Aug 2025 00:17:52 +0000</pubDate>
      <link>https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9</link>
      <guid>https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-3-stages-3-5-4jd9</guid>
      <description>&lt;p&gt;&lt;em&gt;Thoughts about scalable code structure based on developer as user philosophy combined with iterative design using&amp;nbsp;AI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2, Previous&lt;/a&gt;&lt;br&gt;
&lt;a href=""&gt;Part 3 — Stage 3,4,5 and Conclusion - You are here:)&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami"&gt;Part 4 — Libraries as Agentic Executables&lt;/a&gt;&lt;br&gt;
Part 5 — Maintaining Libraries with AI Agents (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
Part 11 — Domain Knowledge (Agent Domain Context) (planned)&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;


&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the first part of this series, we defined key terms and principles. In Part 2, we walked through Stage 1 and Stage 2. If you missed them, check out the &lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt; and &lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; after using Cursor AI and other different agents for about a year it’s become obvious that some changes are needed, therefore I will continue architecture series in future (so the content become a plan xD) — if you have any thoughts — please leave comment:).&lt;/p&gt;

&lt;p&gt;Let’s continue our journey!&lt;/p&gt;


&lt;h2&gt;
  
  
  Stage 3 — Feature Iterations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; 2 Developers&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Main focus:&lt;/strong&gt; Test and try features for specific domains to make these domains logically complete.&lt;/p&gt;

&lt;p&gt;While this part is quite small for changes — and may not contain any radical changes in structure, I think it’s quite important on this stage to follow two principles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keep refreshing, refining, and updating domain knowledge from testing and using the application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep every small feature implementation separate from the screen where it is placed. Treat the screen as a layout where you place widgets, and it would be much easier to reuse any feature-related widgets, as they will behave as self-contained micro applications.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Stage 4 — Scaling
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; 2–3 Developers&lt;/p&gt;

&lt;p&gt;In my opinion, there are two paths at this stage:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2128a10yhl9upoczh04b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2128a10yhl9upoczh04b.png" alt=" " width="646" height="476"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Path 1 — Scaling to Other Platforms
&lt;/h3&gt;

&lt;p&gt;This stage means that we need to publish it to stores on several platforms simultaneously.&lt;/p&gt;

&lt;p&gt;In that case, we will have to deal not only with different factors: platform, adaptive, responsive factors (&lt;a href="https://docs.flutter.dev/ui/adaptive-responsive/best-practices" rel="noopener noreferrer"&gt;https://docs.flutter.dev/ui/adaptive-responsive/best-practices&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;That means, it would be better to make the following changes to the structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;, move the whole data layer (folders with prefixes data) and core into a new package “core”.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/packages/
├── core/ // or data layer
│   ├── core.dart
│   ├── src/
│   │   ├── core/ // I prefer to keep core as a separate package, as it often has tendency to be reused in other projects, and this way it would be easier to separate it in future to a separate package.
│   │   │   ├── utils/
│   │   │   ├── extensions/
│   │   │   ├── hooks/
│   │   │   ├── l10n/
│   │   │   └── side_services/
│   │   ├── data_local_api/
│   │   ├── data_remote_api/
│   │   ├── data_repositories/
│   │   ├── data_models/
│   │   │   ├── api_dto/
│   │   │   └── {domain}_models/
│   │   ├── data_states/
│   │   ├── di/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt;, move the whole ui_kit into a separate package.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/packages/
├── ui_kit/
│   ├── ui_kit.dart
│   ├── UI_KIT_README.md
│   ├── atoms/
│   │   ├── ATOM_README.md
│   ├── molecules/
│   │   ├── MOLECULES_README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt;, take a look at domains and features and where they are placed.&lt;/p&gt;

&lt;p&gt;What you can find is that if most of the features were separated from screens inside flows, it is quite easy to separate every screen to the following functionality:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;View Layouts&lt;/strong&gt; // &amp;lt;- layout where features were placed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flow logic&lt;/strong&gt; // &amp;lt;- navigation between views&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt; // &amp;lt;- business implementation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Then&lt;/strong&gt;, move all domain-related logic — layouts (optional), flow (optional), features to a new package “ui_domains”.&lt;/p&gt;

&lt;p&gt;This will be your foundation, where all features, sharable layouts, and flows for domains are written. Think of it like a box of blocks, which separately have some independent functionality within a scope of a specific domain.&lt;/p&gt;

&lt;p&gt;Because every platform has its own layouts, flows can be different. For example, where in mobile you will push several screens, in desktop you may open just one window.&lt;/p&gt;

&lt;p&gt;Then, depending on your end goal, create a separate app for every platform you need.&lt;/p&gt;

&lt;p&gt;For example, you can end up with the following structure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstract code structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/
/apps/
├── {platform}_app/  // &amp;lt;- separate applications with new entry main, which can use different layouts, based on ui_domains package.
/packages/
│   ├── core/
│   ├── ui_kit/
│   ├── ui_domains/ // &amp;lt;- this new package will be used in all apps
│   │   ├── src/
│   │   │   ├── ui_{domain}/
│   │   │   │   ├── {DOMAIN}_KNOWLEDGE.md
│   │   │   │   ├── {flow}/
│   │   │   │   │   ├── {feature_name}/
│   │   │   │   │   ├── ├── {feature_name}.dart // barrel file with conditional exports, which are extremly useful for platform dependent features https://dart.dev/tools/pub/create-packages#conditionally-importing-and-exporting-library-files
│   │   │   │   │   ├── ├── {feature_name}_{platform}/
│   │   │   │   │   ├── layouts/ // &amp;lt;- typically you may have different layouts for same features, so it is make sense to place it directly in the flow folder. But in same time, if you need to move to different place - thats fine too - since in my opinion, that's more business/design related decision.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example code structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/
/apps/
├── desktop_app/
├── web_app/
├── mobile_app/
/packages/
├── core/
├── ui_kit/
├── ui_domains/
│   ├── src/
│   │   ├── ui_payments/ // &amp;lt;- domain
│   │   │   ├── ui_payments.dart // &amp;lt;- barrel file with exports
│   │   │   ├── PAYMENTS_KNOWLEDGE.md // &amp;lt;- domain knowledge
│   │   │   ├── pay/ // &amp;lt;- flow
│   │   │   │   ├── qr_pay/ // &amp;lt;- feature
│   │   │   │   │   ├── qr_pay_feature.dart // &amp;lt;- feature barrel file with conditional imports
│   │   │   │   │   ├── qr_pay_ios/ // &amp;lt;- platform feature implementation
│   │   │   │   │   ├── qr_pay_android/
│   │   │   │   │   ├── qr_pay_web/
│   │   │   │   ├── provider_pay/ // &amp;lt;- feature
│   │   │   │   │   ├── provider_pay.dart // &amp;lt;- feature barrel file
│   │   │   │   │   layouts/ // &amp;lt;- flow layouts
│   │   │   │   │   ├── desktop/
│   │   │   │   │   ├── mobile/
│   │   │   ui_profile/ // &amp;lt;- domain
│   │   │   ├── ui_profile.dart // &amp;lt;- domain barrel file
│   │   │   ├── PROFILE_KNOWLEDGE.md // &amp;lt;- domain knowledge
│   │   │   ├── auth/ // &amp;lt;- flow, but as you can imagine, if it will outgrow just auth logical domain, the transform it into a domain and move up.
│   │   │   │   ├── login/ // &amp;lt;- feature
│   │   │   │   ├── ├── login_ios/
│   │   │   │   ├── ├── login_android/
│   │   │   │   ├── ├── login_web/
│   │   │   │   ├── registration/
│   │   │   │   ├── ├── registration_ios/
│   │   │   │   ├── ├── registration_android/
│   │   │   │   ├── ├── registration_web/
│   │   │   │   │   layouts/ // &amp;lt;- flow layouts
│   │   │   │   │   ├── desktop/
│   │   │   │   │   ├── mobile/
│   │   │   ├── settings/ // &amp;lt;- flow
│   │   │   │   ├── settings.dart // &amp;lt;- flow barrel file
│   │   │   │   ├── customization/ // &amp;lt;- feature
│   │   │   │   ├── ├── customization_ios/
│   │   │   │   ├── ├── customization_android/
│   │   │   │   ├── ├── customization_web/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference will depend on what features are represented. For example, some iOS native functionality may not just work or not exist on Linux desktop. Therefore, you will need create a Linux implementation specific to a feature or construct an entirely different experience using only some of iOS features and separate it into independent package.&lt;/p&gt;

&lt;p&gt;The great documentation how to write native plugins and packages is described in flutter website (&lt;a href="https://docs.flutter.dev/packages-and-plugins/developing-packages" rel="noopener noreferrer"&gt;https://docs.flutter.dev/packages-and-plugins/developing-packages&lt;/a&gt;).&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0m24dal353vhniz5vvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0m24dal353vhniz5vvn.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Path 2 — Same App, Different Configurations
&lt;/h3&gt;

&lt;p&gt;Another way to scale your application by having different flavors. &lt;a href="https://docs.flutter.dev/deployment/flavors" rel="noopener noreferrer"&gt;https://docs.flutter.dev/deployment/flavors&lt;/a&gt; . But at the same time, if the differences are huge, it would be reasonable to reconstruct them as different apps.&lt;/p&gt;

&lt;p&gt;So in contrast with Path 1, I think in this path you may have the same layouts, but new domains, new flows, and new specific to new apps features. The important part, that you may or may not include domains, flows or features to different apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Abstract code structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/
/apps/{mobile_app_with_different_flows}/
/packages/
│   ├── core/
│   ├── ui_kit/
│   ├── ui_domains/
│   │   ├── src/
│   │   │   ├── ui_{domain}/
│   │   │   │   ├── {DOMAIN}_KNOWLEDGE.md
│   │   │   │   ├── {flow}/
│   │   │   │   │   ├── {feature_name}/
│   │   │   │   │   ├── {experimental_feature_name}/
│   │   │   │   ├── {experimental_flows}/
│   │   │   │   │   ├── {feature_name}/
│   │   │   ├── ui_{experimental_domain}/
│   │   │   │   ├── {DOMAIN}_KNOWLEDGE.md
│   │   │   │   ├── {flow}/
│   │   │   │   │   ├── {feature_name}/
│   │   │   │   │   ├── ├── {feature_name}_{platform}/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example code structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/
/apps/
├── mobile_app_spring_edition // &amp;lt;- separate applications with new entry main, which can use different layouts, based on ui_domains package.
├── mobile_app_with_gamification/
├── mobile_app_with_ai/
/packages/
├── core/
├── ui_kit/
├── ui_domains/
│   ├── src/
│   │   ├── ui_payments/
│   │   │   ├── ui_payments.dart
│   │   │   ├── PAYMENTS_KNOWLEDGE.md
│   │   │   ├── pay/ // &amp;lt;- flow
│   │   │   │   ├── galactical_pay/ // &amp;lt;- experimental feature
│   │   │   ├── scan_and_pay/ // &amp;lt;- experimental flow
│   │   │   ui_ai_chatbot/ // &amp;lt;- experimental domain
│   │   │   ├── ui_ai_chatbot.dart
│   │   │   ├── AI_CHATBOT_KNOWLEDGE.md
│   │   │   ui_waiting_game/
│   │   │   ├── ui_waiting_game.dart
│   │   │   ├── WAITING_GAME_KNOWLEDGE.md
│   │   │   ui_picture_board/
│   │   │   ├── ui_picture_board.dart
│   │   │   ├── PICTURE_BOARD_KNOWLEDGE.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdayxbd9pvr7r5c3iv9ua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdayxbd9pvr7r5c3iv9ua.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stage 5 — Scaling Application Domains
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Team:&lt;/strong&gt; 3–6 Developers&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Lastly&lt;/em&gt;, let’s talk about what you can do if a feature grows too big, and you have enough resources to maintain it independently.&lt;/p&gt;

&lt;p&gt;Since from the start, you have separated the domains clearly, you have several options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extract the domain as a package&lt;/li&gt;
&lt;li&gt;Extract specific flows as a package&lt;/li&gt;
&lt;li&gt;Extract specific features as a package&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Abstract code structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/packages/
├── core/
├── ui_kit/
├── ui_{domain}/
│   ├── {DOMAIN}_KNOWLEDGE.md
│   ├── src/
│   │   ├── {flow}/
│   │   │   ├── {feature_name}/
│   │   │   │   ├── {feature_name}_{platform}/
│   │   │   ├── layouts/
│   │   │   │   ├── {layout_name}/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example — moving ui_payments domain to packages:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/packages/
├── ui_payments/
│   ├── ui_payments.dart
│   ├── README.md
│   ├── PAYMENTS_KNOWLEDGE.md
│   ├── src/
│   │   ├── provider_pay/ // &amp;lt;- flow
│   │   │   ├── provider_pay.dart // &amp;lt;- feature
│   │   │   ├── ├── provider_pay_ios/ // &amp;lt;- platform feature implementation
│   │   │   ├── ├── provider_pay_android/
│   │   │   ├── ├── provider_pay_web/
│   │   │   │   layouts/
│   │   │   │   ├── desktop/
│   │   │   │   ├── mobile/
│   │   │   pay/ // &amp;lt;- flow
│   │   │   ├── qr_pay/ // &amp;lt;- feature
│   │   │   │   ├── qr_pay_feature.dart // &amp;lt;- feature
│   │   │   │   ├── ├── qr_pay_ios/ // &amp;lt;- platform feature implementation
│   │   │   │   ├── ├── qr_pay_android/
│   │   │   │   ├── ├── qr_pay_web/
│   │   │   │   layouts/
│   │   │   │   ├── desktop/
│   │   │   │   ├── mobile/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In any case, since on the previous stage you already have an independent data layer as a package + an independent ui_kit, your task is quite simple — treat all and plug them as APIs, and use them the same you use any Flutter widget or any pub package.&lt;/p&gt;

&lt;p&gt;This way, you will still have non-broken dependencies (remember the combination: barrel files + clear and visible separated boundaries between data layers and ui, domains, flows and features), while maintaining flexibility to scale, research, and develop. Hooray!&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In my opinion, if you are an indie developer, you can start small and grow. For a team with several developers, a designer, and analyst, and especially if you have a predefined design, it would be better to start from later stages, as you already have more resources at hand and can handle larger complexity.&lt;/p&gt;

&lt;p&gt;But, also, I think this approach works both ways. For example, if your business is in crisis mode and your developer team is shrinking, basically that will mean that you do not have enough resources to keep huge infrastructure. In that case, in my opinion, it would be extremely helpful to go gently back to early stages and continue from there — that may save you from burnout. And don’t forget about your ideas in prototypes — maybe they will save your team one day:)&lt;/p&gt;

&lt;p&gt;I hope this approach will give you inspiration to iterate, integrate, or to look at your projects from different perspectives and to give more quality to the end user.&lt;/p&gt;

&lt;p&gt;If you found this useful, please share and leave your thoughts in the comments, and have an amazing journey ahead!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Thoughts about scalable code structure based on developer as user philosophy combined with iterative design using&amp;nbsp;AI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev Architecture Series&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-intro-notes-jl2"&gt;Part 1 — Intro Notes&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/flutter-app-ai-centric-architecture-for-small-startups-part-2-stage-1-2-5265"&gt;Part 2 — Stage 1 and 2, Previous&lt;/a&gt;&lt;br&gt;
Part 3 — Stage 3,4,5 and Conclusion - You are here:)&lt;br&gt;
&lt;a href="https://dev.to/arenukvern/reimagine-libraries-management-as-apps-using-agentic-executable-framework-ami"&gt;Part 4 — Libraries as Agentic Executables&lt;/a&gt;&lt;br&gt;
Part 5 — Maintaining Libraries with AI Agents (planned)&lt;br&gt;
Part 6 — Building Foundation with Open Source in mind (planned)&lt;br&gt;
Part 7 — AI Project Bootstrapping (planned)&lt;br&gt;
Part 8 — Storage Layer as Reliability Foundation (planned)&lt;br&gt;
Part 9 — How to build for different Stores? (planned)&lt;br&gt;
Part 10 — Dev Ethics as Dev Cornerstone (Decision Making) (planned)&lt;br&gt;
Part 11 — Domain Knowledge (Agent Domain Context) (planned)&lt;br&gt;
Part 12 — Building Tests with AI Agents (planned)&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>architecture</category>
      <category>softwaredevelopment</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Flutter 💙 Cursor: setting up Background Agent</title>
      <dc:creator>Anton Malofeev</dc:creator>
      <pubDate>Wed, 09 Jul 2025 22:25:44 +0000</pubDate>
      <link>https://dev.to/arenukvern/flutter-cursor-setting-up-background-agent-nfp</link>
      <guid>https://dev.to/arenukvern/flutter-cursor-setting-up-background-agent-nfp</guid>
      <description>&lt;p&gt;If you prefer to use Jules (Google AI Agent ), check out &lt;a href="https://dev.to/arenukvern/flutter-jules-setting-up-container-for-background-ai-agent-5gni"&gt;this article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Short story — Cursor introduced AI Agents which allows you to run any tasks in background the same way as in IDE with the same setup.&lt;br&gt;
To give proper setup for AI Agent, we need to setup container the same way you would do for your own computer.&lt;/p&gt;

&lt;p&gt;Let’s get started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Cursor Settings (the panel may be placed in different place, since it depends on how you customized your interface, so you could use Command+Shift+P to open command panel and type “cursor settings”).&lt;/li&gt;
&lt;li&gt;Open Background Agents panel&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tuxa6g4oinyq9zrlnr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tuxa6g4oinyq9zrlnr9.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give Cursor GitHub Access for your sepcific repository. Click Go To GitHub to allow access to.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxebyw4fk2u0vgw8z0ri6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxebyw4fk2u0vgw8z0ri6.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select your repository, to allow access to. Notice: for public repositories owned by organizations, you will have to fork the repository to your personal repositories.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg45qer8s80san7dtdin.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpg45qer8s80san7dtdin.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After allowing access, make sure you click refresh and you should see Access Granted.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabunan1tiz4y8aerfmvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabunan1tiz4y8aerfmvn.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Base Environment and then Setup machine interactively.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flh7bsws7pjulh64rl4j2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flh7bsws7pjulh64rl4j2.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Wait until you see the chat interface&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewjrdp5tycp9xp0x4z11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewjrdp5tycp9xp0x4z11.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Write to agent the command to install required dependencies.
Use agent mode, so agent could verify setup and update other dependencies if needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I used the following script:&lt;/p&gt;

&lt;p&gt;Hi. Please install Flutter &amp;amp; Dart.&lt;/p&gt;

&lt;p&gt;Use the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Install Dart SDK (using apt, official Google repo)&lt;/span&gt;
sudo apt-get update
sudo apt-get install -y apt-transport-https wget
wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /etc/apt/keyrings/dart.gpg
echo "deb [signed-by=/etc/apt/keyrings/dart.gpg] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main" | sudo tee /etc/apt/sources.list.d/dart_stable.list
sudo apt-get update
sudo apt-get install -y dart
&lt;span class="gh"&gt;# Add Dart to PATH&lt;/span&gt;
export PATH="$PATH:/usr/lib/dart/bin"
&lt;span class="gh"&gt;# Clone Flutter&lt;/span&gt;
cd /opt &amp;amp;&amp;amp; sudo git clone https://github.com/flutter/flutter.git -b stable
sudo chown -R $USER:$USER /opt/flutter
export PATH="$PATH:/opt/flutter/bin" &amp;amp;&amp;amp; cd /workspace
flutter pub get
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftoyoe8n4981mitagvf5n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftoyoe8n4981mitagvf5n.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After Agent finished the job, click Take Snapshot&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp14llvgp8rkbp7zsn01i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp14llvgp8rkbp7zsn01i.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add command flutter pub get or any script you usually use to get all dependencies in your project&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnobjkclw76rjc3x67su.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnobjkclw76rjc3x67su.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After that, verify that everything works&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffp6qrha6q2cl67b60dcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffp6qrha6q2cl67b60dcx.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;That’s it! Now you can use background agent from any accessible ui point (from settings, from tab, pwa app or cursor website).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt9gvhs14hmjdre9589c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt9gvhs14hmjdre9589c.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this concept proves useful :-)&lt;/p&gt;

&lt;p&gt;Please share your thoughts in the comments :-) This will help make this article visible to others and will be great support and motivation :-)&lt;/p&gt;

&lt;p&gt;Thank you for your time and have a good day!&lt;/p&gt;

&lt;p&gt;Anton&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>cursor</category>
      <category>agents</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
