mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-10-20 19:58:34 +00:00
AGENTS.md: Add contribution guidance for AI agents
Document the mailing list workflow and the conventions agents get wrong most often: recipe-only commit summaries with the sub-layer tag carried in the email subject as [meta-oe][PATCH x/y], the AI-Generated tag, and the human contributor's Signed-off-by on commits and recipe patch files. Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
1 file changed
+78
@@ -0,0 +1,78 @@
|
||||
AGENTS.md — Meta OpenEmbedded Layers
|
||||
|
||||
Guidance for AI agents working in the `meta-openembedded` repository.
|
||||
|
||||
## Making changes
|
||||
|
||||
- No web PR workflow. The project use **patches on mailing lists**
|
||||
(openembedded-devel@lists.openembedded.org) tracked via patchwork
|
||||
(https://patchwork.yoctoproject.org/project/oe/list/). Don't assume GitHub PR
|
||||
conventions apply.
|
||||
- One Git commit per logical change (e.g., one commit per recipe).
|
||||
- Commit message format:
|
||||
- Summary line is prefixed with the recipe name, e.g. `python3-posix-ipc:`.
|
||||
If the commit touches multiple recipes, list them comma separated, e.g.
|
||||
`recipe1,recipe2:`.
|
||||
- Do **not** put the sub-layer tag (e.g. `[meta-oe]`) in the commit summary
|
||||
line; it belongs in the email subject only (see below).
|
||||
- Check `git log --oneline <path>` for the prefix convention already in use.
|
||||
- Body explains what and why the change is. If the commit represents a
|
||||
feature addition, also how it was tested.
|
||||
- Prefer explaining _why_ a change was made over restating what's already
|
||||
visible in the diff, unless the diff is long/hard to follow or the reason
|
||||
for the change isn't known — in those cases, summarize what changed
|
||||
instead.
|
||||
- Be succinct: use as few sentences and lines as possible while still
|
||||
covering what/why/how. Cut restatements, filler, and any detail a reviewer
|
||||
wouldn't need (e.g. exact test-run counts, step-by-step narration). One
|
||||
short paragraph is usually enough; only add a second if a distinct point
|
||||
(e.g. testing) needs it.
|
||||
- The most relevant information about the change should be presented first.
|
||||
- Reference bugs as `[YOCTO #1234]` when applicable.
|
||||
- Use `Reported-by`, `Suggested-by`, `Tested-by`, `Reviewed-by`, `Cc` tags
|
||||
where relevant.
|
||||
- Email subject format:
|
||||
- The sub-layer tag comes first, directly followed by the `[PATCH]` tag with
|
||||
no space between them: `[meta-oe][PATCH 1/3] recipe: summary`.
|
||||
- Generate it with
|
||||
`git format-patch --subject-prefix="meta-oe][PATCH" <upstream>`, which
|
||||
yields `[meta-oe][PATCH x/y]`; add `-v2` etc. for rerolls
|
||||
(`[meta-oe][PATCH v2 x/y]`).
|
||||
- Each patch carries the tag of the sub-layer it changes (e.g. `meta-oe`,
|
||||
`meta-python`, `meta-networking`, `meta-gnome`). Prefer one series per
|
||||
sub-layer; if a series spans sub-layers, set the tag per patch.
|
||||
|
||||
### AI-generated code
|
||||
|
||||
- **Mandatory**: any AI-generated code/commit must add an `AI-Generated:` tag
|
||||
line in the commit message, placed _before_ `Signed-off-by` (if present),
|
||||
naming the tool used, e.g.:
|
||||
|
||||
```
|
||||
python3-posix-ipc: fix feature probing instead of forcing -lrt
|
||||
|
||||
AI-Generated: Uses Claude Code
|
||||
Signed-off-by: Contributor Name <contributor@example.com>
|
||||
```
|
||||
|
||||
- Also add a code comment or other in-patch indication that the code is
|
||||
AI-generated (recommended, not just the commit tag).
|
||||
- **Mandatory**: every commit, and every patch file added to a recipe, must
|
||||
carry the human contributor's `Signed-off-by`, placed after `AI-Generated:`.
|
||||
Use the contributor's identity from `git config user.name`/`user.email` (e.g.
|
||||
`git commit -s`, or `git rebase --signoff <upstream>` for existing commits),
|
||||
never one made up for the AI tool. The sign-off certifies the DCO/Developer's
|
||||
Certificate of Origin on the contributor's behalf, so they must review the
|
||||
change before it is sent.
|
||||
- In patch files added to a recipe, the header order is `Upstream-Status:`,
|
||||
`AI-Generated:`, then `Signed-off-by:`, and the `From:` line uses the same
|
||||
identity as the sign-off.
|
||||
- Contributor is responsible for confirming the AI tool's terms don't conflict
|
||||
with the project's open source license/IP policy, and that any third-party
|
||||
copyrighted material in the AI output is properly licensed before contributing
|
||||
it. See the Linux Foundation generative AI guidance:
|
||||
https://www.linuxfoundation.org/legal/generative-ai.
|
||||
- `Co-authored-by` should be omitted in favor of the `AI-generated` tag.
|
||||
|
||||
When in doubt about a convention, grep `git log --oneline <path>` in the target
|
||||
repo for precedent before inventing a new style.
|
||||
Reference in new issue
Block a user