The correct approach is to evaluate each customization independently against both its original requirement and the capabilities currently supplied by the Claude SDK. Custom code has an ongoing maintenance cost, but automatically removing it is unsafe because some modifications may encode genuine application requirements that the standard SDK behavior still does not address. Conversely, automatically retaining every customization can preserve obsolete complexity after the SDK has evolved.
This is particularly relevant because Anthropic's SDKs already provide capabilities that developers might otherwise implement themselves. Official Claude API documentation states that SDKs provide built-in request formatting, error handling, retries, timeouts, and other integration functionality. For example, transient connection, rate-limit, and server errors are retried automatically with exponential backoff.
Therefore, each custom history, retry, or error-management layer should be reviewed for its actual purpose. If an SDK primitive now provides equivalent behavior, removing duplicate code improves maintainability. If the customization still satisfies a distinct requirement, it should remain.
The supplied exam source explicitly identifies D as the intended answer. Relevant topics: Agent Construction, SDK capabilities, abstraction boundaries, technical-debt management, retries, error handling, and agent state management.
===============