Skip to main content
Contribute a new starter template to uzolabs/templates: set up the repo, follow its rules, and open a pull request that reviewers can accept.
Open for contributions. This page follows CONTRIBUTING.md on the repo’s main branch as of 3 October 2026. If the two differ, the repo is right.

What you’ll build

A new template folder that works on its own after someone copies just that folder, with tests, deploy and verify scripts for both Foundry and Hardhat 3, and a small web app.

Prerequisites

  • Node.js 20.19 or newer and Foundry.
  • A funded testnet wallet. See Get testnet tokens.
  • A look at one Ready template, such as Token, so you know the shape.

Rules for every template

  1. Don’t hard-code chain IDs, RPC URLs, or contract or pool addresses. Use @uzolabs/sdk, environment variables or lookups at runtime.
  2. Never commit a private key, mnemonic or API key, including in tests, examples and CI. Only .env.example is committed.
  3. Don’t use eth_getLogs or log-based hooks in frontends. Poll reads instead.
  4. Explain every new dependency in the template’s README.
  5. If something about BOT Chain is still unknown, make it a setting or leave it out.
  6. No em dashes in READMEs, comments or UI text.
  7. Start every README with the learning-template disclaimer and end it with the independence note.
  8. Default to testnet. Mainnet needs --mainnet or MAINNET=true plus a typed confirmation.
  9. No runtime imports from sibling folders or _shared/.
  10. Foundry and Hardhat 3 must both compile, test, deploy and verify from the same contracts/ and test/.
npm run check enforces the rules a script can check. Reviewers check the rest.

Steps

1

Set up the repo

Terminal
2

Start from the token template

Copy token/ and rename it. Replace the contract, tests, deploy script, Ignition module and frontend.
3

Add it to CI

Add the folder to the template matrix in both .github/workflows/ci.yml and .github/workflows/testnet-deploy.yml.
4

Deploy and verify on testnet

Deploy and verify with both toolchains, then paste the real commands and output into the template’s README.
5

Run the checks

Terminal
Repeat until it passes.
To change a file every template shares, edit it in _shared/, run npm run sync, then commit _shared/ and the templates together. CI fails if a template’s copy drifts.

Verify

Before you open a pull request, run these in your template folder:
Terminal
Keep each pull request to one template or one shared change. Never paste keys, even testnet ones, into issues or pull requests. A template is In progress when its code, tests and CI pass but the live testnet deploy and verification aren’t recorded yet. It becomes Ready once they are.

Troubleshooting

A shared file was edited inside a template. Make the change in _shared/ instead and run npm run sync.
Read the address from @uzolabs/sdk/contracts or an environment variable.

Next steps

Templates on GitHub

The repo and its issues. Questions can also go to uzolabsxyz@gmail.com.

Use a template

How people will copy yours.
The code is MIT licensed. The Uzo name and logo aren’t covered by that license.
Last modified on October 2, 2026