Skip to main content
[2026-03-03]

drupalorg-cli 0.8.0: GitLab issue fork and merge request commands

The 0.7.0 release was housekeeping — fixing the release notes command and clearing out deprecation warnings. 0.8.0 has two goals: add native GitLab issue fork and merge request commands, and make the CLI useful for developers using AI agents to assist with Drupal.org issues.

On the GitLab side, there are new commands for discovering forks, setting up remotes, checking out branches, and inspecting merge requests and their CI pipelines. The issue:show command also gained a --with-comments flag, which pulls the full comment thread alongside the issue details — skipping system-generated messages so you get the actual discussion.

That flag is useful for anyone catching up on a long thread — and it gives agents enough context to do useful, bounded work — like evaluating whether the issue summary is still accurate and drafting an update if it isn't. Issue summaries on Drupal.org routinely fall out of date as discussion evolves, and catching up on a long thread to write an accurate summary is exactly the kind of tedious task an agent handles well. The CLI ships a skill for that specifically, alongside a full contribution workflow skill for when you're ready to go further.

GitLab Merge Request Commands

Drupal.org uses GitLab for issue forks and merge requests. The CLI now has a full suite of commands to work with that workflow directly.

Start by discovering the fork for an issue and adding it as a git remote:

# See fork URLs and available branches
drupalorg issue:get-fork <nid>

# Add the fork as a git remote and fetch its branches
drupalorg issue:setup-remote <nid>

# Check out a branch from the fork
drupalorg issue:checkout <nid> <branch>

issue:setup-remote is idempotent — safe to run multiple times. issue:checkout sets up tracking automatically, so git push targets the fork branch and updates the existing MR without any extra steps.

From there, the mr:* commands cover the full review and debug cycle:

# List open merge requests for an issue
drupalorg mr:list 

# See which files changed in an MR
drupalorg mr:files  

# Read the full unified diff
drupalorg mr:diff  

# Check the GitLab CI pipeline status
drupalorg mr:status  

# Read failed job traces from the latest pipeline
drupalorg mr:logs  

Agent Skills

The CLI ships three agent skills, installed with:

drupalorg skill:install

Run this in your Drupal project root to install the skills into .claude/skills/drupalorg-cli/ for that project. Run it in your home directory instead and the skills land in ~/.claude/skills/drupalorg-cli/, making them available globally across all your projects. Claude Code and other MCP-compatible agents pick them up automatically from either location.

drupalorg-cli is the general-purpose skill. It documents every command, its arguments, and how to chain commands together. All data-fetching commands accept --format=llm, which returns structured XML optimized for agent consumption — clearly labelled fields, contributor lists, and change records.

drupalorg issue:show  --format=llm
drupalorg issue:show  --with-comments --format=llm
drupalorg mr:list  --format=llm
drupalorg mr:status   --format=llm

The --with-comments flag on issue:show pulls the full comment thread (skipping system-generated messages), giving an agent the full history of what's been tried and where things stand.

drupalorg-issue-summary-update teaches an agent to evaluate whether an issue summary is current based on the comment thread, and to draft an updated summary if it isn't. Issue summaries on Drupal.org frequently fall out of date as discussions evolve — this skill makes it something an agent can handle.

drupal-work-on-issue covers the full contribution workflow end-to-end. Given an issue NID, an agent can fetch issue context, discover and check out the issue fork's branch, make and push changes, and monitor the CI pipeline — all without leaving the agent loop.

MCP Server

The CLI exposes an MCP stdio server:

drupalorg mcp:serve

Wire it into your MCP host configuration and every CLI command becomes a callable tool. Example config for Claude Code:

{
  "mcpServers": {
    "drupalorg": {
      "command": "drupalorg",
      "args": ["mcp:serve"]
    }
  }
}

With this in place, an agent can call issue:show, mr:list, mr:logs, or any other command directly from the agent loop when it does not have direct shell access, like some desktop clients.

Installing or Upgrading

Download the Phar from the latest release, make it executable, and put it on your PATH:

curl -OL https://github.com/mglaman/drupalorg-cli/releases/latest/download/drupalorg.phar
chmod +x drupalorg.phar
mv drupalorg.phar /usr/local/bin/drupalorg

To upgrade, repeat the same steps — automatic updates aren't supported yet.

Full release notes and the complete changelog are on GitHub.