Token导航 LogoToken导航

Agent Skill · 研究检索

drupal-contribute-fix(drupal 贡献修复)

drupal-contribute-fix 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

drupal-contribute-fix 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为调用外部服务;许可证信息还不明确,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 72,863。

总安装 186周安装 8GitHub Stars 20下载 65核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:drupal-contribute-fix(drupal 贡献修复)
来源仓库:https://github.com/scottfalconer/drupal-contribute-fix
仓库路径:skills/drupal-contribute-fix
安装命令:
npx skills add https://github.com/scottfalconer/drupal-contribute-fix --skill drupal-contribute-fix
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/scottfalconer/drupal-contribute-fix --skill drupal-contribute-fix

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

该技能用于 Drupal 贡献修复流程,自动检测 drupal.org 上是否存在重复问题或已有补丁。适用于 bug 报告准备、上游问题匹配及修复提交前的准备工作。建议配合 drupalorg-cli 使用,分工处理 issue 分析和 MR 创建执行。

安装需从 GitHub 仓库获取,使用前应确认 drupal.org API 访问权限和用户认证状态。涉及代码修改时,应先 fork 仓库并创建独立分支,避免直接修改主分支。

来源仓库内路径:skills/drupal-contribute-fix

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/scottfalconer/drupal-contribute-fix --skill dr…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

drupal-contribute-fix 怎么安装?

在终端执行 npx skills add https://github.com/scottfalconer/drupal-contribute-fix --skill drupal-contr…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

drupal-contribute-fix 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

drupal-contribute-fix 需要什么权限?

权限级别是调用外部服务。该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

drupal-contribute-fix 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

drupal-contribute-fix 用的人多吗?

公开数据是累计安装 186 次,近一周安装 8 次,下载 65 次,GitHub 20 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

drupal-contribute-fix 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
drupal-contribute-fix

drupal 贡献修复 · 本页

18620调用外部服务未明确有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

drupal-contribute-fix

Use this skill for ANY Drupal contrib/core bug - even "local fixes".

Checks drupal.org before you write code, so you don't duplicate existing fixes.

Preferred Companion Skill: drupalorg-cli (Highly Recommended)

drupal-contribute-fix should focus on bug identification, triage quality, and report prep. Use drupalorg-cli for issue-fork, MR, and pipeline execution steps.

Recommended split:

  • This skill: detect bug ownership, search/match upstream issues, build clear reproduction + test steps, prepare submission-ready notes.
  • drupalorg-cli: fork/remote setup, branch checkout, MR inspection, pipeline status/log checks, iterative push loop.

Quick prerequisite check:

drupalorg --version
php -v

Use drupalorg-cli commands (0.8+ expected, PHP 8.1+):

drupalorg issue:show <nid> --format=llm
drupalorg issue:get-fork <nid> --format=llm
drupalorg issue:setup-remote <nid>
drupalorg issue:checkout <nid> <branch>
drupalorg mr:list <nid> --format=llm
drupalorg mr:status <nid> <mr-iid> --format=llm
drupalorg mr:logs <nid> <mr-iid>

If drupalorg-cli is unavailable, fall back to the manual Drupal.org/GitLab flow below.

Resolving Script Paths

All script paths below are relative to this skill's root directory — NOT your current working directory. Before running any command, resolve the skill root once:

for d in "$HOME/.agents/skills/drupal-contribute-fix" "$HOME/.codex/skills/drupal-contribute-fix"; do [ -f "$d/SKILL.md" ] && DCF_ROOT="$d" && break; done

All commands below use $DCF_ROOT. You only need to run the line above once per session.

FIRST STEP - Before Writing Any Code

**If you are debugging an error in docroot/modules/contrib/* or web/modules/contrib/*, run preflight BEFORE editing any code - even if the user only asked for a local fix.**

python3 "$DCF_ROOT/scripts/contribute_fix.py" preflight \
  --project <module-name> \
  --keywords "<error message>" \
  --out .drupal-contribute-fix

False-Positive Guard (Required)

preflight candidate matching is heuristic. Do not treat "already fixed" output as final without verification.

Before stopping work due to an "existing fix", you must verify all of the following:

  1. Open the referenced issue/commit and confirm its title/component matches the bug class and code area.
  2. Inspect the exact affected file/function in the target branch and confirm the bug condition is actually gone.
  3. Record file path + commit/issue evidence in your notes/report before closing/switching local tracking.

If any verification step fails, treat it as a false positive and continue triage/fix flow.

This takes 30 seconds and may save hours of duplicate work.

Important: Drupal.org's api-d7 endpoint does not support a full-text text= filter (it returns HTTP 412). If you need a manual keyword search link, use the Drupal.org UI search:

https://www.drupal.org/project/issues/search/<project>?text=<keywords>

Optional Companion Skill: drupal-issue-queue

If the drupal-issue-queue skill is also available, use it for deeper triage and clean issue summaries (still read-only, still api-d7):

  • Summarize the best-match issue:

- python scripts/dorg.py issue <nid-or-url> --format md

  • Filter/search a project's issue queue (status/priority/category/version/component/tag):

- python scripts/dorg.py search --project <machine_name> --status "needs review" --limit 20 --format json

(Run those commands from the drupal-issue-queue skill directory.)

If the tool isn’t in a standard location, set DRUPAL_ISSUE_QUEUE_DIR=/path/to/drupal-issue-queue.

LAST STEP - Produce a Handoff (Always)

This skill should always end with a clear handoff package for upstream contribution.

If you made local code changes, run package:

python3 "$DCF_ROOT/scripts/contribute_fix.py" package \
  --root /path/to/drupal/site \
  --changed-path docroot/modules/contrib/<module-name> \
  --keywords "<error message>" \
  --test-steps "<step 1>" "<step 2>" "<step 3>" \
  --out .drupal-contribute-fix

If you did triage-only (no local code change), preserve preflight evidence and provide:

  • The best-match issue(s)/MR(s)
  • Specific reproduction + expected behavior steps
  • Suggested drupalorg-cli commands to continue contribution work

Then tell the user where the artifacts are and what to run next.

NEVER DELETE Contribution Artifacts

DO NOT delete these files:

  • .drupal-contribute-fix/ directory
  • Diff files in diffs/
  • ISSUE_COMMENT.md
  • REPORT.md

Even if the user asks to "reset" or "undo" the local fix, preserve the contribution artifacts so the fix can be submitted upstream. The whole point is to help the Drupal community.

Complete Workflow

1. DETECT    → Error from contrib/core? Trigger activated.
2. PREFLIGHT → Search drupal.org BEFORE writing code
3. TRIAGE    → Verify/score candidates, avoid false positives
4. PREP      → Produce report-quality repro/test steps and recommendation
5. PACKAGE   → If code changed, run `package`; otherwise keep preflight evidence only
6. HANDOFF   → Prefer `drupalorg-cli` for fork/MR/pipeline execution
7. PRESERVE  → Keep .drupal-contribute-fix/ artifacts for follow-up

Steps 4-7 are MANDATORY. Don't stop at "issue found"; leave an actionable handoff.

When to Use This Skill

Early Conversational Triggers - Fire BEFORE Investigation

You don't need a stack trace to trigger this skill. Fire on high-level descriptions:

User SaysTrigger?Why
"The metatag module has an error"YESModule name + "error"
"mcp module isn't working with Acquia"YESModule + platform constraint
"I'm getting a bug in webform"YESModule name + "bug"
"paragraphs module throws an exception"YESModule + error indicator
"contrib module X has a problem"YESExplicit "contrib" mention
"my custom module has a bug"MaybeOnly if it triggers a contrib/core bug

Key insight: If the user mentions a Drupal module name (that isn't clearly custom) + any problem indicator (error, bug, issue, not working, exception, broken), trigger this skill FIRST. Don't wait until you've investigated and found a stack trace.

MANDATORY Triggers - You MUST Use This Skill When:

  1. Error/exception originates FROM contrib or core code

- Stack trace shows modules/contrib/ or core/ as the source - Error message references a class in Drupal\<contrib_module>\ namespace - Fatal error, TypeError, exception thrown by contrib/core code

  1. You are about to edit files in contrib or core

- docroot/modules/contrib/* or web/modules/contrib/* - docroot/core/* or web/core/* - docroot/themes/contrib/* or web/themes/contrib/*

  1. You are about to modify contrib/core code that should go upstream

- Replacing ad-hoc Composer patching with a real MR contribution - Converting temporary local fixes into issue-fork/MR work

  1. Custom module encounters a bug in core/contrib

- Custom code works correctly but triggers a bug in contrib/core - The fix would need to be in the contrib/core code, not the custom module

  1. Hosting platform constraints cause contrib/core issues

- "Acquia best practices", "Pantheon", "Platform.sh" constraints - Core module disabled/unavailable causing contrib to fail

This Skill is NOT Just for "Upstream Contributions"

Common misconception: This skill is only for patch uploads to drupal.org.

Reality: Use it for ALL local fixes to contrib modules. Why?

  • The bug may already be fixed upstream (save yourself the work)
  • An existing MR or attachment may already solve it
  • Even if you need a local fix NOW, the preflight search is fast

How to Recognize Contrib/Core Errors

Look for these patterns in error messages or stack traces:

# Error ORIGINATES from contrib - USE THIS SKILL
Drupal\metatag\MetatagManager->build()
docroot/modules/contrib/mcp/src/Plugin/Mcp/General.php
web/modules/contrib/webform/src/...
core/lib/Drupal/Core/...

# Error in CUSTOM module - skill may not apply
# (unless the custom code is triggering a bug in contrib/core)
modules/custom/mymodule/src/...

Path Triggers:

  • web/core/, web/modules/contrib/, web/themes/contrib/
  • docroot/core/, docroot/modules/contrib/, docroot/themes/contrib/
  • patches/ directory (especially patches/drupal-*)

What To Do

  1. FIRST: Run preflight to search drupal.org (even for "local fixes")
  2. TRIAGE: Verify candidate quality (issue title/component/file/function match)
  3. DOCUMENT: Write precise reproduction, before/after behavior, and test steps
  4. IF CODE CHANGED: Run package to generate artifacts; otherwise keep preflight outputs
  5. HANDOFF TO CLI: Recommend drupalorg-cli commands for fork/MR/pipeline flow
  6. PRESERVE: Keep .drupal-contribute-fix/ directory - NEVER delete it
  7. GUIDE USER: Tell them the exact next command(s) to run

What This Skill Does

  1. Identifies contrib/core bug ownership from symptoms, paths, and stack traces
  2. Searches drupal.org for existing issues/MRs/attachments matching the bug
  3. Validates candidate relevance before declaring "already fixed"
  4. Builds report-quality issue content (repro steps, expected/actual behavior, rationale)
  5. Generates contribution artifacts when local code changes exist:

- Paste-ready issue comment - Properly-named local .diff file - Validation results (php lint, phpcs if available)

  1. Hands off execution to drupalorg-cli for branch/MR/pipeline actions

Mandatory Gatekeeper Behavior

No new local diff artifact may be generated until upstream search + "already fixed?" checks are complete. No "STOP existing fix found" decision may be accepted until the file-level verification steps above are completed.

The skill ends in exactly one of these outcomes:

Exit CodeOutcomeMeaning
0PROCEEDMR artifacts + local diff generated
10STOPExisting upstream fix found (MR-based, historical patch attachments, or closed-fixed)
20STOPFixed upstream in newer version (reserved for future use)
30STOPAnalysis-only recommended (change would be hacky/broad)
40ERRORCouldn't determine project/baseline, network failure
50STOPSecurity-related issue detected (follow security team process)

Workflow modes: When an existing fix is found (exit 10), the skill reports whether the issue has an active MR or only historical patch attachments to guide contributor workflow.

Workflow Hygiene (MR-first)

Drupal contributions should be handled through Merge Requests (MRs). To reduce maintainer back-and-forth, this skill records workflow context but defaults to MR-only contributions for new work. When available, drive execution with drupalorg-cli instead of manual UI/Git steps.

Outputs (in every issue directory):

  • WORKFLOW.md - at-a-glance workflow decision + links + MR-first guidance
  • REPORT.md - includes a Workflow section near the top
  • ISSUE_COMMENT.md - template is workflow-aware:

- MR-based: comment template points to the existing MR(s) - Historical patch attachments: comment template still directs follow-up via MR workflow

Rule of thumb:

  • MR-based issues: contribute via GitLab MR/issue fork branch; don't upload new patches to the Drupal.org issue unless maintainers request it.
  • Issues with only historical patch attachments: use MR workflow for new work; use old attachments as context.

Commands

Preflight (search only)

Search drupal.org for existing issues without generating local artifacts:

python3 "$DCF_ROOT/scripts/contribute_fix.py" preflight \
  --project metatag \
  --keywords "TypeError MetatagManager::build" \
  --paths "src/MetatagManager.php" \
  --out .drupal-contribute-fix

drupalorg-cli handoff (preferred execution path)

After triage identifies the target issue/MR, use drupalorg-cli for issue-fork and MR execution:

drupalorg issue:show <nid> --format=llm
drupalorg issue:get-fork <nid> --format=llm
drupalorg issue:setup-remote <nid>
drupalorg issue:checkout <nid> <branch>
drupalorg mr:list <nid> --format=llm
drupalorg mr:status <nid> <mr-iid> --format=llm
drupalorg mr:logs <nid> <mr-iid>

Package (search + generate)

Search upstream AND generate contribution artifacts if appropriate:

# For web/ docroot layout:
python3 "$DCF_ROOT/scripts/contribute_fix.py" package \
  --root /path/to/drupal/site \
  --changed-path web/modules/contrib/metatag \
  --keywords "TypeError MetatagManager::build" \
  --test-steps "Enable metatag" "Visit affected page" "Confirm fixed behavior" \
  --out .drupal-contribute-fix

# For docroot/ layout (common in Acquia/BLT projects):
python3 "$DCF_ROOT/scripts/contribute_fix.py" package \
  --root /path/to/drupal/site \
  --changed-path docroot/modules/contrib/mcp \
  --keywords "module not installed" "update_get_available" \
  --test-steps "Set up failing config" "Trigger failing code path" "Confirm expected post-fix result" \
  --out .drupal-contribute-fix

Note: package always runs preflight first and refuses to generate local artifacts if an existing fix is found (unless --force is provided).

Test (generate RTBC comment)

Generate a Tested-by/RTBC comment for an existing MR or diff artifact you've tested:

python3 "$DCF_ROOT/scripts/contribute_fix.py" test \
  --issue 3345678 \
  --tested-on "Drupal 10.2, PHP 8.2" \
  --result pass \
  --out .drupal-contribute-fix

Options: --result can be pass, fail, or partial. Use --mr or --patch to specify which artifact you tested.

Reroll (legacy patch-only issues)

Legacy fallback only: reroll an existing patch attachment when maintainers explicitly request patch workflow:

python3 "$DCF_ROOT/scripts/contribute_fix.py" reroll \
  --issue 3345678 \
  --patch-url "https://www.drupal.org/files/issues/metatag-fix-3345678-15.patch" \
  --target-ref 2.0.x \
  --out .drupal-contribute-fix

This downloads the patch, attempts to apply it to your target branch, and generates a rerolled patch if needed (or confirms it applies cleanly). Prefer MR workflow for new contributions.

Common Options

OptionDescription
--projectDrupal project machine name (e.g., metatag, drupal)
--keywordsError message fragments or search terms (space-separated)
--pathsRelevant file paths (space-separated)
--outOutput directory for artifacts
--offlineUse cached data only, don't hit API
--forceOverride gatekeeper and generate local diff artifact anyway
--issueKnown issue number (runs gatekeeper check against this issue)
--detect-deletionsInclude deleted files in diff (risky with Composer trees)
--test-stepsREQUIRED Specific test steps for the issue (agent must provide)

Test Steps (MANDATORY)

Agents MUST provide specific test steps via --test-steps. Generic placeholders are not acceptable.

python3 "$DCF_ROOT/scripts/contribute_fix.py" package \
  --changed-path docroot/modules/contrib/mcp \
  --keywords "update module not installed" \
  --test-steps \
    "Enable MCP module with Update module disabled" \
    "Call the general:status tool via MCP endpoint" \
    "Before fix: Fatal error - undefined function update_get_available()" \
    "After fix: JSON response with status unavailable" \
  --out .drupal-contribute-fix

Test steps should:

  1. Describe how to set up the environment to reproduce the bug
  2. Describe the action that triggers the bug
  3. Describe the expected behavior BEFORE the fix (the bug)
  4. Describe the expected behavior AFTER the fix (the fix)

Output Files

.drupal-contribute-fix/
├── UPSTREAM_CANDIDATES.json              # Search results cache (shared)
├── 3541839-fix-metatag-build/            # Known issue
│   ├── REPORT.md                         # Analysis & next steps
│   ├── ISSUE_COMMENT.md                  # Paste-ready drupal.org comment
│   └── diffs/
│       └── project-fix-3541839.diff
├── 3573571-component-context/            # Optional local CI evidence
│   ├── LOCAL_CI_PARITY_2026-02-16.md     # Job/result summary + commands
│   └── ci/
│       ├── canvas-ci-local-full-20260216.log
│       └── canvas-ci-local-rerun-20260216.log
└── unfiled-update-module-check/          # New issue needed
    ├── REPORT.md
    ├── ISSUE_COMMENT.md
    └── diffs/
        └── project-fix-new.diff

Directory naming:

  • {issue_nid}-{slug}/ - Existing issue matched or specified
  • unfiled-{slug}/ - No existing issue found

Preflight vs Package: preflight only updates UPSTREAM_CANDIDATES.json. Issue directories are created by package when generating artifacts.

Local CI Evidence Artifacts (Recommended)

If local CI parity tooling is available (for example gitlab-ci-local), keep evidence under the issue directory in .drupal-contribute-fix/:

  • LOCAL_CI_PARITY_YYYY-MM-DD.md: concise summary with exact commands, exit codes, pass/fail/incomplete jobs, and blocker details.
  • ci/*.log: raw logs for audit/debug follow-up.
  • drupal-contribute-fix package now auto-creates LOCAL_CI_PARITY_YYYY-MM-DD.md when ci/*.log exists in that issue directory and no parity summary file exists yet.

Rules:

  • These are local review artifacts, not upstream contribution artifacts.
  • Keep them out of MR diffs.
  • If local CI tooling mutates tracked files, restore tracked files before preparing the final MR diff.
  • If the tooling is unavailable, record not run and why.

Security Issue Handling

If the fix appears security-related, the skill will STOP with exit code 50.

Security indicators:

  • Access bypass patterns
  • User input reaching dangerous sinks (SQL, shell, eval)
  • Authentication/session handling changes
  • File system access control modifications

Do NOT post security issues publicly. Follow the Drupal Security Team process: https://www.drupal.org/drupal-security-team/security-team-procedures

Minimal + Upstream Acceptable

The skill enforces contribution best practices:

  • Warns if a change touches >3 files or has large LOC changes
  • Separates "must fix" from "nice-to-haves" (nice-to-haves excluded from submitted change)
  • Detects patterns likely to be rejected:

- Broad cache disables/bypasses - Swallowed exceptions - Access check bypasses - Environment-specific hacks

See references/hack-patterns.md for details.

Validation

The skill runs validation and reports results honestly:

  • Always runs: php -l on changed PHP files
  • Runs if available: PHPCS with Drupal standard
  • Never claims tests passed if they weren't run

After Completion - What To Tell The User

When triage/fix is complete, you MUST inform the user about the contribution artifacts and provide a CLI-first handoff:

I completed contrib/core bug triage and prepared contribution artifacts:

📁 .drupal-contribute-fix/<nid>-<slug>/
  - REPORT.md - Triage findings and next steps
  - ISSUE_COMMENT.md - Copy/paste issue or MR comment text
  - WORKFLOW.md - MR/patch workflow recommendation
  - diffs/<diff-file>.diff - Present only when code changed (local artifact)

**Recommended next commands (drupalorg-cli):**
drupalorg issue:show <nid> --format=llm
drupalorg issue:get-fork <nid> --format=llm
drupalorg issue:setup-remote <nid>
drupalorg issue:checkout <nid> <branch>
drupalorg mr:list <nid> --format=llm

For unfiled issues (no existing drupal.org issue found):

📁 .drupal-contribute-fix/unfiled-<slug>/
  - Create a new issue at https://www.drupal.org/project/issues/<project> first
  - Use ISSUE_COMMENT.md as the issue description template
  - Then continue with drupalorg-cli using the new issue NID

DO NOT skip this step. The user may not know about the contribution workflow.

Drupal.org GitLab Workflow (CLI-first)

All Drupal core and contrib contributions use GitLab merge requests. Patch uploads are exception-only when explicitly requested by maintainers.

Reference: https://www.drupal.org/docs/develop/git/using-gitlab-to-contribute-to-drupal

Preferred command sequence

drupalorg issue:show <nid> --format=llm
drupalorg issue:get-fork <nid> --format=llm
drupalorg issue:setup-remote <nid>
drupalorg issue:checkout <nid> <branch>
drupalorg mr:list <nid> --format=llm
drupalorg mr:status <nid> <mr-iid> --format=llm
drupalorg mr:logs <nid> <mr-iid>

Iteration loop (after triage)

git add <changed-files>
git commit -m "Issue #<nid> by <username>: <short description>"
git push
drupalorg mr:status <nid> <mr-iid> --format=llm
drupalorg mr:logs <nid> <mr-iid>   # only if failing

Rebase when needed

git fetch origin
git checkout BASE_BRANCH_NAME
git pull
git checkout ISSUE_BRANCH_NAME
git rebase BASE_BRANCH_NAME
git push --force-with-lease

GitLab CI Automated Testing

GitLab CI runs automatically on all merge requests. You cannot test patch files—contributions must be merge requests to be tested.

What runs automatically:

  • Compatibility testing across Drupal Core versions
  • PHP and database configuration testing
  • PHPCS, PHPStan, and cspell linting
  • Project-specific PHPUnit tests

Interpreting results:

  1. Check pipeline status with drupalorg mr:status <nid> <mr-iid> --format=llm
  2. If failing, inspect logs with drupalorg mr:logs <nid> <mr-iid>
  3. Apply fixes, push again, and re-check status

Triggering test re-runs:

  • Push additional commits to the branch

Important: GitLab CI uses phpunit.xml.dist, phpstan.neon.dist and other .dist files. Review these files as they may cause unexpected test failures.

Manual fallback (only when drupalorg-cli is unavailable)

If drupalorg-cli cannot run in the environment, use the issue page's Issue fork controls and standard Git/GitLab UI as a fallback.

Local CI Parity (Best Effort)

If local CI tooling exists in the contributor environment, run parity checks and archive evidence under .drupal-contribute-fix/<issue>/:

  1. Save the exact command line(s) and exit status.
  2. Save raw logs in ci/.
  3. Summarize outcomes in LOCAL_CI_PARITY_YYYY-MM-DD.md (auto-scaffolded by package when ci/*.log is present).

If local parity tooling is not installed or blocked by environment constraints, state that clearly and do not claim full local parity.

Drupal Core Contributions

Drupal core requires test coverage for all changes. Contrib modules don't require tests (though they're encouraged).

For core contributions, you MUST:

  1. Include test coverage for changes
  2. Ensure all existing tests pass
  3. Update tests if behavior changes

See references/core-testing.md for:

  • Choosing the right test type (Unit vs Kernel vs Functional)
  • Test file locations and class structure
  • Example test classes
  • Running tests locally (DDEV/Lando commands)
  • Test coverage checklist

Contribution Workflow Summary

1. Detect + triage bug with `preflight`
2. Prepare report-quality reproduction and test steps
3. Identify target issue/MR (or file a new issue)
4. Use `drupalorg-cli` to set up fork remote + checkout branch
5. Make changes with test coverage (required for core)
6. Push commits and monitor MR pipeline
7. Iterate until pipeline is green and review feedback is addressed

Key Command Reference

TaskCommand
Show issue detailsdrupalorg issue:show <nid> --format=llm
Inspect fork + branchesdrupalorg issue:get-fork <nid> --format=llm
Set up issue fork remotedrupalorg issue:setup-remote <nid>
Check out issue branchdrupalorg issue:checkout <nid> <branch>
List MRsdrupalorg mr:list <nid> --format=llm
Check MR pipelinedrupalorg mr:status <nid> <mr-iid> --format=llm
Read failing job logsdrupalorg mr:logs <nid> <mr-iid>
Push latest commit(s)git push

References

Example Output

See examples/sample-report.md for a complete example.

平台分布

Codex

36.89%
按下载量换算24

Claude

26.33%
按下载量换算17

Cursor

19.16%
按下载量换算12

Gemini CLI

8.5%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

调用外部服务

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills