develop-secure-contrac…
Develop secure smart contracts using OpenZeppelin Contracts libraries. Use when users need to integrate OpenZeppelin library…
Set up a Stellar/Soroban smart contract project with OpenZeppelin Contracts for Stellar. Use when users need to: (1) install Stellar CLI and Rust toolchain for Soroban, (2) create a new Soroban project, (3) add OpenZeppelin Stellar dependencies to Cargo.toml, or (4) understand
Claude Code
$ npx -y skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts --agent claude-code
Codex
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a codex -y
Cursor
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a cursor -y
Gemini CLI
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a gemini-cli -y
GitHub Copilot
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a github-copilot -y
OpenCode
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a opencode -y
Windsurf
$ npx skills add OpenZeppelin/openzeppelin-skills --skill setup-stellar-contracts -a windsurf -y
name: setup-stellar-contracts description: "Set up a Stellar/Soroban smart contract project with OpenZeppelin Contracts for Stellar. Use when users need to: (1) install Stellar CLI and Rust toolchain for Soroban, (2) create a new Soroban project, (3) add OpenZeppelin Stellar dependencies to Cargo.toml, or (4) understand Soroban import conventions and contract patterns for OpenZeppelin." license: AGPL-3.0-only metadata: author: OpenZeppelin
Install the Rust toolchain (v1.84.0+) and the Soroban WASM target:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup target add wasm32v1-none
Install the Stellar CLI:
curl -fsSL https://github.com/stellar/stellar-cli/raw/main/install.sh | sh
Create a new Soroban project:
stellar contract init my_project
This creates a Cargo workspace with contracts in `contracts/*/`.
Look up the current version from the [stellar-contracts repo](https://github.com/OpenZeppelin/stellar-contracts) before adding. Pin exact versions with `=` as the library is under active development.
Add OpenZeppelin crates to the **root** `Cargo.toml` under `[workspace.dependencies]`:
[workspace.dependencies] stellar-tokens = "=<VERSION>" stellar-access = "=<VERSION>" stellar-contract-utils = "=<VERSION>" stellar-macros = "=<VERSION>"
Then reference them in the **per-contract** `contracts/*/Cargo.toml`:
[dependencies]
soroban-sdk = { workspace = true }
stellar-tokens = { workspace = true }
stellar-access = { workspace = true }
stellar-contract-utils = { workspace = true }
stellar-macros = { workspace = true }Available crates: `stellar-access`, `stellar-accounts`, `stellar-contract-utils`, `stellar-fee-abstraction`, `stellar-governance`, `stellar-macros`, `stellar-tokens`.
> Only add the crates the contract actually uses. `stellar-macros` provides proc-macro attributes (for example, `#[when_not_paused]`, `#[only_owner]`, `#[derive(Upgradeable)]`) and is needed in most contracts.
Imports use underscores as the crate root (Rust convention):
use stellar_tokens::fungible::{Base, FungibleToken};
use stellar_tokens::fungible::burnable::FungibleBurnable;
use stellar_access::ownable::Ownable;
use stellar_contract_utils::pausable::Pausable;
use stellar_macros::when_not_paused;Contracts use `#[contract]` on the struct and `#[contractimpl]` on the impl block (from `soroban_sdk`):
use soroban_sdk::{contract, contractimpl, Env};
#[contract]
pub struct MyToken;
#[contractimpl]
impl MyToken {
// Implement trait methods here
}Trait implementations are separate `impl` blocks per trait (e.g., `FungibleToken`, `Pausable`). Guard macros like `#[when_not_paused]` and `#[only_owner]` decorate individual functions.
Build the contract to WASM:
stellar contract build
This is a shortcut for `cargo build --target wasm32v1-none --release`. Output appears in `target/wasm32v1-none/release/`.
Run tests:
cargo test
> `soroban-sdk` testutils are automatically enabled for in-crate unit tests.
Agent skills for secure smart contract development with OpenZeppelin Contracts libraries and migration of Defender workflows.
Develop secure smart contracts using OpenZeppelin Contracts libraries. Use when users need to integrate OpenZeppelin library…
Migrate OpenZeppelin Defender Actions, Autotasks, Monitors and scheduled or Relayer-backed workflows to Chainlink CRE. Use when…
Review Sui Move code that integrates OpenZeppelin Contracts for Sui against the library's own patterns and conventions. Use this…
Set up a Cairo smart contract project with OpenZeppelin Contracts for Cairo on Starknet. Use when users need to: (1) create a new…
Set up a Solidity smart contract project with OpenZeppelin Contracts. Use when users need to: (1) create a new Hardhat or Foundry…
Set up a Stylus smart contract project with OpenZeppelin Contracts for Stylus on Arbitrum. Use when users need to: (1) install…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.