关于 drupal-module-finder
drupal-module-finder 是用于评估 Drupal 扩展模块的命令行技能,面向 Drupal 项目维护者。它先检查核心及项目已有模块,再提供语义搜索、模块资料和 Composer 安装命令。
主要功能
- 01优先检查核心和已下载模块
- 02按需求语义搜索候选模块
- 03查看模块状态及版本覆盖
- 04查询发布信息和 Composer 命令
- 05读取文档、README 和文件结构
适用场景
- 01为特定功能寻找 Drupal 模块
- 02确认现有模块是否已能满足需求
- 03评估模块维护与安全覆盖情况
- 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)。
请务必先检查现有资源
在搜索或推荐下载新模块之前,优先考虑项目中已有的资源:
- Drupal 核心模块 — 如果核心模块已提供所需功能,建议启用该核心模块,而非安装贡献模块。
- 已下载的模块 — 已存在于代码库中的模块(例如位于
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_coverage | Drupal 版本覆盖范围 | 例如,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 版本的模块。