What problem does it solve? Cross-cutting chat behaviors like admission gating, checkpoint capture, and prompt injection tend to accumulate in large orchestration classes such as AgentSideEffects and AgentService, making them hard to maintain and review. This Skill guides you to build those behaviors as self-contained, ordered, dependency-injected lifecycle contributions instead. ## Core Features & Use Cases - Contribution decision rules: Determine whether a behavior belongs in a contribution or must stay in routing fabric, provider-shaped mapping, or the orchestration classes. - Seven-hook lifecycle model: Implement onIncomingRequest, onTurnEnd, onDidApplyClientAction, onDidDispatchAction, onOutgoingTurn, onHydrateTurns, and onHydrateChat with correct ordering, failure isolation, and memento lifecycle semantics. - Review guidance: Evaluate pull requests that add code to AgentSideEffects or AgentService and enforce the contribution-model boundary. - Use Case: When adding a feature that injects context into outgoing prompts, create a new directory under node/chatContributions/, implement IAgentHostChatContribution with an explicit order, and register it in builtInChatContributions.ts rather than editing AgentSideEffects. ## Quick Start Ask the agent to add a new chat lifecycle behavior, such as attaching metadata to outgoing turns, as a contribution following the agent-host-chat-contributions guidelines.