<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>LLMGRAPH Agent Rules</title>
    <link>https://beta.llmgraph.in/agent-readable/</link>
    <description>Rules for writing code that coding agents can follow. Each rule gives the one-sentence rule, why agents fail without it, an example and how to enforce it.</description>
    <language>en</language>
    <lastBuildDate>Fri, 30 Oct 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>AR-01: Why do star imports make my coding agent miss callers?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-01/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-01/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Import names explicitly. Don't use from module import * in code that agents edit.</description>
    </item>
    <item>
      <title>AR-02: Do barrel files hide calls from coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-02/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-02/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Re-export through an explicit list (__all__, named export { }), not export * chains.</description>
    </item>
    <item>
      <title>AR-03: What happens when two functions share a name?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-03/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-03/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>One public name, one definition: don't define the same function name in two modules a file can import together.</description>
    </item>
    <item>
      <title>AR-04: Do import aliases confuse coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-04/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-04/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Alias imports only to resolve a real clash, and never alias a module to a one-letter name in shared code.</description>
    </item>
    <item>
      <title>AR-05: Why do fallback imports make agents edit the wrong code?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-05/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-05/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>No conditional imports that bind the same name to different objects (try/except ImportError fallbacks get a typed shim).</description>
    </item>
    <item>
      <title>AR-06: Why does my agent not see what importing this module does?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-06/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-06/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Keep import side effects out of modules; registration happens in an explicit setup call.</description>
    </item>
    <item>
      <title>AR-07: Why does my coding agent miss calls made through getattr?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-07/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-07/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Don't build method names as strings (getattr(obj, f\&quot;handle_{x}\&quot;), obj[name]()).</description>
    </item>
    <item>
      <title>AR-08: How do I write dispatch that type checkers can follow?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-08/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-08/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Dispatch over a closed set with a typed mapping keyed by a literal type, or an explicit match.</description>
    </item>
    <item>
      <title>AR-09: How should plugin registries be written for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-09/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-09/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>For open sets (plugins), register explicitly into a typed registry next to a typed contract.</description>
    </item>
    <item>
      <title>AR-10: Why can't any tool see calls made through eval?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-10/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-10/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>No eval/exec/Function() to call code.</description>
    </item>
    <item>
      <title>AR-11: Why does my agent break calls that go through **kwargs?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-11/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-11/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Avoid **kwargs/...args pass-through layers that hide the real signature; spell the parameters or use ParamSpec/Parameters&lt;&gt;.</description>
    </item>
    <item>
      <title>AR-12: Do decorators hide function signatures from coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-12/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-12/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Use functools.wraps / preserve signatures in decorators; don't let decorators replace a function with a different shape.</description>
    </item>
    <item>
      <title>AR-13: Why is Any a blind spot for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-13/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-13/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Annotate public function parameters and returns. Use Any/any only at a documented boundary.</description>
    </item>
    <item>
      <title>AR-14: How should I type callbacks so agents can follow them?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-14/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-14/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Type callback and handler parameters (Callable[...], function types), not object/Function.</description>
    </item>
    <item>
      <title>AR-15: How do I make duck typing visible to type checkers?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-15/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-15/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Use Protocol/interfaces for duck-typed parameters.</description>
    </item>
    <item>
      <title>AR-16: Why do dict-shaped objects make agents guess?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-16/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-16/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Prefer dataclasses/TypedDict/interfaces over free-form dicts for structured data passed between modules.</description>
    </item>
    <item>
      <title>AR-17: Which type checker settings make code easier for agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-17/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-17/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Turn on strict type checking in the paths agents edit (pyright strict / mypy strict / tsconfig strict).</description>
    </item>
    <item>
      <title>AR-18: Why does monkeypatching break agent edits?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-18/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-18/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>No monkeypatching in production code. In tests, patch through the fixture/mock API at the import site.</description>
    </item>
    <item>
      <title>AR-19: Why does reassigning methods hide callers from agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-19/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-19/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Keep a function's callers findable: don't assign functions onto objects at runtime (obj.method = other).</description>
    </item>
    <item>
      <title>AR-20: Where should a registry live so coding agents can find it?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-20/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-20/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>No hidden global registries mutated from many modules; one module owns the registry.</description>
    </item>
    <item>
      <title>AR-21: Do metaclasses hide code from coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-21/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-21/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Keep metaclass and __init_subclass__ generation out of edit paths; when you use it, document what it generates.</description>
    </item>
    <item>
      <title>AR-22: Why do __getattr__ proxies confuse coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-22/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-22/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Avoid __getattr__ (and JavaScript Proxy) forwarding on domain objects; expose explicit methods.</description>
    </item>
    <item>
      <title>AR-23: How should generated code be handled for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-23/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-23/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Generated code is committed, or its generator is in the repo with the command to run it. Mark it, and tell agents to edit the source.</description>
    </item>
    <item>
      <title>AR-25: What to check before changing a function signature?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-25/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-25/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Before changing a signature, list every caller and the dynamic sites that might reach it.</description>
    </item>
    <item>
      <title>AR-26: How does an agent know an edit is finished?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-26/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-26/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>After an edit, re-check the callers of every changed function before declaring the task done.</description>
    </item>
    <item>
      <title>AR-27: Is a list of callers ever the full list?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-27/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-27/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Treat \&quot;callers found\&quot; as the full list only when the tool says the list is full.</description>
    </item>
    <item>
      <title>AR-28: Why is find-and-replace a bad rename for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-28/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-28/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Rename through the language server's rename, not text replace.</description>
    </item>
    <item>
      <title>AR-29: What should a coding agent run before finishing?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-29/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-29/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Run the type checker and the affected tests before saying \&quot;done\&quot;.</description>
    </item>
    <item>
      <title>AR-30: What should an agent report when it can't verify an edit?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-30/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-30/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Write down what you couldn't verify in the final message.</description>
    </item>
    <item>
      <title>AR-31: Why does my coding agent miss Django signal receivers?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-31/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-31/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Connect Django signals with an explicit sender, and keep the receivers in one signals.py per app, imported in AppConfig.ready().</description>
    </item>
    <item>
      <title>AR-32: Do string model references hide dependencies in Django?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-32/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-32/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Import models directly when no import cycle forces a string. When a string is needed, use the absolute form \&quot;app_label.ModelName\&quot; and say why.</description>
    </item>
    <item>
      <title>AR-33: How do I keep FastAPI routes visible to coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-33/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-33/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Declare dependencies as typed functions used through Annotated[..., Depends(fn)], and write routes as decorated functions on an APIRouter.</description>
    </item>
    <item>
      <title>AR-34: Why does my agent break pytest fixtures it can't see?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-34/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-34/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Keep fixtures in the nearest conftest.py, name them for what they return, and don't use autouse to change behaviour.</description>
    </item>
    <item>
      <title>AR-35: Where should I patch in pytest?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-35/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-35/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Patch the name the code under test looks up, through monkeypatch or mocker, on the module object. Don't reassign module globals in a test.</description>
    </item>
    <item>
      <title>AR-36: Do higher-order components hide props from coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-36/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-36/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>In React, prefer hooks and explicit props over higher-order components that inject props.</description>
    </item>
    <item>
      <title>AR-37: Why does my agent miss dynamically imported components?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-37/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-37/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>In React and Next.js, don't call import() with a computed path for components agents edit.</description>
    </item>
    <item>
      <title>AR-38: How should Express routes be organised for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-38/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-38/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Register Express routes and middleware explicitly in one router module. Don't require route files by computed path.</description>
    </item>
    <item>
      <title>AR-39: How do I make event emitters traceable for coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-39/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-39/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Declare event names as a typed union or enum with typed payloads. Don't emit free strings with any arguments.</description>
    </item>
    <item>
      <title>AR-40: How do DI containers hide calls from coding agents?</title>
      <link>https://beta.llmgraph.in/agent-readable/ar-40/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ar-40/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Bind interfaces to implementations in one container module, using typed tokens and constructor injection.</description>
    </item>
    <item>
      <title>CH-01: Why does my Django signal break after a refactor?</title>
      <link>https://beta.llmgraph.in/agent-readable/ch-01/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ch-01/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Chimera CH-01: a Django project that tests AR-07, AR-08, AR-25, AR-31. Why does my Django signal break after a refactor?</description>
    </item>
    <item>
      <title>CH-02: Why do my pytest tests pass for a reason I can't see?</title>
      <link>https://beta.llmgraph.in/agent-readable/ch-02/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ch-02/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Chimera CH-02: a pytest project that tests AR-18, AR-34, AR-35. Why do my pytest tests pass for a reason I can't see?</description>
    </item>
    <item>
      <title>CH-03: Why did my plugin registry lose a format after an edit?</title>
      <link>https://beta.llmgraph.in/agent-readable/ch-03/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ch-03/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Chimera CH-03: a Python (__init_subclass__ registry) project that tests AR-06, AR-09, AR-21. Why did my plugin registry lose a format after an edit?</description>
    </item>
    <item>
      <title>CH-04: Why does a React prop stop arriving after a rename?</title>
      <link>https://beta.llmgraph.in/agent-readable/ch-04/</link>
      <guid isPermaLink="true">https://beta.llmgraph.in/agent-readable/ch-04/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>Chimera CH-04: a React (higher-order component, barrel) project that tests AR-02, AR-36. Why does a React prop stop arriving after a rename?</description>
    </item>
  </channel>
</rss>
