<?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: Marvin Ma</title>
    <description>The latest articles on DEV Community by Marvin Ma (@marvin_ma_597e184518c2221).</description>
    <link>https://dev.to/marvin_ma_597e184518c2221</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%2F3556164%2F4aca7263-c448-434b-8875-35938a6ee8f4.png</url>
      <title>DEV Community: Marvin Ma</title>
      <link>https://dev.to/marvin_ma_597e184518c2221</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marvin_ma_597e184518c2221"/>
    <language>en</language>
    <item>
      <title>What's causing you more rework with AI right now?</title>
      <dc:creator>Marvin Ma</dc:creator>
      <pubDate>Tue, 10 Mar 2026 08:44:57 +0000</pubDate>
      <link>https://dev.to/marvin_ma_597e184518c2221/whats-causing-you-more-rework-with-ai-right-now-33l0</link>
      <guid>https://dev.to/marvin_ma_597e184518c2221/whats-causing-you-more-rework-with-ai-right-now-33l0</guid>
      <description>&lt;p&gt;What's causing you more rework with AI right now?&lt;/p&gt;

&lt;p&gt;Session resets, wrong requirements, unreadable docs, or team context drift?&lt;/p&gt;

&lt;p&gt;My take: wrong requirements cost the most, but session resets hide the problem until late.&lt;/p&gt;

&lt;p&gt;What hurts more in your workflow?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My AI Agent Forgot Yesterday's Debugging. So I Changed the Workflow.</title>
      <dc:creator>Marvin Ma</dc:creator>
      <pubDate>Mon, 09 Mar 2026 09:44:23 +0000</pubDate>
      <link>https://dev.to/marvin_ma_597e184518c2221/my-ai-agent-forgot-yesterdays-debugging-so-i-changed-the-workflow-1lp6</link>
      <guid>https://dev.to/marvin_ma_597e184518c2221/my-ai-agent-forgot-yesterdays-debugging-so-i-changed-the-workflow-1lp6</guid>
      <description>&lt;p&gt;AI coding sessions do not usually fail because the model is weak. They fail because yesterday's debugging conclusions disappear when the chat ends. Yesterday I spent 2 hours debugging an auth refresh bug, and this morning my AI agent still remembered the mutex, the wrong storage key, and the exact files we changed.&lt;/p&gt;

&lt;p&gt;That changed how I think about AI workflows. I used to think the fix was a better prompt or a bigger context window. It wasn't.&lt;/p&gt;

&lt;p&gt;What fixed it was much simpler: move the useful context out of the chat and into the repo.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Failure Moment
&lt;/h2&gt;

&lt;p&gt;If you use AI coding agents regularly, you've probably had this happen:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Day 1:
You: Help me debug this token refresh loop.
AI: Finds the issue after a long back-and-forth.

Day 2:
You: What edge cases should we test for that fix?
AI: Can you share the relevant code and explain the bug first?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That second answer is the real tax of AI-assisted coding.&lt;/p&gt;

&lt;p&gt;The model may be smart. The session may be long. But if yesterday's conclusions are trapped inside yesterday's conversation, today still starts from zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bug Wasn't Trivial
&lt;/h2&gt;

&lt;p&gt;The concrete example here was a token refresh loop in a React + Node.js app.&lt;/p&gt;

&lt;p&gt;After a long debugging session, the useful conclusions were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the refresh endpoint returned a new access token, but the client stored it under the wrong key&lt;/li&gt;
&lt;li&gt;two concurrent API calls could trigger refresh at the same time&lt;/li&gt;
&lt;li&gt;the fix needed a mutex, a consistent &lt;code&gt;access_token&lt;/code&gt; key, and a debounce on refresh&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are exactly the kinds of details that matter the next day.&lt;/p&gt;

&lt;p&gt;Not the whole codebase. Not the whole architecture. Just the things we already paid to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;p&gt;Instead of letting that knowledge die in the session, I persisted it to the project itself.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;fcontext&lt;/code&gt;, the agent writes important conclusions to &lt;code&gt;.fcontext/_topics/&lt;/code&gt; as plain Markdown.&lt;/p&gt;

&lt;p&gt;So instead of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Yesterday's debugging -&amp;gt; lost in chat history
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I get this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Yesterday's debugging -&amp;gt; .fcontext/_topics/auth-token-refresh-bug.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That one change turns a temporary conversation into reusable project knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Smallest Workflow That Made It Work
&lt;/h2&gt;

&lt;p&gt;This is the shortest version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
fcontext init
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That creates a &lt;code&gt;.fcontext/&lt;/code&gt; directory and gives the agent instructions to read it at the start of each session.&lt;/p&gt;

&lt;p&gt;The important part is not the setup itself. The important part is the workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;work with the agent normally&lt;/li&gt;
&lt;li&gt;when the session reaches a useful conclusion, save it as project context&lt;/li&gt;
&lt;li&gt;let the next session read that context before you start asking follow-up questions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In practice, the useful file looks more like this:&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;# Auth Token Refresh Bug — Root Cause Analysis&lt;/span&gt;

&lt;span class="gu"&gt;## Problem&lt;/span&gt;
&lt;span class="p"&gt;1.&lt;/span&gt; Client stores refreshed token in &lt;span class="sb"&gt;`sessionStorage.token`&lt;/span&gt;
   but reads from &lt;span class="sb"&gt;`sessionStorage.access_token`&lt;/span&gt;
&lt;span class="p"&gt;2.&lt;/span&gt; Concurrent API calls trigger duplicate refresh attempts

&lt;span class="gu"&gt;## Fix Applied&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Added refresh mutex in &lt;span class="sb"&gt;`src/auth/tokenManager.ts`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Fixed storage key to &lt;span class="sb"&gt;`access_token`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Added debounce in &lt;span class="sb"&gt;`src/api/client.ts`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the next session does not need to rediscover the bug. It can build on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Worked Better Than a Better Prompt
&lt;/h2&gt;

&lt;p&gt;I think this is the part most people underestimate.&lt;/p&gt;

&lt;p&gt;Prompting helps you describe what you want right now.&lt;/p&gt;

&lt;p&gt;It does not automatically preserve what you learned yesterday.&lt;/p&gt;

&lt;p&gt;A bigger context window helps you fit more tokens into one conversation.&lt;/p&gt;

&lt;p&gt;It does not automatically convert yesterday's hard-won debugging conclusions into durable project state.&lt;/p&gt;

&lt;p&gt;That is why I no longer think of AI context as "the chat so far." I think of it as something closer to project memory.&lt;/p&gt;

&lt;p&gt;If the insight matters tomorrow, it should exist somewhere more stable than a conversation tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Payoff
&lt;/h2&gt;

&lt;p&gt;The next morning, the follow-up question becomes much more useful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is there anything else related to the token refresh fix that we should test?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And instead of asking me to restate the entire bug, the agent can respond with things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;test expired refresh tokens during an active request&lt;/li&gt;
&lt;li&gt;test concurrent refresh attempts after the mutex change&lt;/li&gt;
&lt;li&gt;test whether debounce hides a legitimate retry path&lt;/li&gt;
&lt;li&gt;test the exact files changed in the previous fix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the workflow improvement I actually care about.&lt;/p&gt;

&lt;p&gt;Not "AI remembers everything magically."&lt;/p&gt;

&lt;p&gt;Just: the next session starts from the last useful conclusion, not from polite amnesia.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Limitation
&lt;/h2&gt;

&lt;p&gt;This is not magic memory.&lt;/p&gt;

&lt;p&gt;If the saved topic is vague, low quality, or missing the real conclusion, the next session will inherit weak context.&lt;/p&gt;

&lt;p&gt;So this approach does not remove the need for good engineering judgment. It makes good engineering judgment reusable.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Think This Matters More Than It Sounds
&lt;/h2&gt;

&lt;p&gt;Most AI coding discussions still focus on prompts, models, and context windows.&lt;/p&gt;

&lt;p&gt;Those matter.&lt;/p&gt;

&lt;p&gt;But in day-to-day delivery, I hit a more basic problem first: useful project knowledge keeps evaporating.&lt;/p&gt;

&lt;p&gt;Once I treated context as repo state instead of chat residue, the quality of follow-up sessions improved immediately.&lt;/p&gt;

&lt;p&gt;That feels like a more durable workflow change than endlessly rewriting the perfect prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
fcontext init
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then use your agent on a real bug, save the conclusion, and come back the next day with a follow-up question.&lt;/p&gt;

&lt;p&gt;That is the fastest way to tell whether your AI workflow has memory or just momentum.&lt;/p&gt;

&lt;h2&gt;
  
  
  Question
&lt;/h2&gt;

&lt;p&gt;How are you handling cross-session context today?&lt;/p&gt;

&lt;p&gt;Are you still re-explaining important debugging sessions to each new agent, or are you treating project context as something worth persisting?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Give Your AI Coding Agent Persistent Memory in 30 Seconds</title>
      <dc:creator>Marvin Ma</dc:creator>
      <pubDate>Wed, 25 Feb 2026 16:54:01 +0000</pubDate>
      <link>https://dev.to/marvin_ma_597e184518c2221/how-to-give-your-ai-coding-agent-persistent-memory-in-30-seconds-3plc</link>
      <guid>https://dev.to/marvin_ma_597e184518c2221/how-to-give-your-ai-coding-agent-persistent-memory-in-30-seconds-3plc</guid>
      <description>&lt;p&gt;Your AI coding agent doesn't remember yesterday.&lt;/p&gt;

&lt;p&gt;You spent an hour debugging a tricky race condition, the AI understood every nuance — and this morning it asks you to "explain the project architecture." Again.&lt;/p&gt;

&lt;p&gt;By the end of this post, you'll have persistent memory working across sessions in under 30 seconds. I'll show you the exact terminal output at every step so you can follow along.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.9+&lt;/li&gt;
&lt;li&gt;Any AI coding agent (Copilot, Claude Code, Cursor, Trae)&lt;/li&gt;
&lt;li&gt;A project you're actively working on&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Install and Initialize (15 seconds)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Successfully installed fcontext-1.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Navigate to your project and initialize:&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="nb"&gt;cd &lt;/span&gt;your-project
fcontext init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Created .fcontext/
✓ Generated _README.md
✓ Generated _workspace.map
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You now have a &lt;code&gt;.fcontext/&lt;/code&gt; directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.fcontext/
├── _README.md          # Project summary — AI reads this first
├── _workspace.map      # Auto-generated project structure
├── _topics/            # Where AI saves session knowledge
├── _requirements/      # Optional: track stories/tasks/bugs
└── _cache/             # Optional: converted binary docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is plain Markdown. No database, no cloud, no API keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Enable Your Agent (15 seconds)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Generated .github/instructions/fcontext.instructions.md
✓ Copilot will now read .fcontext/ on every session
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using a different agent? Swap the name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;claude    &lt;span class="c"&gt;# → .claude/rules/fcontext.md&lt;/span&gt;
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;cursor    &lt;span class="c"&gt;# → .cursor/rules/fcontext.md&lt;/span&gt;
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;trae      &lt;span class="c"&gt;# → .trae/rules/fcontext.md&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each agent gets instructions in &lt;strong&gt;its native config format&lt;/strong&gt;. No plugins, no extensions — fcontext generates the standard config files that your agent already knows how to read.&lt;/p&gt;

&lt;p&gt;Want multiple agents? Enable them all:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;claude &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;cursor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They all read the same &lt;code&gt;.fcontext/&lt;/code&gt; data. Switch agents freely — no context loss.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Verify It Works
&lt;/h2&gt;

&lt;p&gt;Check what you've set up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fcontext status
  Initialized: yes
  Agents: copilot, claude
  Topics: 0
  Requirements: 0
  Cached files: 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now open your AI agent and start coding normally. Here's what happens behind the scenes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Session starts&lt;/strong&gt; → Agent reads &lt;code&gt;_README.md&lt;/code&gt; and &lt;code&gt;_topics/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You work&lt;/strong&gt; → Agent builds understanding of your project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Important discovery&lt;/strong&gt; → Agent saves it to &lt;code&gt;_topics/your-topic.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session ends&lt;/strong&gt; → Knowledge persisted on disk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next session&lt;/strong&gt; → Agent reads everything from step 1 — full continuity&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Real Example: Before and After
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Before fcontext
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Monday session
You: "Help me debug the auth token refresh"
AI: [2 hours of deep debugging, finds race condition, adds mutex]

# Tuesday session
You: "What about edge cases in the auth fix?"
AI: "Could you provide more context about what you're working on?"

# 😤 starts re-explaining from scratch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  After fcontext
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Monday session — same debugging work
# AI saves to .fcontext/_topics/auth-token-debugging.md:
#   - Race condition: concurrent API calls trigger duplicate refresh
#   - Fix: added mutex + storage key dedup + debounce
#   - TODO: test edge case with expired refresh token

# Tuesday session
You: "What about edge cases in the auth fix?"
AI: "Based on yesterday's debugging, the mutex handles concurrent
     refreshes. The edge case to test is an expired refresh token
     during an active request. Want me to write that test?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No re-explaining. The AI picks up exactly where you left off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Index Your Documents
&lt;/h2&gt;

&lt;p&gt;Got PDFs, DOCX, or XLSX files in your project? Your AI can't read binary files — but fcontext can convert them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext index docs/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Indexed docs/product-requirements.pdf → _cache/docs/product-requirements.pdf.md
✓ Indexed docs/api-spec.docx → _cache/docs/api-spec.docx.md
2 files indexed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your AI can reference those documents directly. No more copy-pasting from PDFs.&lt;/p&gt;

&lt;p&gt;Supported formats: PDF, DOCX, XLSX, PPTX, Keynote, EPUB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Track Requirements
&lt;/h2&gt;

&lt;p&gt;If your project has user stories or tasks scattered across Slack and docs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext req add &lt;span class="s2"&gt;"OAuth login flow"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; story
fcontext req add &lt;span class="s2"&gt;"Support Google provider"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; task &lt;span class="nt"&gt;--parent&lt;/span&gt; STORY-001
fcontext req &lt;span class="nb"&gt;set &lt;/span&gt;TASK-001 status &lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="nt"&gt;-progress&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext req board
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📋 Board

TODO          IN-PROGRESS       DONE
─────────     ─────────         ────
              TASK-001
              Support Google
              provider

STORY-001
OAuth login
flow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your AI reads &lt;code&gt;_requirements/&lt;/code&gt; and builds against tracked specs — not guesses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Gotchas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;"My AI didn't read .fcontext/ on first session"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After &lt;code&gt;fcontext enable&lt;/code&gt;, tell your AI: "Read .fcontext/_README.md and update it with the project info." It needs one nudge, then it maintains the file automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Can I git-commit .fcontext/?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes — and you should. Your teammates pull the repo and get the same context. Their AI instantly knows the project.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .fcontext/
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"add project context"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;"What if I want to start fresh?"&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext reset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gone. Clean slate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;p&gt;I tracked my context re-explanation time for two weeks. Week 1 without fcontext, week 2 with:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Without&lt;/th&gt;
&lt;th&gt;With fcontext&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Daily context setup time&lt;/td&gt;
&lt;td&gt;~12 min&lt;/td&gt;
&lt;td&gt;~0 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent switching overhead&lt;/td&gt;
&lt;td&gt;~10 min&lt;/td&gt;
&lt;td&gt;0 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Weekly total waste&lt;/td&gt;
&lt;td&gt;~60 min&lt;/td&gt;
&lt;td&gt;~3 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The time saving is nice. But the real win is &lt;strong&gt;answer quality&lt;/strong&gt; — an AI with accumulated project context gives better, more consistent responses than one starting from zero every morning.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext
fcontext init
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot   &lt;span class="c"&gt;# or: claude, cursor, trae&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;30 seconds. Your AI now remembers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/lijma/agent-skill-fcontext" rel="noopener noreferrer"&gt;github.com/lijma/agent-skill-fcontext&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;What's your current workaround for AI context loss? Curious how others are dealing with this — drop a comment 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Built a Tool to Stop AI Coding Agents from Forgetting Everything Between Sessions</title>
      <dc:creator>Marvin Ma</dc:creator>
      <pubDate>Sun, 15 Feb 2026 09:15:15 +0000</pubDate>
      <link>https://dev.to/marvin_ma_597e184518c2221/i-built-a-tool-to-stop-ai-coding-agents-from-forgetting-everything-between-sessions-10ni</link>
      <guid>https://dev.to/marvin_ma_597e184518c2221/i-built-a-tool-to-stop-ai-coding-agents-from-forgetting-everything-between-sessions-10ni</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: Every Session Starts from Zero
&lt;/h2&gt;

&lt;p&gt;If you use AI coding agents, you've experienced this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Session 1 (Copilot): "Build the auth module with OAuth support"
  → Great work. Deep debugging. Important decisions made.

Session 2 (Claude): "Can you continue the auth work?"
  → "What auth module? I don't see any context about OAuth."

Session 3 (Cursor): "We need to refactor the auth flow"
  → "Can you explain the project architecture first?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every new session starts from zero. You re-explain the project. You repeat decisions. You waste tokens on context that should already be there.&lt;/p&gt;

&lt;p&gt;It gets worse when you work in a team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your teammate's AI has &lt;strong&gt;zero knowledge&lt;/strong&gt; of what you've built&lt;/li&gt;
&lt;li&gt;Your product specs are in PDF/DOCX — AI &lt;strong&gt;can't read&lt;/strong&gt; binary files&lt;/li&gt;
&lt;li&gt;Requirements are scattered across Slack, docs, and meetings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I got tired of this and built &lt;strong&gt;fcontext&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is fcontext?
&lt;/h2&gt;

&lt;p&gt;fcontext is an open-source CLI tool that maintains a &lt;code&gt;.fcontext/&lt;/code&gt; directory in your project. Think of it as a &lt;strong&gt;shared brain&lt;/strong&gt; that every AI agent reads at the start of each session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command to set up:&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="nb"&gt;cd &lt;/span&gt;your-project
fcontext init
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot   &lt;span class="c"&gt;# or: claude, cursor, trae&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Your AI agent now reads project context automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Here's what lives inside &lt;code&gt;.fcontext/&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your-project/
  .fcontext/
    _README.md          # AI-maintained project summary
    _workspace.map      # Auto-generated project structure
    _cache/             # Binary docs converted to Markdown
    _topics/            # Session knowledge &amp;amp; conclusions
    _requirements/      # Stories, tasks, bugs
    _experiences/       # Imported team knowledge (read-only)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each AI agent gets instructions in &lt;strong&gt;its native config format&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Config Location&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GitHub Copilot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.github/instructions/*.instructions.md&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/rules/*.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/*.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trae&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.trae/rules/*.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The instructions teach the agent to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read &lt;code&gt;_README.md&lt;/code&gt; first to understand the project&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;_topics/&lt;/code&gt; for prior session conclusions&lt;/li&gt;
&lt;li&gt;Check &lt;code&gt;_cache/&lt;/code&gt; before asking you about binary documents&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;fcontext req&lt;/code&gt; commands for requirements&lt;/li&gt;
&lt;li&gt;Save important conclusions to &lt;code&gt;_topics/&lt;/code&gt; before the session ends&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Feature 1: Cross-Session Memory
&lt;/h2&gt;

&lt;p&gt;The biggest win. Your AI agent saves session knowledge to &lt;code&gt;_topics/&lt;/code&gt;, and the next session picks it up:&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;# End of today's session — AI saves conclusions&lt;/span&gt;
&lt;span class="c"&gt;# .fcontext/_topics/auth-debugging.md gets created automatically&lt;/span&gt;

&lt;span class="c"&gt;# Tomorrow, new session:&lt;/span&gt;
&lt;span class="c"&gt;# AI reads _topics/ → knows exactly what happened yesterday&lt;/span&gt;

&lt;span class="c"&gt;# You can also check manually:&lt;/span&gt;
fcontext topic list
fcontext topic show auth-debugging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Before fcontext&lt;/strong&gt;: "Can you explain the project?"&lt;br&gt;
&lt;strong&gt;After fcontext&lt;/strong&gt;: "Yesterday we fixed the OAuth redirect. Ready to implement GitHub provider?"&lt;/p&gt;
&lt;h2&gt;
  
  
  Feature 2: Cross-Agent Portability
&lt;/h2&gt;

&lt;p&gt;Switch between agents freely. They all read the same &lt;code&gt;.fcontext/&lt;/code&gt; data:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;claude
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;cursor

&lt;span class="c"&gt;# All three agents now share the same context&lt;/span&gt;
&lt;span class="c"&gt;# Use Cursor for frontend, Claude for backend — no context loss&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No vendor lock-in. The context belongs to &lt;strong&gt;your project&lt;/strong&gt;, not to any agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature 3: Binary Document Indexing
&lt;/h2&gt;

&lt;p&gt;Your product specs are in PDF. Your contracts are in DOCX. Your data is in XLSX. AI agents can't read any of them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;fcontext index specs/product-requirements.pdf
fcontext index contracts/
fcontext index data/quarterly-report.xlsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;fcontext converts them to Markdown and stores them in &lt;code&gt;_cache/&lt;/code&gt;. Now any agent can read your documents.&lt;/p&gt;

&lt;p&gt;Supported formats: PDF, DOCX, XLSX, PPTX, Keynote, EPUB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature 4: Requirements Tracking
&lt;/h2&gt;

&lt;p&gt;Stop losing requirements across Slack threads and meeting notes:&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;# Add requirements&lt;/span&gt;
fcontext req add &lt;span class="s2"&gt;"User authentication via OAuth"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; story
fcontext req add &lt;span class="s2"&gt;"Support Google provider"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; task &lt;span class="nt"&gt;--parent&lt;/span&gt; STORY-001

&lt;span class="c"&gt;# Track progress&lt;/span&gt;
fcontext req &lt;span class="nb"&gt;set &lt;/span&gt;TASK-001 status &lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="nt"&gt;-progress&lt;/span&gt;
fcontext req &lt;span class="nb"&gt;set &lt;/span&gt;TASK-001 status &lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# Visualize&lt;/span&gt;
fcontext req board    &lt;span class="c"&gt;# Kanban view&lt;/span&gt;
fcontext req tree     &lt;span class="c"&gt;# Hierarchy view&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your AI reads &lt;code&gt;_requirements/&lt;/code&gt; and builds against tracked specs — not hallucinated assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature 5: Experience Packs — Team Knowledge Sharing
&lt;/h2&gt;

&lt;p&gt;This is where it gets powerful for teams.&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;# Team lead: export accumulated project knowledge&lt;/span&gt;
fcontext &lt;span class="nb"&gt;export &lt;/span&gt;team-knowledge.zip

&lt;span class="c"&gt;# New team member: import it&lt;/span&gt;
fcontext experience import team-knowledge.zip

&lt;span class="c"&gt;# Their AI instantly knows:&lt;/span&gt;
&lt;span class="c"&gt;# - Project architecture&lt;/span&gt;
&lt;span class="c"&gt;# - Domain concepts&lt;/span&gt;
&lt;span class="c"&gt;# - Coding conventions&lt;/span&gt;
&lt;span class="c"&gt;# - Known pitfalls&lt;/span&gt;
fcontext experience list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also share via git:&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;# Export to a git repo&lt;/span&gt;
fcontext &lt;span class="nb"&gt;export &lt;/span&gt;git@github.com:team/domain-knowledge.git

&lt;span class="c"&gt;# Import in another project&lt;/span&gt;
fcontext experience import git@github.com:team/domain-knowledge.git

&lt;span class="c"&gt;# Keep it updated&lt;/span&gt;
fcontext experience update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-World Scenario
&lt;/h2&gt;

&lt;p&gt;Here's a typical day with fcontext:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Morning&lt;/strong&gt; — Open a new Claude session. Claude reads &lt;code&gt;.fcontext/_README.md&lt;/code&gt; and &lt;code&gt;_topics/&lt;/code&gt;. It knows what you did yesterday, what decisions were made, and what's next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Midday&lt;/strong&gt; — Product manager sends updated specs (PDF). You run &lt;code&gt;fcontext index specs/v2.pdf&lt;/code&gt;. Claude immediately references the new requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Afternoon&lt;/strong&gt; — Switch to Cursor for frontend work. Cursor reads the same &lt;code&gt;.fcontext/&lt;/code&gt; — no re-explaining needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End of day&lt;/strong&gt; — Claude saves today's conclusions to &lt;code&gt;_topics/debugging-payment-flow.md&lt;/code&gt;. Tomorrow's session starts with full context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next week&lt;/strong&gt; — New developer joins. They run &lt;code&gt;fcontext experience import team-pack.zip&lt;/code&gt;. Their AI is instantly productive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.9+&lt;/strong&gt;, single &lt;code&gt;pip install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;213 tests&lt;/strong&gt;, CI on Python 3.9/3.12/3.13&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cloud dependency&lt;/strong&gt; — all data in local &lt;code&gt;.fcontext/&lt;/code&gt; directory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apache 2.0&lt;/strong&gt; license&lt;/li&gt;
&lt;li&gt;Uses &lt;code&gt;markitdown&lt;/code&gt; for document conversion&lt;/li&gt;
&lt;li&gt;Plain Markdown and CSV files — no proprietary formats&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;fcontext

&lt;span class="c"&gt;# Set up in your project&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;your-project
fcontext init
fcontext &lt;span class="nb"&gt;enable &lt;/span&gt;copilot   &lt;span class="c"&gt;# or: claude, cursor, trae, opencode, openclaw&lt;/span&gt;

&lt;span class="c"&gt;# Index your documents&lt;/span&gt;
fcontext index docs/

&lt;span class="c"&gt;# Start coding — your AI now has persistent context&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/lijma/agent-skill-fcontext" rel="noopener noreferrer"&gt;github.com/lijma/agent-skill-fcontext&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;PyPI&lt;/strong&gt;: &lt;a href="https://pypi.org/project/fcontext/" rel="noopener noreferrer"&gt;pypi.org/project/fcontext&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Docs&lt;/strong&gt;: &lt;a href="https://lijma.github.io/agent-skill-fcontext/" rel="noopener noreferrer"&gt;lijma.github.io/agent-skill-fcontext&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear your feedback. Have you experienced the "context amnesia" problem? How do you currently handle context across AI sessions?&lt;/p&gt;

&lt;p&gt;Drop a comment or &lt;a href="https://github.com/lijma/agent-skill-fcontext/issues" rel="noopener noreferrer"&gt;open an issue&lt;/a&gt; — I'm actively developing this and every perspective helps.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
