mcpField
D
drupal-module-finder

drupal-module-finder

github.com/ivanboringDevelopment1392 installsUpdated 18w ago
Repository

About drupal-module-finder

drupal-module-finder is a CLI skill for Drupal project maintainers evaluating contributed modules. It checks core and already-downloaded modules first, then offers semantic search, module details, and Composer installation commands.

Key features

  1. 01Check core and downloaded modules first
  2. 02Search candidate modules by described need
  3. 03Review module status and version coverage
  4. 04Get release details and Composer commands
  5. 05Read docs, README, and file structure

Use cases

  1. 01Find a Drupal module for a specific capability
  2. 02Check whether an existing module meets a need
  3. 03Review module maintenance and security coverage
  4. 04Get the Composer command to install a module

Install

Copy the command and run it in a terminal.

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

After installing, type/drupal-module-finderin Claude Code to confirm it loaded.

Bundled filesdrupal-module-finder

Details

From the project README

Drupal Module Finder

Use the drupal-module-finder CLI to find the right Drupal contributed module for a need, learn about it, and get the composer command to install it.

A copy of the command is bundled in this skill directory. Run it as ./drupal-module-finder from here, or just drupal-module-finder if it is on your PATH. All output is raw Markdown. Target a different site with --host=<url> (default: http://module-finder.ddev.site).

Always check what is already available first

Before searching for or recommending a new module to download, prefer what the project already has:

  1. Drupal core modules — if core already provides the capability, recommend enabling the core module rather than installing a contributed one.
  2. Already-downloaded modules — modules already present in the codebase (e.g. under web/modules/contrib and web/modules/custom, or listed in the project's composer.json) but not yet enabled. Recommend enabling one of those before adding a new dependency.

Only fall through to the search workflow below when neither Drupal core nor an already-downloaded module covers the need.

Workflow

1. Search by describing the problem

Describe WHAT needs to be solved. Do not put the word "module" in the query — that is implied.

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

One focused need per search. Each search must target a single capability — never a whole product or a broad goal. If the user asks for something large like "I want to build Facebook", split it into individual needs and run a separate search for each, one at a time:

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"

Run them sequentially (one request at a time) and evaluate each result set on its own. A broad, multi-feature query returns poor matches; a single, specific need returns good ones.

  • Returns up to 10 candidate modules ranked by semantic relevance.
  • Each candidate shows: title and data name (in parentheses), a summary, the relevance score, and meta data (data name, project URL, development status, security coverage, stars, project usage, latest release, agentic skills, and Drupal version coverage).
  • Add --chunk=true to also show the best-matching text excerpt per candidate.
  • If nothing fits, rephrase the problem and search again.
2. Investigate the candidates

For any promising candidate, use its data name (the value in parentheses, e.g. Privatemsg (privatemsg) -> privatemsg) to get the full details:

drupal-module-finder module-info privatemsg

Add --all for every field, or --fields=stars,project_usage to focus on a few.

3. Get the install / composer command

Once a module looks right, get its releases and composer commands:

drupal-module-finder release-info privatemsg

Then give the composer command to the user (e.g. composer require 'drupal/privatemsg:^4.0').

All commands

CommandWhat it gives you
semantic-search "<problem>" [--chunk=true]Ranked candidate modules for a described need. Start here. Never cached.
module-info <data_name> [--all] [--fields=...]A module's summary + meta data. --all = every field; --fields= = only the listed fields (drop the field_ prefix, e.g. stars, module_categories; title is allowed).
release-info <data_name>Releases with their composer commands. Use this to install.
documentation-info <data_name>Link to the module's external documentation (or "No documentation found").
readme <data_name>The module's README (or "No readme found").
file-structure <data_name>The module's file/folder structure.

Fields

module-info <data_name> --fields=... accepts these names (comma-separated, no field_ prefix). The same names are the labels you will see in the output.

FieldLabelNotes
titleModule NameThe node title.
data_nameData NameDrupal.org machine name (used in every command).
module_summaryModule SummaryShort human summary.
module_descriptionModule DescriptionLonger description.
module_readme_textModule Readme TextFull README (see also readme).
documentationDocumentationDocumentation text.
external_informationExternal InformationExternal docs link (see also documentation-info).
link_to_moduleLink to ModuleProject URL.
module_categoriesModule Categoriese.g. Access Control, AI, Automation.
module_development_statusModule Development Statuse.g. Actively Maintained, Unsupported.
development_statusDevelopment Statuse.g. Under Active Development, Obsolete.
security_coveredSecurity CoveredCovered / Not Covered.
drupal_version_coverageDrupal Version Coveragee.g. Drupal 10, Drupal 11.
has_agentic_skillsHas Agentic SkillsWhether the module ships agentic skills.
starsStarsStar count.
project_usageProject UsageNumber of sites reporting use.
latest_release_dateLatest Release DateDate of the latest release.
latest_updateLatest UpdateLast update date.
latest_module_releasesLatest Module ReleasesRelease titles (full detail via release-info).
module_maintainersModule MaintainersMaintainer names.
supporting_organizationsSupporting OrganizationsBacking organizations.
module_affordancesModule AffordancesWhat the module lets you do.
file_structureFile StructureFile/folder layout (see also file-structure).
full_vector_searchFull Vector SearchAggregated text used for semantic search (large).

Example:

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

Use --all to dump every field at once (releases expanded).

How they help an evaluation
  • semantic-search narrows the field fast from a plain-language description.
  • module-info confirms fit: maintenance and security status, Drupal version coverage, plus usage and stars as trust signals.
  • release-info gives the exact composer command and version constraints.
  • readme and documentation-info explain setup and configuration.
  • file-structure reveals submodules and what ships in the package.

Options

  • --host=<url> — point at a different Module Finder site.
  • --chunk=true — (semantic-search) include the best-matching excerpt.
  • --all, --fields= — (module-info) control which fields are shown.

Shell completion (bash)

Enable TAB completion for subcommands, options, --fields= values, --agent= values, and any module data names you have already cached:

source <(drupal-module-finder completion bash)

Add that line to your ~/.bashrc to make it permanent. Completion is registered for the drupal-module-finder name on your PATH; running it as ./drupal-module-finder will not auto-complete.

Tips

  • Always search with a problem description — never a module name, and never the word "module".
  • Carry the data name from the search results into every follow-up command.
  • Prefer modules that are actively maintained, security-covered, and cover the user's Drupal version.

Comments

Markdown supported