From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000617; cv=none; d=zohomail.com; s=zohoarc; b=N1iL6nvGjWj2tK5H1JsSX6tPQ2XhJqyxrJ+UeBtceSdnT0BtTvDdDxCkpR+3bx5KS/hMXk+CfUMeH+338Bi2DEU/bZ64KnG0kLs0Yxzk8ntZOkBrMlNbBEdSDvboecncKuaNA7Mor4bS+XJNszxu7XNkXfK+sVMqB3+54tVx+/s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000617; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tGeXr0CV41iPODl4UFdqapWL59RsHsKnnVLiNBEdRiI=; b=K9dS1BN5PqL20mP3Yi6uvWekGFfNtMcuLKJsQ6hgxgX0a8t5MD088aflU3TCmmQIgo4xbU88oWjYGWhuXeuvPvw/6aGzlmInIKIPmOrmQdF+qrx4/oCLKengPVKSB3Zi2roGnrEd4Ve/IcvvK1zeRMTi6BcOl/yohwKGuZkoxIQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000617193802.5048460834241; Tue, 5 May 2026 10:03:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9E-0007zL-75; Tue, 05 May 2026 13:01:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0007wM-MZ for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:18 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ8w-0003Sn-Rq for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:13 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso42365995e9.3 for ; Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-450524831cdsm6470438f8f.5.2026.05.05.10.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:07 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 197AE5F8D0; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000469; x=1778605269; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tGeXr0CV41iPODl4UFdqapWL59RsHsKnnVLiNBEdRiI=; b=CscyWejPui7CmODEMqUt7C6wzG5yaWxlJdPt4p2UGf8Q/wC0gv27YEpYgWhsxOFNfX Gls1vYvnUT6mSwoElvKO1bwQV/lUp0Fot3gkvDggqGR1yLH9uGyYJ9KmX6CaAlfG/8yW 6r1YF955m23lOydIp0rXj3T8doktDvDYpGIap8/IQjSynY8yF2ebOJvOlg6GS0eKy1/S 2U5ju5G+7FqA/EP4eQ8uNd9bWgB0ncRrQELdmIVvN96AUIgz4cmej+aFdPdnZa8V9IZJ 3ZaPMTWisHpGopTmTbMo+S1njlkTCr5xgNH49IVsgbNogSlqC9NzM2Mck/UOWx/pk2J8 iFoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000469; x=1778605269; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tGeXr0CV41iPODl4UFdqapWL59RsHsKnnVLiNBEdRiI=; b=DbwhZ2rxrEDuH8WcwsB5axCWvxOzReVMBU53U0bfrgyA3YDhhjWqh4hlectUoGVHbC Sl5BJfqp1DUeoDgNyue99v6W70GAvbdB4pxxzp+yWvM85kWmqEnTNYhLFr2Oc1/WTpNL RCwtH4hTeV6W/TyJytHtwPYk4XnlgxaKZglWWm5p2RpifNC8b+8kXQNcyLvjXRTS5Rfi sJb8/p3sfJehXhE6S/JkTW/xNZMp7PFly2JvdcQ2U0KzJ/HVEbyQ4IsoMwVQE6Y2PaP3 XXyCiQWB42o0vjx7zKxLQxC5iRehYRcOR23m3VPoH/U5GQbGmoxqNCu0QAJqBUIKRMo9 Ktpw== X-Gm-Message-State: AOJu0Ywg/AU+wXub5EJ21DG05Y3RytxYa66lb7pAwV4DpJtBQ+A28EQ8 Ydm+gWT3SwC38eIs26QVgsOsPZcYSrOLV9iKRXZRTTzzePlIWMLH9Alp6qCT/FtxkpZ+dO182eY tXXztzko= X-Gm-Gg: AeBDiesFXo3CZqByFUPTgqmc4FlktUPHTZHASjCa/6HITlVx+hylRjCXZd/GNASs2nd yOSjyYXu15+xHWej5w5xfYq8KIfMPDrhNQEv6MtwUJIJScV9o1+JF0PaLEA7vFl0mab7xcoy+es /tDrrO+1x50XNcGT2yUq1rbgEEjVt2wfxjMfVUkuqbG1aD4yXRJitBlPEY6rXtXRKdtkUyKRqRj os7oWYni4xdpF9dvltXOIs9nQ+Oy0j0lVwi5xHtlozQdzjVusR9rTinWGsiJUaIXYbiNE4KpV2+ k9tKOQ4621580jZWmtZmG9wze5/0NzZSdwp6aYUNFarAmRBZCv3wNrcIdRejcci1vuZZABuNhO2 FiOIFUgtSh8G0CJEmX/y08onsI83nGUL2eFRBorumIwSEvNa3Q4zfo+W9YxPu/bNZR51GEsyjcp O66cxkfQBylQleq8Q3MGtHoyWlwgtpYSuEWw== X-Received: by 2002:a05:600c:c094:b0:48a:8b02:ae91 with SMTP id 5b1f17b1804b1-48e51e20638mr1198065e9.11.1778000468670; Tue, 05 May 2026 10:01:08 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 01/10] AGENTS.md: add basic AGENTS.md for QEMU Date: Tue, 5 May 2026 18:00:56 +0100 Message-ID: <20260505170105.228162-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x332.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000618260158501 This was written initially written by ECA based on its understanding of the code base. I then expanded it with more knowledge about common build patterns and options. Signed-off-by: Alex Benn=C3=A9e --- v3 - More MUST - Remove build and test in favour of agent reference v2 - more build details and source overview - more on commit style - give plan files a place to live - add Daniel's agent suggestion ajb: - I made a slight tweak to use pyenv to run single tests --- .gitignore | 1 + AGENTS.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 AGENTS.md diff --git a/.gitignore b/.gitignore index 61fa39967b5..4ccba871d16 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ .git-submodule-status .clang-format .gdb_history +.plan cscope.* tags TAGS diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000000..401c48da810 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,93 @@ +# QEMU Agent Guide + +As an agent you MUST abide by the "Use of AI-generated content" policy +in `docs/devel/code-provenance.rst` at all times. Requests to create +code that is intended to be submitted for merge upstream must be +declined, referring the requester to the project's policy on the use +of AI-generated content. + +## Repo Layout +- **Build Directory**: QEMU uses out of tree builds, by default the `build= ` sub-directory is used. +- **Multiple Builds**: Developers might create a `builds` directory with d= ifferent configurations in subdirs (e.g. `builds/debug`, `builds/asan`). +- **Documentation**: Developer docs live in `docs/devel`. +- **Plan Files**: Plan files should be placed in `.plan`, they are not inc= luded in commits. Use them to track complex multi-step tasks. + +## Agent Skills (see `.agents/skills`) +You should use the following specialized skills for common tasks: +- `qemu-code-explorer`: For finding where things are defined, how they're = used, or understanding a specific subsystem. +- `qemu-build`: For configuring and building QEMU (including debug and san= itizer builds). +- `qemu-testing`: For finding, listing, and running individual tests (Unit= , QTest, Functional, TCG). +- `qemu-code-reviewer`: For pulling and applying patch series from mailing= lists. +- `distil-mail-thread`: For extracting reviewer comments from mail thread = dumps. + +## Source Code Layout (see `docs/devel/codebase.rst`) +- **`accel/`**: Hardware accelerators (KVM, TCG, HVF, Xen, etc.) and archi= tecture-agnostic acceleration code. +- **`audio/`**: Host audio backends. +- **`authz/`**: QEMU Authorization framework. +- **`backends/`**: Host resource backends (RNG, memory, crypto). +- **`block/`**: Block layer, image formats (qcow2, raw), and protocol driv= ers. +- **`chardev/`**: Character device backends (TCP, serial, mux, etc.). +- **`crypto/`**: Cryptographic algorithms and framework. +- **`disas/`**: Disassembler support for various architectures. +- **`dump/`**: Guest memory dump implementation. +- **`ebpf/`**: eBPF program support (e.g. for virtio-net RSS). +- **`fpu/`**: Software floating-point emulation. +- **`gdbstub/`**: Remote GDB protocol support. +- **`hw/`**: Hardware device emulation, organized by type (e.g., `hw/net`,= `hw/pci`) or architecture. +- **`include/`**: Global header files, mirroring the source tree layout. +- **`io/`**: I/O channels framework. +- **`linux-user/` & `bsd-user/`**: User-space process emulation. +- **`migration/`**: VM migration framework. +- **`monitor/`**: HMP and QMP monitor implementations. +- **`nbd/`**: Network Block Device server and client code. +- **`net/`**: Networking stack and host backends. +- **`plugins/`**: TCG introspection plugins core. +- **`qapi/`**: QAPI schema and code generation infrastructure. +- **`qga/`**: QEMU Guest Agent. +- **`qom/`**: QEMU Object Model implementation. +- **`replay/`**: Deterministic record/replay support. +- **`rust/`**: Rust integration and Rust-based device models. +- **`scripts/`**: Build system helpers, `checkpatch.pl`, `tracetool`, etc. +- **`system/`**: Core system-level emulation logic (replaces `softmmu`). +- **`target/`**: CPU-specific emulation (ISA translation, CPU state). +- **`tcg/`**: The Tiny Code Generator (JIT) backends. +- **`tests/`**: Test suites (qtest, unit, functional, tcg). +- **`ui/`**: User interface backends (GTK, SDL, VNC, Spice). +- **`util/`**: Low-level utility functions and data structures. + +## Development Workflows + +### Tracing +- QEMU uses a tracing framework. Events are defined in `trace-events` file= s. +- To add a trace point: + 1. Define the event in the local `trace-events` file. + 2. Call the trace function in code: `trace_my_event_name(arg1, arg2);`. + 3. Ensure the file includes `"trace.h"`. + +### QOM (QEMU Object Model) +- Most devices are QOM objects. +- Key concepts: `TypeInfo`, `ClassInit`, `InstanceInit`, `InstanceFinalize= `. +- Use `OBJECT_DECLARE_SIMPLE_TYPE` or `OBJECT_DECLARE_TYPE` for boilerplat= e. +- Access state using `MY_DEVICE(obj)`. + +### QAPI +- Interface definitions live in `qapi/*.json`. +- After modifying a schema, run the build to regenerate headers. +- Generated code lives in `build/qapi/`. + +## Code Style (see `docs/devel/style.rst`) +- **Formatting**: 4-space indents, NO tabs, 80-char line limit (max 100). +- **C Braces**: Mandatory for all blocks (if/while/for). Open brace on sam= e line (except functions). +- **C Includes**: `#include "qemu/osdep.h"` MUST be the first include in e= very `.c` file. +- **C Comments**: Use `/* ... */` only. No `//` comments. +- **Naming**: `snake_case` for variables/functions; `CamelCase` for types/= enums. +- **Memory**: Use GLib (`g_malloc`, `g_free`, `g_autofree`) or QEMU (`qemu= _memalign`). No `malloc`. +- **Errors**: Use `error_report()` or `error_setg()`. Avoid `printf` for e= rrors. +- **Lints**: Run `./scripts/checkpatch.pl` on C patches. Use `make clippy`= for Rust. + +## Commit Style +- **Small Commits**: Favour small discreet commits changing one thing. +- **Maintain Bisectability**: Each commit must compile and pass basic test= s. +- **Separate Refactoring**: Split code movement or style fixes from functi= onal changes. +- **Commit Messages**: Use a concise subject line, followed by a body expl= aining "why" (not just "what"). +- **Signed-off-by**: Every commit must have a `Signed-off-by` line. --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778002158; cv=none; d=zohomail.com; s=zohoarc; b=LumbX8t1+DIevtNVevmvJz5hgwQzJpzNDyLU/KMcXxPYqDPIWCWdfzi1p63Gg9gkH/V+wb4qkFWSs8HmooTh1sMp0gGyl7NNEPixvAIFxG1udM/xkEb7kqCGX0Ay3rTytn8468AZYJ0ouxa8TmD1+1CNkSuH2gG9Lm49WXHY+pw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778002158; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2qLWLCHwx9ItOitd3ZI8FQhHr7e9U0+nImoOwCxcB9Y=; b=lZJcTKqzMsMKkPUGAqif7JSDWSQEFdXDuiivaUcM7zg1S/PQEPPyw/hKkh+wW2FU+iWMFJSv3lb2PshDzxNvs2vssAQ9LcsLhGQGFk1b62WTNK9IChxhA271+YMNW7MAD+uXJfBn15VBsr2VR82jGQhBavXgYqNZ8d0t3+rFRBE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778002158304701.6185184297323; Tue, 5 May 2026 10:29:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9A-0007xm-Vs; Tue, 05 May 2026 13:01:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0007wL-MU for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:18 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ8w-0003SR-LG for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:15 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-44a044cb827so3897697f8f.0 for ; Tue, 05 May 2026 10:01:09 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45055960fd6sm6287780f8f.31.2026.05.05.10.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:07 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 31DFC5FC70; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000468; x=1778605268; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2qLWLCHwx9ItOitd3ZI8FQhHr7e9U0+nImoOwCxcB9Y=; b=D854VgzrdTcNdFjRPjtBFPewYGHeZI/wVcK1s94bl0PqQr10nXsYjm3L2g1UYdFu3p oCLtkrldtELrwXBLOD11osQMasqac481QUgZTFknZERSryIcOm5LT2nncmwz+nrpqYxU y/0WcEI975EKcj/0uNiAk7FC+gAYEo/x0CsYdAt6BGlu9LFi9g0IQcNnc1pzjJAHKmJB HGtDI0ehBsDH6jPRVlcgXriU9yK6I5PIr9CtlM3YcdTVMFoUPNKbXQQOMD8OsDpYPK+h oztBcdw5Y+MyD4wDs5nfQOzChPaKcGBKqM5JWUtwzqWT054415ezEBVWpv73hjGKkg8k xNGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000468; x=1778605268; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2qLWLCHwx9ItOitd3ZI8FQhHr7e9U0+nImoOwCxcB9Y=; b=oB2zZC6PBJss+sUdMufGn9PP8nSOXURBD8jacTUBcaSAsa7UDGON8kPszeu/1zR74z cg6UDR9aH4gnRGd1ODXe2u6YT3rS5r2R2KTpT62M2i/VFks5YUYsAyPjHy/0ElLH45wD 3/8ctDpuE+YBt8xtAPGHcglc1lCDVR6PhKBvLP248h88umYpoxySju1ZozroIfNNEPFQ 2ATISnR61/TOi2zVGlzJDnp1B2fnY1WubEMOn7k9iOxg8L3Plp+jjlQvWSGs5ARvLYL2 6W0jhr/an+zqyDwQQjmaOzgLdoBh3oyLNwYgCQpttHKqRZFCS/z7RIcvmq9a7P2aP05A b49w== X-Gm-Message-State: AOJu0YzOv0ehw5UO/OPoPoSjSG3RBS78SF0GZ6x7IkM7MoMJ1EB9Xigt UqsUSp1f9vQqH8PeW3j8I3JdZyt7LEgc6JiEzwszTTOC5ggfmyW0RHu4cXegmQhEm0bYwD2jDgs zeqmiMa4= X-Gm-Gg: AeBDietxnLF2BQOdH3457YfrB+FWdKETeYUhqVFNu8KF7IEhpnK/EdTaoRnV7qT+1pU RtCd1a3DvG44cHJnKKdKRrgjyfX7oaIe8TpCpesfQ1jRgVeot/iuj0srq+qEjjCPXcMok277MGI c5QNrTXgZh9foKWAYq5NVyU86C0RgG8JvRJ5T1VDRjs56GtvyTLxNdf0JogLNgFdQXCOmKs/V3s 2WRDZEzkjOE5pEmXyIzVUCt7rZQv8Vyut6icZNHzR6cVHz15wVeHGN7brr66iZm+O/Obo5VUX9J bX3Nm0zEVzj33gNQXMeSWzjQM85g2qGw3qJoemV7/RK9acAE52dvaxkjcD1oMeq9enbcX4GqMYr EyUIH0RYt6Cs408T5XGRbyUuTfLGz9a5xXsbva19UeTEaHjxpK4yVenzYi0JxO0R8FGnJD0W7Uj j9XDylz/nD2WPT+RfyDDhx89a0Tnqa5jHVCA== X-Received: by 2002:a05:6000:2f83:b0:43b:8f4e:27f8 with SMTP id ffacd0b85a97d-44bb4817dc1mr25010341f8f.12.1778000468032; Tue, 05 May 2026 10:01:08 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 02/10] .agents/skills: add qemu-code-explorer skill Date: Tue, 5 May 2026 18:00:57 +0100 Message-ID: <20260505170105.228162-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778002159610154100 This provides a skill detailing how to explore the QEMU code base. It guides the agents to use the tags and git-grep by default and outlines some of the confusions that can occur with multiple build directories. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/qemu-code-explorer/SKILL.md | 66 +++++++++++++++++++ .../qemu-code-explorer/evals/evals.json | 25 +++++++ AGENTS.md | 1 + 3 files changed, 92 insertions(+) create mode 100644 .agents/skills/qemu-code-explorer/SKILL.md create mode 100644 .agents/skills/qemu-code-explorer/evals/evals.json diff --git a/.agents/skills/qemu-code-explorer/SKILL.md b/.agents/skills/qe= mu-code-explorer/SKILL.md new file mode 100644 index 00000000000..d41b21179c1 --- /dev/null +++ b/.agents/skills/qemu-code-explorer/SKILL.md @@ -0,0 +1,66 @@ +--- +name: qemu-code-explorer +description: Comprehensive guide for exploring the QEMU codebase using tag= ging systems (gtags, ctags, cscope), git grep, and build-directory grep for= generated files. Use this skill when the user asks to find where something= is defined, how it's used, or wants to understand a specific subsystem. +--- + +# QEMU Code Base Explorer + +This skill provides a systematic approach to navigating and understanding = the large and complex QEMU codebase. + +## 1. Symbol Search with Tags (Primary) + +Tagging systems are the fastest and most accurate way to find global symbo= l definitions and references. QEMU supports `gtags`, `ctags`, `cscope`, and= `TAGS` (Emacs). + +### GNU Global (gtags) - Recommended +- **Best for**: Finding where a function, struct, or global variable is de= fined or used. +- **Tools**: Use `gtag_find_symbol_definition` and `gtag_find_symbol_refer= ences`. +- **Note**: This is significantly faster and more accurate than `grep` for= symbols. It handles static variables and functions correctly. + +### Updating Tags +If you suspect the tags are out of date: +```bash +make gtags # or make ctags, make cscope, make TAGS +``` + +## 2. Text Search with `git grep` (Secondary) + +`git grep` is the preferred tool for general text searches within the sour= ce tree. + +- **Best for**:=20 + - Searching for local variables within a function. + - Searching for string literals or comments. + - Finding occurrences of symbols defined in system headers (e.g., `optar= g`). + - Complex regex patterns that `gtags` doesn't support. +- **Why**: It is fast, respects `.gitignore`, and avoids searching through= build artifacts or other non-source files. +- **Usage**: `git grep "pattern"` or use a grep-like tool with the `path` = set to the repository root. + +## 3. Searching Generated Code + +Generated source files (e.g., from QAPI or trace-events) do not reside in = the source tree but in the build directory. + +- **Best for**: + - Finding definitions of functions generated by QAPI (e.g., `qmp_marshal= _...`). + - Finding trace points and their implementations (e.g., `trace_..._heade= r`). + - Checking configuration fragments (`config-*.h`). +- **Tools**: Use a normal `grep` (or similar search tool) limited to the b= uild directory. +- **Crucial Note**: QEMU developers often have multiple build directories = (e.g., `build/`, `builds/debug/`, `builds/asan/`). Always verify which buil= d directory is active or intended. +- **Common Paths**: + - `build/qapi/`: Generated QAPI headers and C files. + - `build/trace/`: Generated trace points. + - `build/config-host.h`: Host-specific configuration. + +## Decision Matrix: Which tool to use? + +| Goal | Tool | Reason | +|------|------|--------| +| Find a function definition | `gtags` | Precise and fast. | +| Find all call sites of a function | `gtags` | Comprehensive. | +| Find a local variable usage | `git grep` | `gtags` only tracks globals. | +| Search for a string literal | `git grep` | `gtags` doesn't index literal= s. | +| Find QAPI-generated code | `grep` in `build/` | Not in source tree. | +| Search in a specific subsystem | `git grep ` | Efficiently scoped.= | + +## Workflow Tips +1. **Scope your search**: If you know you are looking for a networking iss= ue, search `hw/net/` or `net/` first. +2. **Beware of Macros**: QEMU uses many macros (especially in QOM). If `gt= ags` fails, `git grep` might find where the macro is used to define the sym= bol. +3. **Verify the Build**: Before searching generated code, ensure a build h= as been performed in the target directory. diff --git a/.agents/skills/qemu-code-explorer/evals/evals.json b/.agents/s= kills/qemu-code-explorer/evals/evals.json new file mode 100644 index 00000000000..dff7afa52fa --- /dev/null +++ b/.agents/skills/qemu-code-explorer/evals/evals.json @@ -0,0 +1,25 @@ +{ + "skill_name": "qemu-code-explorer", + "evals": [ + { + "id": 0, + "prompt": "Where is the function 'qemu_mutex_lock' defined and where= is it used in the block layer (block/)?", + "expected_output": "The definition should be found (likely in util/q= emu-thread-posix.c or similar) and usages in block/ should be listed using = gtags." + }, + { + "id": 1, + "prompt": "I'm seeing a reference to 'qmp_marshal_query_status' in s= ome docs but I can't find it in the source tree. Can you find where it is d= efined?", + "expected_output": "The agent should identify this as QAPI generated= code and look in the build directory (e.g., build/qapi/qapi-commands-contr= ol.c)." + }, + { + "id": 2, + "prompt": "Find all implementations of trace points for 'virtio_net'= in the generated code.", + "expected_output": "The agent should search for 'trace_virtio_net_*'= in the build directory, specifically in generated trace headers/sources." + }, + { + "id": 3, + "prompt": "Find all occurrences of the string 'Could not open' in th= e 'hw/' directory.", + "expected_output": "The agent should use git grep or eca__grep scope= d to hw/ to find the string literals." + } + ] +} diff --git a/AGENTS.md b/AGENTS.md index 401c48da810..e4b65b06067 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,6 +11,7 @@ of AI-generated content. - **Multiple Builds**: Developers might create a `builds` directory with d= ifferent configurations in subdirs (e.g. `builds/debug`, `builds/asan`). - **Documentation**: Developer docs live in `docs/devel`. - **Plan Files**: Plan files should be placed in `.plan`, they are not inc= luded in commits. Use them to track complex multi-step tasks. +- **Agent Skills**: These can be found in `.agents/skills` =20 ## Agent Skills (see `.agents/skills`) You should use the following specialized skills for common tasks: --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778001957; cv=none; d=zohomail.com; s=zohoarc; b=n83uRbk7SZnxJeADMNE1vEhdhA9TW7ppNN+8FqUahh6u9tem0TMTxGjge2QxbZ3N7Hu3jTjZDtJi5GQ3c+kgPRCc698BTNVg2TtDBeRmcxmKiqZKHRy3eKBM0AlVBkBqXlZgCheG6iK3rKQ+SIRf0r/QDerJO+97pPx/agDABDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778001957; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Jvc2PGTEz9rVEoAiSxMM6GT3z58PvEK27HCUa8g8+jE=; b=mushhFrq5KVkOuWX21YLQikKq75Iu2GpYnEyNUx9yG+9i6sf8Q4IuVUDw6Et2OvjFnAKgy8EPA/SOC0Dq1IyrGJp/qY66RCzwHuwFlLGPTFkUe2Jv/OIlWs1lvDPTXAMM/v5BQLfpYFM9msZ2vqPgtES0/E6ERXYB5Z9BHW4kmE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778001957032182.46743061961695; Tue, 5 May 2026 10:25:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9B-0007xn-2u; Tue, 05 May 2026 13:01:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ94-0007ws-KY for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:20 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ8z-0003TC-NL for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:18 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-44c4cc7c1cfso2372349f8f.0 for ; Tue, 05 May 2026 10:01:11 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45055e2d3d0sm5676376f8f.34.2026.05.05.10.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:07 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 48B285FC94; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000470; x=1778605270; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Jvc2PGTEz9rVEoAiSxMM6GT3z58PvEK27HCUa8g8+jE=; b=s76VmUb211UfhLOekv5Rw7E3x1g+H1uIt226NnyGJcdZKj8R48b/4+4DoMrLSA0jv6 SgY59AIpMfLsUe/lqVMpQBhm/lnXKuSIcN1Iin/heHghgB9prW9RJh8UllUnjDSqVfiT rG9caimIoyaH8E8vPU+umLLQBX7zfEcyfExqu90FFiiqrfLlgCl7VLPuR4ofR7lt3BiT 6yfosWJatLhhhgWzauPoKGI7H6OdZMuRzfB1QJxHLkRxlhEncP2O7/DgRlyMYQpYzOgn knMH5VlMtA+hmNOOdx+6u7pYdQ20xLDJJ9d6plAVgXe1dhhw7bs5nAwH9aSmlIugvsxz ADRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000470; x=1778605270; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Jvc2PGTEz9rVEoAiSxMM6GT3z58PvEK27HCUa8g8+jE=; b=rQvkvZkjks846BwKpO5i5ZUBGLsmHmWQZLfv20bmMdRJdOdlQyQ7QW1go8vgK/I1+A n2vLQemleVCxQVOJJOu9nDONKNBmhkLeyzvE22ew5XP4pYIM4I5cAj3RVwfEdu7uxDib 0ajzgf2HDzmHZwdllTldfWofi19WEwAKEw7opVbV/VWJ7hnpC04bdxDwKf2XozXckW82 1ziioKkEzCKLhnaU9lZ3a3TyNAWWLT//izB5kmvOu75WNWeE+ADHTMlS68DYCpbmHSAX 5/ARw8NPUrK9caYTK53Pf5xtMuSBy7dWZEcYOUAI40ssenXGSvnNAX4cLx+Af3Hm+kYy p+SA== X-Gm-Message-State: AOJu0Yz48IImT0Org8aiiXi/oTOhj77KZ4zc3RfQSx1YEmXulgpMdrXE vCE5rUQ8OEC4d+efWukXv9kYBVDgH2pM4kesyCX3mZeCfh+YxRYnfHs5lSdee/OD0QPnwqWvhSf OHeSE0+Y= X-Gm-Gg: AeBDies5kEsKyOXu8LuSrOd7Iq0ArDj/CksFygy0K7tt/ZZhr/FEFZlrPlftq2kUbi6 Ac1ToGD2yiEBNlDhafHnbjx4lesX3DUS9+nuK29f0U76gqWZG2WA4X+zXzH8NP+SbmCfqqlIJ5H Rir/mg+Uk9dI+lOxs54Q04dC+GUe0yNMaHt7fKuPjQNTlw6civnKuXI2WknAPe/44Y/LBFtQi9d YpYt+8yDJYYljLB/PiZXnoIXGwlxZMPtD1pP0Y4qnhA4R/KVIriDNGvl7Dp1I4eBekCa0b9/nLe sD2mI1MDbUHgNEdaYZZLd6TMqOYIvd/tQpm+oxWKDdwQ8yMsBOodkH+/jm6AIx6CWBwl+mAT1/7 xVTmN6j/qHwU73rjvCRZLY5eADkrr2CN8KDactq1IaDmIaGHmZVQqEPCdYZzXssx6ih5N1+rzmm tV83T//LNaEK7zm1vEObzV6I/kaXDzZ0C1EA== X-Received: by 2002:a05:6000:2088:b0:441:239e:2bb8 with SMTP id ffacd0b85a97d-44bb2f282d3mr25321673f8f.7.1778000469980; Tue, 05 May 2026 10:01:09 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 03/10] .agents/skills: add qemu-code-reviewer skill Date: Tue, 5 May 2026 18:00:58 +0100 Message-ID: <20260505170105.228162-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778001958980158500 This provides basic instructions for how to download and apply a patch series from the mailing list. It currently doesn't outline any details about how to do the review. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/qemu-code-explorer/SKILL.md | 3 +- .../qemu-code-explorer/evals/evals.json | 1 + .agents/skills/qemu-code-reviewer/SKILL.md | 74 +++++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .agents/skills/qemu-code-reviewer/SKILL.md diff --git a/.agents/skills/qemu-code-explorer/SKILL.md b/.agents/skills/qe= mu-code-explorer/SKILL.md index d41b21179c1..13cb71dd55c 100644 --- a/.agents/skills/qemu-code-explorer/SKILL.md +++ b/.agents/skills/qemu-code-explorer/SKILL.md @@ -1,6 +1,7 @@ --- name: qemu-code-explorer description: Comprehensive guide for exploring the QEMU codebase using tag= ging systems (gtags, ctags, cscope), git grep, and build-directory grep for= generated files. Use this skill when the user asks to find where something= is defined, how it's used, or wants to understand a specific subsystem. +license: GPL-2.0-or-later --- =20 # QEMU Code Base Explorer @@ -26,7 +27,7 @@ make gtags # or make ctags, make cscope, make TAGS =20 `git grep` is the preferred tool for general text searches within the sour= ce tree. =20 -- **Best for**:=20 +- **Best for**: - Searching for local variables within a function. - Searching for string literals or comments. - Finding occurrences of symbols defined in system headers (e.g., `optar= g`). diff --git a/.agents/skills/qemu-code-explorer/evals/evals.json b/.agents/s= kills/qemu-code-explorer/evals/evals.json index dff7afa52fa..131cf46e1cc 100644 --- a/.agents/skills/qemu-code-explorer/evals/evals.json +++ b/.agents/skills/qemu-code-explorer/evals/evals.json @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0-or-later { "skill_name": "qemu-code-explorer", "evals": [ diff --git a/.agents/skills/qemu-code-reviewer/SKILL.md b/.agents/skills/qe= mu-code-reviewer/SKILL.md new file mode 100644 index 00000000000..0c088fdda04 --- /dev/null +++ b/.agents/skills/qemu-code-reviewer/SKILL.md @@ -0,0 +1,74 @@ +--- +name: qemu-code-reviewer +description: Pull and apply patch series from mailing lists for review and= testing in QEMU. +license: GPL-2.0-or-later +--- + +# QEMU Code Reviewer Skill + +This skill provides instructions on how to retrieve patch series submitted= to the QEMU mailing list (`qemu-devel@nongnu.org`) using `b4` or manual me= thods. + +## Using b4 (Recommended) + +`b4` is the preferred tool for working with patch series from public-inbox= instances like `lore.kernel.org`. + +### 1. Fetching a series +To download a series and prepare it for `git am`: +```bash +b4 am +``` +This creates a `.mbx` file containing the entire series, properly ordered. + +### 2. Applying a series directly +To apply a series directly to your current branch: +```bash +b4 shazam +``` +This is often the fastest way to get a series ready for testing. + +### 3. Creating a local branch for the series +```bash +b4 am -t +git am ./*.mbx +``` +The `-t` flag (or `--trust-all`) can be useful if you know the source. + +## Manual mbox Retrieval (Alternative) + +If `b4` is unavailable, you can fetch the mbox manually from `lore.kernel.= org`. + +### 1. Locate the thread +Find the patch series on [lore.kernel.org/qemu-devel/](https://lore.kernel= .org/qemu-devel/). + +### 2. Download the mbox +Every thread on lore has an `mbox.gz` link. You can use `curl` or `wget`: +```bash +curl -L "https://lore.kernel.org/qemu-devel//raw" -o series.mb= ox +``` +*Note: Appending `/raw` to the message URL usually provides the mbox forma= t.* + +### 3. Apply with git am +```bash +git am series.mbox +``` + +## Post-Application Steps + +Once the patches are applied, you should perform initial validation: + +### 1. Style Check +Run the QEMU checkpatch script: +```bash +./scripts/checkpatch.pl master..HEAD +``` + +### 2. Build and Test +Refer to the `AGENTS.md` or the `qemu-code-explorer` skill for build and t= est instructions. +- Ensure you are in a clean build directory. +- Run `ninja` or `make`. +- Run relevant tests (e.g., `make check-qtest`). + +## Common Troubleshooting + +- **Applying fails**: If `git am` fails due to conflicts, you may need to = use `git am --3way` or manually resolve conflicts. +- **Missing dependencies**: Ensure your tree is up to date with the base b= ranch the patches were intended for (usually `master`). --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000564; cv=none; d=zohomail.com; s=zohoarc; b=ChpewGvT8Jxkd/MxJiV8Rq7zLS0QzoFDuxnGNIJoonMG+MSnTGKeeo1eCBGTok6qJmadaIKEUafhozXFSfRYJb/vIjNGyYaWvFH5owy0yL8Yr/1aWcAIop1k7XsToUzWUd/LktPALeeDNhB8ZDOMrhg0Ma8uKkX4iCNSGZYX43Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000564; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+Isl8JoOFL9hjxCtszajUoeGsLUfaDIk2xEQacXFMD8=; b=QELJl8TBVjOtqaMYQABHNmEg0Q4f+El/PACeIH1I+HbdQxx4nUN/fmAqhiVfayBzl0tQaDbv/SItTxcqhBS559QGqD3ma8kznRXW7+Lj32dxKOQR81HvwD7res7tr7Oha3sVTKTUvslHrQiZgMcEOHp47UeHdCGcO0KQiXpkwEw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000564754960.9295190442351; Tue, 5 May 2026 10:02:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9G-00080F-Ro; Tue, 05 May 2026 13:01:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ94-0007ww-Ks for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:20 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ90-0003TF-UB for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:17 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-44e5624c053so1416726f8f.2 for ; Tue, 05 May 2026 10:01:11 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45054b03d4csm6270484f8f.22.2026.05.05.10.01.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:07 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 5E90A6016A; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000471; x=1778605271; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+Isl8JoOFL9hjxCtszajUoeGsLUfaDIk2xEQacXFMD8=; b=zHtLSw212pyv2lbhwbvXO1nhixSU+md07Box/MwilF7TqPadXoidiQDmnTFc5b6DmY ImV5Z5tuWG+JtTiD5Gloaszb7br6c22oA9HL2Q1j8P4c5rKvBAV2nijSA5P5rZVRM5IP iSgqBb9Ze4QYacz41sA3asGmnilu5b4k99Q9PEk4XEoL3SswMgRgGYjIQUTp9srxZhWt kReiThaVVyInLcmp7PDGv1zo3kNR9DG6yKATWrTM1vRS9RJjil+POVViXPrV41gqNvtm LQut7rB9Vm976WWUJvpMTshloaql7CANoKFxnfPR8qcVu21Rm7o9SpHx7LLF73XzxF22 HY+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000471; x=1778605271; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=+Isl8JoOFL9hjxCtszajUoeGsLUfaDIk2xEQacXFMD8=; b=bCo1azGWk43GXFmMHZAI6zGLnDuwRnvDi9VMGHsKPjb2KQC7Y2B0gpcuAYD6PzMxsx ojZQ9x33BhP/pvCGZPCVb1GeaLEHvfsYOEsfIs+8n8Vz/ZvOzQjkoSnRGHhdSpLjU+rO EmAqRQ5hnIxrGSFAdRPNICJVwLGJ6RBMRrpkM+kmFRdloZqliZyigEPzMiBCemM+0zoT qMC/1qylaPT1Oq/lur5A3lIGB8qoj3GoPqYlGjwoUXsLDtuMjN+hxr0FyCsJ5Hv3NBHV 2vDiHBs9rlRr5dKCsT/IcDIOMQXof19wEZqSOz+KWb/yWIusU3JUBENOAra8c/j4RoLh QkOw== X-Gm-Message-State: AOJu0YyG1n/kPRFXBCpZIHE4dyQ0Yxj7upylikCkegEasvzLju6ZMwkD ZpXgdsZtigdookRVfiSYM3lzBF8A63rE0gx2U0hDv6VW4y3n2ALeIVabfJj1fWdOUTuZ5iuVKbh VbYIi0XU= X-Gm-Gg: AeBDievnh98HVqOlj1H0XKWaHJ53LZE9bZWG9LqCex2JpDxTWxbFRuXumbF63d99aUN g/YZa+A1hsoquvBeo+QOLCuRZM+MTczIlunlhp1FDtudtqah79tyPvgQ2CRPgnWYtOe+GIYmffD e3yOwuEGPBVl14wo9czG2rEmz7rUDUGLSoXomWwsg9B/4rM3yPWcTzSMwLY3SXvQ0CQmzTd2/4P TwAdxfvINe/fX0rqife/GmpV7ASu1+QIXZRDdE/PoQXfXlCBJEbPEHr6ZrmWgUgM0Hd7Pcp/O6I mTfuGpLPmlo90vzKnnAxFMOIMpHmqhjQ7YlZzOX8gh8bQRCmN2PM+npSuCGlsy8OXi/bwa1ZM7z jO+GKONXkEj9xLZsp17VLkVyMz9iDOWiB04M60Iou8j0O3RPM4ITcCgFwYgt+n0xwiRta28IYuI mz4Q3or5t7VVfQMF/rCbNHEbkm+Vdc9OOdEg== X-Received: by 2002:a05:6000:2dc6:b0:43e:a81d:c475 with SMTP id ffacd0b85a97d-44bb2f28211mr25741916f8f.6.1778000470544; Tue, 05 May 2026 10:01:10 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 04/10] .agents/skills: add qemu-issue-helper skill Date: Tue, 5 May 2026 18:00:59 +0100 Message-ID: <20260505170105.228162-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000565853158500 This provides basic instructions for fetching issue details and summarising details about the issue for other agents. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/qemu-issue-helper/SKILL.md | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .agents/skills/qemu-issue-helper/SKILL.md diff --git a/.agents/skills/qemu-issue-helper/SKILL.md b/.agents/skills/qem= u-issue-helper/SKILL.md new file mode 100644 index 00000000000..725097bac36 --- /dev/null +++ b/.agents/skills/qemu-issue-helper/SKILL.md @@ -0,0 +1,47 @@ +--- +name: qemu-issue-helper +description: Summarize QEMU issue analysis for main agent. Helps sub-agent= s report findings including build config, CLI, tests, and GitLab issue data= . Trigger when analyzing QEMU bugs or issues reported on GitLab. +license: GPL-2.0-or-later +--- + +# QEMU Issue Helper + +Assist sub-agent in summarizing issue analysis for main agent. + +## Fetching Issue Data + +Use `glab` to retrieve issue details from GitLab. QEMU primary repo: `qemu= -project/qemu`. + +### Commands +- **View issue**: `glab issue view -R qemu-project/qemu` +- **View comments**: `glab issue view -R qemu-project/qemu --c= omments` +- **Search issues**: `glab issue list -R qemu-project/qemu --search ""` + +## Report Format + +Sub-agent MUST provide a summary of the GitLab issue discussion and findin= gs in this format: + +### 1. Issue Context +- **Source**: GitLab URL/ID. +- **Title**: Short issue description. +- **Reporter**: User who found it. +- **Relevant Commits**: List any commits mentioned in the issue that are r= elated to the bug or previous attempts to fix it. + +### 2. Build & Reproduction (from issue) +- **Reported Environment**: Host OS, CPU, QEMU version. +- **Build Configuration**: Required `configure` flags mentioned in the iss= ue. +- **Reproduction CLI**: Exact QEMU command used to reproduce. + +### 3. Proposed Fixes & Series +- **Proposed Fixes**: Flag any specific code snippets or logic fixes sugge= sted in the comments. +- **Patch Series**: Note if any patch series or Merge Requests have been l= inked. + +### 4. Discussion Summary +- **Current Consensus**: What is the community's current understanding of = the bug? +- **Key Constraints**: Note any blockers, requirements, or specific feedba= ck from maintainers. +- **Next Steps**: What is needed to move the issue forward? + +## Rules +- **No Independent Analysis**: Do not perform your own root cause analysis= . Summarize ONLY what is present in the issue tracker. +- **Terse**: Use brief technical English. +- **Links**: Provide direct links to relevant comments or patches if avail= able. --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000533; cv=none; d=zohomail.com; s=zohoarc; b=BFUQTWvpfertPB90AzBS5zJLPDlPyEyJk4uhoknY4SPMcW2pmJ2k5m8dlsJUTZszI+a44JvU3dqISDMZlpzC1A5BOhrjAg95TWUJWb/Ax2sK/RprVlQFuYiLPAWASx9UPRY0I4FFzLZyZSIwNrXqifgVxXsXxmXiQO2L4PduD/Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JD3YO6kL2cJ5U6rd4ov7BMMOq4YRoEaGP/uPsPkdEWA=; b=bOYkktwp4WyAjCXk4U4BpfctW/gYNZRQuA+YaJoEia6tR4ibntQzrcmsWgDAJ7KGwxp0KC2y0xY3znh6ShqFD4/8vRr3FAsyIO5nRdsHISfi5Yyp960t+wazDhdg3ZPNCRTSVSX0Yj9Pu9s0kln0lO5KZFxfmDRytNQMJCh+itY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000533275895.073996661539; Tue, 5 May 2026 10:02:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9C-0007yk-9R; Tue, 05 May 2026 13:01:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ96-0007xB-Fv for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:21 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0003TL-DX for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:19 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so53515125e9.2 for ; Tue, 05 May 2026 10:01:12 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a82301ad1sm651690355e9.9.2026.05.05.10.01.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 72ABA60223; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000471; x=1778605271; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JD3YO6kL2cJ5U6rd4ov7BMMOq4YRoEaGP/uPsPkdEWA=; b=wpZIysz1Ig2sTeZpkksPGvSNjHTEcw3nbeaGybGBXe9OB9nM8CXJoLLcK0/qfOmwyZ Ds91SUWW7cHp/ya5hg/jbWBNyYOz8atF38Wcs/ZoOqjs/3orEaVbnE37GX1LAWU7YlSl DiM+TM8v/XUQfDIw1DS9/sNnk7p0LdgVic3XPOD8Dl756xK20mtxOcHeTfIGev57wqMk zxSavASZXgaJ1LbgtJoIetyl6m7io5eZdtndA3FpNWR9taNgvjSyaLnfaSI+Mt1YR2Av plp6uxSMoU3tUwBbiJpsWE/nJGVmake3u5tYB9wmxlFf1aPLX4OzUSdgIZ9IxtxZ5FWd pblA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000471; x=1778605271; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JD3YO6kL2cJ5U6rd4ov7BMMOq4YRoEaGP/uPsPkdEWA=; b=RwD/4AbM0TXxS2tU0ZZEpBqrBGUZ1IpLzA7jMjzEhnm/hxf5D6Ii0k/4sqj/zSXk/T rayRTEZ0P/IXzH5h8DgHV9j5mreWjtKSU+K6aqFEzFWYXrgI+h4DaJGBSPZ3G1eNXEhD 5wPu1MkvvPOVuJrZAF0SkEHB3qK+7vAi5rmSGaUghbhLAQNM9bU1RigL58ONQw/U55Eb 45mY4vRNpnjCOi7dFUzCvHssN7eufVjtq7tyhPF5eVilTzOZKP7HU8xwBkYmM7pkl3rw xOBkPp3GSkXsEpEa5pVJL6Zhhgb0YlNuS6Ka/87WGhYXb9WoQFhMyqzUVz2rq3NvuReb pPyA== X-Gm-Message-State: AOJu0YygNh/rZXP+AKfaIycECehKPDc0GAe7H+c4GBcH9g+BwhYLmiA2 MoKKYtvGVbmgJAC5O0ExfMYNCm6+GpsbWxhQpX3gsX0tFigR/LUfKMTnHexdOnUPVisB2RLBkSY DV389YdQ= X-Gm-Gg: AeBDievYAa/cmFneDF347r9zka7chg3/n0URjAXyiG1li+mYkfPW5gQa62/L4oCxY8g 8g1SW+T/QolaVCBnRJPMRw6JNlTKg+dsY8HtSUcVnncJcAaHFv4+ZCIsMGKMykIjjSiczT1l3h/ wbLnBH3PrftmeqnHq7Ef9x8zpVZKLCQzbrgXnBo8Ltfg/rm38QXoDaTEZzmzFhlA8GxGmiZXKO6 ObOg3ZuhMw+lm5+7kBu1NFe28zwKpj85WUYkBwWu+AE7lrxUo2ZkGNAIrRHzJgn0rsq8yjpOjBj ML3/XGZKHBmICYy1kMT22l5FeinN5Nde9kcgrzERAP6wDJjVy3/uYWNMtj5L99KqSqLI8tqKG8h DuTZAJbC70WUACTDjvW7Q2Hk9ijdLtVWHbtgrCrLgJb95oNU5SONnAHdKbDPk24DduWN8HysMdi 5qyvW9ffXzXNczrnwjcTu99iPAzbLuaXGXDg== X-Received: by 2002:a05:600c:4449:b0:48a:89d9:a419 with SMTP id 5b1f17b1804b1-48e51f2e67fmr1143785e9.11.1778000471044; Tue, 05 May 2026 10:01:11 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 05/10] .agents/skills: add qemu-build skill Date: Tue, 5 May 2026 18:01:00 +0100 Message-ID: <20260505170105.228162-6-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x335.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000536252158500 This provides basic instructions for building QEMU. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/qemu-build/SKILL.md | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .agents/skills/qemu-build/SKILL.md diff --git a/.agents/skills/qemu-build/SKILL.md b/.agents/skills/qemu-build= /SKILL.md new file mode 100644 index 00000000000..a78678ff632 --- /dev/null +++ b/.agents/skills/qemu-build/SKILL.md @@ -0,0 +1,50 @@ +--- +name: qemu-build +description: Provides step-by-step instructions on configuring and buildin= g QEMU. You MUST trigger this skill whenever the user asks to build QEMU or= debug build failures. It includes critical details on build directory reus= e and spawning sub-agents. +license: GPL-2.0-or-later +--- + +# Instructions + +## Examining and Re-using Build Directories +Before creating a new build directory, check if an existing one can be re-= used. QEMU uses out-of-tree builds, typically in `build` or `builds/` sub-d= irectories. + +1. **Check existing configs**: You can examine how an existing build direc= tory was configured by checking its `config.log`. Run `head -n 2 builds//config.log`. The second line typically contains the full `../configure` = command line used. +2. **Re-use and Reconfigure**: You have latitude to re-use existing direct= ories when appropriate (e.g., `builds/debug` which is a general-purpose deb= ug directory for whatever is currently going on). If an existing directory = has the right flags (like debug/sanitizers) but the wrong target list, you = can reconfigure it to keep the same config but change the `--target-list`: + ```bash + cd builds/debug + # Check the old config.log, then re-run configure with the new target-l= ist + ../../configure --target-list=3D + ``` + +## Launching Builds +**Crucial**: You MUST NEVER run builds directly in the main agent context.= You MUST ALWAYS launch them by spawning a sub-agent using the `eca__spawn_= agent` tool. +Always use the `qemu-helper-agent` for these tasks. +Pass the specific build commands, along with the required working director= y, in the `task` argument. Give the subagent explicit instructions on what = to verify and what to report back to you. +For example: `task: "Navigate to builds/debug and run ninja. If it fails, = report the exact compiler errors."` + +## Configuring a New Build +If no suitable build directory exists, create a new one. + +1. **Create build directory**: `mkdir -p builds/test-target; cd builds/tes= t-target` +2. **Basic Configure**: `../../configure --target-list=3D[list of targets]` + - Common targets: `x86_64-softmmu`, `aarch64-softmmu`, `riscv64-softmmu= `, `x86_64-linux-user`. +3. **Common Options**: + - `--enable-debug-info`: Include symbols. + - `--enable-debug`: Enable assertions. +4. **Sanitizers**: + - `--enable-asan`: Address Sanitizer. + - `--enable-tsan`: Thread Sanitizer. + - `--enable-ubsan`: Undefined Behavior Sanitizer. + +## Building +**Important**: Always re-run the build after making changes to the source = code. + +## Reporting Results +**Crucial**: After completing the build task, provide a concise summary of= the results to the calling agent. +1. **Summary**: State whether the build passed or failed. +2. **Failure Excerpts**: If the build fails, include relevant excerpts fro= m the logs (e.g., compiler errors). +3. **Full Paths**: Always provide the **absolute file paths** to the full = logs for further inspection. + +## Debugging and Environment +- **Verbose**: `V=3D1` for detailed output. --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000533; cv=none; d=zohomail.com; s=zohoarc; b=jPQIH3zWUDr0f2d1/sP8+p5kK62OXpP2WVFQiGItp+X6bO7KxWwJtVe0OPeeM/3OZq0hI4C2TzxlNRGWG8ifdO3iE20TOF1quTfUyaxgDLT+uawasNDEVLILyrIBj9VdrwpYWmiqilSOSq3/EOv+TMQQf+0WTExhIAqXPE+xbYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000533; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bKklbuX1VAfH8Rd1ctg6YvjCIythWLv8NYmd4ccPk6k=; b=TCHavhw8OUUu4Hx1P1zdmvSn4qKycIEi7mE2IKJe//q+vIdXqIfMbkebbBvgDNtuhnY6q4a7MRajYFbgXk2NKB97hiaeW8xhz5qWrqQR28SW3GA8mA0iNkaCW+lbDeqWM9RALKxPHiNia8yD5PB/MDl69Jnar+T3uk4IgSa9L78= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000533028766.9005792399164; Tue, 5 May 2026 10:02:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9J-00080t-40; Tue, 05 May 2026 13:01:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ98-0007xi-G3 for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:24 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ94-0003UG-BE for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:21 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so53515885e9.2 for ; Tue, 05 May 2026 10:01:16 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a82308d77sm478692875e9.14.2026.05.05.10.01.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id 8B5C1604BD; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000475; x=1778605275; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bKklbuX1VAfH8Rd1ctg6YvjCIythWLv8NYmd4ccPk6k=; b=mzmKUIHe22IOTSZncgEb6XQhj24Awiv4MZHDtsstjL96fFiNaU7HlZN1R3/fgJZbpX OERRvG2fwX5ZCRPkoEAif7+vviKqwfKOPoFHNCbPpmEd3UsdiMGJm3qnu+xFFF3DHr3q ZxepzKlwbUr8hR1WP0e+boQ3agDcSD6YsR8233CdWXrllCaO5POUxMr6C4iFo7mv9y7e Dng+WJ0of81Gccbv+VDvZGYzp8p6s4cAiObTWmjw8nYgX4QYXD7wPM0l3fa+V/RiETj4 C2ScjZ7E+ZzqS+5eMPL3i2bxGQSF8dpuJ6mnCGlhuAqtSDmyuwhkFOG4KD6yXDESqPfg 9V8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000475; x=1778605275; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bKklbuX1VAfH8Rd1ctg6YvjCIythWLv8NYmd4ccPk6k=; b=O0PuqLsEOVZ1DF8T8eEkovnzHRB+CCfHUXP8MxoJJ4jwqE70/nwReX1J/7eTjoKAkz VyUSjMdWTcJ2oAHKipWIjBHYmuO22qthbl8A9IMIICu4bPIiAg9OcGwICWIe2tG02H6n Pt9ev7NlOzudzGGVceNznjjh3JTmwwT9idqOfqlMx0YvUq6JqsFmN6G1drKM4fNRSa7m 65YeZoDnCcWZrb9DnGXhpEPayD2PcGpUhFk6Kf63Bxa2vwbBiQMja7dGKeX8UAlHgOFv AEe7jBteCWwq7YD2kj1LhUqxqbFCcgYhpHNt4agHP/RveHIlXh7oUkzkfn4VgR1DVsbr VLoA== X-Gm-Message-State: AOJu0YwEhwJiSl5f+Xm9ba5XY6Rzua5fSpL49WIKA7pUJ9+WPp2GzHdE ZFUE4MY/ZZHuWc64DotO0HuyPyLmt5EZIomf0Fe1k/5wsulR7da2zm9cB6Vwr359hVl/KXEBuLM Grz8RlMo= X-Gm-Gg: AeBDievASC99SPldS+3xTw+tp7t94FHAYYrMh6Da1B1rCw+7Y3GT9YHBUgujTjnQbP4 1/x9Zo8ScVsmxxega+z1m7jvU1yCDpf0IC2JLcJuj9ZicGScBsQJ6k/2kidLy9YzInkJzdIGLo+ 5PBgvV7S4HAFUA5WJQvgdom5Di/7TYQgUESRUKM97iccR2RPxVO5qbvW4G1VKbaQVtsFtdt5Llb 8t6j79p92L+CCGgiIdFJnzxJh15lNO5PXjYs3VpzZcRfoRmnneTs/jLGqss84wNmVzucQY8x2qU pkvVQiodBp9Vrz+J0acQHkW3CtVZJFKV7SmtKhAmHb3uqVIcwLZeNlrJ3k3thvao3Q+oyZwQB+/ pr/fLFH8MRP5KVMVxe18x7ZHevbDQ+9Ik8vnc0wx+l3bI1MzJkChLXIwmXujIS0BcbXhk846cbW 3NoxRBegpmyWIxcTmFiXzqsy6Ak6sGMIA52w== X-Received: by 2002:a05:600c:3b96:b0:48a:66a8:9981 with SMTP id 5b1f17b1804b1-48e51f55272mr355415e9.27.1778000474983; Tue, 05 May 2026 10:01:14 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 06/10] .agents/skills: add qemu-testing skill Date: Tue, 5 May 2026 18:01:01 +0100 Message-ID: <20260505170105.228162-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x32c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000536253158500 This provides basic instructions for running tests. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/qemu-testing/SKILL.md | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .agents/skills/qemu-testing/SKILL.md diff --git a/.agents/skills/qemu-testing/SKILL.md b/.agents/skills/qemu-tes= ting/SKILL.md new file mode 100644 index 00000000000..3b7b42109e1 --- /dev/null +++ b/.agents/skills/qemu-testing/SKILL.md @@ -0,0 +1,53 @@ +--- +name: qemu-testing +description: Provides instructions on how to find, list, and run individua= l tests for QEMU (Unit, QTest, Functional, TCG). You MUST use this skill wh= enever the user asks about tests, wants to list available tests, or wants t= o run any test in a build directory, even for simple exploratory queries li= ke "what tests can I run". It includes details about spawning sub-agents. +license: GPL-2.0-or-later +--- + +# Instructions +To run QEMU tests, you can use several different suites depending on what = you are testing. **Note**: Ensure you have a recent build of QEMU before ru= nning tests. Use the `qemu-build` skill if you need to configure or run a b= uild. + +## General Test Suites +- **Unit Tests**: `make check-unit` +- **QTest (Device emulation)**: `make check-qtest` +- **Functional Tests (Python based)**: `make check-functional` +- **TCG Tests (CPU instruction tests)**: `make check-tcg` + +## Launching Tests +**Crucial**: You MUST NEVER run a test suites directly in the main agent c= ontext. You MUST ALWAYS launch them by spawning a sub-agent. Pass the speci= fic build or test commands, along with the required build directory, in the= `task` argument. Give the subagent explicit instructions on what to verify= and what to report back to you. +For example: `task: "Navigate to builds/debug and check what meson tests t= ouch replay and report back."` or `task: "Run make check-tcg in builds/arm = and summarize any failing tests."` + +### From the Build Directory +Most individual tests from within a build directory. Most (unit, qtest, bl= ock, functional) can be individually selected and run via meson. + +As QEMU often needs a newer meson than the build host you should use the b= uild `pyenv` to launch it: +- **Example**: `./pyvenv/bin/meson test --suite thorough --list` to see wh= at tests are in the thorough test suite + +## Running Individual Tests + +### Meson Test Runner (Unit, QTest, Functional, softfloat etc) +To run a single test, you can use the meson test runner from within your p= yvenv: +`./pyvenv/bin/meson test [testname]` +Example: `./pyvenv/bin/meson test qtest-x86_64/boot-serial-test` + +### TCG Tests +To run individual TCG tests for a specific architecture: +1. Navigate to the relevant build directory, e.g.: `cd tests/tcg/aarch64-s= oftmmu` +2. Run a specific test with make: `make run-[testname]` + Example: `make run-memory-sve` +3. Use `make help` within the architecture directory to see the full list = of available tests. + +### Functional Tests +Individual functional tests can be run directly using the run script altho= ugh from the source directory: +- **Example**: `./builds/all/run tests/functional/aarch64/test_virt_vbsa.p= y` + +### Environment Variables +- `V=3D1` for verbose output from tests. +- `SPEED=3Dslow` to run slower tests that are normally skipped. + +## Reporting Results +**Crucial**: After completing the build and test tasks, provide a concise = summary of the results to the calling agent. +1. **Summary**: State whether the build and tests passed or failed. +2. **Failure Excerpts**: If any task fails, include relevant excerpts from= the logs (e.g., compiler errors, test failures). +3. **Full Paths**: Always provide the **absolute file paths** to the full = logs and result sets for further inspection. + --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778001990; cv=none; d=zohomail.com; s=zohoarc; b=Vw+stbPeUVtOyEvkl9yr78UD2MW0vIoALbl3dQv3yE91QRxqOUB6bgNvmBJm1QrDTuTGEho7j+nFCCWcOp58Llz8Ceq6L5rI2LwQG+yj+PCJtgj0YZJWOhJpQO+WuAV804L5iSbxJ4lmHTG93T95CBYA4SNYc80kV/cr8czeBZs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778001990; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Yuj1wCqPfzb6QgRsDxN2Y1D9IqsqgMMhFjFqQNSMWYw=; b=NVkEuE8MsaX2IU5H4XHDQxXw5era1WWZ0zf0F3INJp48xxfTs7ngQAv+yZdKm7NnIPAxiH5kdcR2QW5mSPDJNZfRUcK5R/3ciX0XpjG3egyzshyXpHJGSZ8GGDZezOGVxoGPZTB5XfU5QZb5eQ/4lvhVJE47CkFjBMbIPvMUfCM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778001990826247.68157446833084; Tue, 5 May 2026 10:26:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9E-0007zM-P3; Tue, 05 May 2026 13:01:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ98-0007xh-FV for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:24 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0003UB-Pt for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:20 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-48d146705b4so14312685e9.3 for ; Tue, 05 May 2026 10:01:16 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48e51f34779sm421315e9.5.2026.05.05.10.01.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id A143D604F0; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000475; x=1778605275; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Yuj1wCqPfzb6QgRsDxN2Y1D9IqsqgMMhFjFqQNSMWYw=; b=NxQ7/bbxZ9G/cBApkR6GYZoy5n1Mz4VPBO1Wa/gkg/o3S0ciKO66XdRQKU6kpRNpSV 7ZQ/mWM9/rbStDRRdNaziLEeGgziplRr+NWkLMmcsDI7JeCp8TupbZvJ7OLhKd51nRpY 7gQnFbbiumEQICfXIKXBSBjQrGipSsJaKE/YWhhMy9/KJL0SXan2hQuY1ZALRc9Hp+bn JEd71Pv1iba0I1dpA5jhlPNFhm1n6AyJEzHiffYPBuGCDP158u+3GWeYFycWkCySoLjw LpCYJvsjBsuLv8Ve4Zvd6um7jWSBEv+INDHSsYgadxFkFbgqZ3xBsVChe4Bk+ixqiNpp Ht5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000475; x=1778605275; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Yuj1wCqPfzb6QgRsDxN2Y1D9IqsqgMMhFjFqQNSMWYw=; b=mr6VB4Ct5t0bGMEopEJT26eYhJ0IWg+y4YzFpyLClMJVq1JGswcCdC24f2sN5VsAKl +acFwrsNDvKWDlJrOPAiHUFWglCP0nvIFRbkE9iVqrc0flDWA43/MEDvDN3JcWISKGvU P5RF2Nqyu5jNeHLWZhFa874a6dohCuQBJhpHihYp4FujHgzeLhA5V9zMxz0wxhaOOoGj YS2aAM/bXYoFGJhYLC9waJvALS2ov2+HY63cS4o20CPFGu1QGtKHmL8HQUQs7oxqqu5N 8zcH/JXrGkcUxY/Zj8KLA1ePASldp3MP4FOSK1w21noCrxFsQiAjxJtrUVOpuA+1KCpy UcBQ== X-Gm-Message-State: AOJu0YzF7fBWwCq0Hz7lntPo/f5kDVftv9X2q7LGfPfZ7eHt6jQn52zD /vcHZ+nJ3tR4VMMRWP9zFql+MLsh1fBYVrq4guW3Jtb0wLh1wtc7Vl8+bIT6W4VCx2Hg69Q32tk bfRCGkvk= X-Gm-Gg: AeBDiescGuLQewiuGbXFrALT5RE7NicgvDjyFWkDqj2X2/RmDlHyqZXWNYHKJZ8a36T MZiGL1NH8yxsm79Ei/FViML3TyuJQZqgppmKBArcuvaQT7HGOklP7L8LGgcQ+12sIpF3dSTaTYp Aa8/8DyN4p5ipzUZopXbfnp9EH8yvwKuPWZkVxB9gPydyoADHFnlEZm9E7L3plIcVTV+bDZ+7VI YiSoL6WKkEbgZeHzatx/MGC1/2Y78aKj0xLlPrCPe8wIy7YPkStG1VlFjWr9thmQcC4ULnbJAj/ ofQ6wNorykUvYrg+/yF/DrYnG0gyFrAUPB7DoQ0gCKw9TB7rzmOERBrxSotBdzsgshY7OvH+p6e dOZ+gpXscX9EHyfyzF/3P1sJ/mHl3zamAXk5jG0KBfb1m+kTs0B6rKDErAnAfimP6218Bun6f+h 3mn5ZSdmSxc70KpxzhD9mRFCST8JPKbG/TMYK4AxLaa2YU X-Received: by 2002:a05:600c:8906:b0:488:ffad:6728 with SMTP id 5b1f17b1804b1-48e51f46d7bmr450455e9.19.1778000474701; Tue, 05 May 2026 10:01:14 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 07/10] .agents/skills: add skill to distil mail threads Date: Tue, 5 May 2026 18:01:02 +0100 Message-ID: <20260505170105.228162-8-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778001993263158500 Just YOLO'ing the entire mail thread into an LLM context is quite expensive especially if reviewing a thread against your current tree state. This skill allows the agent to extract just the comments and tags saving tokens. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/distil-mail-thread/SKILL.md | 33 ++++++++++ .../distil-mail-thread/scripts/parse_mail.py | 64 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 .agents/skills/distil-mail-thread/SKILL.md create mode 100644 .agents/skills/distil-mail-thread/scripts/parse_mail.py diff --git a/.agents/skills/distil-mail-thread/SKILL.md b/.agents/skills/di= stil-mail-thread/SKILL.md new file mode 100644 index 00000000000..3c083ec5aa1 --- /dev/null +++ b/.agents/skills/distil-mail-thread/SKILL.md @@ -0,0 +1,33 @@ +--- +name: distil-mail-thread +description: Extract and summarize reviewer comments from a QEMU or kernel= mailing list thread dump (like a b4 mbox or text export). Use this when th= e user asks to "distil", "parse", or "extract feedback" from a mail thread = file. +license: GPL-2.0-or-later +--- + +# Distil Mail Thread + +This skill helps you extract reviewer comments and feedback from a long ma= iling list thread file, filtering out quoted text, patch diffs, and headers= . It relies on a Python script included in this skill's `scripts/` director= y. + +## How to use this skill + +1. **Locate the target file**: Identify the mail thread file the user want= s to parse (e.g., `wxft-rfc-mail-thread.txt`). +2. **Execute the script**: Run the included Python script against the file= . The script is located in the `scripts/` directory of this skill. + + ```bash + python /path/to/distil-mail-thread/scripts/parse_mail.py + ``` + *(Note: Adjust the path to the script based on where this skill is inst= alled. You can use your filesystem tools to locate `distil-mail-thread/scri= pts/parse_mail.py`.)* + +3. **Read the output**: The script will generate a file named `parsed_comm= ents.txt` in the current working directory. Use your file reading tools to = examine its contents. +4. **Analyze and Summarize**: Read through the extracted comments and prov= ide a structured summary to the user, correlating feedback to specific patc= hes if necessary. + +## Expected Output +The `parsed_comments.txt` will look like this: +``` +--- REPLY FROM Reviewer Name --- +Subject: Re: [PATCH 01/10] ... +Comment text here... +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +``` + +Use this structured text to efficiently analyze the feedback. diff --git a/.agents/skills/distil-mail-thread/scripts/parse_mail.py b/.age= nts/skills/distil-mail-thread/scripts/parse_mail.py new file mode 100644 index 00000000000..2924d07dc56 --- /dev/null +++ b/.agents/skills/distil-mail-thread/scripts/parse_mail.py @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +import sys +import os + +if len(sys.argv) < 2: + print("Usage: python parse_mail.py ") + sys.exit(1) + +input_file =3D sys.argv[1] +output_file =3D "parsed_comments.txt" + +try: + with open(input_file, "r", encoding=3D"utf-8") as f: + text =3D f.read() +except FileNotFoundError: + print(f"Error: File not found - {input_file}") + sys.exit(1) + +# Split by the separator used in lore.kernel.org / b4 dumps +messages =3D text.split("----------------------------------------") + +with open(output_file, "w", encoding=3D"utf-8") as f: + for msg in messages: + if not msg.strip(): continue + + lines =3D msg.strip().split('\n') + author =3D "" + subject =3D "" + body_start =3D 0 + for i, line in enumerate(lines): + if line.startswith("From: "): author =3D line[6:] + if line.startswith("Subject: "): subject =3D line[9:] + if not line.strip() and body_start =3D=3D 0: + body_start =3D i + 1 + break + + # Filter out the original patch author (assuming they are Alex + # Benn=C3=A9e in this specific context, but for a general tool, we + # should probably just look for non-patch emails or specific + # reviewers). + # We will keep it general: exclude the main author if we can guess= it, + # or just extract everything that doesn't look like code or a patch + # description. + # Actually, let's keep all comments that are replies (indicated by= > + # quoting or Re: in subject). + + is_reply =3D "Re: " in subject or subject.startswith("Re:") + + if is_reply and author !=3D "" and not author.startswith("qemu-dev= el"): + f.write(f"--- REPLY FROM {author} ---\nSubject: {subject}\n") + + # extract comments + comments_extracted =3D False + for line in lines[body_start:]: + is_metadata =3D (line.startswith(">") or + line.startswith("---") or + line.startswith("diff ")) + if not is_metadata: + if line.strip(): + comments_extracted =3D True + f.write(line + "\n") + f.write("=3D"*60 + "\n\n") + +print(f"Done. Extracted comments saved to {output_file}") --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000706; cv=none; d=zohomail.com; s=zohoarc; b=GD+ifLfUwdLD9j8CVfqeUIeErwHrFvIe3pBz49VIacX/imXbY1Y7ADtATSaY/SwvDp2Db98B1jFZGsSYqbV4sMJSoXBVAKWkQlYdhLi26tDCiILwdReUATWpmw0FxwY/z949C2p/IfGuajo+DCweHgS/Dx0IgPjZU6VdNePSSIE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000706; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0CH1JKGQ5Z8mbO5wz9AmCBXfunNQ1rlUoRRo24uFZt8=; b=Gh4KB93Tst/Lvu6cz+F1X2PhUhciIFj4DW5TgsdNpcTyiLz1zVQL4RUtQkqvG9KJimZ2OCo8QNXO9bDBl9fHNdyL+SOEGeOxq5uuczJZmiM3wgZzyjki+q2gJaCkm3t5Ki9hyC2meSvca3/rqqQ009LV+O1wQetYSo2OiHx/gT4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000706231783.004688635345; Tue, 5 May 2026 10:05:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9I-00080l-M7; Tue, 05 May 2026 13:01:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ98-0007xk-G3 for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:24 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0003To-GY for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:22 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-43d77f60944so3582197f8f.3 for ; Tue, 05 May 2026 10:01:14 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a8eb75fe8sm372933235e9.8.2026.05.05.10.01.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id BBCE5606A1; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000473; x=1778605273; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0CH1JKGQ5Z8mbO5wz9AmCBXfunNQ1rlUoRRo24uFZt8=; b=vY0hXeej0CmJcZXVSFzIpjiDTqJ9JJhLoBztRqGu5fAeWiJG1FV4GuL2FAdDJfCgAk mVgV3QFjKaJkss//GLJ7dwoPsbqPTzoWWw8Z5hVoNiYDoiabTKRmudA3vEXs7CfTIHNy zwAcmgPak90jvyyeSAimmmNb4SSmXuhAk339NCSvCTZwAAUDqMwcjjsuzt9oITNdCDix Mb8xbDqY5razDV5mOWTMoHUY2Hlz8EgHx3D1vylZcH1HaH3yNFOGcKR1TH5EA1BC1H+9 /Mu0EOvoglVbFHx68ZJVdxG7NTRTYEwrLbjGPa3AbGvI27deByNGMiEDq5OU3mBcoCYH Pp8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000473; x=1778605273; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=0CH1JKGQ5Z8mbO5wz9AmCBXfunNQ1rlUoRRo24uFZt8=; b=A00+5unGG9SatuWoxeLiwdnXE4od5uS2unBoRY0O5ieL1m4bXPKAhJ4pLL8KsVsFws KcZDVsCD866rBVLs8PY0fENhJXIFspbHgx7BCjllXbp8hkIc6EcZMMLnva8I3+jfunfP samRZIv4/jiY60A0PPKE0pF/Y2cnuMGm1S5w1HNCgQn2vLc5d3yj+ff0UjnuXy1L5s4a aYHC1f/i7OsNWx5JxTV6nTXOrnbQweLcIvMONH8SscCuBscsjLQzs7BVNkS2qUfcL0Bn a4vUcM5cIQYPDVZchalTxnYzPHN5cwXZQEQ6N6iEGRnVRcBEN9QmazYaiVuGicoSwlWa Pasw== X-Gm-Message-State: AOJu0YwtQC0XQDbesxPlOT2hiYZKuRj/ESJIbG4BhupxmHes50Dc2jP7 rh/8WnXcu0mpRgxBYlmwP55yACyCuuSQHx0SjDhvP2gSnW8Zj3b/A2p8tKUo9cawW+E3/3ochUV n55wibyM= X-Gm-Gg: AeBDieskmkuOd5zHzn1aB2xL8OnVZGFC+MqqA2Txr6HjNjF3rMzkd7XVKLD5HYJRxCS e6q3oSiPuF+LDu/Ltk9ldF81L4YeckfmzzImzEZHyoBs5SO6h5ojbQZTDlaa9ZCgg/H7Zn7Lvl9 EFkNnzTqy2bskuSqNe0G/rwaBmZl6n7WFdQ9avoJ4kQ3stlfUS2X0/L6v8HIDzivuYNd2LM1Z17 lXkuBn2cNLWYPdMa9R+hdobOPHrbau2JNRcTKcQcTynDVJgF3dhY7i5KoSA1YGjGO1/SOb4L3z6 izGwJMPLniJvTes9KDnN9j1dN4D5y9CMISyFy+vWGvdW3tma04IgQU7PFJJ7ASuoG30PcN6ktlq cw1Sgz4d/u+k3d2awWch0gCv8bjg0/WNCKVB75al2HI8vMn0Zq2lRt3OnO9Xh3eN1SEEC3eOCYw hJyM8oRkoK7xFFU+IYtXP2i1qumRHAwyoQIA== X-Received: by 2002:a05:600c:8589:b0:485:3a03:ceca with SMTP id 5b1f17b1804b1-48e51f3b226mr889515e9.23.1778000472736; Tue, 05 May 2026 10:01:12 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 08/10] .agents/skills: add qemu-issue-triage agent skill Date: Tue, 5 May 2026 18:01:03 +0100 Message-ID: <20260505170105.228162-9-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::432; envelope-from=alex.bennee@linaro.org; helo=mail-wr1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000709632154100 While triaging the issue tracker I wondered if this would be a suitable job for an AI agent. Unfortunately the OSS program doesn't give any credits to run agents in gitlab. However I do have access to models from my editor and ECA so I built one and tested it on a few issues. Obviously this can't apply as is because it probably encodes too much of my local setup (using pass for API keys) and uses the ECA as my preferred coding agent. I assume at some point there will be agreement between all the agents where skill live. Signed-off-by: Alex Benn=C3=A9e --- v4 - fix a bunch of typos in SKILL - update evals - remove mentions of ECA v3 - more imperative phrasing v2 - prefer sub-agent - mention parameters - don't be over eager to tag host or target for generic bugs - signoff comments as an agent on behalf of the user - detect patch available and apply appropriate tags --- .agents/skills/qemu-issue-triage/SKILL.md | 91 ++++++++++++ .../qemu-issue-triage/assets/labels.txt | 133 ++++++++++++++++++ .../skills/qemu-issue-triage/evals/evals.json | 18 +++ .../scripts/update_labels.sh | 16 +++ 4 files changed, 258 insertions(+) create mode 100644 .agents/skills/qemu-issue-triage/SKILL.md create mode 100644 .agents/skills/qemu-issue-triage/assets/labels.txt create mode 100644 .agents/skills/qemu-issue-triage/evals/evals.json create mode 100755 .agents/skills/qemu-issue-triage/scripts/update_labels.= sh diff --git a/.agents/skills/qemu-issue-triage/SKILL.md b/.agents/skills/qem= u-issue-triage/SKILL.md new file mode 100644 index 00000000000..abdf58e6bb4 --- /dev/null +++ b/.agents/skills/qemu-issue-triage/SKILL.md @@ -0,0 +1,91 @@ +--- +name: qemu-issue-triage +description: Use this skill to triage and label GitLab issues for the QEMU= project +license: GPL-2.0-or-later +--- + +# Instructions + +This skill provides specialized instructions for triaging GitLab issues fo= r the QEMU project. + +## Parameter Handling & Execution Strategy (CRITICAL) +1. **Parameters**: If the user invokes this skill with an argument (e.g., = `/issue-triager 3463`), treat that argument as the target ``. +2. **Sub-Agent Mandate**: To prevent polluting the main conversation conte= xt, **you MUST ALWAYS spawn a sub-agent** to perform the actual triage. + - Do NOT run `glab` commands or read the label cache directly in the ma= in context. + - Use the `eca__spawn_agent` tool (agent: `general`, activity: `Triagin= g issue `). + - In the `task` parameter for the sub-agent, provide the target `` and explicitly instruct the sub-agent to follow the "Triage Workflow"= and "Asset Management" rules defined below. + - Wait for the sub-agent to finish and simply report its summary to the= user. + +## Goal +Automate the initial triage of new bug reports and feature requests in the= QEMU GitLab repository. + +## Prerequisites +- `glab` CLI tool installed. +- GitLab API Token: Use `env GITLAB_TOKEN=3D$(pass gitlab-api)` for all `g= lab` commands. +- Target Repo: Use `-R qemu-project/qemu` if not in a clone, or ensure the= remote is set correctly. + +## Asset Management (Label Cache) +This skill uses a cached list of labels to avoid unnecessary API calls and= ensure consistent labeling. +- **Cache Location:** `assets/labels.txt` relative to this skill. +- **Updating the Cache:** If the user asks to update the labels, or if you= suspect a label is missing, run the provided script: + ```bash + cd .agents/skills/qemu-issue-triage/scripts && ./update_labels.sh + ``` +- **Using the Cache:** Before applying labels, ALWAYS read `assets/labels.= txt` (or use `grep` on it) to review the available labels and their descrip= tions. This ensures you use the exact spelling and understand the intent be= hind the label (e.g., `kind::Bug`, `Storage`). Do NOT guess label names. + +## Triage Workflow + +### 1. Information Gathering +Fetch the issue details: +```bash +env GITLAB_TOKEN=3D$(pass gitlab-api) glab issue view -R qemu-p= roject/qemu --comments +``` + +### 2. Evaluate Completeness +Analyze the issue against the bug template requirements: +- **Host Arch/OS**: Is the host environment specified? +- **Guest Arch/OS**: Is the guest environment specified? +- **QEMU Version**: Is the version mentioned? +- **Reproduction Steps**: Are there clear steps to reproduce? +- **Expected vs Actual**: Is the bug clearly described? + +**Actions:** +- If critical information is missing (especially repro steps), add the `wo= rkflow::Needs Info` label and post a polite comment asking for the missing = details. (Remember to sign the comment as "Issue Agent Bot on behalf of the= user" per the Guidelines). +- If the issue is well-defined, proceed to categorization. + +### 3. Categorization & Labeling +Apply labels based on the issue content. **Crucially, consult `assets/labe= ls.txt` to find the exact matching labels for the categories below.** + +#### Kinds +- `kind::Bug`: For unexpected behavior. +- `kind::Feature Request`: For new functionality. +- `kind::Task`: For research, investigations, and miscellaneous issues. + +#### Targets (target: *) and Hosts (host: *) +Detect the guest architecture (`target: *`) or host environment (`host: *`= ). +**IMPORTANT:** Be conservative when applying `target:` and `host:` labels.= Many bugs (e.g., in generic devices like USB, PCI, or block controllers) a= pply to ANY guest that includes the device. The reproducer (like a `qtest` = invocation) might just use a convenient target (e.g., `i386`) as an example= . ONLY apply `target:` or `host:` labels if the bug is strictly architectur= e- or host-dependent (e.g., a bug in ARM CPU emulation, or a macOS-specific= build failure). + +#### Accelerators (accel: *) +Detect the accelerator mentioned (e.g., `accel: KVM`, `accel: TCG`, `accel= : HVF`). + +#### Subsystems +Identify the relevant subsystem (e.g., `Storage`, `Networking`, `device:vi= rtio`, `Migration`). + +#### Testcases +- If the issue provides a minimal C program, a shell script, or a specific= disk image to reproduce the bug, apply the `TestCase` label. + +#### Patches and Fixes +- If the issue description or comments contain a link to a patch on the ma= iling list (e.g., `lore.kernel.org`, `patchew.org`), or explicitly mention = that a patch/fix has been submitted, apply the `workflow::Patch available` = label. + +### 4. Updating the Issue +Apply the labels and optionally assign a priority if clear: +```bash +env GITLAB_TOKEN=3D$(pass gitlab-api) glab issue update -R qemu= -project/qemu --label "kind::Bug,target: arm,workflow::Triaged" +``` + +## Guidelines +- Be polite and professional in comments. +- **IMPORTANT:** Any comments added to the issue MUST include the phrase: = "Issue Agent Bot on behalf of the user" (e.g., as a sign-off at the end of = the message). +- Use `workflow::Triaged` once categorization is complete. +- Avoid assigning issues to specific people unless they are explicitly men= tioned or are the known maintainer for a very specific subsystem. +- Use the `scripts/get_maintainer.pl` logic (via file paths mentioned in t= he issue) to identify potential subsystems. diff --git a/.agents/skills/qemu-issue-triage/assets/labels.txt b/.agents/s= kills/qemu-issue-triage/assets/labels.txt new file mode 100644 index 00000000000..d329f34183d --- /dev/null +++ b/.agents/skills/qemu-issue-triage/assets/labels.txt @@ -0,0 +1,133 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +ACPI Power Management related (ACPI / SMBIOS / HEST = / GHES) +Audio Audio devices; both backend (host audio) and fr= ontend (guest audio) +Audit Tooling A group for bugs and issues found via automated= tooling such as fuzzing, sanitizers or AI +Audit Tooling::AI For bugs found with AI assisted tools such as M= ythos and other similar things +Audit Tooling::Fuzzer Issues found via fuzzing. For security issues, = please consult https://www.qemu.org/contribute/security-process/ +Audit Tooling::Sanitizer For issues found using sanitizers such as asan,= lsan and tsan +Bite Sized Candidates for first contributions; see also ht= tps://wiki.qemu.org/Contribute/BiteSizedTasks +Build System configure, make, Meson, ninja, gcc, clang, ccac= he, etc. +CI Continuous Integration; gitlab, travis, patchew= , etc. +CLI Command Line Interface +Chardev Character device backends and related issues +Closed::Duplicate There is already another ticket that is about t= he same issue +Closed::Fixed The issue was fixed. Yay! +Closed::Invalid This issue was not really a problem +Closed::NotOurBug This is a bug, but not a bug in QEMU. Please re= port it and/or include a link to the report. +Closed::NotReproducible This issue was not reproducible +Closed::UnbackedFeature Nobody was willing to work on this feature requ= est +Closed::WontFix The issue was acknowledged, but the fix would b= e too complex, too expensive, or would introduce other problems. +Cryptography +Documentation Sphinx documentation, man pages, the wiki, --he= lp output, etc. +GDB Issues relating to using GDB via the gdbstub +GUI Graphical User Interface (gtk, SDL, curses, VNC= , spice, ...) +GUI::Cocoa Cocoa +GUI::DBus DBus +GUI::GTK +GUI::SDL SDL +GUI::SPICE SPICE +GUI::VNC +Guest Agent Issues related to the qemu-guest-agent binary. = https://wiki.qemu.org/Features/GuestAgent +Hard +Launchpad Issues migrated from Launchpad +Migration +Modules +Networking +Python Python library issues (./python/) +QAPI/QMP QEMU API / QEMU Machine Protocol, HMP and CLI, = etc. +QOM QEMU Object Model +Regression +Security +Semihosting Semihosting calls provide a simple ABI for earl= y bring-up of embedded devices and provide a way to output to the console a= nd do basic file i/o while being debugged +Softfloat QEMU's FPU emulation code (TCG only) +Stable::can't fix The bug was reported on a stable branch but the= fix is too invasive for backporting +Stable::obsolete The bug was reported on a stable branch that is= not maintained anymore +Stable::to backport The bug was reported on a stable branch and nee= ds to be backported on the next release from the branch +Storage Block subsystem, Storage devices, etc. +TCG plugins Anything related to the TCG plugins feature +TestCase The report includes a testcase +Tests qtests, iotests, acceptance tests, VM tests, do= cker tests, and more. +USB +VFIO +accel: HAX Intel's Hardware Accelerated Execution Manager = (HAXM) +accel: HVF Apple Hypervisor Framework +accel: KVM Linux Kernel-based Virtual Machine +accel: TCG QEMU Tiny Code Generator +accel: WHPX Microsoft Windows Hypervisor Platform (WHPX) +accel: Xen Xen Hypervisor +block:9p The 9p network file system +block:NVMe +block:curl +block:nbd +block:nfs Issues related to the NFS backend +block:qcow2 +block:ssh +block:vmdk +bsd-user +device: PCI +device: TPM Trusted Platform Module (TPM) devices +device:graphics Issues relating to display device emulation, or= rendering in general. See also "GUI". +device:input Keyboards, Mice, Touchscreens, HIDs, etc. +device:iommu IOMMU and SMMU +device:pflash Parallel NOR flashes emulation +device:sdmmc SD or (e)MMC cards emulation +device:virtio virtio-related issues. https://www.linux-kvm.or= g/page/Virtio +device:watchdog +efi EFI firmware related issues +flaky-ci For test cases that are flaky when run under ou= r CI +gitlab +guest: AIX +guest: BSD Guest OS is BSD (NetBSD/FreeBSD/OpenBSD/etc) +guest: Linux Guest OS is Linux/Linux-based +guest: Windows Microsoft Windows guest +guest: macOS Apple macOS / Darwin as guest OS +guest: os2 +host: aarch64 Bugs reproducible on AArch64 hosts +host: arm Bugs reproducible on ARM hosts +host: loongarch64 Bugs reproducible on LoongArch64 hosts. +host: mips Bugs reproducible on MIPS hosts +host: ppc Bugs reproducible on Power hosts +host: riscv Bugs reproducible on RISC-V hosts +host: s390 Bugs reproducible on s390 hosts +host: sparc64 Bugs specific to Sparc64 hosts +host: x86 Bugs reproducible on x86 hosts +host:32bit These are mostly TCG related bugs where we some= times struggle with emulating larger guests, especially atomic and address = space issues. +hostos: BSD FreeBSD, OpenBSD, NetBSD, and derivatives as ho= st OSes +hostos: Linux Linux-based host operating systems (Fedora, RHE= L/CentOS, Debian, Ubuntu, openSuSE et al) +hostos: Windows Microsoft Windows host OS +hostos: macOS Apple macOS / Darwin as a host OS +icount issues relating to icount, deterministic execut= ion and record/replay functionality +kind: Not user visible +kind::Bug Bug or defect in functionality. +kind::Feature Request Feature request or new functionality. +kind::Task Research, investigations, and miscellaneous iss= ues. +libvfio-user +linux-user +qemu-img +spice +sysadmin +target: alpha DEC Alpha [alpha] +target: arm Arm AArch32 or AArch64 [arm, aarch64] +target: avr Atmel AVR [avr] +target: hexagon Qualcomm Hexagon [hexagon] +target: hppa Hewlett-Packard Precision Architecture; HP/HP, = PA-RISC [hppa] +target: i386 Intel/AMD x86 [i386, x86_64] +target: loongarch loongarch64 target architecture +target: m68k Motorola 68000 [m68k] +target: microblaze Xilinx MicroBlaze [microblaze, microblazeel] +target: mips MIPS [mips, mipsel, mips64, mips64el] +target: nios2 Altera Nios II [nios2] +target: openrisc OpenRISC [or1k] +target: ppc IBM Power Architecture, PowerPC [ppc, ppc64, pp= c64le] +target: riscv RISC-V [riscv32, riscv64] +target: rx Renesas RX [rx] +target: s390x IBM Z, SystemZ, zSeries [s390x] +target: sh4 Renesas SuperH [sh4, sh4eb] +target: sparc Sun Microsystems SPARC [sparc, sparc64] +target: tricore Infineon TriCore [tricore] +target: xtensa Tensilica Xtensa [xtensa, xtensaeb] +workflow::Confirmed Bugs that have been confirmed and reproduced. +workflow::In Progress Someone is working on this issue. +workflow::Needs Info Issue has insufficient information to verify. +workflow::Patch available A patch is available +workflow::Triaged Issue has been triaged and given a topic label. diff --git a/.agents/skills/qemu-issue-triage/evals/evals.json b/.agents/sk= ills/qemu-issue-triage/evals/evals.json new file mode 100644 index 00000000000..572c0723fd4 --- /dev/null +++ b/.agents/skills/qemu-issue-triage/evals/evals.json @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +{ + "skill_name": "qemu-issue-triage", + "evals": [ + { + "id": 1, + "prompt": "Update the cached list of GitLab labels for the QEMU proj= ect.", + "expected_output": "The skill should fetch the latest labels from Gi= tLab and save them to the skill's assets directory.", + "files": [] + }, + { + "id": 2, + "prompt": "Triage issue #1234. Assume the user provided clear steps = but no subsystem label is obvious.", + "expected_output": "The skill should read the cached label list (not= fetch from GitLab) and apply relevant kind/target labels.", + "files": [] + } + ] +} \ No newline at end of file diff --git a/.agents/skills/qemu-issue-triage/scripts/update_labels.sh b/.a= gents/skills/qemu-issue-triage/scripts/update_labels.sh new file mode 100755 index 00000000000..1605eab4de5 --- /dev/null +++ b/.agents/skills/qemu-issue-triage/scripts/update_labels.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-2.0-or-later +set -e + +if [ -z "$GITLAB_TOKEN" ]; then + echo "GITLAB_TOKEN is not set. Attempting to fetch via pass..." + export GITLAB_TOKEN=3D$(pass gitlab-api) +fi + +echo "Fetching labels from qemu-project/qemu..." +# Fetch labels using API and format as "Name Description" +glab api /projects/qemu-project%2Fqemu/labels --paginate | \ + jq -r '.[] | [ .name, .description ] | @tsv' | \ + column -t -s $'\t' > ../assets/labels.txt + +echo "Labels cached in assets/labels.txt" --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000646; cv=none; d=zohomail.com; s=zohoarc; b=KOY35D/lG3rWJIk08UMfH7oksLDoJQri1pyPiZetSWz0fmPjN2eOBRgjytJC0kSeUNRxbS1F7JOLq6F8DCxnvuiGOg4r7+T9hvMs4TDceMZ8wYL0ktGXyBUROXz4PdL0MDfKNlQh03qQPoh1PHFgDTbJ87ToWTQxlximzODun48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000646; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zgN89KaSyxSAefXPH8ZQnVFNA6F32d/CG9VXqM5uJNg=; b=gjkopZT+SOENuSwHSLxy3pwsBqR7foa/1T7rVm6sZzC4hSBId6wEAFxODwVmxAfmRMSIUf/nY9LH+eMwyTOFF3FGQM6YVR+jREYytwCuH3/uqgQev2VhNXNylvcr4HGLn12Al6EZm++q645VaAIV5rRpZFAiM08DOvjHf7/5k7Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778000646491267.6743552399307; Tue, 5 May 2026 10:04:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9I-00080c-15; Tue, 05 May 2026 13:01:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ96-0007xA-F0 for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:21 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0003Tv-Fb for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:19 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-48a563e4ef7so53184495e9.0 for ; Tue, 05 May 2026 10:01:14 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a8eb69800sm356218795e9.2.2026.05.05.10.01.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id D36806095D; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000473; x=1778605273; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zgN89KaSyxSAefXPH8ZQnVFNA6F32d/CG9VXqM5uJNg=; b=HGQg9S2A4/0A1u3qkRbeRJgWkeKkHr7ag74WcvpzYspp2sr4ohTLjNdA+xg/Djp9k/ 9zStc/aYFC0Ewip0I4FVRVTGgbGBP5G8qsuHtTYkPDlJBTujh2221d1Rx7dtFcPmUtPG QfeFZkeBCWRAEQ5EBNYV+Vltk9KI0ZdAUoE334GE4BxTpe400Jjg0lMkDIKajoGlvBcJ 9yKquIE2Qn5Udv4f3JpstmLg1FiUB9c7rp/cOEgqQAQ9aywBrQWZbDTh5Y6Dgs7STJbI iev69z08aOMBPLc3QpCJ7cUC6wtznTFm2cDWPdnU8rKO1FD3XDgIFKHYiKj6L9NzHoEL xsRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000473; x=1778605273; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=zgN89KaSyxSAefXPH8ZQnVFNA6F32d/CG9VXqM5uJNg=; b=qyXRbOqf1wt32C5y1zke2aFqqR/kBFFl4PorBh3UJqKZUpw9xzBskq9r7uvAbalQ8q UftRhqhcmxC1UagJZ7vvRnIAvl4eDrXZ4HbU5kLTEA/P+9ep/Zj2wTIDZEGbtkkbDdBd aWQsOVDUn/egLpLhDvYAgSYM6TbpvWZVDBwwIAZkIyp3ab1g+rfimMWTAzYxCmH75Irb xOkOHMxeNPBrfGvKe0LU69iO43ld9M2GrxqMHHAkTPdVYWINgm1adTo0dQPOXmVVHxPR /sbZ68sB9823i9hMAIPbGuqD3RIgoxHXkL/vyL6BYVpvds8+gXnWlc3xTFytdUBixikx ISvQ== X-Gm-Message-State: AOJu0Yy+KuINgkp57ES/zJHbrEbdrzg19n5MQ8bnV1huQy2cxFrw2ioT lLNLsOkoYNHLYE7xlrBd6MlSJjI3GhDkXNe8caOoOSf74Vjj0LDEMtb+eVso21d10Iw= X-Gm-Gg: AeBDieutPAH0R2Rq1oOJuTvCYL7uHVTLOiTgkyvfz1eBq6lCC/HhS8FCnESjoIspL/y SsRR6JIsz/IYlb+RMxRHq4MX3lZUheYYyRut24VvNfRaBCtSeS3zaIvQwRU19ZQufa23fmb+PLw Lm7xijs/lq2XhGT2sZwmBlXmVm9UIVbn+S3Cnsx5yQ6/jgLtmgRkfSxFi9znsuobD1Av71tEKTT /ZqH1mVqepvZY/VCth5WU2BssYKfu6kh8ibOLamYtURmB8Zs2nslB1FtgsdHdNB6HdKQIbMBaWq AB8Puo9sIE7oBqkgMShRng/XQ1epl8fos6vqVM1Ee44AB31sLFcHqOuyysosCEO2tQ0+sue2fDT k0nv8l5zocrIfmF8gALHO6/v939XnxvaMeob+QT/faJgfyj0T/qIEb/VU3TZXz6fMygoxRHxdEk b2CJCS2FVaUtn6/FB4gDQCeXGiU8yXLVBjMsGFnVZ8sCAk X-Received: by 2002:a05:600c:2d43:b0:48a:563c:c8c0 with SMTP id 5b1f17b1804b1-48e51e166a3mr1027025e9.7.1778000473294; Tue, 05 May 2026 10:01:13 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 09/10] .agents/skills: add checkpatch agent skill Date: Tue, 5 May 2026 18:01:04 +0100 Message-ID: <20260505170105.228162-10-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x331.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000648654158500 This is a very simple skill that tells the agent how to run checkpatch. Signed-off-by: Alex Benn=C3=A9e --- .agents/skills/checkpatch/SKILL.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .agents/skills/checkpatch/SKILL.md diff --git a/.agents/skills/checkpatch/SKILL.md b/.agents/skills/checkpatch= /SKILL.md new file mode 100644 index 00000000000..1f0f84fe6b7 --- /dev/null +++ b/.agents/skills/checkpatch/SKILL.md @@ -0,0 +1,10 @@ +--- +name: checkpatch +description: run checkpatch on a file or patch to validate style issues +license: GPL-2.0-or-later +--- + +# Instructions +Run `./scripts/checkpatch.pl [FILE]` to check a file for style issues. + +You can also use a GIT-REV-LIST to check against git, e.g. run `./scripts/= checkpatch.pl HEAD^..` to run checkpatch on the last commit. --=20 2.47.3 From nobody Mon May 25 17:51:13 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1778000584; cv=none; d=zohomail.com; s=zohoarc; b=nR/nVXdEPGkWDa734LZukyotZ3tLagMWxtOD/2N8egdS9Y1aLjBW5U+hYuV0PMsztqBuHBDjjD6A3ro142O397jPO5ImI13KU0fM2PLABR+HEc+uZnfBnw9LLaExpM6F3PgYZeyW3gxold7V5eaNisVxk5gKKDSXDmmcoRYqRJY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778000584; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kVM2EdEhrC2RVcrum39dP3flDEFXuwzgEYDRb1J4Vrk=; b=MfIKn695Nabw2fY3Mkt9CqcimNhqLmE71Gr4FxQyCklKVh7pK3Vj+lbPTv0E0HRvqxqaMkVQ7Dd3Nlz06EqjxqGK00rhNsqjHVlQw22k4BzhaK1ORvaeCILysnL9ButzKpCW3GGCE5V9U5mymUz3ZbUfjWIpprCiR+shDt3Wqk0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177800058497557.64560599633364; Tue, 5 May 2026 10:03:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wKJ9J-00080r-4h; Tue, 05 May 2026 13:01:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wKJ98-0007xj-Fq for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:24 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wKJ92-0003TZ-GI for qemu-devel@nongnu.org; Tue, 05 May 2026 13:01:20 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-48374014a77so65181105e9.3 for ; Tue, 05 May 2026 10:01:13 -0700 (PDT) Received: from draig.lan ([185.124.0.195]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a8eb3427fsm598501845e9.0.2026.05.05.10.01.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2026 10:01:10 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id EB6FF60E4D; Tue, 05 May 2026 18:01:06 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778000472; x=1778605272; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kVM2EdEhrC2RVcrum39dP3flDEFXuwzgEYDRb1J4Vrk=; b=KG1Mnw8R04umsm9TsAtLCh/XBesXVJz3X7rwbcHJ37OhKaNDy+xZzbqdKg7nmuVAOG Rzv1nIxI+WY+dFrjEqGnS8eULxBOnIjOAYY7bmZCUe2hT0l5mERdBPMAVK3+e6cUbaHs FwbhCq3zPvi1S8wTewx2lTLwsFzuXuwPxTsV+mMh8sGBj0TXYnaquaLoVeT4lIzsQDy+ A1BTZinkukYPakW5xe6JGtoz3mVnCidWlETXdu6ynrwUB+9Gj+TEMTnp8ZCavehdcenk R+aUyavPXgzH47cwWx2uHG/wTWTuizHFxwD0dmEZRnxTrggd4q6M3O/2aEOkuPNO0P/e X4pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778000472; x=1778605272; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kVM2EdEhrC2RVcrum39dP3flDEFXuwzgEYDRb1J4Vrk=; b=UuYqwbkvFIbhktLK1fSuBT416pMthegy67VhC9tx6lQwX9CBo6QGwAfuqhQG5P9wnp MAt/JS52pCG1tk8S9KJbMnz1c86tnDHf9JjLAw01p+dHBtIhX98VDKStwjs3goGhPgcj PoqODPBWWLV718WkDj9NIOJEETgvQzlnJ0jPkUY4VbkXzIpMi4CSQiTv5IBQkPuDZOss rEL2+BzWFMH75xoKqK1U+P07J15vwXklnCTn5ULwYO7VbKgBkDkewwSYSoz6dArm+fQz jzvjyVZIznl6ipY5V+EQPaSqOczQJEFaxoa+Lz/TITlmXAdFlb4zl6G1zNQNU0hEmNs3 GFDw== X-Gm-Message-State: AOJu0Yw5Ub8YzybTXliokkeRNnM6lZ4llnupM36exG4IaX0qDmJ3Me8a jPBt/fE30eBX6IXEiHxLd3YnE3cgHR79wDCdwv5mW+aKpS5hVSNtQu47EZFJ0pbB/l4XYvDzMKj lI1hURDU= X-Gm-Gg: AeBDies1czP7jZHFHNDzjAkZcYVF4FR+lRgRwIuE9Jq4Ei5z3A9L/E8chEpINUetQ96 EUHhFtZ8iUyHGcPnAGrKvlJGktp4k7jtiUGCLxAwrXbvWWGw83WMv6dGRt3eD6EDftRPhYOVWCh Fjh5/4LyZUWvPcNi5VDeXw0IPpFKQIAOTZ0gVrApJ3u4jUR2Mqv3GOAT/EG5tElm8D5b5zt0f4s aPf9W12GKjcySAMTeZOiuXZsR4QgdUyWt2mM1g5jXRJ8QijGT1WN+DHBu2Tq1s+uZrDgTfQNl1h yQfbhmTzaGdp754KWbvXxynpAT6nkqD9+eT5d8nlXSpRZKL7yqzhF/INR5NWLy6bSWklib/sn7J 1iH/7pB/nJnCKx6QIfnbAvQ1I2Kbx/ZS0X3ti4DZof7iKa+pfr4mnHq+nwb1tsywu1gCe8mbwAc RqA66nQTU3JBgc+9PAq4d0E0w284kfgWcx2A== X-Received: by 2002:a05:600c:c494:b0:489:e126:b757 with SMTP id 5b1f17b1804b1-48e51f41be6mr723715e9.25.1778000471933; Tue, 05 May 2026 10:01:11 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [RFC PATCH 10/10] MAINTAINERS: add a section for AI agents Date: Tue, 5 May 2026 18:01:05 +0100 Message-ID: <20260505170105.228162-11-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260505170105.228162-1-alex.bennee@linaro.org> References: <20260505170105.228162-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32b; envelope-from=alex.bennee@linaro.org; helo=mail-wm1-x32b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778000585948158500 For completeness add a section to MAINTAINERS to catch changes should we decide to merge this. Signed-off-by: Alex Benn=C3=A9e --- MAINTAINERS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index afa178c5cce..426f3df8552 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -4548,6 +4548,12 @@ M: Pierrick Bouvier S: Maintained F: docs/ =20 +AI Agent Skills +M: Alex Benn=C3=A9e +S: Maintained +F: .agents/skills/ +F: AGENTS.md + Build System ------------ Meson --=20 2.47.3