# CHIP 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 [chip-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.
