Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/add-cli-package.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@openzeppelin/contracts-cli': minor
---

Initial release.
5 changes: 5 additions & 0 deletions .changeset/mcp-use-common-schemas.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@openzeppelin/contracts-mcp': patch
---

Use shared Zod schemas from `@openzeppelin/wizard-common/schemas` instead of local schema definitions.
10 changes: 10 additions & 0 deletions .changeset/move-schemas-to-common.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
'@openzeppelin/wizard-common': minor
---

Move Zod schemas from MCP to common package, add `@openzeppelin/wizard-common/schemas` subpath export.
- Uniswap hooks: shorten prompt, move hook descriptions to field-level `describe()` on `--hook` parameter.
- Cairo `access` schema field changed from required to optional (loosens validation).
- Added `zod` as a dependency.
- Add format examples and defaults to duration and date descriptions.
- **Breaking change**: Added `exports` field to package.json, restricting imports to declared subpaths (`.` and `./schemas`).
38 changes: 38 additions & 0 deletions .claude/skills/changeset/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: changeset
description: Add a changeset file for a package version bump
user_invocable: true
---

# Add Changeset

Create a changeset file in `.changeset/` for the specified package(s).

## Format

```markdown
---
'package-name': patch|minor|major
---

First line is a high-level summary without leading dash (PR number gets appended automatically).
- Additional detail line.
- Another detail line.
- **Breaking change**: Description of what breaks.
```

## Rules

1. **First line**: Write as a plain sentence, no leading dash. The release tooling appends the PR link to this line.
2. **Subsequent lines**: Start each line with a dash. These lines get 2 spaces prepended automatically during the release process, so they appear indented under the first line in CHANGELOG.md.
3. **Breaking changes**: Mark with **Breaking change** or **Breaking changes** (see format example above).
4. **File naming**: Use a short kebab-case description, e.g., `add-cli-package.md`, `move-schemas-to-common.md`.
5. **Multiple packages**: Multiple packages can share a changeset file with different bump levels in the frontmatter. Use separate files only when packages need unrelated descriptions.
6. **Bump levels**: Follow semver based on current package version. `x.y.z` (>=1.0.0): major for breaking, minor for features, patch for fixes. `0.x.y`: minor for breaking, patch for features/fixes. `0.0.x`: patch for everything.
7. **New unpublished packages**: Still need a changeset to bump the initial version in package.json and for the changes to appear in the resulting changelog.

## Steps

1. Determine which packages changed and what bump level each needs.
2. Review existing CHANGELOG.md for the package(s) to match tone and style.
3. Write the changeset file(s) to `.changeset/<descriptive-name>.md`.
14 changes: 13 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
pull_request: {}

jobs:
format-lint:
static-checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
Expand All @@ -16,6 +16,8 @@ jobs:
run: yarn format:check
- name: Run linter
run: yarn lint
- name: Check circular dependencies
run: yarn check:circular-deps

deno-check:
runs-on: ubuntu-latest
Expand All @@ -30,6 +32,16 @@ jobs:
- name: Deno check API
run: yarn type:check:api

cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up environment
uses: ./.github/actions/setup
- name: Run tests
run: yarn test
working-directory: packages/cli

mcp:
runs-on: ubuntu-latest
steps:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ node_modules
.vscode/settings.json

fhevmTemp

.claude/*
!.claude/skills/
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ Contributions to OpenZeppelin Contracts Wizard are welcome. Please review the in

- `packages/common` contains common code used internally by some of the below packages.
- `packages/core` contains the code generation logic for each language under separately named subfolders.
- `packages/cli` contains the CLI.
- `packages/mcp` contains the MCP server.
- `packages/ui` is the interface built in Svelte.

Expand Down
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
[![Stellar NPM Package](https://img.shields.io/npm/v/@openzeppelin/wizard-stellar?color=%23e55233&label=%40openzeppelin%2Fwizard-stellar)](https://www.npmjs.com/package/@openzeppelin/wizard-stellar)
[![Stylus NPM Package](https://img.shields.io/npm/v/@openzeppelin/wizard-stylus?color=%23e55233&label=%40openzeppelin%2Fwizard-stylus)](https://www.npmjs.com/package/@openzeppelin/wizard-stylus)
[![Uniswap Hooks NPM Package](https://img.shields.io/npm/v/@openzeppelin/wizard-uniswap-hooks?color=%23e55233&label=%40openzeppelin%2Fwizard-uniswap-hooks)](https://www.npmjs.com/package/@openzeppelin/wizard-uniswap-hooks)
[![Contracts CLI NPM Package](https://img.shields.io/npm/v/@openzeppelin/contracts-cli?label=%40openzeppelin%2Fcontracts-cli)](https://www.npmjs.com/package/@openzeppelin/contracts-cli)
[![Contracts MCP NPM Package](https://img.shields.io/npm/v/@openzeppelin/contracts-mcp?label=%40openzeppelin%2Fcontracts-mcp)](https://www.npmjs.com/package/@openzeppelin/contracts-mcp)
[![Netlify Status](https://api.netlify.com/api/v1/badges/ca9b53e1-44eb-410d-aac7-31b2f5399b68/deploy-status)](https://app.netlify.com/sites/openzeppelin-contracts-wizard/deploys)

Expand All @@ -16,16 +17,17 @@ Contracts Wizard is a web application to interactively build a contract out of c

Use the Contracts Wizard at https://wizard.openzeppelin.com

## MCP Servers
## CLI

Generate contracts from the command line. See the [CLI package](packages/cli/README.md).

MCP Servers allow AI agents to generate smart contracts with the same options as the Contracts Wizard.
## MCP Servers

For local installation, see the [Contracts MCP Server](packages/mcp/README.md) package.
For a hosted version, see [OpenZeppelin MCP Servers](https://mcp.openzeppelin.com).
Allow AI agents to generate contracts. See the [MCP package](packages/mcp/README.md) for local installation, or [OpenZeppelin MCP Servers](https://mcp.openzeppelin.com) for a hosted version.

## TypeScript API

You can use the programmatic TypeScript API to generate contracts from your own applications.
Generate contracts programmatically from your own applications.

View the API documentation for each smart contract language:
- [Solidity](packages/core/solidity/README.md)
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"type": "module",
"scripts": {
"prepare": "yarn workspaces run prepare",
"check:circular-deps": "node scripts/check-circular-deps.mjs",
"lint": "eslint",
"format:write": "prettier --write \"**/*\"",
"format:check": "prettier --check \"**/*\"",
Expand All @@ -22,6 +23,7 @@
"packages/core/solidity",
"packages/core/*",
"packages/mcp",
"packages/cli",
"packages/ui"
],
"nohoist": [
Expand Down
Loading
Loading