diff --git a/packages/effect-view/AGENTS.md b/packages/effect-view/AGENTS.md
index acb9d7e..59e6382 100644
--- a/packages/effect-view/AGENTS.md
+++ b/packages/effect-view/AGENTS.md
@@ -4,7 +4,7 @@
Requires Effect v4 (RC) and React 19.2+. Peer dependencies: `effect`, `react`, `@types/react`. Not tied to `react-dom` — any React renderer works.
-When writing effect-view code, use the actual current source and tests in `src/` as ground truth over anything remembered from training — the API is pre-1.0 and still moving. The files below are a concise reference to how each module fits together; read the linked one(s) before writing code that uses that module.
+When writing effect-view code, use the actual current source and tests in `src/` as ground truth over anything remembered from training — the API is pre-1.0 and still moving. The files below are a concise reference; read the linked one(s) before writing code that touches that concern.
## Core model
@@ -14,27 +14,31 @@ When writing effect-view code, use the actual current source and tests in `src/`
4. Inside another effect-view component, compose children by yielding their `.use` Effect.
5. Every rendered component instance owns a root `Scope.Scope`, opened on mount and closed on unmount; regular component setup must complete **synchronously** during render unless the component is wrapped with `Async.async`.
-## Module index
+## Find the right doc by what you're trying to do
-| Module | Covers |
-|---|---|
-| [ReactRuntime.md](./ai-docs/ReactRuntime.md) | building and providing the application's Effect runtime |
-| [Component.md](./ai-docs/Component.md) | defining components, lifecycle hooks, running Effects from event handlers, providing services |
-| [Async.md](./ai-docs/Async.md) | components that suspend on an asynchronous Effect before rendering |
-| [Memoized.md](./ai-docs/Memoized.md) | skipping re-render/re-computation via `React.memo` |
-| [Lens.md](./ai-docs/Lens.md) | the core read/write state primitive, focusing, where to store state |
-| [View.md](./ai-docs/View.md) | the read-only side of state, `View.useAll` |
-| [Query.md](./ai-docs/Query.md) | cached, reactive, TanStack-Query-style server reads |
-| [QueryClient.md](./ai-docs/QueryClient.md) | the shared cache service backing `Query` |
-| [Mutation.md](./ai-docs/Mutation.md) | user-triggered writes with pending/error state |
-| [Form.md](./ai-docs/Form.md) | the shared schema-driven form model and input hooks |
-| [MutationForm.md](./ai-docs/MutationForm.md) | forms that submit a valid value to a `Mutation` |
-| [LensForm.md](./ai-docs/LensForm.md) | forms that keep a target `Lens` synchronized with a valid draft |
-| [PubSub.md](./ai-docs/PubSub.md) | bridging React-tracked values into an Effect `PubSub` |
-| [Stream.md](./ai-docs/Stream.md) | consuming a raw Effect `Stream` as React state |
-| [SetStateAction.md](./ai-docs/SetStateAction.md) | resolving `React.SetStateAction` values |
-| [ScopeRegistry.md](./ai-docs/ScopeRegistry.md) | internal — component scope lifecycle bookkeeping |
-| [Refreshable.md](./ai-docs/Refreshable.md) | internal — hot-reload integration for dev-server tooling |
+**Setting up the app** — building the runtime, providing it to the tree → [ReactRuntime.md](./ai-docs/ReactRuntime.md)
+
+**Defining a component, its lifecycle, or running Effects from event handlers** → [Component.md](./ai-docs/Component.md)
+
+**Storing, reading, or subscribing to state** (local, shared via a service, or focused into a nested field) → [State.md](./ai-docs/State.md) — `Lens` (read/write) and `View` (read-only)
+
+**Rendering something that needs to wait on an async Effect, or avoiding unnecessary re-renders/re-fetches** → [Async.md](./ai-docs/Async.md) — `Async` (suspend on an Effect) and `Memoized` (`React.memo` wrapper)
+
+**Fetching/caching server data** (reactive keys, staleness, background refresh, invalidation) → [Query.md](./ai-docs/Query.md) — includes `QueryClient`, the cache service `Query` runs against
+
+**Triggering a write** (save, delete, upload, send) with pending/error state → [Mutation.md](./ai-docs/Mutation.md)
+
+**Building a schema-driven form**:
+- shared concepts (encoded vs decoded value, focusing into fields, input/status hooks) → [Form.md](./ai-docs/Form.md) — read this first
+- a form that submits a valid value via a `Mutation` → [MutationForm.md](./ai-docs/MutationForm.md)
+- a form that keeps a target `Lens` continuously synchronized with a valid draft → [LensForm.md](./ai-docs/LensForm.md)
+
+**Small utilities**:
+- bridging React-tracked values into an Effect `PubSub` → [PubSub.md](./ai-docs/PubSub.md)
+- consuming a raw Effect `Stream` as React state → [Stream.md](./ai-docs/Stream.md)
+- resolving a `React.SetStateAction` against a previous value → [SetStateAction.md](./ai-docs/SetStateAction.md)
+
+**Building dev tooling for effect-view itself** (not application code) → [ScopeRegistry.md](./ai-docs/ScopeRegistry.md) (component scope bookkeeping), [Refreshable.md](./ai-docs/Refreshable.md) (hot-reload integration)
## Choosing between async integrations
diff --git a/packages/effect-view/ai-docs/Async.md b/packages/effect-view/ai-docs/Async.md
index f8392a8..10375c5 100644
--- a/packages/effect-view/ai-docs/Async.md
+++ b/packages/effect-view/ai-docs/Async.md
@@ -1,4 +1,8 @@
-# Async
+# Async and Memoized
+
+Two `Component` traits that control render behavior: `Async` lets a component's body suspend on an asynchronous Effect; `Memoized` skips re-rendering a component when its props haven't changed. They're commonly combined, since an unmemoized `Async` component restarts its async computation on every unrelated parent render.
+
+## Async
Components run synchronously by default (the body must complete without suspending during render). `Async.async` lifts a component so its body may await an asynchronous Effect before returning JSX; React Suspense handles the wait.
@@ -23,17 +27,32 @@ const User = yield* UserCard.use
.pipe(Async.async, Async.withOptions({ defaultFallback: