# Matter nRF Connect SDK Shell Application

> **Note:** This example is intended only to perform smoke tests of a Matter
> solution integrated with nRF Connect SDK platform. The example quality is not
> production ready and it may contain minor bugs or use not optimal
> configuration. It is not recommended to use this example as a basis for
> creating a market ready product.
>
> For the production ready and optimized Matter samples, see
> [nRF Connect SDK samples](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/samples/matter.html).
> The Matter samples in nRF Connect SDK use various additional software
> components and provide multiple optional features that improve the developer
> and user experience. To read more about it, see
> [Matter support in nRF Connect SDK](https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/protocols/matter/index.html#ug-matter)
> page. Using Matter samples from nRF Connect SDK allows you to get a full
> Nordic technical support via [DevZone](https://devzone.nordicsemi.com/)
> portal.

A [Matter shell](../README.md) project for the Nordic nRF52840 and nRF5340
development kits, built using the nRF Connect SDK.

## Building

The steps to build the Shell Application for Nordic Semiconductor's development
kits are exactly the same as in case of the Lock Example. Please refer to
[this guide](../../lock-app/nrfconnect/README.md) to learn how to build,
program, and debug the application.
