用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/mozilla-services/merino-py --skill review-provider命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | review-provider |
| description | Review a Merino suggest provider implementation against codebase patterns and best practices |
Review the provider specified in $ARGUMENTS against Merino's patterns and best practices. If no provider is specified, ask which provider to review.
Read all files in apps/merino/merino/providers/suggest/{provider_name}/ including:
provider.pybackends/protocol.py (if exists)Also read the provider's registration in apps/merino/merino/providers/suggest/manager.py (find the matching ProviderType and case block).
Read the provider's config section in apps/merino/merino/configs/default.toml.
Read tests in apps/merino/tests/unit/providers/suggest/{provider_name}/ and apps/merino/tests/integration/providers/suggest/{provider_name}/.
Review each of these areas and report findings. For each area, state PASS, WARN, or FAIL with an explanation.
Provider and extends BaseProvider__init__ stores self._name, self._enabled_by_default, self._query_timeout_sec__init__ calls super().__init__() (at end, without arguments, or with **kwargs)initialize() is asyncquery() returns list[BaseSuggestion]shutdown() is implemented (even if no-op)logger = logging.getLogger(__name__) at module levelquery() catches backend errors and returns [] instead of crashingwarning level (not error unless truly fatal)except: clauses (should catch specific exceptions)normalize_query() is implemented if the provider uses keyword matchingmetrics_client for timing external calls (e.g., self.metrics_client.timeit(...))RedisAdapter / NoCacheAdapter pattern from managerdefault.toml with type, backend, enabled_by_default, score, query_timeout_secproviders.*)ProviderType enumcase in _create_provider() factoryCustomDetails pattern (not top-level fields on BaseSuggestion)custom_details.pyProtocol classBackendError subclass on failuresmocker.AsyncMock(spec=BackendProtocol)@pytest.mark.asynciopackages/merino-common/merino_common/utils/cron.py Job class for periodic refreshasyncio.create_task() in initialize()_should_fetch() condition functionPresent findings as a checklist with PASS/WARN/FAIL for each area. Include: