Extract caching out of SkillsProvider into a dedicated CachingSkillsSource decorator, so caching becomes a composable layer in the skills-source pipeline instead of logic baked into the provider (alongside Aggregating/Filtering/DeduplicatingSkillsSource).
Today SkillsProvider owns caching internally (the _cached_context field, _get_or_create_context, and the disable_caching flag). This mixes context construction with caching and prevents controlling where caching sits relative to the other source decorators.
This mirrors the .NET work in #6765 to keep the two implementations aligned.
Extract caching out of
SkillsProviderinto a dedicatedCachingSkillsSourcedecorator, so caching becomes a composable layer in the skills-source pipeline instead of logic baked into the provider (alongsideAggregating/Filtering/DeduplicatingSkillsSource).Today
SkillsProviderowns caching internally (the_cached_contextfield,_get_or_create_context, and thedisable_cachingflag). This mixes context construction with caching and prevents controlling where caching sits relative to the other source decorators.This mirrors the .NET work in #6765 to keep the two implementations aligned.