mcpField
D
drupal-module-finder

drupal-module-finder

github.com/ivanboring开发1392 次安装18 周前更新
代码仓库

关于 drupal-module-finder

drupal-module-finder 是用于评估 Drupal 扩展模块的命令行技能,面向 Drupal 项目维护者。它先检查核心及项目已有模块,再提供语义搜索、模块资料和 Composer 安装命令。

主要功能

  1. 01优先检查核心和已下载模块
  2. 02按需求语义搜索候选模块
  3. 03查看模块状态及版本覆盖
  4. 04查询发布信息和 Composer 命令
  5. 05读取文档、README 和文件结构

适用场景

  1. 01为特定功能寻找 Drupal 模块
  2. 02确认现有模块是否已能满足需求
  3. 03评估模块维护与安全覆盖情况
  4. 04获取模块安装所需的 Composer 命令

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ivanboring/drupal-module-finder --skill drupal-module-finder

安装后在 Claude Code 中输入/drupal-module-finder确认已加载。

附带文件drupal-module-finder

详细介绍

Drupal 模块查找器

使用 drupal-module-finder CLI 查找适合需求的 Drupal 贡献模块,了解模块信息,并获取安装该模块的 composer 命令。

此技能目录中附带了一份命令副本。在此目录中运行 ./drupal-module-finder,如果命令已添加到 PATH,也可以直接运行 drupal-module-finder。所有输出均为原始 Markdown。使用 --host=<url> 指定其他站点(默认值:http://module-finder.ddev.site)。

请务必先检查现有资源

在搜索或推荐下载新模块之前,优先考虑项目中已有的资源:

  1. Drupal 核心模块 — 如果核心模块已提供所需功能,建议启用该核心模块,而非安装贡献模块。
  2. 已下载的模块 — 已存在于代码库中的模块(例如位于 web/modules/contrib 和 web/modules/custom 下,或列在项目的 composer.json 中),但尚未启用。建议先启用其中一个,再添加新的依赖项。

只有在 Drupal 核心模块和已下载模块都无法满足需求时,才使用下面的搜索工作流。

工作流

1. 描述问题进行搜索

描述需要解决的问题。不要在查询中加入“module”一词 — 这层含义已隐含其中。

drupal-module-finder semantic-search "send private messages between users"

每次搜索只针对一个明确的需求。 每次搜索必须针对单一功能 — 不要搜索整个产品或宽泛的目标。如果用户提出了类似“我想打造 Facebook”这样的大型需求,应将其拆分为单独的需求,并逐一单独搜索:

drupal-module-finder semantic-search "send private messages between users"
drupal-module-finder semantic-search "poke or react to other people's profiles"
drupal-module-finder semantic-search "news feed of friends' activity"

依次运行搜索(每次只发起一个请求),并分别评估每组结果。宽泛、多功能的查询匹配效果不佳;单一、具体的需求则能获得较好的结果。

  • 最多返回 10 个按语义相关度排序的候选模块。
  • 每个候选项会显示:标题和数据名称(括号内)、摘要、相关度评分以及元数据(数据名称、项目 URL、开发状态、安全覆盖情况、星标数、项目使用情况、最新版本、Agentic 技能和 Drupal 版本覆盖情况)。
  • 添加 --chunk=true,还会显示每个候选项最匹配的文本摘录。
  • 如果没有合适的结果,请换种方式描述问题并重新搜索。
2. 调查候选模块

对于任何看起来有前景的候选模块,使用其数据名称(括号内的值,例如 Privatemsg (privatemsg) -> privatemsg)获取完整详情:

drupal-module-finder module-info privatemsg

添加 --all 可查看所有字段,或添加 --fields=stars,project_usage 聚焦于少数字段。

3. 获取安装 / composer 命令

确定模块合适后,获取其版本和 composer 命令:

drupal-module-finder release-info privatemsg

然后向用户提供 composer 命令(例如 composer require 'drupal/privatemsg:^4.0')。

所有命令

命令提供的内容
semantic-search "<problem>" [--chunk=true]根据描述的需求列出排序后的候选模块。从这里开始。不会缓存。
module-info <data_name> [--all] [--fields=...]模块摘要和元数据。--all = 所有字段;--fields= = 仅列出指定字段(去掉 field_ 前缀,例如 stars、module_categories;允许使用 title)。
release-info <data_name>版本及其 composer 命令。使用此命令进行安装。
documentation-info <data_name>模块外部文档的链接(或“No documentation found”)。
readme <data_name>模块的 README(或“No readme found”)。
file-structure <data_name>模块的文件 / 文件夹结构。

字段

module-info <data_name> --fields=... 接受以下名称(以逗号分隔,不带 field_ 前缀)。这些名称也是你会在输出中看到的标签。

字段标签说明
title模块名称节点标题。
data_name数据名称Drupal.org 机器名称(所有命令都会用到)。
module_summary模块摘要简短的人类可读说明。
module_description模块描述较长的描述。
module_readme_text模块 Readme 文本完整的 README(另见 readme)。
documentation文档文档文本。
external_information外部信息外部文档链接(另见 documentation-info)。
link_to_module模块链接项目 URL。
module_categories模块类别例如,访问控制、AI、自动化。
module_development_status模块开发状态例如,积极维护、不再支持。
development_status开发状态例如,正在积极开发、已废弃。
security_covered安全覆盖已覆盖 / 未覆盖。
drupal_version_coverageDrupal 版本覆盖范围例如,Drupal 10、Drupal 11。
has_agentic_skills是否包含 Agentic 技能模块是否附带 Agentic 技能。
stars星标数星标数量。
project_usage项目使用量报告使用该模块的网站数量。
latest_release_date最新发布日期最新版本的发布日期。
latest_update最近更新最后更新日期。
latest_module_releases最新模块版本发布标题(完整详情请参见 release-info)。
module_maintainers模块维护者维护者姓名。
supporting_organizations支持机构提供支持的机构。
module_affordances模块功能该模块能够实现的功能。
file_structure文件结构文件 / 文件夹布局(另见 file-structure)。
full_vector_search完整向量搜索用于语义搜索的汇总文本(内容较多)。

示例:

drupal-module-finder module-info privatemsg --fields=stars,project_usage,security_covered,drupal_version_coverage

使用 --all 一次性输出所有字段(并展开版本信息)。

它们如何帮助评估
  • semantic-search 根据自然语言描述快速缩小搜索范围。
  • module-info 确认是否符合需求:维护和安全状态、Drupal 版本覆盖范围,以及作为可信度参考的使用量和星标数。
  • release-info 提供准确的 composer 命令和版本约束。
  • readme 和 documentation-info 说明安装和配置方法。
  • file-structure 展示子模块,以及软件包中包含的内容。

选项

  • --host=<url> — 指定其他 Module Finder 网站。
  • --chunk=true — (semantic-search)包含最匹配的摘录。
  • --all、--fields= — (module-info)控制显示哪些字段。

Shell 补全(bash)

启用子命令、选项、--fields= 值、--agent= 值,以及已缓存模块数据名称的 TAB 补全:

source <(drupal-module-finder completion bash)

将此行添加到 ~/.bashrc,即可永久启用补全。补全仅针对 PATH 中的 drupal-module-finder 名称注册;以 ./drupal-module-finder 运行时不会自动补全。

提示

  • 始终使用问题描述进行搜索,不要使用模块名称,也不要使用 “module” 一词。
  • 将搜索结果中的 数据名称 用于后续的每条命令。
  • 优先选择维护积极、具有安全覆盖且支持用户所用 Drupal 版本的模块。

评论

支持 Markdown