# Changing Examples The composition of most examples in the SDK is static and code generated. The tool used to describe and change the composition of an example is called ZAP. More information about ZAP and a walk-through of the tool can be found in the [ZAP introduction](./zap.md). The composition of the device is captured in a .zap file, which is readable by the ZAP tool. This is then compiled into a human-readable .matter file, which is used to build the static features of the example. To change the composition of a device example, you need to 1. Change the zap file to implement your desired changes 2. Run the code generation tool to generate the .matter file 3. Re-build the example ## Changing the zap file in an example Most examples in the SDK keep the .zap file in a sub-directory called example-name-common (ex. lighting-common). To load an existing .zap file into the ZAP tool, from the chip-root use ``` ./scripts/tools/zap/run_zaptool.sh ``` For example, to make changes to the lighting app, use: ``` ./scripts/tools/zap/run_zaptool.sh examples/lighting-app/lighting-common/lighting-app.zap ``` This will open the ZAP GUI tool, which can be used to change the endpoint composition, clusters, features, attributes, commands and events exposed by the device. Details of how to use the tool can be found in the [ZAP Introduction](./zap.md). ## Running code generation To compile the .matter file for use in building, use: ``` ./scripts/tools/zap/generate.py ``` For example, for changes to the lighting app, use: ``` ./scripts/tools/zap/generate.py examples/lighting-app/lighting-common/lighting-app.zap ``` If there are changes to many .zap files, the following script can be used to recompile the .zap files for all the examples and the controller. ``` ./scripts/tools/zap_regen_all.py ``` ## Rebuilding the example After generating the .matter file, re-build the example. Instructions for building examples are given in [Building your first example](./first_example.md)