the MAF vs SK shift makes sense once you hit multi-session state. been running a similar pattern with Claude agents lately where CLAUDE.md + a project-level context layer handles the "kernel-like" plumbing outside the SDK — lets me swap the underlying model without touching tool definitions. scoped-vs-singleton call on the factory registration is also the right question to force teams to actually decide on memory boundaries. if anyone is starting from scratch on the agent tooling side, tokrepo.com/en has a solid set of CLAUDE.md templates worth stealing before rolling your own.