diff --git a/.pullapprove.yml b/.pullapprove.yml
index 2656c2351f7..a168baea73f 100644
--- a/.pullapprove.yml
+++ b/.pullapprove.yml
@@ -1056,6 +1056,8 @@ groups:
'aio/content/guide/docs-style-guide.md',
'aio/content/examples/docs-style-guide/**/{*,.*}',
'aio/content/images/guide/docs-style-guide/**/{*,.*}',
+ 'aio/content/guide/docs-lint-errors.md',
+ 'aio/content/images/guide/docs-lint-errors/**/{*,.*}',
'aio/content/guide/localized-documentation.md',
'aio/content/guide/localizing-angular.md',
'aio/content/guide/reviewing-content.md',
diff --git a/aio/content/guide/contributors-guide-overview.md b/aio/content/guide/contributors-guide-overview.md
index ceeef495923..620c612778d 100644
--- a/aio/content/guide/contributors-guide-overview.md
+++ b/aio/content/guide/contributors-guide-overview.md
@@ -1,4 +1,4 @@
-# Content Contributor's Guide
+# Documentation contributor's guide
Angular, as an open source project, depends on its community. This dependence is particularly important to the documentation. The more the community contributes to the documentation, the better the documentation becomes, which helps both new and experienced Angular developers.
@@ -6,9 +6,9 @@ The topics in this section cover ways in which you can contribute to the Angular
## Before you begin
-Before you get started with your contributions, we recommend that you review [Contributing to Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md). That topic explains many of the tasks and guidelines you need to know before you make your first pull request.
+Before you get started with your contributions, review [Contributing to Angular](https://github.com/angular/angular/blob/main/CONTRIBUTING.md). That topic explains many of the tasks and guidelines you need to know before you make your first pull request.
-## Contributing to Angular
+## Contributing to Angular documentation
+
diff --git a/aio/content/guide/docs-lint-errors.md b/aio/content/guide/docs-lint-errors.md
new file mode 100644
index 00000000000..c12cd7ccbb6
--- /dev/null
+++ b/aio/content/guide/docs-lint-errors.md
@@ -0,0 +1,256 @@
+# Resolving documentation linter messages
+
+This topic describes different ways to resolve common messages that the documentation linter produces.
+
+## Anatomy of a documentation linter message
+
+This is an example of a message produced by the documentation linter.
+
+
+
+

+
+
+
+A documentation linter message contains these elements. Starting from the top line:
+
+
+
+
+
+* The severity. One of these icons indicates the message's severity:
+ *
**Error** (A red `x` in a circle) Errors must be corrected before the file can be merged.
+ *
**Warning** (A yellow exclamation mark in a triangle) Warnings should be corrected before the file is merged.
+ *
**Info** (A blue lower-case `i` in a circle) Informational messages should be corrected before the file is merged.
+* The style rule message. The style rule message in this example is: *Did you really mean 'sdfdsfsdfdfssd'? It wasn't found in our dictionary.*
+* The style reference. Some references are linked to a style guide topic that explains the rule. The style reference in this example is: *Vale(Angular.Angular_Spelling)*.
+* The location of the problem text in the document identified by source line and column as precisely as possible. Some messages might not have the exact location of the text that triggered the message. The location in this example is: *[Ln 8, Col 1]*.
+* The style test definition file that produced the message, which is linked to the file. The style test definition in this example is: *Angular_Spelling.yml[Ln 1, Col 1]: View rule*.
+
+
+
+
+
+## Strategies to improve your documentation
+
+These tips can help you improve your documentation and remove documentation linter messages.
+
+### Refer to the style guides
+
+The lint tool tests against the styles found in these style guides.
+Most style tests include links to relevant sections in these documents for more information.
+
+* [Angular documentation style guide][AioGuideDocsStyleGuide]
+* [Google Developer Documentation Style Guide][GoogleDevelopersStyle]
+
+
+
+Not every style mentioned in the style guides has a test.
+Style guides and the style tests can change.
+
+
+
+### Split up long sentences
+
+Generally, shorter sentences are easier to read than longer ones.
+Long sentences can occur when you try to say too much at once.
+Long sentences, as well as the use of parentheses, semi-colons, or words identified as *too-wordy*, generally require rethinking and rewriting.
+
+Consider restructuring a long sentence to break its individual ideas into distinct sentences or bullet points.
+
+### Use lists and tables
+
+Sentences that contain comma-separated lists might be clearer if presented as a bulleted-list or table.
+
+Consider changing a comma-separated list of items in a sentence to a list of bullets to make those list items easier to read.
+
+### Use more common words
+
+Shorter, more common words are generally easier to read than longer ones.
+This does not mean you need to write down to the audience. Technical docs should still be precise.
+Angular docs are read by many people around the world and should use language that the most people can understand.
+
+If you think a specific term is required even though it is been flagged as uncommon, try to include a short explanation of the term.
+Also, try adding some context around its first mention.
+
+Linking a term to another section or topic is also an option, but consider the disruption that causes to the reader before you use it.
+If you force a reader to go to another page for a definition, they might lose their concentration on the current topic and their primary goal.
+
+### Use fewer words
+
+If you can remove a word and not lose the meaning of the sentence, leave it out.
+
+One common place where removing words can help is in a list of examples with more than two or three items.
+Before you place the items in a bullet list, consider if only one of the items can convey the desired meaning.
+Another option might be to replace a list of items with a single term that describes all the elements in your list.
+
+## More about specific documentation linter messages
+
+Most documentation linter messages are self-explanatory and include a link to supplementary documentation.
+Some messages identify areas in that the documentation might need more thought.
+The following types of messages often occur in areas of the text that should be reconsidered and rewritten to improve the text and remove the message.
+
+### A word is *too-wordy* or should be replaced by another
+
+Generally, technical documentation should use a simple and consistent vocabulary to be understood by a wide audience. Words that trigger this message are usually words for which there's a simpler way to convey the same thought.
+
+
+
+
+
+
+
+
+#### Angular.WriteGood_TooWordy - See if you can rewrite the sentence...
+
+
+
+
+
+
+Words identified by this style test can usually be replaced by simpler words.
+If not, sentences with these words should be revised to use simpler language and avoid the word in the message.
+
+The following table has some common words detected by this type of message and simpler words to try in their place.
+
+
+
+| *Too-wordy* word | Simpler replacement |
+|:-- |:-- |
+|accelerate |speed up |
+|accomplish |perform, finish |
+|acquire |get |
+|additional |more |
+|adjustment |change |
+|advantageous |beneficial |
+|consequently |as a result |
+|designate |assign |
+|equivalent |the same |
+|exclusively |only |
+|for the most part |generally |
+|have a tendency to |tend to |
+|in addition |furthermore |
+|modify |change or update |
+|monitor |observe |
+|necessitate |require |
+|one particular |one |
+|point in time |moment |
+|portion |part |
+|similar to |like |
+|validate |verify |
+|whether or not |whether |
+
+
+
+
+
+#### *WordList* messages
+
+
+
+The messages about words detected by these style tests generally suggest a better alternative.
+While the word you used would probably be understood, it most likely triggered this message for one of the following reasons:
+
+* The suggested works better in a screen-reader context.
+* The word that you used could produce an unpleasant response in the reader.
+* The suggested word is simpler, shorter, or easier for more people to understand.
+* The word you used has other possible variations. The suggested word is the variation to use in the documentation to be consistent.
+
+
+
+### *Proselint* messages
+
+The Proselint style tests test for words that are jargon or that could be offensive to some people.
+
+
+
+Rewrite the text to replace the jargon or offensive language with more inclusive language.
+
+### *Starting a sentence* messages
+
+Some words, such as *so* and *there is/are*, aren't necessary at the beginning of a sentence.
+Sentences that start with the words identified by this message can usually be made shorter, simpler, and clearer by rewriting them without those openings.
+
+### Cliches
+
+Cliches should be replaced by more literal text.
+
+Cliches make it difficult for people who don't understand English to understand the documentation. When cliches are translated by online tools such as Google translate, they can produce confusing results.
+
+## If all else fails
+
+The style rules generally guide you in the direction of clearer content, but sometimes you might need to break the rules.
+If you decide that the best choice for the text conflicts with the linter, mark the text as an exception to linting.
+
+The documentation linter checks only the content that is rendered as text. It does not test code-formatted text. One common source of false problems is code references that are not formatted as code.
+
+If you use these exceptions, please limit the amount of text that you exclude from analysis to the fewest lines possible.
+
+When necessary, you can apply these exceptions to your content.
+
+1. **General exception**
+
+ A *general exception* allows you to exclude the specified text from all lint testing.
+
+ To apply a general exception, surround the text that you do not want the linter to test with the HTML
+ `comment` elements shown in this example.
+
+ ```html
+
+
+
+ Text the linter does not check for any style problem.
+
+
+
+ ```
+
+ Be sure to leave a blank line before and after each comment.
+
+2. **Style exception**
+
+ A *style exception* allows you to exclude text from an individual style test.
+
+ To apply a style exception, surround the text that you do not want the linter to test with these HTML
+ `comment` elements. Between these comments, the linter ignores the style test in the comment, but
+ still tests for all other styles that are in use.
+
+ ```html
+
+
+ ```
+
+ Replace `Style.Rule` in the comments with the style rule reference from the problem message displayed in the IDE.
+ For example, imagine that you got this problem message and you want to use the word it identified as a problem.
+
+ ```html
+ Did you really mean 'inlines'? It was not found in our dictionary. Vale(Angular.Angular_Spelling) [Ln 24, Col 59]
+ Angular_Spelling.yml[Ln 1, Col 1]: View rule
+ ```
+
+ The `Style.Rule` for this message is the text inside the parentheses: `Angular.Angular_Spelling` in this case.
+ To turn off that style test, use the comments shown in this example.
+
+ ```html
+
+
+
+ 'inlines' does not display a problem because this text is not spell-checked.
+ Remember that the linter does not check any spelling in this block of text.
+ The linter continues to test all other style rules.
+
+
+
+ ```
+
+
+
+[AioGuideDocsStyleGuide]: https://angular.io/guide/docs-style-guide "Angular documentation style guide | Angular"
+
+
+
+[GoogleDevelopersStyle]: https://developers.google.com/style "About this guide | Google developer documentation style guide | Google Developers"
+
+
+
+
\ No newline at end of file
diff --git a/aio/content/images/guide/docs-lint-errors/lint-error-icon.png b/aio/content/images/guide/docs-lint-errors/lint-error-icon.png
new file mode 100644
index 00000000000..16370488e65
Binary files /dev/null and b/aio/content/images/guide/docs-lint-errors/lint-error-icon.png differ
diff --git a/aio/content/images/guide/docs-lint-errors/lint-info-icon.png b/aio/content/images/guide/docs-lint-errors/lint-info-icon.png
new file mode 100644
index 00000000000..03bc6f8ca22
Binary files /dev/null and b/aio/content/images/guide/docs-lint-errors/lint-info-icon.png differ
diff --git a/aio/content/images/guide/docs-lint-errors/lint-warn-icon.png b/aio/content/images/guide/docs-lint-errors/lint-warn-icon.png
new file mode 100644
index 00000000000..d5c0b13ba13
Binary files /dev/null and b/aio/content/images/guide/docs-lint-errors/lint-warn-icon.png differ
diff --git a/aio/content/images/guide/docs-lint-errors/sample-lint-error.png b/aio/content/images/guide/docs-lint-errors/sample-lint-error.png
new file mode 100644
index 00000000000..7b162241663
Binary files /dev/null and b/aio/content/images/guide/docs-lint-errors/sample-lint-error.png differ
diff --git a/aio/content/navigation.json b/aio/content/navigation.json
index b64a37ac6e6..2078f138690 100644
--- a/aio/content/navigation.json
+++ b/aio/content/navigation.json
@@ -1172,7 +1172,7 @@
]
},
{
- "title": "Content Contributor's Guide",
+ "title": "Documentation Contributor's Guide",
"tooltip": "Describes how to contribute to the Angular documentation.",
"children": [
{
@@ -1200,6 +1200,11 @@
"title": "Documentation Style Guide",
"tooltip": "Style guide for documentation authors."
},
+ {
+ "url": "guide/docs-lint-errors",
+ "title": "Resolving documentation linter messages",
+ "tooltip": "More information about documentation lint errors."
+ },
{
"url": "guide/localizing-angular",
"title": "Angular doc localization guidelines",
diff --git a/aio/tools/doc-linter/styles/Angular/Google_WordListSuggestions.yml b/aio/tools/doc-linter/styles/Angular/Google_WordListSuggestions.yml
index 0bcac230ef2..a49d0ece515 100644
--- a/aio/tools/doc-linter/styles/Angular/Google_WordListSuggestions.yml
+++ b/aio/tools/doc-linter/styles/Angular/Google_WordListSuggestions.yml
@@ -2,7 +2,7 @@
# tests for strings that should be considered for replacement before publishing
extends: substitution
message: "Consider using '%s' instead of '%s'."
-link: 'https://developers.google.com/style/word-list'
+link: 'https://angular.io/guide/docs-lint-errors#wordlist-messages'
level: suggestion
ignorecase: false
action:
diff --git a/aio/tools/doc-linter/styles/Angular/Google_WordListWarnings.yml b/aio/tools/doc-linter/styles/Angular/Google_WordListWarnings.yml
index e8937399040..79ef9423154 100644
--- a/aio/tools/doc-linter/styles/Angular/Google_WordListWarnings.yml
+++ b/aio/tools/doc-linter/styles/Angular/Google_WordListWarnings.yml
@@ -2,7 +2,7 @@
# tests for strings that should be replaced before the content is published
extends: substitution
message: "Use '%s' instead of '%s'."
-link: 'https://developers.google.com/style/word-list'
+link: 'https://angular.io/guide/docs-lint-errors#wordlist-messages'
level: warning
ignorecase: false
action:
diff --git a/aio/tools/doc-linter/styles/Angular/WriteGood_Cliches.yml b/aio/tools/doc-linter/styles/Angular/WriteGood_Cliches.yml
index dd431323be7..e9654244396 100644
--- a/aio/tools/doc-linter/styles/Angular/WriteGood_Cliches.yml
+++ b/aio/tools/doc-linter/styles/Angular/WriteGood_Cliches.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is a cliché"
+link: 'https://angular.io/guide/docs-lint-errors#cliches'
ignorecase: true
level: warning
tokens:
diff --git a/aio/tools/doc-linter/styles/Angular/WriteGood_So.yml b/aio/tools/doc-linter/styles/Angular/WriteGood_So.yml
index 8dd7bc4129b..09686d5f5a1 100644
--- a/aio/tools/doc-linter/styles/Angular/WriteGood_So.yml
+++ b/aio/tools/doc-linter/styles/Angular/WriteGood_So.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Don't start a sentence with '%s'. Try to rewrite the sentence without it."
+link: 'https://angular.io/guide/docs-lint-errors#starting-a-sentence-messages'
level: error
raw:
- '(?:[;-]\s)so[\s,]|So[\s,]'
diff --git a/aio/tools/doc-linter/styles/Angular/WriteGood_ThereIs.yml b/aio/tools/doc-linter/styles/Angular/WriteGood_ThereIs.yml
index 06ea8322c46..c3f22119139 100644
--- a/aio/tools/doc-linter/styles/Angular/WriteGood_ThereIs.yml
+++ b/aio/tools/doc-linter/styles/Angular/WriteGood_ThereIs.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Don't start a sentence with '%s'. Try to rewrite the sentence without it."
+link: 'https://angular.io/guide/docs-lint-errors#starting-a-sentence-messages'
ignorecase: true
level: error
raw:
diff --git a/aio/tools/doc-linter/styles/Angular/WriteGood_TooWordy.yml b/aio/tools/doc-linter/styles/Angular/WriteGood_TooWordy.yml
index d270cb794ec..c96cc8948b6 100644
--- a/aio/tools/doc-linter/styles/Angular/WriteGood_TooWordy.yml
+++ b/aio/tools/doc-linter/styles/Angular/WriteGood_TooWordy.yml
@@ -1,5 +1,6 @@
extends: existence
message: "See if you can rewrite the sentence with '%s' to use more common words."
+link: 'https://angular.io/guide/docs-lint-errors#a-word-is-too-wordy-or-should-be-replaced-by-another'
ignorecase: true
level: suggestion
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Airlinese.yml b/aio/tools/doc-linter/styles/proselint/Airlinese.yml
index a6ae9c193cd..66b93565905 100644
--- a/aio/tools/doc-linter/styles/proselint/Airlinese.yml
+++ b/aio/tools/doc-linter/styles/proselint/Airlinese.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is airlinese."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/AnimalLabels.yml b/aio/tools/doc-linter/styles/proselint/AnimalLabels.yml
index 3b65ca26547..e78b50638d6 100644
--- a/aio/tools/doc-linter/styles/proselint/AnimalLabels.yml
+++ b/aio/tools/doc-linter/styles/proselint/AnimalLabels.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Consider using '%s' instead of '%s'.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
swap:
(?:bull|ox)-like: taurine
diff --git a/aio/tools/doc-linter/styles/proselint/Annotations.yml b/aio/tools/doc-linter/styles/proselint/Annotations.yml
index dcb24f41bca..3cc056cd02e 100644
--- a/aio/tools/doc-linter/styles/proselint/Annotations.yml
+++ b/aio/tools/doc-linter/styles/proselint/Annotations.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' left in text."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: false
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Apologizing.yml b/aio/tools/doc-linter/styles/proselint/Apologizing.yml
index 42af05b48f2..4d4bca32787 100644
--- a/aio/tools/doc-linter/styles/proselint/Apologizing.yml
+++ b/aio/tools/doc-linter/styles/proselint/Apologizing.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Excessive apologizing: '%s'"
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Archaisms.yml b/aio/tools/doc-linter/styles/proselint/Archaisms.yml
index c8df9abc938..9006f45d503 100644
--- a/aio/tools/doc-linter/styles/proselint/Archaisms.yml
+++ b/aio/tools/doc-linter/styles/proselint/Archaisms.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is archaic."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/But.yml b/aio/tools/doc-linter/styles/proselint/But.yml
index 7c0f1f31ae7..e2ebf516db3 100644
--- a/aio/tools/doc-linter/styles/proselint/But.yml
+++ b/aio/tools/doc-linter/styles/proselint/But.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Do not start a paragraph with a 'but'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
scope: paragraph
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Cliches.yml b/aio/tools/doc-linter/styles/proselint/Cliches.yml
index c56183c51a0..b470312dbb2 100644
--- a/aio/tools/doc-linter/styles/proselint/Cliches.yml
+++ b/aio/tools/doc-linter/styles/proselint/Cliches.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is a cliche."
+link: 'https://angular.io/guide/docs-lint-errors#cliches'
level: error
ignorecase: true
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/CorporateSpeak.yml b/aio/tools/doc-linter/styles/proselint/CorporateSpeak.yml
index 4de8ee3f8ea..8d8c9ca309f 100644
--- a/aio/tools/doc-linter/styles/proselint/CorporateSpeak.yml
+++ b/aio/tools/doc-linter/styles/proselint/CorporateSpeak.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is corporate speak."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Currency.yml b/aio/tools/doc-linter/styles/proselint/Currency.yml
index ebd4b7d3e6e..d54edcd8cd9 100644
--- a/aio/tools/doc-linter/styles/proselint/Currency.yml
+++ b/aio/tools/doc-linter/styles/proselint/Currency.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Incorrect use of symbols in '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
raw:
- \$[\d]* ?(?:dollars|usd|us dollars)
diff --git a/aio/tools/doc-linter/styles/proselint/Cursing.yml b/aio/tools/doc-linter/styles/proselint/Cursing.yml
index e65070a91b0..2d54145ba99 100644
--- a/aio/tools/doc-linter/styles/proselint/Cursing.yml
+++ b/aio/tools/doc-linter/styles/proselint/Cursing.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Consider replacing '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
ignorecase: true
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/DateCase.yml b/aio/tools/doc-linter/styles/proselint/DateCase.yml
index 28c477157f4..3ad61b3fdf3 100644
--- a/aio/tools/doc-linter/styles/proselint/DateCase.yml
+++ b/aio/tools/doc-linter/styles/proselint/DateCase.yml
@@ -1,5 +1,6 @@
extends: existence
message: With lowercase letters, the periods are standard.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
nonword: true
diff --git a/aio/tools/doc-linter/styles/proselint/DateMidnight.yml b/aio/tools/doc-linter/styles/proselint/DateMidnight.yml
index 0130e1aefd3..94ccffc2314 100644
--- a/aio/tools/doc-linter/styles/proselint/DateMidnight.yml
+++ b/aio/tools/doc-linter/styles/proselint/DateMidnight.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Use 'midnight' or 'noon'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
nonword: true
diff --git a/aio/tools/doc-linter/styles/proselint/DateRedundancy.yml b/aio/tools/doc-linter/styles/proselint/DateRedundancy.yml
index b1f653ea5f2..3f56ab4b79c 100644
--- a/aio/tools/doc-linter/styles/proselint/DateRedundancy.yml
+++ b/aio/tools/doc-linter/styles/proselint/DateRedundancy.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'a.m.' is always morning; 'p.m.' is always night."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
nonword: true
diff --git a/aio/tools/doc-linter/styles/proselint/DateSpacing.yml b/aio/tools/doc-linter/styles/proselint/DateSpacing.yml
index b7a2fd33b6c..5c75e188d66 100644
--- a/aio/tools/doc-linter/styles/proselint/DateSpacing.yml
+++ b/aio/tools/doc-linter/styles/proselint/DateSpacing.yml
@@ -1,5 +1,6 @@
extends: existence
message: "It's standard to put a space before '%s'"
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
nonword: true
diff --git a/aio/tools/doc-linter/styles/proselint/DenizenLabels.yml b/aio/tools/doc-linter/styles/proselint/DenizenLabels.yml
index 3a33e079e6b..378d3bba6bc 100644
--- a/aio/tools/doc-linter/styles/proselint/DenizenLabels.yml
+++ b/aio/tools/doc-linter/styles/proselint/DenizenLabels.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Did you mean '%s'?
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: false
swap:
(?:Afrikaaner|Afrikander): Afrikaner
diff --git a/aio/tools/doc-linter/styles/proselint/Diacritical.yml b/aio/tools/doc-linter/styles/proselint/Diacritical.yml
index 1fd89e9071e..00a62ccd583 100644
--- a/aio/tools/doc-linter/styles/proselint/Diacritical.yml
+++ b/aio/tools/doc-linter/styles/proselint/Diacritical.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Consider using '%s' instead of '%s'.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
swap:
diff --git a/aio/tools/doc-linter/styles/proselint/GenderBias.yml b/aio/tools/doc-linter/styles/proselint/GenderBias.yml
index 2614ca3fa20..c05593615f4 100644
--- a/aio/tools/doc-linter/styles/proselint/GenderBias.yml
+++ b/aio/tools/doc-linter/styles/proselint/GenderBias.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Consider using '%s' instead of '%s'.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
swap:
diff --git a/aio/tools/doc-linter/styles/proselint/GroupTerms.yml b/aio/tools/doc-linter/styles/proselint/GroupTerms.yml
index d02f1ad274d..640ca7bb71a 100644
--- a/aio/tools/doc-linter/styles/proselint/GroupTerms.yml
+++ b/aio/tools/doc-linter/styles/proselint/GroupTerms.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Consider using '%s' instead of '%s'.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
swap:
(?:bunch|group|pack|flock) of chickens: brood of chickens
diff --git a/aio/tools/doc-linter/styles/proselint/Hedging.yml b/aio/tools/doc-linter/styles/proselint/Hedging.yml
index a8615f8bb28..d5d1eb27f1d 100644
--- a/aio/tools/doc-linter/styles/proselint/Hedging.yml
+++ b/aio/tools/doc-linter/styles/proselint/Hedging.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is hedging."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Hyperbole.yml b/aio/tools/doc-linter/styles/proselint/Hyperbole.yml
index 95a5a64b4ea..b8f947458d8 100644
--- a/aio/tools/doc-linter/styles/proselint/Hyperbole.yml
+++ b/aio/tools/doc-linter/styles/proselint/Hyperbole.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is hyperbolic."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
nonword: true
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Illusions.yml b/aio/tools/doc-linter/styles/proselint/Illusions.yml
index 8156e9d0a2b..3451249c662 100644
--- a/aio/tools/doc-linter/styles/proselint/Illusions.yml
+++ b/aio/tools/doc-linter/styles/proselint/Illusions.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' - There's a lexical illusion here."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
tokens:
- the\sthe
- am\sam
diff --git a/aio/tools/doc-linter/styles/proselint/Jargon.yml b/aio/tools/doc-linter/styles/proselint/Jargon.yml
index 2454a9c34e8..f42ad914f88 100644
--- a/aio/tools/doc-linter/styles/proselint/Jargon.yml
+++ b/aio/tools/doc-linter/styles/proselint/Jargon.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is jargon."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/LGBTOffensive.yml b/aio/tools/doc-linter/styles/proselint/LGBTOffensive.yml
index eaf5a84a1bd..324818075b3 100644
--- a/aio/tools/doc-linter/styles/proselint/LGBTOffensive.yml
+++ b/aio/tools/doc-linter/styles/proselint/LGBTOffensive.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is offensive. Remove it or consider the context."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
tokens:
- fag
diff --git a/aio/tools/doc-linter/styles/proselint/LGBTTerms.yml b/aio/tools/doc-linter/styles/proselint/LGBTTerms.yml
index f2a68e64dc9..fede83b0eb7 100644
--- a/aio/tools/doc-linter/styles/proselint/LGBTTerms.yml
+++ b/aio/tools/doc-linter/styles/proselint/LGBTTerms.yml
@@ -1,5 +1,6 @@
extends: substitution
message: "Consider using '%s' instead of '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
swap:
homosexual man: gay man
diff --git a/aio/tools/doc-linter/styles/proselint/Malapropisms.yml b/aio/tools/doc-linter/styles/proselint/Malapropisms.yml
index 96997787a82..04e7dd98afe 100644
--- a/aio/tools/doc-linter/styles/proselint/Malapropisms.yml
+++ b/aio/tools/doc-linter/styles/proselint/Malapropisms.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is a malapropism."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Needless.yml b/aio/tools/doc-linter/styles/proselint/Needless.yml
index 90a64abdd3d..931fd892b02 100644
--- a/aio/tools/doc-linter/styles/proselint/Needless.yml
+++ b/aio/tools/doc-linter/styles/proselint/Needless.yml
@@ -4,6 +4,7 @@
#
extends: substitution
message: Prefer '%s' over '%s'
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
swap:
'(?:cell phone|cell-phone)': cellphone
diff --git a/aio/tools/doc-linter/styles/proselint/Nonwords.yml b/aio/tools/doc-linter/styles/proselint/Nonwords.yml
index 71358245f63..5e7fe92b328 100644
--- a/aio/tools/doc-linter/styles/proselint/Nonwords.yml
+++ b/aio/tools/doc-linter/styles/proselint/Nonwords.yml
@@ -1,5 +1,6 @@
extends: substitution
message: "Consider using %s instead of '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
swap:
diff --git a/aio/tools/doc-linter/styles/proselint/Oxymorons.yml b/aio/tools/doc-linter/styles/proselint/Oxymorons.yml
index 25fd2aa5d66..b402a8d7bfc 100644
--- a/aio/tools/doc-linter/styles/proselint/Oxymorons.yml
+++ b/aio/tools/doc-linter/styles/proselint/Oxymorons.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is an oxymoron."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/P-Value.yml b/aio/tools/doc-linter/styles/proselint/P-Value.yml
index 82309386f6d..0b23b807649 100644
--- a/aio/tools/doc-linter/styles/proselint/P-Value.yml
+++ b/aio/tools/doc-linter/styles/proselint/P-Value.yml
@@ -1,5 +1,6 @@
extends: existence
message: "You should use more decimal places, unless '%s' is really true."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: suggestion
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/RASSyndrome.yml b/aio/tools/doc-linter/styles/proselint/RASSyndrome.yml
index e8d81750b3d..dbc27e74f0d 100644
--- a/aio/tools/doc-linter/styles/proselint/RASSyndrome.yml
+++ b/aio/tools/doc-linter/styles/proselint/RASSyndrome.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is redundant."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
tokens:
- ABM missile
diff --git a/aio/tools/doc-linter/styles/proselint/Skunked.yml b/aio/tools/doc-linter/styles/proselint/Skunked.yml
index 96a1f690ea5..e7c1c7285c1 100644
--- a/aio/tools/doc-linter/styles/proselint/Skunked.yml
+++ b/aio/tools/doc-linter/styles/proselint/Skunked.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is a bit of a skunked term — impossible to use without issue."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens:
diff --git a/aio/tools/doc-linter/styles/proselint/Spelling.yml b/aio/tools/doc-linter/styles/proselint/Spelling.yml
index d3c9be7b7e5..0c6db9e179b 100644
--- a/aio/tools/doc-linter/styles/proselint/Spelling.yml
+++ b/aio/tools/doc-linter/styles/proselint/Spelling.yml
@@ -1,5 +1,6 @@
extends: consistency
message: "Inconsistent spelling of '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
ignorecase: true
either:
diff --git a/aio/tools/doc-linter/styles/proselint/Typography.yml b/aio/tools/doc-linter/styles/proselint/Typography.yml
index 60283ebf01a..11899049492 100644
--- a/aio/tools/doc-linter/styles/proselint/Typography.yml
+++ b/aio/tools/doc-linter/styles/proselint/Typography.yml
@@ -1,5 +1,6 @@
extends: substitution
message: Consider using the '%s' symbol instead of '%s'.
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
level: error
nonword: true
swap:
diff --git a/aio/tools/doc-linter/styles/proselint/Uncomparables.yml b/aio/tools/doc-linter/styles/proselint/Uncomparables.yml
index 5bba006a1ab..d96494b884c 100644
--- a/aio/tools/doc-linter/styles/proselint/Uncomparables.yml
+++ b/aio/tools/doc-linter/styles/proselint/Uncomparables.yml
@@ -1,5 +1,6 @@
extends: existence
message: "'%s' is not comparable"
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
raw:
diff --git a/aio/tools/doc-linter/styles/proselint/Very.yml b/aio/tools/doc-linter/styles/proselint/Very.yml
index e4077f79228..89db25e89a1 100644
--- a/aio/tools/doc-linter/styles/proselint/Very.yml
+++ b/aio/tools/doc-linter/styles/proselint/Very.yml
@@ -1,5 +1,6 @@
extends: existence
message: "Remove '%s'."
+link: 'https://angular.io/guide/docs-lint-errors#proselint-messages'
ignorecase: true
level: error
tokens: