diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000000..38834b1ea5
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,34 @@
+- Study `CONTRIBUTING.md` to get all the key information on how to build
+ NetworkManager and write patches.
+- If the `origin` remote is pointed to GitHub, stop immediately and
+ remind the user that NetworkManager upstream development happens on
+ https://gitlab.freedesktop.org.
+- Ensure you have a `build/` meson directory that successfully builds
+ before commencing any work.
+- Before committing anything, make sure your code builds successfully,
+ passes all tests and is properly formatted.
+- Unless your work depends on previous unmerged work, make sure you are
+ on a new clean branch that is based on `main`.
+- If possible, update stale comments that become out of date due to your
+ changes, instead of outright removing them. This obviously does not
+ apply to TODO or FIXMEs that have been resolved and can be removed.
+- If the system has a installation of `podman`, you can use
+ `./contrib/scripts/nm-code-format-container.sh` to get a consistent
+ formatting of your changes. Otherwise, use `nm-code-format.sh` as
+ described in `CONTRIBUTING.md`.
+- Commit titles are written in the style of
+ `: `. They should fit under 72 characters.
+ They should be concise and descriptive.
+- Please study existing commit messages to get an idea of how to write a
+ good commit message. If you edit a particular file, study its git
+ history to see how it was previously commented.
+- After making a commit, use `checkpatch.pl` as described by the
+ contributing document to ensure your patch is valid.
+- Unit tests live in this repository. Integration tests are in a
+ separate repository called `NetworkManager-ci`. You may have a clone
+ of it in ../NetworkManager-ci. Before making any changes to that repo,
+ please first study its contents and contributing guidelines.
+ When making a significant change, it might be good to add integration
+ tests for it. Whether to make unit tests or integration tests should
+ be decided on a case-by-case basis, depending on if the
+ surrounding/relevant code is already unit tested or not.