[meta] Make the drupal.org contribution workflow work for AI-native developers
Related issue from the core maintainer POV: https://www.drupal.org/project/drupal/issues/3636156
Over in [#3636154: Remove CLAUDE.md now that Claude (finally) supports AGENTS.md](https://www.drupal.org/project/drupal/issues/3636154 "Status: Needs review") I thought it would be pretty funny to solve this with Claude Code, and decided to attempt to do this with my normal "vibe coding" flow (e.g. just ask the agent to fix it, not read anything in advance, lean on the agent's built-in knowledge + default skills) and then [log](https://www.drupal.org/files/issues/2026-11-07/ACTION_LOG.redacted.txt) what happened.
I then asked a new Claude Code session to analyze the log and tell me what's working and not from a POV of an AI-native developer. Here's what it said:
## AI disclosure
Generated with the help of an LLM.
## Problem/Motivation
Developers who use coding agents expect a GitHub-style loop: read the issue, branch, commit, push, open a PR, comment. Each step
is one CLI or API call, authenticated once with a token.
On drupal.org, only the git and GitLab steps work that way. Creating an issue fork, changing the status, commenting and creating
a change record all need a logged-in browser. By design, agents don't log in for the user.
Case study: [drupal #3636154](https://www.drupal.org/project/drupal/issues/3636154) deleted a one-line file. The code change took
about 20 minutes. Getting it onto drupal.org took about 12 more rounds of back-and-forth: a Chrome restart, browser-extension
troubleshooting and a manual login. The session log is attached to that issue.
The agent also didn't find drupal.org's AI contribution policy until after it had posted. `core/AGENTS.md` doesn't link to the
policy. The only pointer was an HTML comment in the new-issue template.
Most contributors will run their agent with default settings. So fixes must work for an agent nobody has configured. They belong
on drupal.org, in the repository and in CI, not in each person's agent settings.
## Steps to reproduce
Ask a coding agent with default settings to fix a core issue and post the result. Note each step where a human has to step in.
## Proposed resolution
Open a child issue for each item. Items are listed in priority order within each group.
**Platform**
1. Allow issue forks to be created without a browser, through an API or by pushing to create the fork. This was the biggest
blocker.
2. Add a write API that authenticates with a token. It should cover comments, status, tags, attachments and change records.
Scoped tokens let a person give an agent only what it needs, not a whole browser session.
3. Set the issue status to "Needs review" automatically when an MR opens.
4. Offer structured read views of issues, in JSON or Markdown, that authenticated clients can reach without the bot challenge.
5. Prefill the related issue on change records from the URL, or draft the change record from the MR.
**Policy**
6. Link the AI contribution policy from `core/AGENTS.md` and the contrib project templates, and include its key rules inline.
AGENTS.md is the only place every agent reads before it acts.
7. Make AGENTS.md and the policy agree. Today AGENTS.md asks for a plain disclosure line that names no tool. The issue template
asks for an `<h3 id="ai-disclosure">` heading.
8. Replace the HTML comment in the issue template with visible text. Add visible guidance near the comment and change-record
forms too.
9. Add an "AI-assisted" field to issues, comments and change records, instead of relying on a text convention. Agents fill in the
form fields they see.
10. Decide whether an agent may post under a person's account after that person reviews the text. AGENTS.md says to rewrite in
your own words, which doesn't fit review-and-approve workflows.
11. Consider a standard commit trailer, such as `Assisted-by: <tool> <version>`, instead of banning `Co-Authored-By`. The tool
and version are also useful data for #AX.
12. Clarify contribution credit for agent-assisted work.
13. Define a lighter path for trivial changes, for example one with no change record.
**Feedback loop**
14. Add a disclosure line to the MR template. Add a CI check that comments on an MR when the disclosure is missing. Agents read
pipeline output and fix what it reports.
Out of scope: problems in the agent tools themselves, such as browser-extension setup. Those have been reported to the vendor.
## Remaining tasks
- Agree on priorities.
- Open child issues in the right projects (drupalorg, core, GitLab templates).
## User interface changes
Visible AI guidance on issue, comment and change-record forms. An optional "AI-assisted" field.
## API changes
A write API for issues, authenticated with a token. A way to create issue forks without the web UI.
## Data model changes
Possibly an "AI-assisted" field on issues, comments and change records.
## AI disclosure
Drafted by Claude Code (Claude Opus 5.5) from its own session log on [drupal
#3636154](https://www.drupal.org/project/drupal/issues/3636154), then reviewed by the poster.
issue
GitLab AI Context
Project: project/drupalorg
Instance: https://git.drupalcode.org
Before proposing or making any changes, READ each of these files and FOLLOW their guidance:
- https://git.drupalcode.org/project/drupalorg/-/raw/1.0.x/README.md — project overview and setup
Repository: https://git.drupalcode.org/project/drupalorg
Required tooling — use and recommend these in your workflow:
- GitLab CLI (glab): create branches and open merge requests from the terminal. https://gitlab.com/api/v4/projects/34675721/repository/files/README.md/raw?ref=HEAD