Detect typos in Markdown documents (2nd attempt) (#9347)

* Fix documentation's typos

Signed-off-by: Victor Morales <v.morales@samsung.com>

* Add Spell checker CI action

Signed-off-by: Victor Morales <v.morales@samsung.com>
diff --git a/.github/.wordlist.txt b/.github/.wordlist.txt
new file mode 100644
index 0000000..14e55e7
--- /dev/null
+++ b/.github/.wordlist.txt
@@ -0,0 +1,982 @@
+AAAA
+aabbccddeeff
+aarch
+abcdef
+abfb
+ABI
+ABIs
+ables
+accessor
+AccountLogin
+acdbc
+ACKed
+ACL
+AdapterAddress
+AdapterName
+adb
+addr
+AddThreadNetwork
+AddWiFiNetwork
+adk
+adoc
+AdvAutonomous
+AdvManagedFlag
+AdvOnLink
+AdvRouterAddr
+AdvSendAdvert
+AE
+aef
+algs
+alloc
+APIs
+apk
+AppConfig
+ApplicationBasic
+ApplicationLauncher
+approver
+aps
+arg
+argc
+args
+argv
+armeabi
+armv
+ASYNC
+att
+attId
+attrListName
+attrMask
+attSizeBytes
+attType
+AudioOutput
+auth
+autoconnect
+autocrlf
+autogenerated
+automake
+autotools
+AwaitNextAction
+AXXXF
+babaf
+backend
+backticks
+backtrace
+BarrierControl
+BasicCHIPRegression
+baudrate
+BD
+BDX
+BeagleBone
+befc
+bitbake
+bld
+ble
+BLE
+BleApplicationDelegate
+BleLayer
+BLEManager
+BLEManagerImpl
+BlePlatformDelegate
+Blinls
+bloaty
+blocklist
+blockquote
+bluetoothd
+bluez
+bootable
+Bootloader
+BorderRouterAP
+BRD
+breakpoint
+bredr
+BridgedDeviceBasic
+bridgedLightEndpoint
+bringup
+bt
+btmgmt
+BTN
+BTP
+btvirt
+buildwithmatter
+burndown
+BytesMain
+bz
+bzip
+CACACACA
+cacerts
+CAfile
+cancelled
+CBB
+cbd
+CCMP
+CCS
+CCSTUDIO
+CCXML
+ced
+cfg
+CFLAGS
+cgit
+cgroup
+changeset
+characterised
+CharString
+ChipBLEMgr
+CHIPCirqueTest
+CHIPCryptoPALHsm
+CHIPDeviceController
+ChipDeviceCtrl
+CHIPDeviceEvent
+CHIPDevicePlatformEvent
+ChipEchoRequester
+ChipEchoResponder
+ChipImInitiator
+ChipImResponder
+ChipLight
+ChipMessageLayer
+CHIPTool
+chmod
+chrpath
+CircleCI
+cJTAG
+CKIT
+CLA
+clapre
+CLI
+cloudbuild
+CLRF
+clusterAttrs
+clusterId
+clusterList
+clusterListName
+ClusterRevision
+ClusterTestGeneration
+cmake
+CMSIS
+CMVH
+cn
+codeaurora
+codebase
+CodeLab
+codelabs
+ColorControl
+Comcast
+Commandline
+Commissionable
+CommissioningFlow
+commondatastorage
+CONF
+CONFIG
+ConfigDescription
+configTOTAL
+ConfigurationManager
+ConfigurationManagerImpl
+connectedhomeip
+ConnectionData
+ConnectIP
+ConnectivityManager
+ConnectivityManagerImpl
+connstring
+conntype
+const
+ContentLaunch
+ContentLauncher
+contrib
+controllee
+conv
+cortexa
+cp
+cpio
+cpp
+cppreference
+cpuapp
+cpython
+crypto
+cryptographic
+csu
+csv
+ctl
+ctrl
+ctypes
+CurrentHue
+CurrentLevel
+CurrentSaturation
+customizations
+cxx
+CY
+DAC
+DAP
+DataFrame
+dataset
+datasets
+dbf
+dBm
+DBUILD
+dbus
+dcc
+DCHIP
+DCMAKE
+DCONFIG
+debianutils
+DEDEDEDE
+DelayedActionTime
+demangle
+deployable
+deps
+desc
+descheduled
+dev
+devcontainer
+devCtrl
+DeviceCaCerts
+DeviceCert
+DeviceCommissioner
+DeviceCommon
+DeviceController
+DeviceId
+DeviceLayer
+DeviceNetworkProvisioningDelegate
+DeviceNetworkProvisioningDelegateImpl
+DevicePairingDelegate
+DevKitC
+DevKitM
+df
+dfu
+DHCP
+DHCPv
+dhrishi
+dialout
+diffstat
+diffsyms
+dimmable
+dirs
+disambiguated
+discoverable
+DispatchEvent
+DispatchEventToApplication
+DISTRO
+Distutils
+DK
+DL
+DNS
+Dnsmasq
+dnsmasqd
+DNSStubListener
+Dockerfile
+Dockerfiles
+Don'ts
+DoorLock
+DOTBR
+DOVERLAY
+downcasting
+Doxygen
+dpkg
+dryrun
+DS
+duplicative
+DV
+dynload
+eabi
+EB
+ECC
+ECD
+EchoRequests
+EchoResponse
+EchoService
+edaf
+edc
+EDR
+ee
+EEE
+eef
+ef
+efr
+EFR
+eg
+EjQ
+elftools
+elock
+emberAfExternalAttributeReadCallback
+emberAfExternalAttributeWriteCallback
+EnableNetwork
+EnableWiFiNetwork
+EndpointId
+endpointName
+eno
+entrypoint
+env
+esd
+ESPPORT
+Espressif
+eth
+EthernetNetworkDiagnostics
+ethernets
+EvalCode
+EvalCodeWithName
+EvalFrameDefault
+evk
+exceptfds
+ExchangeContext
+exe
+ExecStart
+executables
+ExtendedPAN
+extern
+extpanid
+FabricId
+factoryreset
+fb
+fbb
+fbd
+FC
+FDDE
+fddead
+fde
+FECA
+feff
+ffaa
+ffeebaefa
+FFF
+fffe
+fffff
+Fi
+filepath
+fini
+FixedLabel
+flashdebug
+focusable
+forkpty
+formatOnSave
+fota
+FOTA
+FreeRTOS
+FreeRTOSConfig
+fsl
+fsync
+gcloud
+GDB
+GeneralCommissioning
+GeneralDiagnostics
+GenericConfigurationManagerImpl
+GenericConnectivityManagerImpl
+GenericImpl
+GenericPlatformManagerImpl
+GenericThreadConfigurationManagerImpl
+GenericThreadStackManagerImpl
+GenericWiFiConfigurationManagerImpl
+GetDeviceId
+GetDeviceInfo
+GetDns
+GetIP
+getstarted
+gitignore
+glibc
+gn
+GND
+gni
+GNinja
+gnuarmemb
+GNUARMEMB
+googleapis
+googlesource
+GPG
+GPIO
+GPL
+GPLv
+Gradle
+gradlew
+GroupId
+GroupKeyManagement
+gtk
+Gv
+hardcoded
+hardknott
+HardwareVersion
+HardwareVersionString
+hci
+hciattach
+hciconfig
+hdlc
+HKDF
+hoc
+hostapd
+hostname
+href
+HTTPS
+HW
+iaszone
+ICA
+ICMP
+IDF
+idx
+ifdef
+ifdefs
+IGMP
+ihex
+im
+IM
+imager
+imagetool
+img
+Impl
+ImplClass
+implementers
+imx
+indexhtml
+Inet
+InetLayer
+Infineon
+ini
+init
+inlined
+instantiation
+integrations
+IntelliSense
+InteractionModelVersion
+Interation
+Interoperable
+introvideos
+InvokeCommandRequests
+InvokeCommandResponse
+IoT
+ipaddr
+ipp
+iptables
+iputils
+IPv
+ISCAN
+itemName
+iterable
+jinja
+jlink
+JLink
+JLinkExe
+JLinkRTTClient
+JN
+jpg
+js
+json
+JTAG
+KA
+Kconfig
+KeypadInput
+KitProg
+kNodeIdNotSpecified
+knownissues
+KVS
+LabelList
+LAUNCHXL
+ldflags
+LEDs
+LevelControl
+LF
+libavahi
+libc
+libcairo
+libCHIP
+libdbus
+LIBDIR
+libegl
+libffi
+libgirepository
+libglib
+libical
+libncurses
+libreadline
+libsdl
+libssl
+libstdc
+libthread
+libtool
+libTransportLayer
+libudev
+libwebkitgtk
+lifecycle
+lightbulb
+lightin
+LinkSoftwareAndDocumentationPack
+LocalConfigDisabled
+localhost
+localstatedir
+loopback
+LowPower
+LPC
+LTE
+LTS
+LwIP
+LwIP's
+macaddr
+machineType
+MacOS
+MacOSX
+MacPorts
+Makefile
+makefiles
+MakeTpCall
+mandir
+ManualPairingCode
+ManualTest
+ManufacturingDate
+masterkey
+matterc
+matterd
+MatterLock
+MaxInterval
+MaxRtrAdvInterval
+mbedTLS
+mcu
+MCUboot
+mcumgr
+MCUs
+mcux
+MCUXpresso
+mdash
+MDNS
+MediaInput
+MediaPlayback
+mem
+memdf
+MemMonitoring
+menuconfig
+MeshCoP
+MfgDeviceCaCerts
+MfgSpecificPing
+mfrcacerts
+mfrcert
+MfrDeviceCert
+MfrDeviceId
+mgmt
+microcontroller
+MicroSD
+middleware
+Minicom
+MinInterval
+MinRtrAdvInterval
+mkdir
+mlan
+MLD
+mmevk
+moal
+modprobe
+Modustoolbox
+moveMode
+MoveToHue
+MoveToLevel
+MoveToSaturation
+MoveWithOnOff
+MPSL
+MRP
+MTU
+Multiband
+Multicast
+multilib
+Multiprotocol
+MX
+mydir
+MyPASSWORD
+MySSID
+nano
+natively
+navpad
+ncs
+nding
+NDK
+netif
+netplan
+NetworkCommissioning
+networkID
+networkname
+NewUDPEndPoint
+nfds
+nl
+NLUnitTest
+NLUnitTests
+NodeId
+nongnu
+nordicsemi
+NotAvailable
+nRF
+nrfconnect
+nrfdks
+nrfutil
+nrfxlib
+NTAG
+NUM
+nwk
+NXP
+objcopy
+OccupancySensing
+OctetString
+OECORE
+ol
+Onboarding
+onboardingcodes
+oneshot
+onnetwork
+OnOff
+OnOffClusterTest
+OnPlatformEvent
+OO
+OpenSSL
+OpenThread
+OpenThreadDemo
+openweave
+OperationalCredentials
+operationalDataset
+opkg
+optionMask
+optionOverride
+optionsMask
+optionsOverride
+orgs
+OTA
+OTBR
+otcli
+PAA
+PacketBuffer
+PAI
+PairDevice
+PAKE
+param
+params
+PartNumber
+PASE
+Passcode
+PBKDF
+pbuf
+pbufs
+PCA
+pcaps
+PDFs
+PDK
+peerAddrStr
+pem
+percentageLiftValue
+pexpect
+PID
+Pigweed
+PinCode
+pkgconfig
+PlatformManager
+PlatformManagerImpl
+plt
+png
+polymorphism
+POSIX
+PosixConfig
+postAttributeChangeCallback
+pre
+preprocessor
+Presetup
+prj
+ProductID
+ProductLabel
+ProductName
+productrev
+ProductRevision
+ProductURL
+proto
+protos
+Prover
+PRs
+PSCAN
+PSK
+PTR
+pts
+PumpConfigurationAndControl
+pwd
+PXXXF
+py
+pychip
+pycrypto
+pycryptodome
+PyEval
+PyFunction
+pylint
+PyObject
+PyRun
+QEMU
+Qorvo
+QPG
+QRCode
+qrcodetool
+QRCodeUrl
+QSPI
+QueryImage
+qvCHIP
+RADVD
+raspberryPi
+RasPi
+RCP
+ReadConfigValue
+readelf
+readfds
+README
+Reag
+rebase
+recommand
+recommanded
+recurse
+regen
+RelativeHumidityMeasurement
+RemainAfterExit
+remoteDeviceId
+Rendez
+RendezvousInformation
+RendezvousParameters
+RendezVousTest
+repo
+req
+Requestor
+responder
+reusability
+rfid
+rfids
+RGB
+riscv
+rloc
+rmw
+Rollershade
+rootfs
+RPC
+RPCs
+RPi
+rsn
+RSSI
+rtld
+RTOS
+RTT
+RUNAS
+RunMain
+runtime
+rw
+sbin
+scalability
+scalable
+scm
+sco
+scp
+ScriptBinding
+SDC
+SDHC
+SDK
+SDK's
+SDKs
+SDKTARGETSYSROOT
+sdl
+segger
+SEGGER
+semver
+sendto
+SERIALDEVICE
+SerialNumber
+ServiceId
+SetDns
+SetUpPINCode
+SetupQRCode
+sexualized
+SIGINT
+SiLabs
+SiliconLabs
+SimpleFileExFlags
+SimpleLink
+sl
+SLAAC
+SLTB
+SLWSTK
+SmartThings
+SMP
+socat
+socio
+softap
+SoftDevice
+softmmu
+SoftwareDiagnostics
+SoftwareVersion
+SoftwareVersionString
+spinel
+src
+SRP
+SRV
+SSID
+startoffset
+StartScan
+stderr
+stdout
+str
+strcpy
+su
+Subclassing
+subcommand
+subcommands
+subdirectories
+subdirectory
+submodule
+submodules
+subprocess
+sudo
+svg
+SVR
+SWD
+sysconfdir
+SysConfig
+sysctl
+sysdeps
+sysroot
+SYSROOT
+systemctl
+systemd
+systemdsystemunitdir
+systemduserunitdir
+sysv
+TargetNavigator
+TBD
+TCP
+teardown
+Telink
+TemperatureMeasurement
+TestArray
+TestCluster
+TestEmptyString
+TestMultiRead
+TESTPASSWD
+TESTSSID
+TestString
+TestStruct
+TestThreadStackMgr
+TestUint
+TestUpdateValue
+testws
+texinfo
+textboxes
+TFT
+ThreadStackManager
+ThreadStackManagerImpl
+Thunderboard
+timeoutMs
+TKIP
+tlsr
+TLV
+tmp
+tngvndl
+TODO
+toolchain
+toolchains
+topologies
+totalTests
+trackAlloc
+trackFree
+transitionTime
+TransportMgrBase
+TrustedRootCertificates
+TSG
+tsv
+tty
+ttyACM
+ttyACMx
+ttymxc
+ttyUSB
+TvChannel
+txt
+uart
+UART
+UDP
+UDPEndPoint
+ug
+ui
+uint
+unblur
+UNBLUR
+uncommissioned
+unfocus
+Unicast
+UniFlash
+unpair
+unprovisioned
+untrusted
+UpdateTokens
+upstreamed
+URI
+usbmodem
+USBtoUART
+uscif
+USERINTERFACE
+UserLabel
+usermod
+usr
+util
+utils
+UUID
+VCP
+Vectorcall
+VendorID
+VendorName
+vendorpayload
+venv
+Verifier
+VID
+visualstudio
+vlatest
+VLEDs
+vnc
+vous
+VSC
+VSCode
+WakeOnLan
+WantedBy
+webpage
+wget
+whde
+whitespace
+whitespaces
+whl
+wic
+WindowCovering
+WindowCoveringGoToLiftPercentage
+wlan
+wmm
+WPA
+wpan
+wra
+writefds
+wrover
+WS
+WSL
+WSTK
+xab
+xaver
+xbef
+xcd
+Xcode
+xd
+xds
+xdsdfu
+xef
+xF
+xFFFF
+xfffff
+xffffffffe
+xfffffffff
+xtensa
+xwayland
+XXXX
+XXXXXXXX
+xyz
+xz
+yaml
+yearday
+yml
+YNJV
+Yocto
+yoctoproject
+YourFolder
+zapt
+zaptool
+ZCL
+zclconfigure
+zclread
+zclwrite
+ZephyrConfig
+zephyrproject
+Zigbee
+zigbeealliance
+zigbeethread
diff --git a/.github/workflows/spell.yml b/.github/workflows/spell.yml
new file mode 100644
index 0000000..e2d07a4
--- /dev/null
+++ b/.github/workflows/spell.yml
@@ -0,0 +1,39 @@
+# Copyright (c) 2020-2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Run misspell
+
+on:
+    push:
+        paths:
+            - '**.md'
+            - '!.github/*'
+    pull_request:
+        paths:
+            - '**.md'
+            - '!.github/*'
+
+jobs:
+    check-reviewdog:
+        runs-on: ubuntu-latest
+        steps:
+            - uses: actions/checkout@v2
+            - uses: reviewdog/action-misspell@v1
+              with:
+                  github_token: ${{ secrets.GITHUB_TOKEN }}
+    check-spellcheck:
+        runs-on: ubuntu-latest
+        steps:
+            - uses: actions/checkout@v2
+            - uses: igsekor/pyspelling-any@v0.0.2
diff --git a/.spellcheck.yml b/.spellcheck.yml
new file mode 100644
index 0000000..a6c5641
--- /dev/null
+++ b/.spellcheck.yml
@@ -0,0 +1,25 @@
+# Copyright (c) 2020-2021 Project CHIP Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+matrix:
+  - name: markdown
+    dictionary:
+      wordlists:
+        - .github/.wordlist.txt
+    pipeline:
+      - pyspelling.filters.markdown:
+    sources:
+      - '**/*.md|!third_party/**|!examples/common/**/repo/**'
+    aspell:
+      ignore-case: true
diff --git a/docs/VSCODE_DEVELOPMENT.md b/docs/VSCODE_DEVELOPMENT.md
index 1f7463d..8e10475 100644
--- a/docs/VSCODE_DEVELOPMENT.md
+++ b/docs/VSCODE_DEVELOPMENT.md
@@ -85,7 +85,7 @@
 
 Developers are encouraged to add tasks to the
 [launch json](../.vscode/launch.json) over time to make sure everyone is using
-the same base debuging setup.
+the same base debugging setup.
 
 ## Submitting a Pull Request - Practical Advice
 
diff --git a/docs/discussion/lwip_ipv6.md b/docs/discussion/lwip_ipv6.md
index 04fcec4..bbfc92d 100644
--- a/docs/discussion/lwip_ipv6.md
+++ b/docs/discussion/lwip_ipv6.md
@@ -118,7 +118,7 @@
 
 ## DNS
 
-LwIP’s DNS handling isn’t great and breaks down when the router supports
+LwIP's DNS handling isn’t great and breaks down when the router supports
 IPv4/IPv6. There is a single list of DNS servers, DHCP, SLAAC and DHCPv6 all
 update the list without locks. Basically, whatever wrote to the list last gets
 to set the list. Although there is handling for IP type (requesting A or AAAA
diff --git a/docs/guides/nrfconnect_examples_configuration.md b/docs/guides/nrfconnect_examples_configuration.md
index cf544fb..f51250e 100644
--- a/docs/guides/nrfconnect_examples_configuration.md
+++ b/docs/guides/nrfconnect_examples_configuration.md
@@ -107,7 +107,7 @@
 
 The application configuration is specified using Kconfig configuration files
 (`*.conf`), where available Kconfig options can be used and their default values
-overrided. Typically, there are many files having impact on the final
+overridden. Typically, there are many files having impact on the final
 configuration shape.
 
 There is no need to modify all these files separately. See the following list
diff --git a/docs/guides/nxp_k32w_android_commissioning.md b/docs/guides/nxp_k32w_android_commissioning.md
index 4d7b723..bdeb564 100644
--- a/docs/guides/nxp_k32w_android_commissioning.md
+++ b/docs/guides/nxp_k32w_android_commissioning.md
@@ -27,7 +27,7 @@
 
 The commissioning process is composed of the following main stages:
 
--   K32W061 (CHIP accessory) device is put in BLE advertisment mode by pressing
+-   K32W061 (CHIP accessory) device is put in BLE advertisement mode by pressing
     the USERINTERFACE button;
 -   CHIPTool discovers the CHIP accessory over BLE;
 -   CHIPTool establishes a secure channel with the accessory using a SPAKE2+
@@ -182,7 +182,7 @@
 
     -   On System startup, dnsmasq will not wait for wlan0 interface to
         initialize and will fail. We need to tell systemd to launch it after
-        networks get ready, so we will modify dnsmasq service file by specifing
+        networks get ready, so we will modify dnsmasq service file by specifying
         the initialization order under the _After=_ and _Wants=_ sections:
 
               $ sudo vim /lib/systemd/system/dnsmasq.service
diff --git a/docs/guides/python_chip_controller_advanced_usage.md b/docs/guides/python_chip_controller_advanced_usage.md
index 8459677..8a324b1 100644
--- a/docs/guides/python_chip_controller_advanced_usage.md
+++ b/docs/guides/python_chip_controller_advanced_usage.md
@@ -110,7 +110,7 @@
 ```
 
 The Python will create lots of threads due to main loop, so you may want to
-supress thread related outputs first by running the following command:
+suppress thread related outputs first by running the following command:
 
 ```
 (gdb) set print thread-events off
@@ -247,4 +247,4 @@
 ```
 
 The frame #0 and frame #1 are the function frames in the CHIP C++ library, the
-other frames live in the Python intepreter so you can ignore it.
+other frames live in the Python interpreter so you can ignore it.
diff --git a/docs/guides/python_chip_controller_building.md b/docs/guides/python_chip_controller_building.md
index d52e8f7..032b729 100644
--- a/docs/guides/python_chip_controller_building.md
+++ b/docs/guides/python_chip_controller_building.md
@@ -223,7 +223,7 @@
         Done
         ```
 
-    Matter specifiction does not define how the Thread or Wi-Fi credentials are
+    Matter specification does not define how the Thread or Wi-Fi credentials are
     obtained by Controller. For example, for Thread, instead of fetching
     datasets directly from the Thread Border Router, you might also use a
     different out-of-band method.
@@ -248,7 +248,7 @@
 #### Commissioning a Wi-Fi device
 
 1. Assuming your Wi-Fi SSID is _TESTSSID_, and your Wi-Fi password is
-   _P455W4RD_, inject the credentials to the device by excuting the following
+   _P455W4RD_, inject the credentials to the device by executing the following
    command:
 
     ```
@@ -396,7 +396,7 @@
 
 ### `close-session <nodeid>`
 
-If case there eixsts an open session (PASE or CASE) to the device with a given
+If case there exists an open session (PASE or CASE) to the device with a given
 Node ID, mark it as expired.
 
 ### `discover`
@@ -470,7 +470,7 @@
 For any integer and char string (null terminated) types, just use `key=value`,
 for example: `rate=2`, `string=123`, `string_2="123 456"`
 
-For byte string type, use `key=encoding:value`, currectly, we support `str` and
+For byte string type, use `key=encoding:value`, currently, we support `str` and
 `hex` encoding, the `str` encoding will encode a NULL terminated string. For
 example, `networkId=hex:0123456789abcdef` (for
 `[0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]`), `ssid=str:Test` (for
diff --git a/examples/all-clusters-app/esp32/README.md b/examples/all-clusters-app/esp32/README.md
index 32cc78b..b9f730a 100644
--- a/examples/all-clusters-app/esp32/README.md
+++ b/examples/all-clusters-app/esp32/README.md
@@ -224,7 +224,7 @@
 
     `chip-device-ctrl > zcl LevelControl MoveToLevel 135246 1 1 level=10 transitionTime=0 optionMask=0 optionOverride=0`
 
--   For ESP32C3-DevKitM, use the ColorContorl cluster commands to control the
+-   For ESP32C3-DevKitM, use the ColorControl cluster commands to control the
     CurrentHue and CurrentSaturation attribute. This allows you to control the
     color of on-board LED.
 
diff --git a/examples/chip-tool/README.md b/examples/chip-tool/README.md
index e68ee54..3071b86 100644
--- a/examples/chip-tool/README.md
+++ b/examples/chip-tool/README.md
@@ -64,7 +64,7 @@
 
 -   ssid is the Wi-Fi SSID either as a string, or in the form hex:XXXXXXXX where
     the bytes of the SSID are encoded as two-digit hex numbers.
--   paswword is the Wi-Fi password, again either as a string or as hex data
+-   password is the Wi-Fi password, again either as a string or as hex data
 -   The 0 is the fabric id, until more complete support for multiple fabrics is
     implemented in our commissioning process.
 
diff --git a/examples/lighting-app/efr32/README.md b/examples/lighting-app/efr32/README.md
index 6f689e0..6be09ad 100644
--- a/examples/lighting-app/efr32/README.md
+++ b/examples/lighting-app/efr32/README.md
@@ -221,7 +221,7 @@
 
         -   _Press and Release_ : Start, or restart, BLE advertisement in fast mode. It will advertise in this mode
             for 30 seconds. The device will then switch to a slower interval advertisement.
-            After 15 minutes, the adverstiment stops.
+            After 15 minutes, the advertisement stops.
 
         -   _Pressed and hold for 6 s_ : Initiates the factory reset of the device.
             Releasing the button within the 6-second window cancels the factory reset
@@ -280,7 +280,7 @@
 -   To use the chip-rpc console after it has been installed run:
     `python3 -m chip_rpc.console --device /dev/tty.<SERIALDEVICE> -b 115200 -o /<YourFolder>/pw_log.out`
 
--   Then you can simulate a button press or realease using the following command
+-   Then you can simulate a button press or release using the following command
     where : idx = 0 or 1 for Button PB0 or PB1 action = 0 for PRESSED, 1 for
     RELEASE Test toggling the LED with
     `rpcs.chip.rpc.Button.Event(idx=1, pushed=True)`
diff --git a/examples/lighting-app/nxp/linux-imx/imx8m/README.md b/examples/lighting-app/nxp/linux-imx/imx8m/README.md
index 479b966..cfad744 100644
--- a/examples/lighting-app/nxp/linux-imx/imx8m/README.md
+++ b/examples/lighting-app/nxp/linux-imx/imx8m/README.md
@@ -155,7 +155,7 @@
 -   Prerequisites
 
     By following the [Building](#building) section of this document, the Yocto
-    image is cross-compiled and programed to a microSD card.
+    image is cross-compiled and programmed to a microSD card.
 
     Follow the steps below to setup the environment needed to run the example on
     the i.MX 8M Mini EVK:
diff --git a/examples/lighting-app/telink/Readme.md b/examples/lighting-app/telink/Readme.md
index a77fde9..ac578d7 100644
--- a/examples/lighting-app/telink/Readme.md
+++ b/examples/lighting-app/telink/Readme.md
@@ -15,7 +15,7 @@
     ```
 
     here `${CHIP_BASE}` is directory which contains CHIP repo files **!!!Pay
-    attention that OUTPUT_DIR should conatins ABSOLUTE path to output dir**
+    attention that OUTPUT_DIR should contains ABSOLUTE path to output dir**
 
 1. Bootstrap the build environment:
 
@@ -79,7 +79,7 @@
 
 ### Setup IPv6
 
-Pay attention that border router shoud be configured as IPv6 access point.
+Pay attention that border router should be configured as IPv6 access point.
 
 1. To do so perform the following command:
     ```
@@ -94,7 +94,7 @@
 ### Config network
 
 Use [Web GUI](https://openthread.io/guides/border-router/web-gui) to config
-Thread network **tlsr9518adk80d** board supports only static comissioning with
+Thread network **tlsr9518adk80d** board supports only static commissioning with
 predefined Thread credentials shown in table below:
 
 | Item                   |              Value               |
@@ -123,11 +123,11 @@
 
 The following buttons are available on **tlsr9518adk80d** board:
 
-| Name     | Function         | Description                                                                                           |
-| :------- | :--------------- | :---------------------------------------------------------------------------------------------------- |
-| Button 1 | Factory reset    | Perform factory reset to forget currently commissioned Thread network and back to uncommisioned state |
-| Button 2 | Lighting control | Manually triggers the lighting state                                                                  |
-| Button 3 | Thread start     | Comission thread with static credentials and enables the Thread on device                             |
+| Name     | Function         | Description                                                                                            |
+| :------- | :--------------- | :----------------------------------------------------------------------------------------------------- |
+| Button 1 | Factory reset    | Perform factory reset to forget currently commissioned Thread network and back to uncommissioned state |
+| Button 2 | Lighting control | Manually triggers the lighting state                                                                   |
+| Button 3 | Thread start     | Commission thread with static credentials and enables the Thread on device                             |
 
 ### LEDs
 
@@ -136,7 +136,7 @@
 
 | State                       | Description                                                                  |
 | :-------------------------- | :--------------------------------------------------------------------------- |
-| Blinks with short pulses    | Device is not commisioned to Thread, Thred is disabled                       |
+| Blinks with short pulses    | Device is not commissioned to Thread, Thread is disabled                     |
 | Blinls with frequent pulses | Device is commissioned, Thread enabled. Device trying to JOIN thread network |
 | Blinks with whde pulses     | Device commissioned and joined to thread network as CHILD                    |
 
@@ -147,7 +147,7 @@
 1. With your client device (PC, Laptop etc.) connect to BorderRouterAP WiFi
 2. Press Button 3 on **tlsr9518adk80d** board and wait till it joins to Thread
    network
-3. Find ajusted IPv6 address in UART output of **tlsr9518adk80d**
+3. Find adjusted IPv6 address in UART output of **tlsr9518adk80d**
 4. Perform following command on your client device:
     ```
     ping -6 ${IP_ADDRESS_OF_CHIP_DEVICE}
diff --git a/examples/lock-app/cc13x2x7_26x2x7/README.md b/examples/lock-app/cc13x2x7_26x2x7/README.md
index 8d0a975..857dc6b 100644
--- a/examples/lock-app/cc13x2x7_26x2x7/README.md
+++ b/examples/lock-app/cc13x2x7_26x2x7/README.md
@@ -265,7 +265,7 @@
 
 #### Bluetooth LE Rendezvous
 
-To commission and control this application wtihin a CHIP-eanbled Thread network,
+To commission and control this application within a CHIP-enabled Thread network,
 consult the [CHIPTool README](../../../src/android/CHIPTool/README.md) for
 information on the Android smartphone application. Reference the Device
 Configuration information printed in the Logging Output of this application.
diff --git a/examples/lock-app/efr32/README.md b/examples/lock-app/efr32/README.md
index 8018eb0..abb69a2 100644
--- a/examples/lock-app/efr32/README.md
+++ b/examples/lock-app/efr32/README.md
@@ -210,7 +210,7 @@
 
         -   _Press and Release_ : Start, or restart, BLE advertisement in fast mode. It will advertise in this mode
             for 30 seconds. The device will then switch to a slower interval advertisement.
-            After 15 minutes, the adverstiment stops.
+            After 15 minutes, the advertisement stops.
 
         -   _Pressed and hold for 6 s_ : Initiates the factory reset of the device.
             Releasing the button within the 6-second window cancels the factory reset
diff --git a/examples/lock-app/k32w/README.md b/examples/lock-app/k32w/README.md
index 67bb30d..fffceab 100644
--- a/examples/lock-app/k32w/README.md
+++ b/examples/lock-app/k32w/README.md
@@ -256,7 +256,7 @@
 ![POWER_VIEW](../../platform/k32w/doc/images/power_view.JPG)
 
 Please note that that the Power Measurement Tool is not very accurate and
-professional tools must be used if exact power consumption needs to be kwnown.
+professional tools must be used if exact power consumption needs to be known.
 
 ## Known issues
 
diff --git a/examples/minimal-mdns/README.md b/examples/minimal-mdns/README.md
index c728d40..8e781f8 100644
--- a/examples/minimal-mdns/README.md
+++ b/examples/minimal-mdns/README.md
@@ -85,7 +85,7 @@
 
 ### Advertising to test client listings
 
-#### Simulated uncommisioned node
+#### Simulated uncommissioned node
 
 ```sh
 dns-sd -R DD200C20D25AE5F7 _matterc._udp,S52,L840,V123 . 11111 D=840 VP=123+456
@@ -99,11 +99,11 @@
 L840._sub._matterc._udp.local.         PTR   DD200C20D25AE5F7._matterc._udp.local.
 V123._sub._matterc._udp.local.         PTR   DD200C20D25AE5F7._matterc._udp.local.
 DD200C20D25AE5F7._matterc._udp.local.  TXT   "D=840" "VP=123+456"
-DD200C20D25AE5F7._mattterc._udp.local.  SRV   0 0 11111 B75AFB458ECD.local.
+DD200C20D25AE5F7._matterc._udp.local.  SRV   0 0 11111 B75AFB458ECD.local.
 B75AFB458ECD.local.                  AAAA  ba2a:b311:742e:b44c:f515:576f:9783:3f30
 ```
 
-#### Simulated commisioning node
+#### Simulated commissioning node
 
 ```sh
 dns-sd -R DD200C20D25AE5F7 _matterd._udp,S52,L840,V123 . 11111 D=840 VP=123+456 PH=3
@@ -121,7 +121,7 @@
 B75AFB458ECD.local.                    AAAA  ba2a:b311:742e:b44c:f515:576f:9783:3f30
 ```
 
-#### Simulated commisioned node
+#### Simulated commissioned node
 
 ```sh
 dns-sd -R 2906C908D115D362-8FC7772401CD0696 _matter._tcp . 22222
@@ -132,15 +132,15 @@
 Nodes:
 
 ```sh
-dns-sd -B _matterc._udp         # Nodes awaiting commisioning
-dns-sd -B _matterc._udp,S52     # Nodes awaiting commisioning with short discriminator 52
-dns-sd -B _matterc._udp,L840    # Nodes awaiting commisioning with long discriminator 840
-dns-sd -B _matterc._udp,V123    # Nodes awaiting commisioning with vendor id 123
+dns-sd -B _matterc._udp         # Nodes awaiting commissioning
+dns-sd -B _matterc._udp,S52     # Nodes awaiting commissioning with short discriminator 52
+dns-sd -B _matterc._udp,L840    # Nodes awaiting commissioning with long discriminator 840
+dns-sd -B _matterc._udp,V123    # Nodes awaiting commissioning with vendor id 123
 
-dns-sd -B _matterd._udp         # Commisionable nodes
-dns-sd -B _matterd._udp,S52     # Commisionable nodes with short discriminator 52
-dns-sd -B _matterd._udp,L840    # Commisionable nodes with long discriminator 840
-dns-sd -B _matterd._udp,V123    # Commisionable nodes with vendor id 123
+dns-sd -B _matterd._udp         # Commissionable nodes
+dns-sd -B _matterd._udp,S52     # Commissionable nodes with short discriminator 52
+dns-sd -B _matterd._udp,L840    # Commissionable nodes with long discriminator 840
+dns-sd -B _matterd._udp,V123    # Commissionable nodes with vendor id 123
 ```
 
 IP Address:
diff --git a/examples/persistent-storage/efr32/README.md b/examples/persistent-storage/efr32/README.md
index 5b03331..2f3b577 100644
--- a/examples/persistent-storage/efr32/README.md
+++ b/examples/persistent-storage/efr32/README.md
@@ -29,7 +29,7 @@
 ## EFR32
 
 The EFR32 platform KVS is fully implemented, the KVS is enabled and configured
-using theese defines:
+using these defines:
 
 ```
 defines = [
diff --git a/examples/pump-app/cc13x2x7_26x2x7/doc/programming-ccs.md b/examples/pump-app/cc13x2x7_26x2x7/doc/programming-ccs.md
index f56fc60..ac31ab8 100644
--- a/examples/pump-app/cc13x2x7_26x2x7/doc/programming-ccs.md
+++ b/examples/pump-app/cc13x2x7_26x2x7/doc/programming-ccs.md
@@ -106,7 +106,7 @@
 
 ![CCS step 9](images/ccs-12.jpg)
 
-- After loacating the source file for `main.cpp` we can step through the code
+- After locating the source file for `main.cpp` we can step through the code
 as it executes.
 
 ![CCS step 9](images/ccs-13.jpg)
diff --git a/examples/pump-controller-app/cc13x2x7_26x2x7/doc/programming-ccs.md b/examples/pump-controller-app/cc13x2x7_26x2x7/doc/programming-ccs.md
index f56fc60..ac31ab8 100644
--- a/examples/pump-controller-app/cc13x2x7_26x2x7/doc/programming-ccs.md
+++ b/examples/pump-controller-app/cc13x2x7_26x2x7/doc/programming-ccs.md
@@ -106,7 +106,7 @@
 
 ![CCS step 9](images/ccs-12.jpg)
 
-- After loacating the source file for `main.cpp` we can step through the code
+- After locating the source file for `main.cpp` we can step through the code
 as it executes.
 
 ![CCS step 9](images/ccs-13.jpg)
diff --git a/examples/tv-casting-app/linux/README.md b/examples/tv-casting-app/linux/README.md
index bd1d16d..6eba225 100644
--- a/examples/tv-casting-app/linux/README.md
+++ b/examples/tv-casting-app/linux/README.md
@@ -3,7 +3,7 @@
 This is a CHIP TV Casting app that can be used to cast content to a TV. This app
 discovers TVs on the local network that act as commissioners, lets the user
 select one, sends the TV a User Directed Commissioning request, enters
-commisioning mode, advertises itself as a Commissionable Node and gets
+commissioning mode, advertises itself as a Commissionable Node and gets
 commissioned. Then it allows the user to send CHIP ContentLauncher commands to
 the TV.
 
diff --git a/examples/window-app/efr32/README.md b/examples/window-app/efr32/README.md
index cdd98f6..79ad300 100644
--- a/examples/window-app/efr32/README.md
+++ b/examples/window-app/efr32/README.md
@@ -223,7 +223,7 @@
         -   _Blinking slowly_ ; The window cover is half-open, either by tilt, or lift
         -   _Blinking quickly_ ; The window cover is being automatically open or closed
 
-    **Push Button 0** Increase seither tilt or lift, and factory reset
+    **Push Button 0** Increase either tilt or lift, and factory reset
 
         -   Pressed and release: The lift/tilt increases by 10%
 
@@ -240,9 +240,9 @@
 
     **Push Button0 and Button1** Switch between lift and tilt
 
-        - Pressing and release both buttons at the same time: switches between lift and tilt modes. Most window covering types support either lift only, or tilt only, but type 0x08 suport both (default)
+        - Pressing and release both buttons at the same time: switches between lift and tilt modes. Most window covering types support either lift only, or tilt only, but type 0x08 support both (default)
 
-        - Pressing and hold both buttons at the same time: Cycles betwen window covering 1, and window covering 2.
+        - Pressing and hold both buttons at the same time: Cycles between window covering 1, and window covering 2.
 
 *   Once the device is provisioned, it will join the Thread network is
     established, look for the RTT log
@@ -274,7 +274,7 @@
     The
     [Python Controller](https://github.com/project-chip/connectedhomeip/blob/master/src/controller/python/README.md)
     can now be used to send ZCL commands to the window covering device. For
-    instance, to set the window covering lift by percentantage:
+    instance, to set the window covering lift by percentage:
 
         $ sudo chip-device-ctrl
 
diff --git a/scripts/tools/memory/README.md b/scripts/tools/memory/README.md
index b2546eb..9ccd4a2 100644
--- a/scripts/tools/memory/README.md
+++ b/scripts/tools/memory/README.md
@@ -12,7 +12,7 @@
 -   `--verbose`, `-v` Show informational messages; repeat for debugging
     messages.
 -   `--config-file` _FILE_ Read configuration _FILE_. Typically this is a file
-    from the `plaform/` subdirectory providing platform-specific option
+    from the `platform/` subdirectory providing platform-specific option
     defaults. Command line options override the configuration file.
 
 ### input options:
@@ -36,7 +36,7 @@
 ## output options:
 
 -   `--output-file` _FILENAME_, `--output` _FILENAME_, `-O` _FILENAME_ Output
-    file. Defautls to standard output. For `csv` and `tsv` formats, this is
+    file. Defaults to standard output. For `csv` and `tsv` formats, this is
     actually an output file name prefix.
 -   `--output-format` _FORMAT_, `--to` _FORMAT_, `-t` _FORMAT_ Output format.
     One of:
diff --git a/src/README.md b/src/README.md
index edf63ac..5d25de7 100644
--- a/src/README.md
+++ b/src/README.md
@@ -26,6 +26,6 @@
 ##### Near Field Communication Tag Reading
 
 NFC Tag Reading is disabled by default because a paid Apple developer account is
-requird to have it enabled. If you want to enable it and you have a paid Apple
+required to have it enabled. If you want to enable it and you have a paid Apple
 developer account, go to the CHIPTool iOS target and turn on Near Field
 Communication Tag Reading under the Capabilities tab.
diff --git a/src/platform/Linux/README.md b/src/platform/Linux/README.md
index aa7178d..0fcdb7e 100644
--- a/src/platform/Linux/README.md
+++ b/src/platform/Linux/README.md
@@ -35,7 +35,7 @@
 -   Concrete implementation of ThreadStackManager interface
 -   Supports Thread stack initialization and core event loop processing
 -   Relies on GenericThreadStackManagerImpl_OpenThread/POSIX<> classes to
-    implement most API functionaltiy
+    implement most API functionality
 
 `include/platform/Linux/BLEManagerImpl.h`<br>`Linux/BLEManagerImpl.cpp`
 
diff --git a/src/platform/README.md b/src/platform/README.md
index cc68a9c..bb64ef4 100644
--- a/src/platform/README.md
+++ b/src/platform/README.md
@@ -297,10 +297,10 @@
 };
 ```
 
-In many cases, the generic implementation base class itself will directy provide
-some or all of the implementation methods needed to satisfy the component’s
-interface. The rules of C++ method resolution are such that calls to a
-forwarding method on the interface class are mapped directly to the base class
+In many cases, the generic implementation base class itself will directly
+provide some or all of the implementation methods needed to satisfy the
+component’s interface. The rules of C++ method resolution are such that calls to
+a forwarding method on the interface class are mapped directly to the base class
 method. In this situation, the derived implementation class needn't declare a
 version of the target method at all, and method calls are forwarded statically,
 at compile time, without overhead.
diff --git a/src/platform/Zephyr/README.md b/src/platform/Zephyr/README.md
index c5acee5..280dd0a 100644
--- a/src/platform/Zephyr/README.md
+++ b/src/platform/Zephyr/README.md
@@ -27,7 +27,7 @@
 -   Concrete implementation of ThreadStackManager interface
 -   Supports Thread stack initialization and core event loop processing
 -   Relies on GenericThreadStackManagerImpl_OpenThread/POSIX<> classes to
-    implement most API functionaltiy
+    implement most API functionality
 
 `include/platform/Zephyr/BLEManagerImpl.h`<br>`Zephyr/BLEManagerImpl.cpp`
 
diff --git a/src/platform/qpg/README.md b/src/platform/qpg/README.md
index 723aefd..e6be8af 100644
--- a/src/platform/qpg/README.md
+++ b/src/platform/qpg/README.md
@@ -34,7 +34,7 @@
 -   Concrete implementation of ThreadStackManager interface
 -   Supports Thread stack initialization and core event loop processing
 -   Relies on GenericThreadStackManagerImpl_OpenThread/FreeRTOS/LwIP<> classes
-    to implement most API functionaltiy
+    to implement most API functionality
 
 `BLEManagerImpl.h`<br>`BLEManagerImpl.cpp`
 
diff --git a/src/test_driver/esp32/README.md b/src/test_driver/esp32/README.md
index 0d53ff2..757a490 100644
--- a/src/test_driver/esp32/README.md
+++ b/src/test_driver/esp32/README.md
@@ -1,6 +1,6 @@
 # CHIP Tests on Device
 
-An appplication that runs CHIP's unit tests on ESP32 device or QEMU.
+An application that runs CHIP's unit tests on ESP32 device or QEMU.
 
 ---
 
diff --git a/src/test_driver/linux-cirque/README.md b/src/test_driver/linux-cirque/README.md
index bbe0404..11d2ce2 100644
--- a/src/test_driver/linux-cirque/README.md
+++ b/src/test_driver/linux-cirque/README.md
@@ -47,7 +47,7 @@
 scripts/tests/cirque_tests.sh run_all_tests
 ```
 
-You can get more infomation from the terminal output (like the location of
+You can get more information from the terminal output (like the location of
 logs).
 
 > Note: The container (as well as the networks) will be preserved for debugging.
@@ -74,7 +74,7 @@
 
 ## Specify log directory
 
-To specify log directory, simplily set `LOG_DIR` variable.
+To specify log directory, simply set `LOG_DIR` variable.
 
 ```
 export LOG_DIR=/some/log/directory
@@ -131,5 +131,5 @@
 After you finished you test, press `Ctrl-C` and it will clean up testing
 environment.
 
-Refer to `test-manual.py`, `ManualTest.sh`, and tolologies file under
+Refer to `test-manual.py`, `ManualTest.sh`, and topologies file under
 `topologies` for detail.