What problem does it solve? Cross-cutting chat behaviors like admission gating, checkpoint capture, and title handling tend to accumulate inside large orchestration classes such as AgentSideEffects and AgentService, making them hard to maintain and review. This Skill guides you to build each behavior as an explicitly registered, dependency-injected contribution with defined ordering and failure isolation. ## Core Features & Use Cases - Contribution Model Guidance: Decide whether a behavior belongs in a contribution using a three-question test, and learn which behaviors (routing fabric, provider-shaped mappers) must stay out. - Seven Lifecycle Hooks: Implement onIncomingRequest, onTurnEnd, onDidApplyClientAction, onDidDispatchAction, onOutgoingTurn, onHydrateTurns, and onHydrateChat with correct ordering, memento lifecycle, and failure-isolation semantics. - Review Rules: Apply concrete criteria when reviewing changes that add code to AgentSideEffects or AgentService, including the fail-closed synchronous admission gate and built-in-sequence regression tests. - Use Case: When adding a feature that reacts to a completed turn, create a new directory under node/chatContributions/, implement the hook with a unique id and explicit order, register it in builtInChatContributions.ts, and add dispatcher tests. ## Quick Start Ask the agent to add a new chat contribution that reacts to completed turns, following the contribution model in this Skill.