SkillAgentSearch skills...

near-smart-contracts

NEAR Protocol smart contract development in Rust

Install / Use

npx skills add internet-court/internet-court-skill --skill near-smart-contracts

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

89/100

Category

Security

Supported Platforms

Universal

Our assessment of near-smart-contracts

near-smart-contracts scores 89/100 on our quality scale, 328th of 729 Security skills we index (top 45%).

Its SKILL.md is 14 KB long, well organised into 37 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.

With 6,129 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
30/30
Structure
20/20
Description
8/15
Adoption
16/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 38 days ago, so near-smart-contracts is actively maintained.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

near-smart-contracts compared with similar skills

All 4 of these similar skills score higher than near-smart-contracts; compare them before choosing.

SkillScoreStarsUpdatedFormat
near-smart-contracts (this skill)by internet-court896.1k38d agoSKILL.md
algorithmic-artby anthropics100177.9k4d agoSKILL.md
pptxby anthropics100177.9k4d agoSKILL.md
designby nextlevelbuilder100130.2k5d agoSKILL.md
ui-ux-pro-maxby nextlevelbuilder100130.2k5d agoSKILL.md

Frequently asked questions

How do I install near-smart-contracts?
Run npx skills add internet-court/internet-court-skill --skill near-smart-contracts. The install tabs above show the steps for each supported agent.
Which AI agents does near-smart-contracts work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is near-smart-contracts safe to use?
It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is near-smart-contracts still maintained?
The repository was last updated 38 days ago, so near-smart-contracts is actively maintained.

name: near-smart-contracts description: NEAR Protocol smart contract development in Rust. Use when writing, reviewing, or deploying NEAR smart contracts. Covers contract structure, state management, cross-contract calls, testing, security, and optimization patterns. Based on near-sdk v5.x with modern macro syntax. license: MIT metadata: author: near version: "1.0.0"

NEAR Smart Contracts Development

Comprehensive guide for developing secure and efficient smart contracts on NEAR Protocol using Rust and the NEAR SDK (v5.x).

When to Apply

Reference these guidelines when:

  • Writing new NEAR smart contracts in Rust
  • Reviewing existing contract code for security and optimization
  • Implementing cross-contract calls and callbacks
  • Managing contract state and storage
  • Testing and deploying NEAR contracts
  • Optimizing gas usage and performance

Getting Started

Prerequisites

Install the required tools before starting development:

# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Add wasm32 target for compiling contracts
rustup target add wasm32-unknown-unknown

# Install cargo-near (build, deploy, and manage contracts)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/cargo-near/releases/latest/download/cargo-near-installer.sh | sh

# Install near-cli-rs (interact with NEAR network)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/near/near-cli-rs/releases/latest/download/near-cli-rs-installer.sh | sh

Create a New Project

CRITICAL: ALWAYS run cargo near new to create new projects. NEVER manually create Cargo.toml, lib.rs, or any project files. The command generates all required files with correct configurations.

# REQUIRED: Create a new contract project using the official template
cargo near new my-contract

# Navigate to project directory
cd my-contract

# Build the contract
cargo near build

# Run tests
cargo test

Why cargo near new is mandatory:

  • Generates correct Cargo.toml with proper dependencies and build settings
  • Creates proper project structure with src/lib.rs template
  • Includes integration test setup in tests/ directory
  • Configures release profile with overflow-checks = true
  • Sets up correct crate-type for WASM compilation
  • Avoids common configuration mistakes that cause build failures

DO NOT:

  • Manually create Cargo.toml
  • Manually create src/lib.rs
  • Copy-paste project structure from examples
  • Skip this step and create files directly

Project Structure

my-contract/
├── Cargo.toml          # Dependencies and project config
├── src/
│   └── lib.rs          # Main contract code
├── tests/              # Integration tests
│   └── test_basics.rs
└── README.md

Deploy to Testnet

# Create a testnet account (if needed)
near account create-account sponsor-by-faucet-service my-contract.testnet autogenerate-new-keypair save-to-keychain network-config testnet create

# Build in release mode
cargo near build --release

# Deploy to testnet
cargo near deploy my-contract.testnet without-init-call network-config testnet sign-with-keychain send

Rule Categories by Priority

| Priority | Category | Impact | Prefix | | --------- | ---------- | -------- | --------- | | 1 | Security & Safety | CRITICAL | security- | | 2 | Contract Structure | HIGH | structure- | | 3 | State Management | HIGH | state- | | 4 | Cross-Contract Calls | MEDIUM-HIGH | xcc- | | 5 | Contract Upgrades | MEDIUM-HIGH | upgrade- | | 6 | Chain Signatures | MEDIUM-HIGH | chain- | | 7 | Gas Optimization | MEDIUM | gas- | | 8 | Yield & Resume | MEDIUM | yield- | | 9 | Testing | MEDIUM | testing- | | 10 | Best Practices | MEDIUM | best- |

1. Security & Safety (CRITICAL)

  • security-storage-checks - Always validate storage operations and check deposits
  • security-access-control - Implement proper access control using predecessor_account_id
  • security-reentrancy - Protect against reentrancy attacks (update state before external calls)
  • security-overflow - Use overflow-checks = true in Cargo.toml to prevent overflow
  • security-callback-validation - Validate callback results and handle failures
  • security-private-callbacks - Mark callbacks as #[private] to prevent external calls
  • security-yoctonear-validation - Validate attached deposits with #[payable] functions
  • security-sybil-resistance - Implement minimum deposit checks to prevent spam

2. Contract Structure (HIGH)

  • structure-near-bindgen - Use #[near(contract_state)] macro for contract struct (replaces old #[near_bindgen])
  • structure-initialization - Implement proper initialization with #[init] patterns
  • structure-versioning - Plan for contract upgrades with versioning mechanisms
  • structure-events - Use env::log_str() and structured event logging (NEP-297)
  • structure-standards - Follow NEAR Enhancement Proposals (NEPs) for standards
  • structure-serializers - Use #[near(serializers = [json, borsh])] for data structs
  • structure-panic-default - Use #[derive(PanicOnDefault)] to require initialization

3. State Management (HIGH)

  • state-collections - Use SDK collections from near_sdk::store: IterableMap, IterableSet, Vector, LookupMap, LookupSet, UnorderedMap, UnorderedSet, TreeMap
  • state-serialization - Use Borsh for state, JSON for external interfaces
  • state-lazy-loading - Use SDK collections for lazy loading to save gas (loaded on-demand, not all at once)
  • state-pagination - Implement pagination with .skip() and .take() for large datasets
  • state-migration - Plan state migration strategies using versioning
  • state-storage-cost - Remember: 1 NEAR ≈ 100kb storage, contracts pay for their storage
  • state-unique-prefixes - Use unique byte prefixes for all collections (avoid collisions)
  • state-native-vs-sdk - Native collections (Vec, HashMap) load all data; use only for <100 entries

4. Cross-Contract Calls (MEDIUM-HIGH)

  • xcc-promise-chaining - Chain promises correctly
  • xcc-callback-handling - Handle all callback scenarios (success, failure)
  • xcc-gas-management - Allocate appropriate gas for cross-contract calls
  • xcc-error-handling - Implement robust error handling
  • xcc-result-unwrap - Never unwrap promise results without checks

5. Contract Upgrades & Migration (MEDIUM-HIGH)

  • upgrade-migration - Use enums for state versioning and implement migrate method with #[init(ignore_state)]
  • upgrade-self-update - Pattern for contracts that can update themselves programmatically
  • upgrade-cleanup-old-state - Always remove old state structures to free storage
  • upgrade-dao-controlled - Use multisig or DAO for production upgrade governance

6. Chain Signatures (MEDIUM-HIGH)

  • chain-signatures - Derive foreign blockchain addresses, request MPC signatures, and build multichain transactions
  • chain-callback-handling - Handle MPC signature callbacks properly
  • chain-gas-allocation - Allocate sufficient gas for MPC calls (yield/resume pattern)

7. Gas Optimization (MEDIUM)

  • gas-batch-operations - Batch operations to reduce transaction costs
  • gas-minimal-state-reads - Minimize state reads and writes (cache in memory)
  • gas-efficient-collections - Choose appropriate collection types (LookupMap vs IterableMap)
  • gas-view-functions - Mark read-only functions as view (&self in Rust)
  • gas-avoid-cloning - Avoid unnecessary cloning of large data structures
  • gas-early-validation - Use require! early to save gas on invalid inputs
  • gas-prepaid-gas - Attach appropriate gas for cross-contract calls (recommended: 30 TGas)

8. Yield & Resume (MEDIUM)

  • yield-resume - Create yielded promises, signal resume, handle timeouts, and manage state between yield/resume
  • yield-gatekeeping - Protect resume methods from unauthorized callers

9. Testing (MEDIUM)

  • testing-integration-tests - Use near-sandbox + near-api for integration tests
  • testing-unit-tests - Write comprehensive unit tests with mock contexts
  • testing-sandbox - Test with local sandbox environment before testnet/mainnet
  • testing-edge-cases - Test boundary conditions, overflow, and empty states
  • testing-gas-profiling - Profile gas usage in integration tests
  • testing-cross-contract - Test cross-contract calls and callbacks thoroughly
  • testing-failure-scenarios - Test promise failures and timeout scenarios
  • testing-time-travel - Use sandbox.fast_forward() for time-sensitive tests

10. Best Practices (MEDIUM)

  • best-contract-tools - Use near-sdk-contract-tools for NEP standards (FT, NFT, etc.) and NEP-297 structured events
  • best-panic-messages - Provide clear, actionable panic messages
  • best-logging - Use env::log_str() for debugging and event emission
  • best-documentation - Document public methods, parameters, and complex logic
  • best-error-types - Define custom error types or use descriptive strings
  • best-constants - Use constants for magic numbers and configuration
  • best-require-macro - Use require! instead of assert! for better error messages
  • best-promise-return - Return promises from cross-contract calls for proper tracking
  • best-sdk-crates - Reuse SDK-exported crates (borsh, serde, base64, etc.)
  • best-account-id-encoding - Encode AccountIds in base32 for 40% storage savings

How to Use

Read individual rule files for detailed explanations and code examples:

rules/security-storage-checks.md
rules/structure-near-bindgen.md
rules/state-collections.md
rules/xcc-promise-chaining.md
rules/upgrade-migration.md
rules/chain-signatures.md
rules/yield-resume.md
rules/best-contract-tools.md
rules/testing-integration-tests.md

Each rule file contains:

  • Brief explanation of why it matters
  • Incorrect code example with explanation
  • Correct code example with explanation
  • Additional context and NEAR-specific considerations

Latest Tools & Versions

Development Tools

  • cargo-near: Latest - Build, deploy, and manage contracts (cargo near build, cargo near deploy)
  • near-cli-rs: Latest - Command-line interface for NEAR (near contract call, near contract view)
  • rustc: Latest stable - Rust compiler
  • near-sandbox: Latest - Local sandbox environment for integration testing
  • near-api-rs: Latest - Rust API client for interacting with NEAR (replaces near-workspaces-rs for tests)
  • omni-transaction-rs: Latest - Build transactions for multiple blockchains (Bitcoin, Ethereum, etc.)

SDK Versions

  • near-sdk-rs: v5.x (v6.x coming with structured errors support)
  • near-sdk-contract-tools: Latest - Derive macros for NEP standards (FT, NFT, Storage Management)

Key Features

  • Unified macro syntax: #[near(contract_state)] replaces #[near_bindgen] + derives
  • Flexible serialization: #[near(serializers = [json, borsh])] for data structs
  • Store collections: near_sdk::store::IterableMap, IterableSet, LookupMap, LookupSet, Vector, UnorderedMap, UnorderedSet, TreeMap
  • Simplified cross-contract calls: High-level promise API with Promise::new() and .then()
  • Built-in NEP support: FT (NEP-141), NFT (NEP-171), and other standards
  • Result handling: #[handle_result] for methods returning Result<T, E> without panicking
  • Yield/Resume: Contracts can yield execution and wait for external services to resume
  • Chain Signatures: Sign transactions for other blockchains (Bitcoin, Ethereum, Solana, etc.)
  • Contract Tools: Derive macros for Owner, Pause, Role-based access control patterns

Resources

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars6.1k
CategorySecurity
Updated1mo ago
Forks110

Languages

TypeScript

Trust signals

88/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium