| ZK-Kit is a set of libraries (algorithms or utility functions) that can be reused in different projects and zero-knowledge protocols, making it easier for developers to access user-friendly, tested, and documented code for common tasks. ZK-Kit provides different repositories for each language - this one contains Circom templates only. |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
> [!IMPORTANT]
> Installation of [Circom](https://docs.circom.io/getting-started/installation/) required for circuit tests.
## 🗂️ Repositories
- Javascript: https://github.com/privacy-scaling-explorations/zk-kit
- Solidity: https://github.com/privacy-scaling-explorations/zk-kit.solidity
- Circom: https://github.com/privacy-scaling-explorations/zk-kit.circom
- Noir: https://github.com/privacy-scaling-explorations/zk-kit.noir
## 📦 Packages
## 👥 Ways to contribute
- 🔧 Work on [open issues](https://github.com/privacy-scaling-explorations/zk-kit.circom/contribute)
- 📦 Suggest new [circuits](https://github.com/privacy-scaling-explorations/zk-kit.circom/issues/new?assignees=&labels=feature+%3Arocket%3A&template=---circuit.md&title=)
- 🐛 Create a report if you find any [bugs](https://github.com/privacy-scaling-explorations/zk-kit.circom/issues/new?assignees=&labels=bug+%F0%9F%90%9B&template=---bug.md&title=) in the code
## 🛠 Install
Clone this repository:
```bash
git clone https://github.com/privacy-scaling-explorations/zk-kit.circom.git
```
and install the dependencies:
```bash
cd zk-kit.circom && yarn
```
## 📜 Usage
### Code formatting
Run [Prettier](https://prettier.io/) to check formatting rules:
```bash
yarn format
```
or to automatically format the code:
```bash
yarn format:write
```
### Conventional commits
ZK-Kit uses [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/). A [command line utility](https://github.com/commitizen/cz-cli) to commit using the correct syntax can be used by running:
```bash
git commit
```
### Testing
Test the code with:
```bash
yarn test
```
### Compile
Compile all the circuits with:
```bash
yarn compile
```
### Releases
1. Bump a new version of the package with:
```bash
yarn version:bump
# e.g. yarn version:bump utils 2.0.0
```
This step creates a commit and a git tag.
2. Push the changes to main:
```bash
git push origin main
```
3. Push the new git tag:
```bash
git push origin -
# e.g. git push origin utils-v2.0.0
```
After pushing the new git tag, a workflow will be triggered and will publish the package on [npm](https://www.npmjs.com/) and release a new version on Github with its changelogs automatically.