<?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>Forem: ke yi</title>
    <description>The latest articles on Forem by ke yi (@devtoaaron).</description>
    <link>https://forem.com/devtoaaron</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3939482%2F9f322ae1-275e-42d3-aeaa-ea23717467fc.jpg</url>
      <title>Forem: ke yi</title>
      <link>https://forem.com/devtoaaron</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devtoaaron"/>
    <language>en</language>
    <item>
      <title>The AI Development Life Cycle (AIDLC): Why Your ML Projects Need More Than SDLC</title>
      <dc:creator>ke yi</dc:creator>
      <pubDate>Tue, 26 May 2026 07:37:18 +0000</pubDate>
      <link>https://forem.com/devtoaaron/the-ai-development-life-cycle-aidlc-why-your-ml-projects-need-more-than-sdlc-3ajc</link>
      <guid>https://forem.com/devtoaaron/the-ai-development-life-cycle-aidlc-why-your-ml-projects-need-more-than-sdlc-3ajc</guid>
      <description>&lt;p&gt;If you've ever shipped a machine learning model to production, you know the feeling. Everything works beautifully in your notebook, the metrics look great in staging, and then... three weeks after deployment, accuracy quietly tanks. Nobody notices until a stakeholder asks why the recommendations got weird.&lt;/p&gt;

&lt;p&gt;This is the gap traditional software development practices don't fill. SDLC was built for deterministic systems—code that does the same thing every time. ML systems aren't deterministic, they're statistical. They decay. They drift. They need to be retrained on schedules that have nothing to do with feature releases.&lt;/p&gt;

&lt;p&gt;Enter the &lt;strong&gt;AI Development Life Cycle (AIDLC)&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AIDLC Actually Is
&lt;/h2&gt;

&lt;p&gt;AIDLC is a structured framework for building, deploying, and maintaining AI systems. It borrows the discipline of SDLC but adds the loops and feedback mechanisms that ML systems actually need.&lt;/p&gt;

&lt;p&gt;The core stages look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Problem Framing → Data Engineering → Model Development 
       ↑                                        ↓
       └── Iteration ← Monitoring ← Deployment ← Evaluation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice it's a loop, not a line. That's the whole point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why SDLC Falls Short for ML
&lt;/h2&gt;

&lt;p&gt;Traditional SDLC assumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requirements can be fully specified upfront&lt;/li&gt;
&lt;li&gt;Code behavior is deterministic&lt;/li&gt;
&lt;li&gt;"Done" means shipped&lt;/li&gt;
&lt;li&gt;Bugs are reproducible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ML breaks all four assumptions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You often don't know if a problem is solvable until you try&lt;/li&gt;
&lt;li&gt;Models produce probabilistic outputs&lt;/li&gt;
&lt;li&gt;Shipping is the &lt;em&gt;start&lt;/em&gt; of the real work&lt;/li&gt;
&lt;li&gt;Bugs may be data issues, not code issues, and may only appear weeks later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A model that achieves 94% accuracy on Tuesday might hit 81% by Friday because user behavior shifted. Your CI/CD pipeline doesn't know that. It thinks everything is fine because the tests pass.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Seven Stages, Briefly
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Problem Framing
&lt;/h3&gt;

&lt;p&gt;This is where most ML projects quietly fail. "Build a churn prediction model" isn't a problem statement—it's a wish. You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A measurable business outcome&lt;/li&gt;
&lt;li&gt;A clear definition of what counts as a positive/negative example&lt;/li&gt;
&lt;li&gt;Constraints (latency, cost, interpretability)&lt;/li&gt;
&lt;li&gt;A baseline (what does "doing nothing" look like?)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Data Engineering
&lt;/h3&gt;

&lt;p&gt;Pipelines, feature stores, labeling workflows, train/validation/test splits that respect time and entity boundaries. If your data engineering is sloppy here, nothing downstream will save you.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Time-aware splitting matters for production ML
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;temporal_split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;date_col&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;train_end&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val_end&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;train&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date_col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;train_end&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;val&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date_col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;train_end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date_col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;val_end&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="n"&gt;test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date_col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;val_end&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;train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Model Development
&lt;/h3&gt;

&lt;p&gt;The fun part. Also the part teams over-invest in. Spend less time tweaking architectures and more time on stages 2, 5, and 6.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Evaluation
&lt;/h3&gt;

&lt;p&gt;Beyond accuracy/F1, you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slice-based metrics (does it work for &lt;em&gt;all&lt;/em&gt; user segments?)&lt;/li&gt;
&lt;li&gt;Calibration analysis&lt;/li&gt;
&lt;li&gt;Robustness tests&lt;/li&gt;
&lt;li&gt;Business-metric simulation
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Slice evaluation - check performance across segments
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;segment&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;new_users&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;power_users&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;enterprise&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;subset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;test_df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;test_df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;segment&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;segment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subset&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;segment&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Deployment
&lt;/h3&gt;

&lt;p&gt;Containerize, version, expose. Patterns like shadow deployment and canary rollouts matter here. Your model artifact, training data hash, and code commit should all be linked.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;model_version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v2.3.1&lt;/span&gt;
&lt;span class="na"&gt;training_data_hash&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;a3f9c2...&lt;/span&gt;
&lt;span class="na"&gt;git_commit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;8b4d1e2&lt;/span&gt;
&lt;span class="na"&gt;deployed_at&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;2024-11-15T10:30:00Z&lt;/span&gt;
&lt;span class="na"&gt;shadow_traffic&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;100%&lt;/span&gt;
&lt;span class="na"&gt;production_traffic&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0%&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  6. Monitoring
&lt;/h3&gt;

&lt;p&gt;This is where AIDLC really diverges from SDLC. You're not just watching error rates and latency—you're watching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data drift&lt;/strong&gt;: Are inputs distributionally different from training data?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concept drift&lt;/strong&gt;: Has the relationship between inputs and outputs changed?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prediction drift&lt;/strong&gt;: Are output distributions shifting?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance decay&lt;/strong&gt;: When ground truth becomes available, how is accuracy holding?
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;scipy.stats&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ks_2samp&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_drift&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;current&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;stat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;p_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ks_2samp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;current&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;p_value&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;threshold&lt;/span&gt;  &lt;span class="c1"&gt;# True = drift detected
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Iteration
&lt;/h3&gt;

&lt;p&gt;Retraining isn't an emergency response—it's a scheduled, automated, governed process. The output of monitoring feeds directly into the next iteration cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tooling Problem
&lt;/h2&gt;

&lt;p&gt;Most teams cobble AIDLC together from a dozen tools: MLflow for tracking, Airflow for orchestration, custom dashboards for monitoring, Slack for alerts, Confluence for documentation that nobody reads. The integration overhead is real, and the gaps between tools are where production incidents live.&lt;/p&gt;

&lt;p&gt;This is the space &lt;a href="https://echloe.io" rel="noopener noreferrer"&gt;echloe&lt;/a&gt; operates in—giving teams a unified methodology and tooling layer for AIDLC so they're not reinventing the wheel for every new model. The methodology piece matters as much as the tooling, honestly. A tool without process discipline just produces problems faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Adoption Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Teams that formalize AIDLC tend to see meaningful operational improvements—roughly 3x faster time-to-production is a number that gets thrown around, and from what I've seen it's plausible if you're coming from an ad-hoc baseline. But the real win isn't speed; it's that you stop being surprised by your own systems.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>machinelearning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Generative Engine Optimization (GEO): What Devs Need to Know About Getting Cited by AI</title>
      <dc:creator>ke yi</dc:creator>
      <pubDate>Mon, 25 May 2026 08:27:08 +0000</pubDate>
      <link>https://forem.com/devtoaaron/generative-engine-optimization-geo-what-devs-need-to-know-about-getting-cited-by-ai-4knk</link>
      <guid>https://forem.com/devtoaaron/generative-engine-optimization-geo-what-devs-need-to-know-about-getting-cited-by-ai-4knk</guid>
      <description>&lt;h1&gt;
  
  
  Generative Engine Optimization (GEO): What Devs Need to Know About Getting Cited by AI
&lt;/h1&gt;

&lt;p&gt;If you've shipped a product in the last year, you've probably noticed something weird in your analytics: referral traffic from &lt;code&gt;chat.openai.com&lt;/code&gt;, &lt;code&gt;perplexity.ai&lt;/code&gt;, or &lt;code&gt;gemini.google.com&lt;/code&gt;. Sometimes a trickle. Sometimes a surprising amount.&lt;/p&gt;

&lt;p&gt;That's not SEO traffic. That's &lt;strong&gt;GEO traffic&lt;/strong&gt; — visits driven by AI engines citing your content in their generated answers.&lt;/p&gt;

&lt;p&gt;I've been digging into this for a few months while building marketing flows at &lt;a href="https://echloe.io" rel="noopener noreferrer"&gt;echloe&lt;/a&gt;, and the mental model is genuinely different from SEO. Worth writing down.&lt;/p&gt;

&lt;h2&gt;
  
  
  SEO vs GEO: a quick reframe
&lt;/h2&gt;

&lt;p&gt;Classic SEO is a ranking problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Goal: rank in the top 10 blue links&lt;/li&gt;
&lt;li&gt;Unit of success: position + CTR&lt;/li&gt;
&lt;li&gt;Optimization target: a query → a page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GEO is a &lt;strong&gt;citation problem&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Goal: be the source the LLM quotes when synthesizing an answer&lt;/li&gt;
&lt;li&gt;Unit of success: being mentioned (often with a link) inside a generated response&lt;/li&gt;
&lt;li&gt;Optimization target: a topic/entity → a model's training and retrieval pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're not trying to outrank a competitor. You're trying to be the &lt;em&gt;most useful, most trustworthy chunk of text&lt;/em&gt; that an LLM can grab when it builds an answer.&lt;/p&gt;

&lt;p&gt;That distinction changes everything about how you write and structure content.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI engines actually pick sources
&lt;/h2&gt;

&lt;p&gt;There's no public algorithm doc, but the pattern across ChatGPT Search, Perplexity, Gemini, and Claude looks roughly like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Query understanding&lt;/strong&gt; — break the user's question into sub-claims.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval&lt;/strong&gt; — pull candidate documents (web search, vector DB, internal index).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-ranking&lt;/strong&gt; — score chunks for relevance + authority.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Synthesis&lt;/strong&gt; — generate the answer, citing 2–7 sources.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So your content needs to survive &lt;em&gt;three&lt;/em&gt; filters: be retrievable, be re-rankable, and be quotable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tactics that actually move the needle
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Write in extractable chunks
&lt;/h3&gt;

&lt;p&gt;LLMs love self-contained paragraphs that answer one question completely. The 12-section listicle padded with intro fluff? Useless. A page where each H2 is a clear question and the first 2–3 sentences answer it definitively? Gold.&lt;/p&gt;

&lt;p&gt;Bad:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"In today's fast-moving world of containers, many developers wonder about the differences between tools..."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Good:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Docker Compose runs multi-container apps on a single host. Kubernetes orchestrates containers across a cluster. Use Compose for local dev; use Kubernetes for production scale."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That second version is &lt;em&gt;quotable&lt;/em&gt;. An LLM can lift it verbatim.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Add structured data — yes, really
&lt;/h3&gt;

&lt;p&gt;Schema.org markup is having a second life. Models trained on Common Crawl ingest it; retrieval systems use it as metadata.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TechArticle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;headline&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Generative Engine Optimization Explained&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Person&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Jane Dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://janedev.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;datePublished&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2024-11-15&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;about&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Thing&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Generative Engine Optimization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;citation&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://arxiv.org/abs/2311.09735&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;author&lt;/code&gt;, &lt;code&gt;citation&lt;/code&gt;, and &lt;code&gt;about&lt;/code&gt; fields are particularly useful — they help engines verify expertise and topical relevance.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Be present across platforms
&lt;/h3&gt;

&lt;p&gt;This is the big mindset shift. Your domain isn't enough.&lt;/p&gt;

&lt;p&gt;LLMs synthesize from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wikipedia (huge weight)&lt;/li&gt;
&lt;li&gt;Reddit and Stack Overflow&lt;/li&gt;
&lt;li&gt;GitHub READMEs and discussions&lt;/li&gt;
&lt;li&gt;YouTube transcripts&lt;/li&gt;
&lt;li&gt;Substack/Medium/Dev.to (hi 👋)&lt;/li&gt;
&lt;li&gt;Industry-specific forums&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your project only exists on &lt;code&gt;yourdomain.com&lt;/code&gt;, you're invisible to half the retrieval surface. A README with clear language, a few thoughtful Reddit answers, a Stack Overflow presence — these compound.&lt;/p&gt;

&lt;p&gt;This is part of why we built &lt;a href="https://echloe.io" rel="noopener noreferrer"&gt;echloe&lt;/a&gt; the way we did: it tracks where your brand gets cited across AI engines and surfaces the gaps in your cross-platform footprint, because manually checking ChatGPT vs Perplexity vs Gemini for "best [your category] tool" gets old fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Establish entity authority
&lt;/h3&gt;

&lt;p&gt;LLMs think in entities, not keywords. "Stripe" is an entity. "payment processing API" is a topic. The model maps queries about the topic to entities it associates with that topic.&lt;/p&gt;

&lt;p&gt;To become an entity the model recognizes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get a Wikipedia or Wikidata entry if you legitimately qualify&lt;/li&gt;
&lt;li&gt;Use consistent naming everywhere (don't be "Acme", "Acme Inc.", and "Acme.io" across different sites)&lt;/li&gt;
&lt;li&gt;Build co-occurrence: get mentioned alongside well-known entities in your space&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick check — try this prompt in any LLM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;List the top 5 tools for [your category]. 
For each, give a one-sentence description.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're not in the list, the model doesn't have a strong entity association for you yet. That's the gap to close.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Monitor citations like you monitor errors
&lt;/h3&gt;

&lt;p&gt;You wouldn't ship without observability. Same here. A simple monitoring loop:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
python
import openai

queries = [
    "What is the best tool for X?",
    "How do I solve Y problem?",
    "Compare A vs B for use case Z"
]

def check_citations(brand_name, queries):
    results = []
    for q in queries:
        response = openai.chat.completions.create(
            model="gpt-4o-search-preview",
            messages=[{"role": "user", "content": q}]
        )
        text = response.choices
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>marketing</category>
    </item>
    <item>
      <title>AWS AI-DLC: The Agentic Dev Lifecycle That Works Everywhere</title>
      <dc:creator>ke yi</dc:creator>
      <pubDate>Tue, 19 May 2026 09:15:32 +0000</pubDate>
      <link>https://forem.com/devtoaaron/aws-ai-dlc-the-agentic-dev-lifecycle-that-works-everywhere-379j</link>
      <guid>https://forem.com/devtoaaron/aws-ai-dlc-the-agentic-dev-lifecycle-that-works-everywhere-379j</guid>
      <description>&lt;h1&gt;
  
  
  AWS AI-DLC: The Agentic Development Lifecycle That Works Across Every IDE
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;TL;DR: AI-DLC (AI-Driven Development Life Cycle) is AWS's answer to "vibes-based" AI coding. It's a rule-based steering system — not a tool or library — that transforms AI pair-programming from ad-hoc prompting into a structured, three-phase lifecycle (Inception → Construction → Operations). It runs on any AI coding agent that supports rule files: Kiro, Amazon Q, Cursor, Claude Code, Copilot, and more. The rules are the same everywhere; only the file location changes. Your workflow state persists in plain workspace files, so you can switch IDEs mid-project without losing progress.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Takeaways
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI-DLC is a methodology delivered as rule files — it works on 7+ coding assistants because it's agent/IDE/model agnostic. The rules file content is identical across platforms; only the path differs (&lt;code&gt;.kiro/steering/&lt;/code&gt;, &lt;code&gt;.cursor/rules/&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, etc.).&lt;/li&gt;
&lt;li&gt;The three-phase architecture (Inception, Construction, Operations) is adaptive — simple bug fixes skip most stages, while complex system migrations get full treatment with per-unit design loops.&lt;/li&gt;
&lt;li&gt;Reverse Engineering automatically scans existing codebases to build context artifacts that feed every subsequent stage. Without it, AI coding agents duplicate services, break patterns, and ignore existing architecture.&lt;/li&gt;
&lt;li&gt;The per-unit construction loop means complex projects get decomposed into parallelizable work packages, each with its own functional design → NFR → code generation → test cycle.&lt;/li&gt;
&lt;li&gt;An extension system lets enterprises layer blocking constraints (HIPAA compliance, internal SDK rules, security baselines) that halt the workflow on violations — not just warnings, actual blockers.&lt;/li&gt;
&lt;li&gt;Session continuity works via plain workspace files (&lt;code&gt;aidlc-docs/aidlc-state.md&lt;/code&gt;). Start in Cursor on Monday, switch to Claude Code on Wednesday — the AI reads the same state file and resumes exactly where you left off.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem This Solves
&lt;/h2&gt;

&lt;p&gt;We've all been there. You open your AI coding agent — Claude Code, Cursor, Copilot, whatever — and type "build a user API." The agent immediately starts writing code. It picks REST (you wanted GraphQL). It uses Express (your team uses Fastify). It creates a new auth service (you already have one). It ignores your company's error code standards.&lt;/p&gt;

&lt;p&gt;The fundamental issue isn't the AI's coding ability. It's that &lt;strong&gt;nobody told the AI to ask questions first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI-DLC fixes this by inserting a structured questioning and planning phase before any code is written. It's the difference between a junior dev who immediately starts typing and a senior architect who says "wait — let me understand the requirements, check the existing system, and propose an approach before we write a single line."&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Philosophy
&lt;/h2&gt;

&lt;p&gt;Before diving into the mechanics, here's what drives the design:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Principle&lt;/th&gt;
&lt;th&gt;What It Means in Practice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Adaptive Execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Only execute stages that add value; a bug fix doesn't need user stories&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human in the Loop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI proposes, human approves — every phase has an explicit gate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Methodology First&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent/IDE/model agnostic; works anywhere rule files can be loaded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reproducible&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Rules are explicit enough that different AI models produce similar outcomes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;No Duplication&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Single source of truth; generate artifacts rather than maintain copies&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Three-Phase Architecture
&lt;/h2&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%2F80ytd3b9o1c4akqug6mb.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%2F80ytd3b9o1c4akqug6mb.png" alt="AI-DLC Three-Phase Adaptive Workflow" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI-DLC structures development into three phases, each answering a different question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inception — WHAT to build and WHY.&lt;/strong&gt; This is where requirements get clarified, existing code gets understood, and work gets planned. Contains six stages: Workspace Detection, Reverse Engineering, Requirements Analysis, User Stories, Workflow Planning, and Application Design. For a simple bug fix, most of these get skipped. For a new platform, they all fire.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Construction — HOW to build it.&lt;/strong&gt; This is the per-unit loop where each piece of the system gets designed, coded, and tested independently. Contains: Functional Design, NFR Requirements, NFR Design, Infrastructure Design, Code Generation (plan + execute), and Build &amp;amp; Test.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operations — How to DEPLOY and RUN.&lt;/strong&gt; Currently a placeholder in the framework — future phases for deployment, monitoring, incident response, and maintenance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adaptive Depth
&lt;/h3&gt;

&lt;p&gt;The framework uses three depth levels that scale documentation rigor to problem complexity:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Depth&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Minimal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Clear, simple request&lt;/td&gt;
&lt;td&gt;Bug fix with known root cause&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Standard&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Normal complexity, some ambiguity&lt;/td&gt;
&lt;td&gt;Feature addition with defined scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Comprehensive&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-risk, multi-stakeholder&lt;/td&gt;
&lt;td&gt;System migration, new platform&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Key insight: &lt;strong&gt;stage selection is binary&lt;/strong&gt; (execute or skip), but &lt;strong&gt;detail within executed stages is adaptive&lt;/strong&gt;. All mandatory artifacts are always produced; only their depth of content varies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep Dive: Reverse Engineering — Why It Matters
&lt;/h2&gt;

&lt;p&gt;When you ask an AI to "add a payment feature" to an existing 50-file codebase, the AI needs to understand the current architecture before it can make intelligent additions. Without reverse engineering, the AI might create duplicate services, ignore existing patterns, or break established conventions.&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%2Fk5esvh0903kg6gywai9g.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%2Fk5esvh0903kg6gywai9g.png" alt="Brownfield Intelligence: Reverse Engineering" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When it triggers:&lt;/strong&gt; Only for "brownfield" projects (existing code detected in workspace). Skipped entirely for greenfield (empty) projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it produces&lt;/strong&gt; — imagine you have an existing e-commerce backend:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aidlc-docs/inception/reverse-engineering/
├── business-overview.md        ← "This system handles order processing, inventory, and shipping"
├── architecture.md             ← System diagram: API Gateway → Lambda → DynamoDB
├── code-structure.md           ← File inventory: "src/handlers/order.ts handles POST /orders"
├── api-documentation.md        ← "GET /products returns ProductList, POST /orders creates Order"
├── component-inventory.md      ← "3 Lambda functions, 2 DynamoDB tables, 1 S3 bucket"
├── technology-stack.md         ← "TypeScript 5.x, AWS CDK, Jest for testing"
├── dependencies.md             ← "order-service depends on inventory-service via SQS"
└── code-quality-assessment.md  ← "80% test coverage, ESLint configured, no tech debt"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt; Every subsequent stage (Requirements, Design, Code Generation) loads these artifacts. When the AI generates code later, it knows which files to modify vs. create new, which patterns to follow, which services already exist, and what the dependency graph looks like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staleness detection:&lt;/strong&gt; If you resume a project months later and the codebase has changed significantly, Workspace Detection compares artifact timestamps against the latest code modifications. Stale artifacts trigger a re-run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Design → Units Generation
&lt;/h2&gt;

&lt;p&gt;This is one of the subtler relationships in AI-DLC, and it confused me at first. They sound similar but serve completely different purposes.&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%2F0apqze1jckj498hulice.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%2F0apqze1jckj498hulice.png" alt="From Architecture to Parallelizable Work Packages" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Design = "What are the building blocks?"&lt;/strong&gt; It identifies high-level components, their responsibilities, and how they interact. Think of it as drawing the boxes on an architecture whiteboard.&lt;/p&gt;

&lt;p&gt;For a "Task Management SaaS" project, Application Design would produce:&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="gu"&gt;## Components Identified:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; TaskService: CRUD operations for tasks, assignment logic
&lt;span class="p"&gt;-&lt;/span&gt; NotificationService: Email/push notification delivery
&lt;span class="p"&gt;-&lt;/span&gt; AuthService: User authentication and authorization
&lt;span class="p"&gt;-&lt;/span&gt; AnalyticsService: Usage tracking and reporting

&lt;span class="gu"&gt;## Component Interfaces:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; TaskService.createTask(userId, taskData) → Task
&lt;span class="p"&gt;-&lt;/span&gt; TaskService.assignTask(taskId, assigneeId) → void
&lt;span class="p"&gt;-&lt;/span&gt; NotificationService.send(userId, template, data) → void

&lt;span class="gu"&gt;## Dependencies:&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; TaskService → NotificationService (triggers on assignment)
&lt;span class="p"&gt;-&lt;/span&gt; TaskService → AuthService (validates permissions)
&lt;span class="p"&gt;-&lt;/span&gt; AnalyticsService → TaskService (reads events)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Units Generation = "How do we break this into parallelizable work packages?"&lt;/strong&gt; It takes the Application Design output and groups it into &lt;strong&gt;units of work&lt;/strong&gt; — logical scopes that can be developed independently.&lt;/p&gt;

&lt;p&gt;The relationship is directional: Application Design is about &lt;strong&gt;architecture&lt;/strong&gt; (what exists, how it connects). Units Generation is about &lt;strong&gt;development strategy&lt;/strong&gt; (what to build first, what can parallelize). Simple projects may need Application Design but skip Units Generation (single unit). Complex projects need both.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is a "Unit of Work"?
&lt;/h3&gt;

&lt;p&gt;A unit of work is a &lt;strong&gt;logical grouping of related stories/features that can be designed, coded, and tested as a cohesive package&lt;/strong&gt;. It is NOT a microservice, a file, or a sprint. It's the smallest chunk of the system that makes sense to hand to one developer (or one AI session) and say "build this completely."&lt;/p&gt;

&lt;p&gt;How it maps to architecture types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Unit =&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Microservices&lt;/td&gt;
&lt;td&gt;One independently deployable service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Monolith&lt;/td&gt;
&lt;td&gt;A logical module with clear boundaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full-stack feature&lt;/td&gt;
&lt;td&gt;Frontend + backend + database for one capability&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Per-Unit Construction Loop
&lt;/h2&gt;

&lt;p&gt;Each unit goes through its own full design-and-build cycle:&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%2Fvzc1k4nstvlc3holezen.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%2Fvzc1k4nstvlc3holezen.png" alt="Per-Unit Construction Cycle" width="800" height="447"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unit 1 → Functional Design → NFR → Code Generation → ✅ Done
Unit 2 → Functional Design → NFR → Code Generation → ✅ Done
Unit 3 → Functional Design → NFR → Code Generation → ✅ Done
...
All Units Done → Build and Test (integration across all units)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  NFR — Non-Functional Requirements Explained
&lt;/h3&gt;

&lt;p&gt;NFR = the qualities and constraints of a system that are NOT about what it does, but HOW WELL it does it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Functional (What)&lt;/th&gt;
&lt;th&gt;Non-Functional (How Well)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;"Users can search products"&lt;/td&gt;
&lt;td&gt;"Search returns &amp;lt; 200ms at p99"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;"Users can log in"&lt;/td&gt;
&lt;td&gt;"Passwords hashed with bcrypt, sessions expire in 24h"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalability&lt;/td&gt;
&lt;td&gt;"System processes orders"&lt;/td&gt;
&lt;td&gt;"Handles 10K concurrent orders during peak"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Availability&lt;/td&gt;
&lt;td&gt;"Service is accessible"&lt;/td&gt;
&lt;td&gt;"99.9% uptime SLA with automatic failover"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliability&lt;/td&gt;
&lt;td&gt;"Data is stored"&lt;/td&gt;
&lt;td&gt;"Zero data loss, RPO &amp;lt; 1 minute"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AI-DLC has &lt;strong&gt;two&lt;/strong&gt; NFR stages per unit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NFR Requirements Assessment          NFR Design
(WHAT quality attributes needed?)    (HOW to achieve them technically?)

"We need &amp;lt; 200ms response time"  →  "Use Redis caching layer + CDN"
"We need 99.9% uptime"          →  "Multi-AZ deployment + health checks"
"We need PCI DSS compliance"    →  "Encrypt at rest, tokenize card data"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NFR Requirements Assessment&lt;/strong&gt; asks: What are your scalability expectations? Performance benchmarks? Security/compliance standards? Tech stack preferences?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NFR Design&lt;/strong&gt; takes those answers and produces concrete architectural patterns, technology selections with justification, and infrastructure requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Extension System — Enterprise Rules That Actually Block
&lt;/h2&gt;

&lt;p&gt;Most linting and compliance tools generate warnings that developers ignore. AI-DLC extensions are different — they're &lt;strong&gt;blocking constraints&lt;/strong&gt;. If code violates a rule, the workflow halts.&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%2Fukyqcb1jfl0g1mz91q8d.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%2Fukyqcb1jfl0g1mz91q8d.png" alt="Extension System Architecture" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Two-File Convention
&lt;/h3&gt;

&lt;p&gt;Each extension consists of exactly two files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extensions/your-category/your-extension/
├── your-extension.md           ← Full rules (loaded ONLY if user opts in)
└── your-extension.opt-in.md    ← Lightweight question (always loaded)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Opt-in file (lightweight, always loaded):&lt;/strong&gt;&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="gu"&gt;## Opt-In Prompt&lt;/span&gt;
Would you like to enable HIPAA compliance rules for this project?
A) Yes — enforce HIPAA data handling rules
B) No — skip HIPAA compliance checks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Rules file (heavy, loaded only on opt-in):&lt;/strong&gt;&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="gu"&gt;## Rule HIPAA-01: PHI Data Classification&lt;/span&gt;
&lt;span class="gs"&gt;**Rule**&lt;/span&gt;: All data models MUST classify fields as PHI/non-PHI...
&lt;span class="gs"&gt;**Verification**&lt;/span&gt;: No model exists without PHI classification annotations...

&lt;span class="gu"&gt;## Rule HIPAA-02: Minimum Necessary Access&lt;/span&gt;
&lt;span class="gs"&gt;**Rule**&lt;/span&gt;: API endpoints MUST implement role-based access to PHI fields...
&lt;span class="gs"&gt;**Verification**&lt;/span&gt;: No endpoint returns PHI without role validation...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Enforcement Behavior
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;During Code Generation stage:
  AI generates a DynamoDB table without encryption
  ↓
  Extension SECURITY-01 check: "Encryption at rest enabled?" → NO
  ↓
  ⛔ BLOCKING FINDING — stage cannot complete
  ↓
  User sees ONLY "Request Changes" option (no "Continue")
  ↓
  AI must fix the violation before workflow can proceed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  What Organizations Can Build
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Example Extensions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;SOC2 controls, PCI DSS requirements, zero-trust networking rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compliance&lt;/td&gt;
&lt;td&gt;GDPR data handling, HIPAA PHI rules, FedRAMP controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coding Standards&lt;/td&gt;
&lt;td&gt;Company SDK usage, naming conventions, API versioning policy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;Microservices boundaries, event-driven patterns, shared-nothing rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Minimum coverage thresholds, mutation testing, chaos engineering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operations&lt;/td&gt;
&lt;td&gt;Runbook requirements, observability standards, SLO definitions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Key design decisions: extensions without an opt-in file are &lt;strong&gt;always enforced&lt;/strong&gt; (no user choice). N/A rules are logged but not blocking. Extension compliance is summarized at each stage completion.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Two-Layer File System — The Architectural Insight
&lt;/h2&gt;

&lt;p&gt;This is the thing that clicked for me after staring at the repo for a while. AI-DLC uses a &lt;strong&gt;two-layer file system&lt;/strong&gt; where the layers serve completely different purposes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1 — Rule Files (HOW the AI should behave):&lt;/strong&gt; These are STATIC. They don't change during workflow execution. They're loaded by the platform's native rules mechanism:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Rule File Location&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kiro IDE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.kiro/steering/aws-aidlc-rules/core-workflow.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amazon Q&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.amazonq/rules/aws-aidlc-rules/core-workflow.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.cursor/rules/ai-dlc-workflow.mdc&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copilot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.github/copilot-instructions.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Layer 2 — Workflow Artifacts (state generated DURING execution):&lt;/strong&gt; These are DYNAMIC. Created/updated as the workflow progresses. They live in &lt;code&gt;aidlc-docs/&lt;/code&gt; which is a UNIVERSAL location for ALL platforms:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aidlc-docs/
├── aidlc-state.md               ← "Where are we in the workflow?"
├── audit.md                     ← "What happened? Full history"
├── inception/
│   ├── plans/                   ← Execution plans, stage plans
│   ├── reverse-engineering/     ← Architecture, components, APIs
│   ├── requirements/            ← Requirements, verification questions
│   ├── user-stories/            ← Stories, personas
│   └── application-design/      ← Components, services, units
├── construction/
│   ├── plans/                   ← Code-generation plans per unit
│   ├── {unit-name}/             ← Per-unit design docs
│   │   ├── functional-design/
│   │   ├── nfr-requirements/
│   │   ├── nfr-design/
│   │   ├── infrastructure-design/
│   │   └── code/                ← Markdown summaries only, NOT actual code
│   └── build-and-test/
└── operations/                  ← Placeholder for future
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The analogy:&lt;/strong&gt; Rule files = a &lt;strong&gt;recipe book&lt;/strong&gt; (instructions on how to cook). &lt;code&gt;aidlc-docs/&lt;/code&gt; = the &lt;strong&gt;kitchen&lt;/strong&gt; (where actual cooking happens and meals are stored). The recipe book tells you to "check the oven temperature" — the oven is separate from the recipe book.&lt;/p&gt;

&lt;h2&gt;
  
  
  Session Continuity — How It Actually Works Across Platforms
&lt;/h2&gt;

&lt;p&gt;AI coding assistants don't remember previous conversations. Each new session starts with a blank context. AI-DLC's solution: use &lt;strong&gt;workspace files as persistent memory&lt;/strong&gt; that survives session boundaries.&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%2Fozz40xpvjt74zebfnuvp.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%2Fozz40xpvjt74zebfnuvp.png" alt="Cross-Platform Session Continuity" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Continuity Mechanism Step-by-Step
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;New session starts&lt;/strong&gt; → Platform loads rule file (core-workflow.md)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rule file instructs&lt;/strong&gt;: "Run Workspace Detection → check for &lt;code&gt;aidlc-docs/aidlc-state.md&lt;/code&gt;"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If state file exists&lt;/strong&gt; → AI reads it and finds:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;   ## Current Status
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Current Stage**&lt;/span&gt;: CONSTRUCTION - Code Generation
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Next Stage**&lt;/span&gt;: Unit 2 Code Generation
&lt;span class="p"&gt;   -&lt;/span&gt; &lt;span class="gs"&gt;**Last Completed**&lt;/span&gt;: Unit 1 Code Generation (2024-03-15)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;AI loads previous artifacts&lt;/strong&gt; (requirements, designs, plans from &lt;code&gt;aidlc-docs/&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI presents "Welcome Back" prompt&lt;/strong&gt; with options to continue or review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work continues&lt;/strong&gt; seamlessly from where it left off&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Why This Works Across ALL Platforms
&lt;/h3&gt;

&lt;p&gt;The genius of the approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Platform-specific  ──▶  INSTRUCTIONS  ──▶  Universal workspace files
rule file location      (same content)      (same for all platforms)

.kiro/steering/    ─┐
.amazonq/rules/    ─┤                       aidlc-docs/
.cursor/rules/     ─┼─▶ core-workflow.md ──▶ ├── aidlc-state.md
CLAUDE.md          ─┤   (same rules!)       ├── audit.md
copilot-instr.md   ─┘                       └── inception/...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rule file's &lt;strong&gt;content is identical&lt;/strong&gt; regardless of platform — only its &lt;strong&gt;location&lt;/strong&gt; differs. You could switch IDEs mid-project: start with Cursor on Day 1 → generates &lt;code&gt;aidlc-docs/&lt;/code&gt;. Switch to Claude Code on Day 5 → reads same &lt;code&gt;aidlc-docs/&lt;/code&gt;, resumes from state.&lt;/p&gt;

&lt;h3&gt;
  
  
  Platform-Specific Enhancements
&lt;/h3&gt;

&lt;p&gt;Some platforms offer additional session persistence beyond AI-DLC's file-based approach:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Extra Feature&lt;/th&gt;
&lt;th&gt;How AI-DLC Benefits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--continue&lt;/code&gt; / &lt;code&gt;--resume&lt;/code&gt; flags&lt;/td&gt;
&lt;td&gt;Can resume exact conversation + file state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;Auto-memory system&lt;/td&gt;
&lt;td&gt;Learns user preferences across projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kiro IDE&lt;/td&gt;
&lt;td&gt;Conditional steering (file-match patterns)&lt;/td&gt;
&lt;td&gt;Can load phase-specific rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;alwaysApply&lt;/code&gt; vs conditional rules&lt;/td&gt;
&lt;td&gt;Always-on ensures workflow never forgotten&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important limitation:&lt;/strong&gt; AI context windows are finite. Even when resuming, if the project has 20+ artifacts, the AI must selectively load what's relevant. AI-DLC handles this with "Smart Context Loading by Stage": early stages load only workspace analysis; design stages load requirements + stories + architecture; code stages load ALL artifacts + existing code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Human Approval Gate Pattern
&lt;/h2&gt;

&lt;p&gt;Every stage follows: &lt;strong&gt;Generate → Present → Wait → Log&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;AI generates artifacts
       │
       ▼
Present completion message with:
  📋 REVIEW REQUIRED (link to artifact)
  🚀 WHAT'S NEXT:
     🔧 Request Changes
     ✅ Approve &amp;amp; Continue
       │
       ▼
⛔ GATE: Do NOT proceed until explicit approval
       │
       ▼
Log user's COMPLETE RAW response in audit.md (ISO 8601 timestamp)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a complete audit trail. For regulated industries, you can trace exactly why a particular architectural decision was made, who approved it, and what context was available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anti-Overconfidence — My Favorite Design Choice
&lt;/h2&gt;

&lt;p&gt;AI-DLC explicitly prevents the common AI problem of "assuming instead of asking":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OLD AI BEHAVIOR:                       AI-DLC ENFORCED BEHAVIOR:
─────────────────                      ────────────────────────────
User: "Build a user API"               User: "Build a user API"
AI: *immediately writes code*          AI: *generates 8 clarifying questions*
     (assumes REST, assumes Node,           - REST or GraphQL?
      assumes PostgreSQL, assumes           - Authentication method?
      no caching needed...)                 - Expected request volume?
                                            - Data retention requirements?
                                            ...
                                       AI: *waits for answers*
                                       AI: *analyzes answers for ambiguity*
                                       AI: *follows up on vague responses*
                                       AI: *THEN proceeds with full context*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Red flags the AI must detect in user answers:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"depends" → follow up: "What does it depend on? Define the criteria"&lt;/li&gt;
&lt;li&gt;"mix of A and B" → follow up: "When do you use A vs B specifically?"&lt;/li&gt;
&lt;li&gt;"not sure" → follow up: "What information would help you decide?"&lt;/li&gt;
&lt;li&gt;"standard" → follow up: "Define 'standard' in your context"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Makes This Different — The 10 Key Differentiators
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Agent-agnostic rule files&lt;/strong&gt; — same methodology across 7+ coding assistants&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptive intelligence&lt;/strong&gt; — complexity drives depth, not rigid templates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anti-overconfidence by design&lt;/strong&gt; — mandatory questioning and ambiguity resolution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full audit trail&lt;/strong&gt; — every interaction logged with timestamps in &lt;code&gt;audit.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extension system&lt;/strong&gt; — enterprises layer their own security, compliance, coding rules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session continuity via files&lt;/strong&gt; — &lt;code&gt;aidlc-state.md&lt;/code&gt; enables cross-session resume on any platform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation of concerns&lt;/strong&gt; — code at project root, docs in &lt;code&gt;aidlc-docs/&lt;/code&gt;, rules in platform location&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two-part stage pattern&lt;/strong&gt; — plan approval before execution prevents wasted effort&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-unit loop&lt;/strong&gt; — complex systems decomposed and built incrementally&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blocking constraints&lt;/strong&gt; — enabled extensions halt progress on non-compliance&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Who Should Use This
&lt;/h2&gt;

&lt;p&gt;AI-DLC is most valuable when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your team uses AI coding agents daily and wants consistency&lt;/li&gt;
&lt;li&gt;You work on brownfield codebases where context matters&lt;/li&gt;
&lt;li&gt;You need audit trails for compliance or governance&lt;/li&gt;
&lt;li&gt;You want to switch between IDEs without losing workflow state&lt;/li&gt;
&lt;li&gt;You're building complex systems that need decomposition before coding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's probably overkill for solo side projects or quick prototypes. The adaptive depth system mitigates this, but there's inherent overhead in the questioning phase. The extension system makes it particularly powerful for enterprises — you can encode your entire internal development playbook as blocking rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  FAQ
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Is AI-DLC a tool I need to install?
&lt;/h3&gt;

&lt;p&gt;No. AI-DLC is a set of rule files (markdown documents) that you place in your project's rule directory. There's no CLI, no npm package, no binary. Your existing AI coding agent reads the rules and follows the methodology. It works on Kiro, Amazon Q, Cursor, Claude Code, Copilot, and any other agent that supports instruction/rule files.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use AI-DLC with Claude Code and its CLAUDE.md?
&lt;/h3&gt;

&lt;p&gt;Yes — Claude Code is one of the supported platforms. You either include the AI-DLC rules directly in your &lt;code&gt;CLAUDE.md&lt;/code&gt; file or reference them via include paths. Claude Code's &lt;code&gt;--continue&lt;/code&gt; flag provides additional session continuity on top of AI-DLC's file-based state system. The auto-memory feature also learns your preferences across projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens if I skip Inception and go straight to coding?
&lt;/h3&gt;

&lt;p&gt;The framework is adaptive — for truly simple tasks, the AI will propose a minimal path. But force-skipping on a complex task means you lose reverse engineering context, requirements clarification, and architectural planning. The common failure mode is the AI duplicating existing services or breaking patterns because it never scanned the codebase.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do AI-DLC extensions differ from regular linting rules?
&lt;/h3&gt;

&lt;p&gt;Two key differences: scope and enforcement. Linting rules check syntax and style at the file level. AI-DLC extensions operate at the architecture level — "all APIs must be versioned," "every data model needs PHI classification," "minimum 3 replicas for stateful services." And they're blocking: the workflow physically cannot proceed until violations are resolved. There's no "ignore this warning" escape hatch.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the two-file extension convention work?
&lt;/h3&gt;

&lt;p&gt;Each extension has an &lt;code&gt;opt-in.md&lt;/code&gt; file (lightweight, always loaded — asks the user a yes/no question) and a full rules file (heavy, loaded only if the user opts in). This keeps the system prompt lean while allowing arbitrarily complex rule sets. Extensions without an opt-in file are always enforced — no user choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can different team members use different IDEs on the same AI-DLC project?
&lt;/h3&gt;

&lt;p&gt;Yes — this is explicitly supported. The workflow state in &lt;code&gt;aidlc-docs/&lt;/code&gt; is platform-agnostic. Developer A uses Cursor, Developer B uses Claude Code, Developer C uses Amazon Q. They all read and write the same &lt;code&gt;aidlc-docs/aidlc-state.md&lt;/code&gt; and artifact files. The only IDE-specific files are the rule file locations, and those contain identical content.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://fp8.co/articles/AWS-AIDLC-Agentic-Development-Lifecycle-Guide" rel="noopener noreferrer"&gt;fp8.co&lt;/a&gt;. Subscribe for weekly AI engineering analysis at &lt;a href="https://fp8.co/newsletters" rel="noopener noreferrer"&gt;fp8.co/newsletters&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aiengineering</category>
      <category>agenticai</category>
      <category>developerproductivity</category>
    </item>
  </channel>
</rss>
