From 991371944e556c2879eac3443abb1832a522e054 Mon Sep 17 00:00:00 2001
From: Alan Agius <17563226+alan-agius4@users.noreply.github.com>
Date: Wed, 8 Apr 2026 07:39:50 +0000
Subject: [PATCH 1/2] docs: add spam policy and saved reply
Introduces a new spam policy in CONTRIBUTING.md limiting community contributors to no more than 3 open PRs simultaneously to better manage team resources and triage efforts. Also adds a corresponding saved reply for closing excessive issues/PRs.
---
.github/SAVED_REPLIES.md | 10 ++++++++++
CONTRIBUTING.md | 15 ++++++++++++++-
docs/DEVELOPER.md | 2 +-
scripts/templates/contributing.ejs | 15 ++++++++++++++-
scripts/validate.mts | 2 +-
5 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/.github/SAVED_REPLIES.md b/.github/SAVED_REPLIES.md
index 1237bc279e11..cd32456d8dfd 100644
--- a/.github/SAVED_REPLIES.md
+++ b/.github/SAVED_REPLIES.md
@@ -99,3 +99,13 @@ I'd like to remind everyone that **you only have reproducible installs if you us
**It is your responsibility as a library consumer to use lockfiles**. No one wants to do a release with bugs but it sometimes happens, and the best we can do is to fix it as fast as possible with a new release. When you have a couple of thousand total dependencies it is only a matter of time until one of them has a bad release.
```
+
+## Angular CLI: Spam (v1)
+
+```
+Woah, looks like you've opened a lot of issues/PRs recently. While we appreciate contributions from the community, triaging and reviewing a large influx of content in a short time period takes time away from other ongoing projects. As a result, we're closing these issues/PRs to maintain the team's focus.
+
+Note that this is not necessarily a rejection of the goals or direction of any of these contributions in particular, so much as a reflection of the team's current capacity and priorities.
+
+You are welcome to open a smaller subset of issues/PRs in accordance with [our policy](https://github.com/angular/angular-cli/blob/main/CONTRIBUTING.md#spam-policy) focused on the most important and impactful contributions and we will do our best to prioritize a response as soon as possible.
+```
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e3b2d4fe1bb2..0229df0c5552 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -12,7 +12,7 @@ to follow:
- [Coding Rules](#rules)
- [Commit Message Guidelines](#commit)
- [Signing the CLA](#cla)
- - [Updating the Public API](#public-api)
+ - [Spam Policy](#spam-policy)
## Code of Conduct
Help us keep Angular open and inclusive. Please read and follow our [Code of Conduct][coc].
@@ -289,6 +289,19 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
* For corporations we'll need you to
[print, sign and one of scan+email, fax or mail the form][corporate-cla].
+## Spam Policy
+
+Users who create excessive amounts of issues or PRs in a short time frame, particularly low-quality or low-value contributions, may see those contributions automatically closed without consideration.
+
+Community contributors should limit themselves to no more than 3 open PRs at a single time.
+
+### Why?
+
+Reviewing and shepherding PRs as well as managing large issue counts takes time and energy from the core team. Triaging a PR well enough to understand its goals and implementation takes a significant amount of time, regardless of whether the PR is ultimately accepted. This policy ensures the team is able to balance its limited resources across all contributors and projects.
+
+### Exceptions
+
+If you plan to undertake more significant work that you anticipate will generate many individual PRs, please reach out to the team in a Github issue first to validate that Angular will be able to support and accept your contributions.
[coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
diff --git a/docs/DEVELOPER.md b/docs/DEVELOPER.md
index 075ddbcf9ca3..35b07adf1e89 100644
--- a/docs/DEVELOPER.md
+++ b/docs/DEVELOPER.md
@@ -168,7 +168,7 @@ Adding a package to this repository means running two separate commands:
1. `schematics devkit:package PACKAGE_NAME`. This will update the `.monorepo` file, and create the
base files for the new package (package.json, src/index, etc).
-1. `devkit-admin templates`. This will update the README and all other template files that might
+1. `pnpm admin templates`. This will update the README and all other template files that might
have changed when adding a new package.
For private packages, you will need to add a `"private": true` key to your package.json manually.
diff --git a/scripts/templates/contributing.ejs b/scripts/templates/contributing.ejs
index d0eb7a59cee2..af7fc2cbcda0 100644
--- a/scripts/templates/contributing.ejs
+++ b/scripts/templates/contributing.ejs
@@ -12,7 +12,7 @@ to follow:
- [Coding Rules](#rules)
- [Commit Message Guidelines](#commit)
- [Signing the CLA](#cla)
- - [Updating the Public API](#public-api)
+ - [Spam Policy](#spam-policy)
## Code of Conduct
Help us keep Angular open and inclusive. Please read and follow our [Code of Conduct][coc].
@@ -280,6 +280,19 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
* For corporations we'll need you to
[print, sign and one of scan+email, fax or mail the form][corporate-cla].
+## Spam Policy
+
+Users who create excessive amounts of issues or PRs in a short time frame, particularly low-quality or low-value contributions, may see those contributions automatically closed without consideration.
+
+Community contributors should limit themselves to no more than 3 open PRs at a single time.
+
+### Why?
+
+Reviewing and shepherding PRs as well as managing large issue counts takes time and energy from the core team. Triaging a PR well enough to understand its goals and implementation takes a significant amount of time, regardless of whether the PR is ultimately accepted. This policy ensures the team is able to balance its limited resources across all contributors and projects.
+
+### Exceptions
+
+If you plan to undertake more significant work that you anticipate will generate many individual PRs, please reach out to the team in a Github issue first to validate that Angular will be able to support and accept your contributions.
[coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
diff --git a/scripts/validate.mts b/scripts/validate.mts
index 70d0f27a31d1..a62ffa16f682 100644
--- a/scripts/validate.mts
+++ b/scripts/validate.mts
@@ -27,7 +27,7 @@ export default async function (options: { verbose: boolean }) {
await templates();
if (execSync(`git status --porcelain`).toString()) {
console.error(
- 'Running templates updated files... Please run "devkit-admin templates" before submitting a PR.',
+ 'Running templates updated files... Please run "pnpm admin templates" before submitting a PR.',
);
if (!options.verbose) {
process.exit(2);
From fdaab42532f927d2010f3b1c4abe1712f111f467 Mon Sep 17 00:00:00 2001
From: Alan Agius <17563226+alan-agius4@users.noreply.github.com>
Date: Wed, 8 Apr 2026 16:10:20 +0000
Subject: [PATCH 2/2] fixup! docs: add spam policy and saved reply
---
.github/SAVED_REPLIES.md | 2 +-
CONTRIBUTING.md | 12 +-----------
scripts/templates/contributing.ejs | 12 +-----------
3 files changed, 3 insertions(+), 23 deletions(-)
diff --git a/.github/SAVED_REPLIES.md b/.github/SAVED_REPLIES.md
index cd32456d8dfd..dfce61802c0e 100644
--- a/.github/SAVED_REPLIES.md
+++ b/.github/SAVED_REPLIES.md
@@ -107,5 +107,5 @@ Woah, looks like you've opened a lot of issues/PRs recently. While we appreciate
Note that this is not necessarily a rejection of the goals or direction of any of these contributions in particular, so much as a reflection of the team's current capacity and priorities.
-You are welcome to open a smaller subset of issues/PRs in accordance with [our policy](https://github.com/angular/angular-cli/blob/main/CONTRIBUTING.md#spam-policy) focused on the most important and impactful contributions and we will do our best to prioritize a response as soon as possible.
+You are welcome to open a smaller subset of issues/PRs in accordance with [our policy](https://github.com/angular/angular/blob/main/contributing-docs/spam.md) focused on the most important and impactful contributions and we will do our best to prioritize a response as soon as possible.
```
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0229df0c5552..8b57f53f5584 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -291,17 +291,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
## Spam Policy
-Users who create excessive amounts of issues or PRs in a short time frame, particularly low-quality or low-value contributions, may see those contributions automatically closed without consideration.
-
-Community contributors should limit themselves to no more than 3 open PRs at a single time.
-
-### Why?
-
-Reviewing and shepherding PRs as well as managing large issue counts takes time and energy from the core team. Triaging a PR well enough to understand its goals and implementation takes a significant amount of time, regardless of whether the PR is ultimately accepted. This policy ensures the team is able to balance its limited resources across all contributors and projects.
-
-### Exceptions
-
-If you plan to undertake more significant work that you anticipate will generate many individual PRs, please reach out to the team in a Github issue first to validate that Angular will be able to support and accept your contributions.
+See [Spam Policy](https://github.com/angular/angular/blob/main/contributing-docs/spam.md) for details.
[coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#
diff --git a/scripts/templates/contributing.ejs b/scripts/templates/contributing.ejs
index af7fc2cbcda0..9b5fefd4ae46 100644
--- a/scripts/templates/contributing.ejs
+++ b/scripts/templates/contributing.ejs
@@ -282,17 +282,7 @@ changes to be accepted, the CLA must be signed. It's a quick process, we promise
## Spam Policy
-Users who create excessive amounts of issues or PRs in a short time frame, particularly low-quality or low-value contributions, may see those contributions automatically closed without consideration.
-
-Community contributors should limit themselves to no more than 3 open PRs at a single time.
-
-### Why?
-
-Reviewing and shepherding PRs as well as managing large issue counts takes time and energy from the core team. Triaging a PR well enough to understand its goals and implementation takes a significant amount of time, regardless of whether the PR is ultimately accepted. This policy ensures the team is able to balance its limited resources across all contributors and projects.
-
-### Exceptions
-
-If you plan to undertake more significant work that you anticipate will generate many individual PRs, please reach out to the team in a Github issue first to validate that Angular will be able to support and accept your contributions.
+See [Spam Policy](https://github.com/angular/angular/blob/main/contributing-docs/spam.md) for details.
[coc]: https://github.com/angular/code-of-conduct/blob/main/CODE_OF_CONDUCT.md
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#