Repository: RasaHQ/rasa
Pull request: Typoci
**Proposed changes**:
- closes https://github.com/RasaHQ/rasa/issues/5720
- Add TypoCI configuration to check docs
- fix legitimate typos found

See https://github.com/melindaloubser1/rasa/pull/3 for behaviour on docs

Things learned about Typo CI:
- only checks changed lines, so in order to test what it will flag the above PR changed every line of the docs. 
- capitalization at the beginning of a word doesn't seem to matter, but mid-word capitalization does
- if one part of a camel cased or hyphenated word is flagged, you only need to add the offending part to the ignore words list to get past it
- For compound words with no boundary markers, you have to add the whole thing, even if all the parts of the word are already ignored.


**Status (please check what you already did)**:
- [ ] added some tests for the functionality
- [x] updated the documentation
- [ ] updated the changelog (please check [changelog](https://github.com/RasaHQ/rasa/tree/master/changelog) for instructions)
- [ ] reformat files using `black` (please check [Readme](https://github.com/RasaHQ/rasa#code-style) for instructions)


Problem statement:
Add TypoCI to PR workflow to check docs for typos
**Description of Problem**:
Typos get added to the docs occasionally

**Overview of the Solution**:
Add TypoCI to workflow for pull requests to catch typos. Add files & words that should be ignored (i.e. all files except docs, all false-positives).

**Definition of Done**:
- [ ] configuration for typo CI

Hints from issue discussion:

Commit message: typos

Patch to review:
diff --git a/.typo-ci.yml b/.typo-ci.yml
new file mode 100644
index 000000000000..e898f5468c4a
--- /dev/null
+++ b/.typo-ci.yml
@@ -0,0 +1,141 @@
+# This is a sample .typo-ci.yml file, it's used to configure how Typo CI will behave.
+# Add it to the root of your project and push it to github.
+---
+
+# What language dictionaries should it use? Currently Typo CI supports:
+# de
+# en
+# en_GB
+# es
+# fr
+# it
+# pt
+# pt_BR
+dictionaries:
+    - en
+    - en_GB
+
+# # Any files/folders we should ignore?
+excluded_files:
+    - "*.py"
+    - "*.css"
+    - "*.yml"
+    - "*.html"
+    - "*.json"
+    - "*.md"
+    - "CHANGELOG.rst"
+    - "CODE_OF_CONDUCT.md"
+    - "CONTRIBUTING.md"
+    - "Dockerfile"
+    - "LICENSE.txt"
+    - "Makefile"
+    - "NOTICE"
+    - "README.md"
+    - "binder"
+    - "changelog"
+    - "cloudbuild.yaml"
+    - "data"
+    - "docker"
+    - "examples"
+    - "poetry.lock"
+    - "pyproject.toml"
+    - "rasa"
+    - "rasa_core"
+    - "rasa_nlu"
+    - "scripts"
+    - "secrets.tar.enc"
+    - "setup.cfg"
+    - "tests"
+    - ".codeclimate.yml"
+    - ".coveragerc"
+    - ".deepsource.toml"
+    - ".dockerignore"
+    - ".env"
+    - ".git"
+    - ".gitattributes"
+    - ".github"
+    - ".gitignore"
+    - ".pre-commit-config.yaml"
+    - ".typo-ci.yml"    
+
+# # Any typos we should ignore?
+excluded_words:
+    - asyncio
+    - bot
+    - bot's
+    - cmdline
+    - conveRT
+    - ConveRTFeaturizer
+    - ConveRTTokenizer
+    - crfsuite
+    - custom-nlg-service
+    - daksh
+    - db's
+    - deque
+    - donath
+    - extractor
+    - fbmessenger
+    - featurization
+    - featurized
+    - featurizer
+    - featurizers
+    - featurizes
+    - featurizing
+    - forni
+    - instaclient
+    - jwt
+    - jwt's
+    - jupyter
+    - jupyterhub
+    - karpathy
+    - keras
+    - knowledgebase
+    - knowledgebasebot
+    - linenos
+    - luis
+    - matmul
+    - mattermost
+    - memoization
+    - miniconda
+    - mitie
+    - mitie's
+    - mongod
+    - mrkdown
+    - mrkdwn
+    - mymodelname
+    - myuser
+    - numpy
+    - networkx
+    - nlu
+    - nlu's
+    - perceptron
+    - pika
+    - pika's
+    - pretrained
+    - pycodestyle
+    - pykwalify
+    - pymessenger
+    - pyobject
+    - python-engineio
+    - quickstart
+    - rasa
+    - rasa's
+    - readthedocs
+    - rst
+    - sanic
+    - scipy
+    - sklearn
+    - spacy
+    - spaCy
+    - spaCy's
+    - strasse
+    - testagent
+    - tokenization
+    - tokenizer
+    - tokenizers
+    - typoci
+    - unfeaturized
+    - unschedule
+    - wsgi
+   ##
+spellcheck_filenames: false
\ No newline at end of file
diff --git a/docs/api/event-brokers.rst b/docs/api/event-brokers.rst
index 8c8bbe75ad3f..225378091328 100644
--- a/docs/api/event-brokers.rst
+++ b/docs/api/event-brokers.rst
@@ -160,7 +160,7 @@ The code below shows an example on how to instantiate a Kafka producer in you sc
     tracker_store = InMemoryTrackerStore(domain=domain, event_broker=kafka_broker)
 
 
-The host variable can be either a list of brokers adresses or a single one.
+The host variable can be either a list of brokers addresses or a single one.
 If only one broker address is available, the client will connect to it and
 request the cluster Metadata.
 Therefore, the remain brokers in the cluster can be discovered
@@ -199,7 +199,7 @@ previously configured in the broker server.
 
 
 If the clients or the brokers in the kafka cluster are located in different
-machines, it's important to use ssl protocal to assure encryption of data and client
+machines, it's important to use ssl protocol to assure encryption of data and client
 authentication. After generating valid certificates for the brokers and the
 clients, the path to the certificate and key generated for the producer must
 be provided as arguments, as well as the CA's root certificate.
diff --git a/docs/core/old-core-change-log.rst b/docs/core/old-core-change-log.rst
index bda2dc5a065f..2c90b16279c8 100644
--- a/docs/core/old-core-change-log.rst
+++ b/docs/core/old-core-change-log.rst
@@ -440,7 +440,7 @@ Added
 Fixed
 -----
 - don't fail if rasa and rest input channels are used together
-- wrong paramter name in rocketchat channel methods
+- wrong parameter name in rocketchat channel methods
 - Software 2.0 link on interactive learning documentation page went to
   Tesla's homepage, now it links to Karpathy blogpost
 
@@ -553,7 +553,7 @@ Added
   model metadata
 - more emoji support for PY2
 - intent confidence support in RegexInterpreter
-- added paramter to train script to pull training data from an url instead
+- added parameter to train script to pull training data from an url instead
   of a stories file
 - added new policy: :ref:`embedding_policy` implemented in tensorflow
 
diff --git a/docs/core/old-core-migration-guide.rst b/docs/core/old-core-migration-guide.rst
index fdb7f9cb530c..45dbca902e05 100644
--- a/docs/core/old-core-migration-guide.rst
+++ b/docs/core/old-core-migration-guide.rst
@@ -35,7 +35,7 @@ General
 
 Asynchronous First
 ~~~~~~~~~~~~~~~~~~
-- **No more flask.** The flask webserver has been replaced with an asyncronous
+- **No more flask.** The flask webserver has been replaced with an asynchronous
   webserver called Sanic. If you run the server in production using a wsgi
   runner, there are instructions here on how to recreate that with the
   sanic webserver:
diff --git a/docs/dialogue-elements/guiding-users.rst b/docs/dialogue-elements/guiding-users.rst
index 473464cb33c1..06b0c7c4b78b 100644
--- a/docs/dialogue-elements/guiding-users.rst
+++ b/docs/dialogue-elements/guiding-users.rst
@@ -115,7 +115,7 @@ Storing this feedback is a powerful way to figure out how you can improve your a
      -
        - ( Was that helpful?
        - no.
-       - ( Thanks. Why wasnt I able to help?
+       - ( Thanks. Why wasn't I able to help?
        - ^ you didn't understand me correctly
        - ^ you understood me, but your answers weren't very helpful.
 


Code review comments:
diff_hunk: @@ -0,0 +1,141 @@
+# This is a sample .typo-ci.yml file, it's used to configure how Typo CI will behave.
+# Add it to the root of your project and push it to github.
+---
+
+# What language dictionaries should it use? Currently Typo CI supports:
+# de
+# en
+# en_GB
+# es
+# fr
+# it
+# pt
+# pt_BR
+dictionaries:
+    - en
+    - en_GB
path: .typo-ci.yml
text: @user1:
are we sure it should be both en and en_GB? should probably just be one of the two across the docs

@author:
that's fair I'll switch it on the test pr and see what happens

@author:
I guess we should be consistent with our blog? So US english. Quite a few british spelling changes then need to happen, which is fine if everyone realizes that