<?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: Emir Cangir</title>
    <description>The latest articles on DEV Community by Emir Cangir (@ecangir).</description>
    <link>https://dev.to/ecangir</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%2F3766655%2F740baac6-a081-4ee8-81dc-729b0db7da18.png</url>
      <title>DEV Community: Emir Cangir</title>
      <link>https://dev.to/ecangir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ecangir"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Emir Cangir</dc:creator>
      <pubDate>Wed, 11 Feb 2026 17:16:11 +0000</pubDate>
      <link>https://dev.to/ecangir/-282g</link>
      <guid>https://dev.to/ecangir/-282g</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/ecangir" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3766655%2F740baac6-a081-4ee8-81dc-729b0db7da18.png" alt="ecangir"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/ecangir/ai-agents-source-context-and-prompt-history-a-new-software-development-paradigm-3h56" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;AI Agents, Source Context, and Prompt History: A New Software Development Paradigm&lt;/h2&gt;
      &lt;h3&gt;Emir Cangir ・ Feb 11&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#agents&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ai&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#llm&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#softwaredevelopment&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>AI Agents, Source Context, and Prompt History: A New Software Development Paradigm</title>
      <dc:creator>Emir Cangir</dc:creator>
      <pubDate>Wed, 11 Feb 2026 15:42:31 +0000</pubDate>
      <link>https://dev.to/ecangir/ai-agents-source-context-and-prompt-history-a-new-software-development-paradigm-3h56</link>
      <guid>https://dev.to/ecangir/ai-agents-source-context-and-prompt-history-a-new-software-development-paradigm-3h56</guid>
      <description>&lt;p&gt;Software development is shifting from “writing code” to “curating intent.” With modern LLMs, a large part of implementation can be produced by an AI agent — but only if the agent is &lt;em&gt;grounded&lt;/em&gt; in the project’s truth.&lt;/p&gt;

&lt;p&gt;Here’s the simplest mental model:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An AI agent is like a developer with anterograde amnesia.&lt;/strong&gt;&lt;br&gt;
It can reason and write code, but it doesn’t reliably “remember” your system unless you give it memory. In an AI-first workflow, that memory is built from two first-class artifacts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source context:&lt;/strong&gt; the curated, modular documentation that defines requirements, constraints, architecture, and invariants.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt history:&lt;/strong&gt; the running dialogue that captures decisions, feedback, and rationale as the project evolves.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these become a kind of &lt;em&gt;language-native codebase&lt;/em&gt;: a project defined by intent and constraints, where code is generated and maintained under human oversight.&lt;/p&gt;

&lt;p&gt;This idea aligns with Andrej Karpathy’s “Software 3.0” framing: prompts and context increasingly behave like programs, and development becomes a conversation where natural language is the dominant control surface.&lt;/p&gt;

&lt;p&gt;But “docs replace code” is not the claim. The real claim is subtler:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Context becomes the project’s constitution. Code remains the executable artifact.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The four-layer stack
&lt;/h2&gt;

&lt;p&gt;You can think of the AI-first repo as a layered system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Code&lt;/strong&gt;: the executable artifact (still necessary)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source context&lt;/strong&gt;: the normative spec (“what must be true”)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt history&lt;/strong&gt;: working memory + rationale (“why we chose this”)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent&lt;/strong&gt;: the compiler/contributor that converts (2)+(3) into (1) under review&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The breakthrough is treating layers 2 and 3 as versioned, reviewed, and intentionally maintained — not accidental chat logs.&lt;/p&gt;
&lt;h2&gt;
  
  
  Modular context architecture
&lt;/h2&gt;

&lt;p&gt;Large systems fail with a single monolithic context file for the same reason monolithic codebases rot: everything is coupled.&lt;/p&gt;

&lt;p&gt;A practical pattern is &lt;strong&gt;module-scoped context files&lt;/strong&gt;, each acting as a “README for humans and agents”:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;product_context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;orders_context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;payment_context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user_auth_context.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each file should be &lt;em&gt;small enough to load&lt;/em&gt;, &lt;em&gt;specific enough to constrain behavior&lt;/em&gt;, and &lt;em&gt;stable enough to trust&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why modular context works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clarity:&lt;/strong&gt; agents load only what matters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separation of concerns:&lt;/strong&gt; requirements and constraints evolve locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easier onboarding:&lt;/strong&gt; humans and agents ramp faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parallel work:&lt;/strong&gt; multiple agents can operate safely in different domains.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  A context file spec (copy this)
&lt;/h2&gt;

&lt;p&gt;Most teams struggle because their “context” is vibes-based. A reliable context file has a consistent shape:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;module&amp;gt;_context.md&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Purpose / Non-goals&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public API / Contracts&lt;/strong&gt; (endpoints, events, schemas)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Core invariants&lt;/strong&gt; (“must always hold”)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data model&lt;/strong&gt; (field meaning; avoid schema dumps)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Workflows / State machines&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security &amp;amp; privacy constraints&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational constraints&lt;/strong&gt; (latency, retries, idempotency)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure modes &amp;amp; recovery&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability&lt;/strong&gt; (logs/metrics/traces expectations)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test expectations&lt;/strong&gt; (golden paths + edge cases)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changelog&lt;/strong&gt; (dated, human-readable)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key is &lt;em&gt;normativity&lt;/em&gt;: context should state constraints and invariants, not mirror implementation details.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prompt history isn’t memory unless you distill it
&lt;/h2&gt;

&lt;p&gt;Raw conversation history is not durable. It’s noisy, contradictory, and often too long.&lt;/p&gt;

&lt;p&gt;So use this rule:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Conversation is a meeting transcript. Context is the meeting minutes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A mature workflow actively &lt;strong&gt;distills&lt;/strong&gt; prompt history into context updates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If a decision affects future work, it must be recorded.&lt;/li&gt;
&lt;li&gt;If a rule is corrected, it must be added to the relevant context file.&lt;/li&gt;
&lt;li&gt;If a decision changes, the old one must be marked as superseded.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This turns “chat” into governance.&lt;/p&gt;
&lt;h2&gt;
  
  
  Live context updates and versioning
&lt;/h2&gt;

&lt;p&gt;If context is the constitution, it must evolve with the project.&lt;/p&gt;

&lt;p&gt;When an agent implements a feature, it should update the relevant context file(s) in the same PR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;add or revise invariants/contracts&lt;/li&gt;
&lt;li&gt;record edge cases discovered during implementation&lt;/li&gt;
&lt;li&gt;add a dated changelog entry&lt;/li&gt;
&lt;/ul&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;## Changelog&lt;/span&gt;

&lt;span class="c"&gt;### 2026-02-02&lt;/span&gt;
- Added wishlist support: &lt;span class="nb"&gt;users &lt;/span&gt;can store product IDs &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;wishlistItems&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
- Added endpoints: GET/POST/DELETE &lt;span class="sb"&gt;`&lt;/span&gt;/users/&lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;/wishlist&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
- Enforced owner-only access and idempotent add/remove behavior.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you prevent context drift: docs and code change together.&lt;/p&gt;

&lt;h2&gt;
  
  
  The collaboration loop: human as executive, agent as operator
&lt;/h2&gt;

&lt;p&gt;A practical AI-first loop looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plan&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human states goal.&lt;/li&gt;
&lt;li&gt;Agent proposes approach and affected modules.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Review&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human checks architecture/security/product intent.&lt;/li&gt;
&lt;li&gt;Agent revises plan.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent writes code + tests following context rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Verify&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tests, static checks, and human review.&lt;/li&gt;
&lt;li&gt;Agent fixes issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Update context&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Agent updates module context + changelog.&lt;/li&gt;
&lt;li&gt;Human reviews context changes too.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is not “autopilot.” It’s &lt;strong&gt;delegation with constraints&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Case study: wishlist in an e-commerce app
&lt;/h2&gt;

&lt;p&gt;Suppose we add &lt;strong&gt;Wishlist&lt;/strong&gt; to an existing e-commerce system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modules involved:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;product_context.md&lt;/code&gt; (product IDs, catalog lookup rules)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user_auth_context.md&lt;/code&gt; (identity, authorization constraints)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The agent loads:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;global rules (&lt;code&gt;AGENTS.md&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;product_context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user_auth_context.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;most recent changelog entries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It proposes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;store &lt;code&gt;wishlistItems: string[]&lt;/code&gt; (product IDs) on the user profile&lt;/li&gt;
&lt;li&gt;endpoints for add/view/remove&lt;/li&gt;
&lt;li&gt;verify product exists before adding&lt;/li&gt;
&lt;li&gt;prevent duplicates (idempotent semantics)&lt;/li&gt;
&lt;li&gt;enforce “owner-only” authorization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The human adds missing requirements (e.g., removal, max size, logging).&lt;br&gt;&lt;br&gt;
The agent implements, tests, then updates both context files.&lt;/p&gt;

&lt;p&gt;The important part isn’t the endpoints — it’s the &lt;strong&gt;feedback → distillation&lt;/strong&gt; loop that makes future work faster and safer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits (and why it’s worth it)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed:&lt;/strong&gt; agent handles boilerplate and iteration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintainability:&lt;/strong&gt; context stays synced because it’s part of change flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding:&lt;/strong&gt; context is a human-readable, module-level truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency:&lt;/strong&gt; standards live in context, not tribal memory.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compounding improvement:&lt;/strong&gt; every correction becomes durable guidance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations (and the one you can’t ignore)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Context windows:&lt;/strong&gt; too much context causes “lost in the middle.”&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguity and gaps:&lt;/strong&gt; agents hallucinate if constraints aren’t explicit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance overhead:&lt;/strong&gt; context needs ownership and review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost/tooling:&lt;/strong&gt; large contexts can be expensive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the most important caution is this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Context is a new attack surface.&lt;/strong&gt;&lt;br&gt;
Bad context can silently steer agents into insecure or noncompliant solutions. Treat context changes like code changes: review, provenance, and automated verification.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Reference Implementation
&lt;/h2&gt;

&lt;p&gt;For a hands-on example of how this paradigm can be applied in practice, see the companion repository on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/cangiremir/context-driven-ai-development" rel="noopener noreferrer"&gt;https://github.com/cangiremir/context-driven-ai-development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository demonstrates a modular source context architecture, human-in-the-loop governance rules, example context files, ADRs, and prompt templates aligned with the ideas described in this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future: code as a compiled artifact of intent
&lt;/h2&gt;

&lt;p&gt;If this trajectory continues, “the repo” becomes less like a pile of source code and more like a &lt;strong&gt;knowledge system&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;context docs define intent and constraints&lt;/li&gt;
&lt;li&gt;decisions and rationales are preserved&lt;/li&gt;
&lt;li&gt;agents translate intent into code&lt;/li&gt;
&lt;li&gt;code is continuously verified and regenerated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In that world, the skill of a software engineer expands: you’re not only writing code, you’re designing systems of constraints that both humans and agents can execute.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>softwaredevelopment</category>
    </item>
  </channel>
</rss>
